home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / apps / math / fcc / manual.asc < prev    next >
Text File  |  1991-12-14  |  38KB  |  913 lines

  1. FLOW CHART COMIPLER MANUAL
  2.       version 1.0
  3.  
  4. PLEASE SEND ANY PROBLEM REPORTS TO:
  5.       Mark Falleroni
  6.     1029E. 4750S.
  7.     Ogden, Utah
  8.           84403
  9. PLEASE INCLUDE A DESCRIPTION OF THE PROBLEM, ALONG WITH THE FLOW CHART 
  10. SOURCE FILE THAT CAUSED THE PROBLEM
  11.  
  12.  
  13. System Requirements: 512K, Color Monitor, Gemini 10X or compatible
  14.  
  15.                PURPOSE AND OBJECTIVES
  16.  
  17.                     The purpose of this program was to determine a 
  18.                method to solve the problem of the manual generation of 
  19.                flowcharts.  The objective is to develop software that 
  20.                will automate the flowchart design and development 
  21.                process.
  22.  
  23.                PROPOSED SOLUTION
  24.  
  25.                     The solution to the problem was to develop a 
  26.                unique flowchart design language that could be 
  27.                compiled.  The requirement to compile the flowchart 
  28.                design language resulted in a flowchart compiler that 
  29.                can compile a flowchart design language source file, 
  30.                display the compiled file to a windowed environment, 
  31.                and print the compiled file in a high resolution 
  32.                graphics mode. There are example source files at the
  33.            end of this document to help familiarize you with the 
  34.            language and compiler.
  35.                
  36.                DEFINITION OF TERMS
  37.                     FDL - Flowchart Design Language; a design language 
  38.                used to describe a software design.  The FDL is the 
  39.                source language for the Flowchart Compiler.
  40.                     FCC - acronym for the FlowChart Compiler.
  41.                     Ellipses - Any menu item followed by an ellipses 
  42.                (...) indicates that further input is required.  The 
  43.                ellipses usually follows menu items that prompt for 
  44.                filenames, module names or page numbers.
  45.                     Output File - a file created by the flowchart 
  46.                compiler.  This type of file is the result of a 
  47.                successful compile of an ASCII text, flowchart design 
  48.                language file.  It contains commands for the drawing 
  49.                module.  These commands contain information that 
  50.                determines the type of flowchart symbols that are 
  51.                drawn, their positions, and connectivity relationships 
  52.                with other flowchart blocks.
  53.                     
  54.            DESIGN
  55.                     The flowchart compiler was written in the C 
  56.                programming language.  It takes full advantage of the 
  57.                desktop metaphor features provided by the GEM 
  58.                interface.
  59.                     The compiler was designed to perform the following 
  60.                functions:
  61.                     1. Compile flowchart design language source code
  62.                     2. Display a module complexity estimate 
  63.                     3. Display a compiled file to a scrollable window
  64.                     4. Print a compiled file in a high resolution
  65.                     5. Edit a flowchart design language source file
  66.                     6. Display the amount of free system memory
  67.                     7. Display the amount of free disk memory
  68.                     8. Display help screens to the user
  69.  
  70.  
  71.                FLOWCHART DESIGN LANGUAGE (FDL)
  72.  
  73.                     A structured language was developed to facilitate 
  74.                the development of flowcharts.  It is simply called the 
  75.                Flowchart Design Language and will be referred to 
  76.                hereafter as the FDL.       The language is similar to 
  77.                modern day high level structured programming languages 
  78.                and contains most of the other programming language 
  79.                constructs.  The language consists of control 
  80.                statements, looping statements, a call subroutine 
  81.                statement, assignment statement and page layout 
  82.                commands.  It does not support the use of a 'goto' or 
  83.                the premature exit from a loop.  The FDL was designed 
  84.                to represent existing software or new designs of a 
  85.                modular nature and it is best used in that manner.
  86.                     The FDL is very flexible from a user perspective 
  87.                in that it can be as detailed or as general as desired.
  88.                If a high level use is desired, statements similar to 
  89.                those found in a program design language can be used.  
  90.                If a low level use is desired, statements very close to 
  91.                a programming language can be used. 
  92.  
  93.                KEYWORDS
  94.  
  95.                     The following is a list of FDL keywords:
  96.  
  97.                          ^, if, while, for, call, then, else, endif, 
  98.                          endwhile, do, endfor, until, repeat, program, 
  99.                          endprg, module, endmod, ife, endelse, header,
  100.                          footer, date
  101.  
  102.                 To be recognized as a keyword by the flowchart 
  103.                compiler, the following FDL keywords must appear as the 
  104.                first word in an FDL statement:
  105.  
  106.                     ^, if, while, for, call, until, repeat, endif, 
  107.                     else, endwhile, endfor, ife, endelse
  108.  
  109.                The keywords listed above can be used anywhere in the  
  110.                string of a statement.  If they are not used as the 
  111.                first word, they are not recognized as keywords. 
  112.                An example would be the use of the keyword 'for' in the 
  113.                middle of the following  high level assignment 
  114.                statement:
  115.   
  116.                "Set a = b for the next pass through the loop;"
  117.            
  118.            All FDL statements must be terminated with a semicolon.
  119.   
  120.                PAGE LAYOUT STATEMENTS
  121.   
  122.                     All page layout statements must begin with a 
  123.                carrot '^'.  Only the following keywords can appear 
  124.                after a carrot:
  125.  
  126.                program, endprg, module, endmod, header, footer, date
  127.  
  128.                Program Statement
  129.  
  130.                     The program statement must be the first statement 
  131.                of any FDL source file.  It has the following form:
  132.  
  133.                     ^program program_name;
  134.  
  135.                The program_name string is required and must be less 
  136.                than 15 characters in length.  On printed or displayed 
  137.                output, the program_name string is positioned in the 
  138.                upper left corner of the flowchart page.
  139.                
  140.                Endprg Statement
  141.  
  142.                     The endprg statement must be the last statement in 
  143.                an FDL source file.  It must immediately appear after 
  144.                the last endmod statement since it signals the end of 
  145.                the file.  The endprg statement has the following form:
  146.  
  147.                     ^endprg;
  148.  
  149.  
  150.                Module Statement
  151.                     The module statement indicates the beginning of a 
  152.                module and must immediately follow the program 
  153.                statement or an endmod statement.  The module statement 
  154.                has the form:
  155.  
  156.                     ^module module_name;
  157.  
  158.                The module_name string is required and must be less 
  159.                than 14 characters in length.  The module_name string 
  160.                is placed in the module ENTRY block.  Each module 
  161.                begins with a '^module module_name;' statement and ends 
  162.                with an endmod statement.
  163.  
  164.  
  165.                Endmod Statement
  166.  
  167.                     The endmod statement indicates the end of a 
  168.                module.  It must match a prior module statement.  It 
  169.                has the form:
  170.  
  171.                     ^endmod endmod_string;
  172.  
  173.                An example of the use of the endmod statement follows:
  174.  
  175.                     ^module One;
  176.                          statement 1;
  177.                          statement 2;
  178.                          statement 3;
  179.                              ...
  180.                              ...
  181.                              ...
  182.                          statement n;
  183.                     ^endmod Return To Caller;
  184.  
  185.                 The endmod string is required and must be less than 17 
  186.                characters in length.  The endmod string appears in the 
  187.                exit block of the flowchart.
  188.  
  189.                Header Statement
  190.  
  191.                     The header statement can appear anywhere in a 
  192.                module.  It has the form:
  193.  
  194.                     ^header header_string;
  195.  
  196.                The header string must be less than 35 characters in 
  197.                length.  On printed or displayed output, it appears 
  198.                just to the right of the program name at the top of the 
  199.                flowchart page.  A header is a useful item that can be 
  200.                used to display a module name at the top of each page.
  201.                If multiple header statements appear in a module, the 
  202.                last header statement is considered legitimate and the 
  203.                previous header statements are ignored.  The header 
  204.                statement is optional and need not appear in the source 
  205.                file.
  206.  
  207.                Footer Statement
  208.                     The footer statement can appear anywhere within a 
  209.                module.  It has the form:
  210.  
  211.                     ^footer footer_string;
  212.  
  213.                The footer string must be less than 45 characters in 
  214.                length.   On printed or displayed output, it appears at 
  215.                the bottom of the page, approximately 25 characters 
  216.                from the left margin.  A footer is a useful item that 
  217.                can be used to display a module name at the bottom of 
  218.                each page.  If multiple footer statements appear in a 
  219.                module, the last footer statement is considered 
  220.                legitimate and the previous footer statements are 
  221.                ignored.  The footer statement is optional and need not 
  222.                appear in the FDL source file.
  223.  
  224.                Date Statement
  225.  
  226.                     The date statement is used to indicate the month, 
  227.                day and year that the source file was developed.  It is 
  228.                an optional statement.The date statement has the form:
  229.  
  230.                     ^date mon day year;
  231.  
  232.                where mon = three character month (Dec, Nov, etc.) in
  233.                upper or lower case
  234.  
  235.                      day = two character day
  236.                      year = four character year
  237.  
  238.                The date appears in the upper right part of the 
  239.                displayed or printed flowchart output.
  240.   
  241.                CONDITIONAL STATEMENTS
  242.  
  243.                     The FDL supports two conditional statements; they 
  244.                are if..then..endif, and ife..then..else..endelse.  The 
  245.                if..then..endif statement has the form:
  246.  
  247.                     if conditional_statement then
  248.                          statement 1;
  249.                          statement 2;
  250.                           ...
  251.                           ...
  252.                          statement n;
  253.                     endif;
  254.                The conditional statement must be less than 40 
  255.                characters in length and any single word within the 
  256.                conditional statement must be less than 17 characters.  
  257.                Words that are greater than or equal to 17 characters 
  258.                in length will cause a code generator error.  The 
  259.                'then' keyword must follow the conditional statement 
  260.                and the 'endif' keyword terminates the 'if' conditional 
  261.                statement.  This statement is used to bypass processing 
  262.                if the condition is false.
  263.                     The second conditional statement is the 
  264.                ife..then..else..endelse statement.  This statement is 
  265.                similar to the previous one with regards to the length 
  266.                of the conditional statement and individual word 
  267.                length.  This statement is used to execute one 
  268.                processing path if the condition is false and another 
  269.                processing path if the condition is true.
  270.                It has the form:
  271.                     ife conditional_statement then
  272.                          statement 1;
  273.                          statement 2;
  274.                            ..
  275.                          statement n;
  276.                     else
  277.                          statement n + 1;
  278.                          statement n + 2;
  279.                            ..
  280.                          statement n + m;
  281.                     endelse;
  282.  
  283.                These conditional statements can be nested within each 
  284.                other to a level that does not exceed the FCC 
  285.                complexity limit of 15. 
  286.            
  287.            LOOPING STATEMENTS
  288.                     The FDL supports three looping structures; they 
  289.                are while, for, and repeat.  There are restrictions on 
  290.                their use due to the type of flowchart block each 
  291.                statement generates.
  292.  
  293.                While Statement
  294.  
  295.                     The while statement is used to execute processing 
  296.                while a condition is true.  Once the condition becomes 
  297.                false, the loop is exited.  The while statement has the 
  298.                form:
  299.  
  300.                     while condition_statement do
  301.                          statement 1;
  302.                            ...
  303.                          statement n;
  304.                     endwhile;
  305.  
  306.                The 'do' keyword must follow the condition statement.  
  307.                The 'endwhile' keyword  terminates the while statement.  
  308.                Due to the type of flowchart blocks that are generated 
  309.                by a while statement, a while statement cannot 
  310.                immediately follow another while statement.  This is 
  311.                demonstrated below:
  312.  
  313.                      while x > y do
  314.                          while z > a do  { THIS IS NOT ALLOWED }
  315.  
  316.                 { THIS IS ALLOWED }
  317.  
  318.                     while x > y do
  319.                          initialize z;
  320.                          while z > a do
  321.                               ..
  322.                               ..
  323.                          endwhile;
  324.                     endwhile;
  325.                 
  326.                 A while statement cannot immediately follow an 
  327.                ife..then..else..endelse statement.  This is 
  328.                demonstrated below:
  329.  
  330.                     ife the condition is true then
  331.                          while x < 100 do { THIS IS NOT ALLOWED }
  332.  
  333.                 { THIS IS ALLOWED }
  334.                      ife the condition is true then
  335.                          initialize x;
  336.                          while x < 100 do
  337.                               ..
  338.                               ..
  339.                          endwhile;
  340.                     else
  341.                          ..
  342.                     endelse;
  343.  
  344.                A while statement cannot immediately follow a 
  345.                for..do..endfor statement.  This is demonstrated below:
  346.  
  347.                     for x = 100 0 - 1 do
  348.                          while a > 34 do  { THIS IS NOT ALLOWED }
  349.  
  350.                 { THIS IS ALLOWED }
  351.  
  352.                     for x = 100 0 - 1 do
  353.                          initialize a;
  354.                          while a > 34 do
  355.                               ..
  356.                               ..
  357.                          endwhile;
  358.                     endfor;
  359.  
  360.  
  361.                For Statement
  362.  
  363.                     The for statement is another looping statement 
  364.                supported by the FDL.  It has the following form:
  365.  
  366.                for loop_var = init_val limit_val sign increment do
  367.                     statement 1;
  368.                     statement 2;
  369.                       ...
  370.                     statement n;
  371.                endfor;
  372.  
  373.                The loop_var can be any character or word.  The 
  374.                init_val can be a number or a character or word.  The 
  375.                init_val is the value given to the loop_var at the 
  376.                beginning of the for loop.  The limit_val can be a 
  377.                character or a word or a number.  The loop_var is 
  378.                compared to the limit_val at the beginning of the for 
  379.                loop.  The sign must be either a '+' or '-'.  The 
  380.                increment must be a number.  Based upon the sign, the 
  381.                increment is added or subtracted to the loop_var at the 
  382.                end of the for loop.  If the sign is positive, the 
  383.                loop_var is tested to see if it is less than the 
  384.                limit_val.  If the sign is negative, the loop_var is 
  385.                tested to see if it is greater than the limit_val.
  386.                FOR statements can be nested to a level that does not 
  387.                exceed the FCC complexity limit of 15.
  388.  
  389.                Repeat Statement
  390.  
  391.                     The repeat statement allows the subsequent 
  392.                processing that occurs within the loop to execute at 
  393.                least once.  The repeat statement has the form:
  394.  
  395.                     repeat
  396.                          statement 1;
  397.                            ...
  398.                          statement n;
  399.                     until condition_statement;
  400.  
  401.                The repeat statement cannot immediately follow a while 
  402.                statement, a ife..then..else..endelse statement or a 
  403.                for statement.  This is demonstrated below:
  404.  
  405.                     while loopvar < limit do
  406.                          repeat               { THESE ARE NOT ALLOWED }
  407.  
  408.                     ife condition is true then
  409.                          repeat
  410.  
  411.                     for a = 0 100 + 1 do
  412.                          repeat
  413.  
  414.                 { THESE ARE ALLOWED }
  415.  
  416.                 while loopvar < limit do
  417.                          any legal statement;
  418.                          repeat
  419.                               ..
  420.                          until condition is false;
  421.                          ..
  422.                     endwhile;
  423.  
  424.                     ife condition is true then
  425.                          any legal statement;
  426.                          repeat;
  427.                               ..
  428.                          until condition is false;
  429.                     else
  430.                          ..
  431.                     endelse;
  432.  
  433.                     for a = 0 100 + 1 do
  434.                          any legal statement;
  435.                          repeat 
  436.                               ..
  437.                          until condition is false;
  438.                          ..
  439.                     endfor;
  440.  
  441.                The 'until' keyword, if used as the first word in a 
  442.                statement, indicates the end of the repeat statement.  
  443.                The conditional statement must be less than 40 
  444.                characters in length.  Any word within the conditional 
  445.                statement cannot be longer than 16 characters.  
  446.  
  447.                ASSIGNMENT STATEMENT 
  448.  
  449.                     The assignment statement is simply any string that 
  450.                does not begin with a keyword.  The minimum string size 
  451.                is 2 words and the maximum is 60 characters.  The 
  452.                maximum word length in an assignment statement string 
  453.                must be less than 19 characters.  An assignment 
  454.                statement can follow any other statement.
  455.   
  456.                SUBROUTINE CALL STATEMENT
  457.  
  458.                     The call statement must begin with the keyword 
  459.                'call'.  It can be 49 characters in length.  The 
  460.                maximum word length within a call statement string is 
  461.                17 characters or less.  The call statement has the 
  462.                form:
  463.  
  464.                     Call module get_char() to input the next letter;
  465.   
  466.                When displayed or printed, the keyword 'call' is 
  467.                spelled in all capital letters.
  468.   
  469.                SYNTAX
  470.   
  471.                     FDL syntax was designed to be straightforward and 
  472.                easy to remember.  Most of the FDL syntax rules were 
  473.                discussed above.  Here are the remaining syntax rules 
  474.                for the FDL:
  475.                1. Any statement that does not begin with a keyword is    
  476.                considered to be an assignment statement. 
  477.                2. All statements must terminate with a semicolon.
  478.                3. Each FDL source file must begin with the FDL    
  479.                statement - '^program progname;' where progname is    
  480.                the name of the program.
  481.                4. The program name must be less than 16 characters in    
  482.                length.
  483.                5. Each FDL source file must terminate with the FDL    
  484.                statement - '^endprg;'. 
  485.                6. A '^module module_name;' 
  486.                statement must immediately    follow a program 
  487.                statement.
  488.                7. FDL source statements can be upper or lower case    
  489.                characters or a combination thereof.
  490.                8. Comment statements must begin with a '{' and end 
  491.                with a '}'.  Once a left curly brace is encountered by 
  492.                the FCC scanner, all subsequent text is ignored by the 
  493.                scanner until an End Of File or a right curly brace is 
  494.                found.
  495.  
  496.                FLOWCHART COMPILER PROGRAM DESIGN
  497.  
  498.                Flowchart Compiler Menu Titles and Items
  499.    
  500.                Title          Choices
  501.  
  502.                Desktop        About the Flowchart Compiler...
  503.  
  504.                File           Compile
  505.                               Display
  506.                               Print
  507.                               Edit
  508.                               Delete
  509.                               Quit  
  510.  
  511.                Options        Display Next Page
  512.                               Output
  513.                               Set Edit Info
  514.                   Browse Manual
  515.  
  516.                Memory         System
  517.                               Disk
  518.  
  519.                Help           Compile
  520.                               Display
  521.                               Print
  522.                               Edit  
  523.                               Set Edit Pathname
  524.                               Browse Manual  
  525.   
  526.   
  527.                     Each menu title and menu item within a title will 
  528.                now be discussed:          
  529.  
  530.                Desk  
  531.  
  532.                By convention, the desk menu contains one application 
  533.                item choice, and up to six accessories. 
  534.  
  535.            File Menu
  536.            Under this title, there are items that manipulate files.  There
  537.            is also a menu item that if selected, will exit the program.
  538.  
  539.                Compile
  540.  
  541.                     The 'Compile...' item displays a dialog box that 
  542.                prompts the user for the full pathname of the input 
  543.                file, output file, temporary file, and error file.  If 
  544.                a valid input filename is entered and the file 
  545.                successfully opened for reading, a window is opened.  
  546.                Status messages and/or error messages are scrolled in 
  547.                the window to inform the user of compilation progress.  
  548.                The FCC scans, then parses the input file.  If errors 
  549.                are detected, a message is output to the screen and it 
  550.                is also written to the error file.  Modules that have 
  551.                errors do not have code generated.  If one module has 
  552.                an error, the output file is assumed to be 
  553.                corrupted.
  554.            
  555.            Display
  556.            This menu item will display a successfully compiled file
  557.            in a window.  23% of the first flow chart page will
  558.            be displayed.  The window can be scrolled vertically or
  559.            closed at any time.   To view subsequent pages, choose
  560.            'Display Next Page' from the 'Options' menu.
  561.  
  562.                Print
  563.                The Print item allows the user to print a compiled 
  564.                file in 120 horizontal by 72 vertical resolution.  The 
  565.                user is prompted for a filename.  If the file can be 
  566.                successfully opened, the display window is opened.  The 
  567.                first page of the file is copied into the offscreen 
  568.                buffer and approximately 23% is displayed in the 
  569.                display window.  The contents of the offscreen buffer 
  570.                are then printed.  The user can prematurely terminate 
  571.                the print function by typing Control D. 
  572.            
  573.                   Edit
  574.            This menu item allows an editor to be Pexec'd.  You must
  575.            specify the full pathname of the editor you want to use in
  576.            the 'Set Edit Info' item from the 'Options' menu.
  577.            
  578.            Delete
  579.            This menu item displays a standard file selector box and will
  580.            delete any selected file.
  581.   
  582.            Options Menu
  583.            This menu contains items that allow the user to display pages
  584.            of a compiled flowchart file, specify a range for flowchart
  585.            output, specify editor information, or browse this manual.
  586.                
  587.            Display Next Page
  588.  
  589.                     This menu item is enabled only when a flowchart 
  590.                file is being displayed.  It displays the next page of 
  591.                the flowchart file to the screen.
  592.  
  593.                Output
  594.  
  595.                      This selection displays a dialog 
  596.                box that allows the user to select display or print 
  597.                options.  All pages, only a module, or only a page 
  598.                range within a module will be displayed or printed.  If 
  599.                all pages are selected the user should then exit the 
  600.                dialog.  If a module is selected, then the user needs 
  601.                to enter the name of the module (case sensitive) to be 
  602.                displayed.  If the user wants to print a page range 
  603.                within a module, he/she should enter the module name, 
  604.                and the start and stop page numbers.  
  605.  
  606.                Set Edit Info
  607.  
  608.                     This selection allows the user to name the work 
  609.                file for a session.  It also allows the user to specify
  610.            which editor should be invoked when the 'Edit' item is
  611.            selected from the 'File' menu.  When the editor is invoked, it 
  612.                will automatically load the named file.
  613.  
  614.                Memory Menu
  615.  
  616.                     The memory menu item contains two choices; system 
  617.                and disk.
  618.  
  619.                System
  620.                     
  621.                      This selection displays the amount 
  622.                of free system memory in an alert box.
  623.  
  624.                Disk
  625.  
  626.                     The user is prompted for a drive 
  627.                letter.  The amount of free space, used space and total 
  628.                space is displayed in an alert box.
  629.  
  630.                Help Menu
  631.  
  632.                     The items under this menu title display 
  633.                information about the selection.  The Browse Manual 
  634.                selection invokes the editor and this documentation file is 
  635.                automatically loaded.  The user should write protect 
  636.                this file to prevent any inadvertant modification.
  637.  
  638.  
  639. ************ Language (BNF) Accepted by the Flow Chart Compiler *********
  640.  
  641. There may be an error or two here...
  642.  
  643. Legend:
  644.      <...> non-terminals, |  or, + after non-terminal is considered 
  645.      superscript
  646.  
  647. <program> ::= ^program <string>; <modules> ^endprog;
  648. <modules> ::= ^module <string>;<statements> ^endmod<string>; <modules> | 
  649. /\
  650.  
  651. <statements> ::= <statement> <statements> | /\
  652.  
  653. <statement>::= if <condition> then <statements> endif ; |
  654.                ife <condition> then <statements> else <statements> 
  655.                endelse;|
  656.                <assignment statement>; |
  657.                while <condition> do <statements> endwhile 
  658.                ; |
  659.                repeat <statements> until <condition> ;
  660.                | /\ (NULL string); |
  661.                for <loop var> = <initial val> <limit val>
  662.                <sign> <increment val> do <statements> endfor ; |
  663.                <layout command> ;|
  664.                call <string>; |
  665.                {<comment>}
  666.  
  667. <condition> ::= <string>
  668.                                                     
  669. <string> ::= <char><string> | /\
  670.  
  671. <char> ::= a|b|c|d..z|A|B|C|D..Z|0..9|!|"|#|$|%|&|'|(|)|space|
  672.            *|+|,|-|.|/|:|?|@|[|\|]|^|_|`|{|}
  673.  
  674. <assignment statement> ::= <string>
  675.  
  676. <loop var> ::= <string>
  677.  
  678. <digit> ::= 0..9
  679.  
  680. <initial val> ::= +<digit>+ | -<digit>+ | <digit>+
  681.  
  682. <limit val> ::= <initial val>
  683.  
  684. <sign> ::= + | -
  685.  
  686. <increment val> ::= <digit>+
  687.  
  688. <layout command> ::= ^<command> <string> | ^date <month> <day> <year>
  689.  
  690. <command> ::= header | footer 
  691.  
  692. <month> ::= jan | feb | mar | apr | may | jun | jul | aug | sep |
  693.             oct | nov | dec
  694.  
  695. <day> ::= <digit>2
  696.  
  697. <year> ::= <digit>4
  698.  
  699. <comment> ::= <string>
  700.  
  701.  
  702.  
  703. The Flow Chart Design Language (FDL) Keywords are:
  704.      ^, if, ife, endelse, while, for, call, then, else, endif, 
  705.      endwhile, do, endfor, until, repeat, program, endprg, module, endmod
  706.  
  707. Flow chart string length capacity is less than 60 characters for any 
  708. block.  All statements are terminated with a semicolon.
  709.  
  710. Comments can be placed anywhere within the source file.
  711.  
  712. ************** Compiler Error Messages ************************
  713.  
  714. "Expected '^' for Module statement." - the compiler expected to find a '^' 
  715. before a module statement
  716.  
  717. "Missing '^ENDPRG;' statement." - an end of file was read before the
  718. '^ENDPRG' statement was found
  719.  
  720. "Expected '^' for PROGRAM statement." - the compiler expected to find a 
  721. '^' before a PROGRAM statement
  722.  
  723. "PROGRAM statement expected." - compiler expected to find a PROGRAM 
  724. statement
  725.  
  726. "Missing program NAME." - the compiler parsed a semicolon instead of a 
  727. program name
  728.  
  729. "Program NAME expected; keyword found." - the compiler parsed a keyword 
  730. instead of a program name
  731.  
  732. "Program NAME exceeds 15 character limit." - the program name exceeded the 
  733. maximum length
  734.  
  735. "MODULE keyword expected." - the compiler expected to find a MODULE 
  736. keyword 
  737.  
  738. "Module NAME exceeds 13 character limit." - the module name exceeded the 
  739. maximum length
  740.  
  741. "Missing module NAME." - the compiler expected to find a module name but 
  742. found a semicolon instead
  743.  
  744. "HEADER string length exceeds 35 characters." -  the HEADER string exceeded
  745. the allowable limit
  746.  
  747. "FOOTER string length exceeds 45 characters." - the FOOTER string exceeded
  748. the allowable limit
  749.  
  750. "Page number string string length exceeds 4 characters." - page number
  751. string length exceeded the allowable limit
  752.  
  753. "Invalid character in page number." - page number contained a non numeric
  754. character
  755.  
  756. "PROGRAM statement should be the first statement in the file." - the
  757. program keyword was used incorrectly, it can only be used to declare
  758. a program at the beginning of the FDL source file
  759.  
  760. "ENDMOD string length exceeds 17 character limit." - the string length
  761. exceeded the allowable limit
  762.  
  763. "MODULE statement must follow ENDMOD statement." - MODULE keyword can only
  764. be used to declare a module in a FDL source file
  765.  
  766. "ENDPRG statement must follow ENDMOD statement." - the ENDPRG keyword can 
  767. only be used after an ENDMOD statement to terminate the FDL source file
  768.  
  769. "Invalid MONTH in DATE statement." - the month string in a DATE statement
  770. did not match the first 3 characters of any month
  771.  
  772. "Invalid DAY in DATE statement." - day field in date statement is not a 
  773. number or the length is > 2 characters
  774.  
  775. "Invalid YEAR in DATE statement." - the year field in a date statement is 
  776. is not a number or the length is > 4 characters
  777.  
  778. "Missing semicolon." - compiler expected to parse a semicolon
  779.  
  780. "String length exceeds 60 character limit." - string length for an operand 
  781. exceeds the maximum string length limit.
  782.  
  783. "No Text String Found." - compiler expected to parse a string but instead 
  784. parsed a semicolon
  785.  
  786. "REPEAT statement cannot immediately follow WHILE." - a repeat statement 
  787. immediately followed a while statement in the source file
  788.  
  789. "REPEAT statement cannot immediately follow IFE." - a repeat statement 
  790. immediately followed the start of an IF..THEN..ELSE..ENDELSE structure
  791.  
  792. "REPEAT statement cannot immediately follow FOR." - repeat statement 
  793. immediately followed a FOR statement
  794.  
  795. "Expected COMMAND statement." - the compiler expected to parse a command 
  796. statement after a '^' keyword
  797.  
  798. "IF condition string length exceeds 40 characters." - the string length 
  799. for the conditional part of an IF statement exceeded the maximum length 
  800. allowed
  801.  
  802. "WHILE statement cannot immediately follow WHILE." - a while statement 
  803. immediately followed another while statement
  804.  
  805. "WHILE statement cannot immediately follow FOR." - a while statement 
  806. immediately followed a for statement 
  807.  
  808. "WHILE statement cannot immediately follow IFE." - a while statement 
  809. immediately followed an ife statement
  810.  
  811. "WHILE condition string length exceeds 40 characters." - the conditional 
  812. string length of a while statement exceeded the maximum limit
  813.  
  814. "THEN keyword improperly used." - the then keyword was not used as the 
  815. terminator of an IF or IFE statement
  816.  
  817. "No matching IFE statement." - an ELSE keyword was used incorrectly, the 
  818. compiler couldn't find a matching IFE statement
  819.  
  820. "No matching IF statement." - an ENDIF statement was used incorrectly, the 
  821. compiler parsed an ENDIF and couldn't find the corresponding IF statement.
  822.  
  823. "No matching WHILE statement." - an ENDWHILE statement was used 
  824. incorrectly, the compiler parsed an ENDWHILE and couldn't find a matching 
  825. WHILE statement
  826.  
  827. "UNTIL condition string length exceeds 40 characters." - the conditional 
  828. string for an UNTIL block exceeded the maximum string length limit
  829.  
  830. "No matching REPEAT statement." - an UNTIL keyword was used incorrectly, 
  831. the compiler parsed an UNTIL keyword and could not find a matching REPEAT 
  832. statement
  833.  
  834. "No matching ELSE statement." - the ENDELSE keyword was used incorrectly, 
  835. the compiler parsed the ENDELSE keyword and could not find a matching ELSE 
  836. statement
  837.  
  838. "IFE condition string length exceeds 40 characters." - the conditional 
  839. string part of an IFE statement exceeded the maximum length limit
  840.  
  841. "No condition string found." - the compiler expected to parse a 
  842. conditional string and the string consisted of only 1 word or a semicolon 
  843. was parsed instead
  844.  
  845. "Missing DO keyword in a WHILE statement." - the compiler parsed a WHILE 
  846. statement without parsing the DO keyword after the conditional string
  847.  
  848. "Missing THEN keyword in IF statement." - the compiler parsed an IF 
  849. statement without parsing the THEN keyword after the conditional string
  850.  
  851. "Conditional string length exceeds 40 character limit." - during the parse 
  852. of a conditional string, the length exceeded the maximum length limit
  853.  
  854. "Expected to find a string." - during the parse for an assignment string, 
  855. a semicolon was found before a string
  856.  
  857. "ASSIGNMENT string length exceeds 60 characters." - the length of an 
  858. assignment string exceeded the maximum length limit
  859.  
  860. "CALL string length exceeds 56 characters." - the length of a CALL string 
  861. exceeded the maximum length limit
  862.  
  863. "Missing LOOP VARIABLE in FOR statement." - the compiler expected to parse 
  864. a loop variable for a FOR statement and found a keyword instead
  865.  
  866. "Missing '=' in FOR statement."  - compiler expected to find an '=' for a 
  867. FOR statement
  868.  
  869. "Missing INITIAL VALUE in FOR statement." - compiler expected to find an 
  870. initial value for a FOR statement and instead found a keyword
  871.  
  872. "Missing LIMIT VALUE in FOR statement." - compiler expected to find a 
  873. limit value for a FOR statement and instead found a keyword
  874.  
  875. "Missing + or - operator in a FOR statement." - compiler expected to find 
  876. an increment/decrement sign for a FOR statement
  877.  
  878. "Missing INCREMENT VALUE in FOR statement." - compiler expected to find an 
  879. increment value for a FOR statement and instead found a keyword
  880.  
  881. "Missing DO keyword in a FOR statement." - compiler expected to find a DO 
  882. keyword in a FOR statement
  883.  
  884. "No matching FOR statement." - incorrect use of the ENDFOR keyword, the 
  885. compiler parsed an ENDFOR statement and could not find a matching FOR 
  886. statement
  887.  
  888. "Missing ENDIF statement." - there is an IF statement in the module that 
  889. is not terminated by an ENDIF statement.  This error is discovered when 
  890. the ENDMOD statement is processed.
  891.  
  892. "Missing ENDFOR statement." - there is a FOR statement in the module that 
  893. is not terminated by an ENDFOR statement.  This error is discovered when 
  894. the ENDMOD statement is processed
  895.  
  896. "Missing ENDWHILE statement." - there is a WHILE statement in the module 
  897. that is not terminated by an ENDWHILE statement.  This error is discovered 
  898. when the ENDMOD statement is processed
  899.  
  900. "Missing UNTIL statement." - there is a REPEAT statement in the module 
  901. that is not terminated by an UNTIL statement.  This error is discovered 
  902. when the ENDMOD statement is processed
  903.  
  904. "Code Generator: String -> <STRING> ... doesn't fit in block." - code 
  905. generator error; even though a string does not exceed the string length 
  906. limit, the string will not fit inside the specified block.  Reword 
  907. (reduce the size) the string in the editor and recompile the source file
  908.  
  909. "Unmatched '{' caused early read of EOF." - a comment was started and not 
  910. finished with a closing '}'.  The compiler searched to the end of file for 
  911. the missing '}'
  912.  
  913.