home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / p2demo21.exe / PEL / COBOL.PEL < prev    next >
Text File  |  1995-03-21  |  47KB  |  792 lines

  1. # $Header:   P:\source\wmacros\cobol.pev   1.12   21 Mar 1995 09:08:24   NOBLE  $
  2. ## $Tabs:4 7$
  3.  
  4. ##############################################################################
  5. #
  6. #       Compuware Corporation
  7. #         31440 Northwestern Highway
  8. #           Farmington Hills, Michigan 48334-2564
  9. #
  10. #   This source code listing contains information that is
  11. #   proprietary to Compuware Corporation and may not be copied
  12. #   duplicated, translated, transmitted, stored, retrieved
  13. #   or in any manner or by any method conveyed or disclosed
  14. #   to a third party or parties without express written
  15. #   permission from Compuware Corporation.
  16. #
  17. #  
  18. ##############################################################################
  19.  
  20. #### $Workfile:   cobol.pel  $: COBOL support stuff
  21.  
  22. global function do_cobol_routines(dhTemp, allBuffers)
  23. {
  24.    local loc, buf, cursor_loc, fun_name
  25.  
  26.    local found_routine   = 0
  27.    local sflags          = SEARCH_FORWARD+SEARCH_REGEX+SEARCH_MAXIMAL_MATCH
  28.    local verbs           = "PROGRAM-ID|.* SECTION|.* DIVISION"
  29.    # the following search string is a good one to find things before the 
  30.    # PROCEDURE DIVISION but it is somewhat slow
  31. #   local srchstring      = "^......[ dB]\\c(PROGRAM-ID|.*SECTION|.*DIVISION|[0-9A-Z\\-]+\\.[ \t]*$|    ENTRY>)"
  32.    local srchstring      = "^......[ dB]\\c([0-9A-Za-z\\-]|    ENTRY>|.*SECTION)"
  33.  
  34.    found_routine = optional_function("xpp_get_cbl_rtns", dhTemp, allBuffers)
  35.    
  36.    if (!found_routine)
  37.    {
  38.       save_position();
  39.       goto_buffer_top();
  40.    
  41.       # start from the procedure division
  42.       if ( search("^...... PROCEDURE DIVISION", sflags) )
  43.       {
  44.          down()
  45.          goto_bol()
  46.    
  47.          while ( search(srchstring, sflags) )
  48.          {
  49.             loc = 0
  50.             cursor_loc = current_column
  51.             goto_bol()
  52.             buf        = read_buffer()
  53.             fun_name   = trim( buf )
  54.          
  55.             if ( index(buf, "PROGRAM-ID") )
  56.             {
  57.                if (cursor_loc >= 8 && cursor_loc <= 11)   
  58.                {
  59.                   loc = rindex( fun_name, "." )
  60.                   fun_name = substr( fun_name, cursor_loc );
  61.                   loc = length( fun_name ) + 1
  62.                }
  63.             }
  64.             # check section
  65.             #
  66.             else if ( buf ~ /<SECTION\.$|<DIVISION\.$/ )
  67.             {
  68.                if (cursor_loc >= 8 && cursor_loc <= 11)
  69.                {
  70.                   fun_name = substr( fun_name, cursor_loc );
  71.                   loc = length( fun_name ) + 1
  72.                }
  73.             }
  74.             # check ENTRY
  75.             # 
  76.             else if ( buf ~ /<ENTRY>/ )
  77.             {
  78.                if (cursor_loc >= 12 && cursor_loc <= 72)
  79.                {
  80.                   loc = rindex( fun_name, "'" ) + 1
  81.                   fun_name = trim( substr(fun_name, 1, loc-1) );
  82.                   if ( (loc = rindex( fun_name, " " )) ) 
  83.                      fun_name = substr( fun_name, loc+1 ) " Entry "
  84.          
  85.                   loc = length( fun_name ) + 1
  86.                }
  87.             }
  88.             # check for paragraphs
  89.             #
  90.             else if (cursor_loc >= 8 && cursor_loc <= 11 && 
  91.                      match(fun_name, "^...... [0-9A-Za-z\\-]+\\.") )
  92.             {
  93.                fun_name = substr(fun_name, cursor_loc ) " Paragraph "
  94.                gsub("\\.", "", fun_name)
  95.                loc = length( fun_name ) + 1
  96.             }
  97.          
  98.             found_routine += add_routine(loc, fun_name, dhTemp, allBuffers)
  99.    
  100.             sflags = or( sflags, SEARCH_ADVANCE );
  101.          } # end while
  102.       }
  103.       else
  104.          warning("No PROCEDURE DIVISION found!")
  105.    
  106.    restore_position(1);
  107.    }
  108.  
  109.    return found_routine
  110. }
  111.  
  112. global function setup_cobol_template()
  113. {
  114.    delete( language_template );    # delete last template and start over
  115.  
  116.    ELEC_LANG = "cobol"
  117.  
  118.    language_template[ "A" ]=  "ADD `field-1` TO `field-2` ROUNDED\n" \
  119.                              "\tGIVING `field-3`\n"
  120.    language_template[ "AC" ]= "ADD CORRESPONDING `group-1` TO `group-2` ROUNDED.\n" 
  121.    language_template[ "AF" ]= "ACCEPT `field-1` FROM `date\\day\\day-of-week\\time-1`.\n"
  122.    language_template[ "C" ]=  "CALL `program-1` USING `parameters-1`."
  123.    language_template[ "C1" ]= "COMP-1.@"
  124.    language_template[ "C2" ]= "COMP-2.@"
  125.    language_template[ "C3" ]= "COMP-3.@"
  126.    language_template[ "C4" ]= "COMP-4.@"
  127.    language_template[ "CO" ]= "COMP.@"
  128.    language_template[ "COB" ]= "@IDENTIFICATION DIVISION.\n" \
  129.                                "PROGRAM-ID.        `program-name-1`.\n" \
  130.                                "AUTHOR.            `your-name-1`.\n" \
  131.                                "INSTALLATION.      `company-name-1`.\n" \
  132.                                "DATE-WRITTEN.      `date-1`.\n"\
  133.                                "DATE-COMPILED.     `date-2`.\n"\
  134.                                "REMARKS.\n\n" \
  135.                                "ENVIRONMENT DIVISION.\n" \
  136.                                "CONFIGURATION SECTION.\n" \
  137.                                "SOURCE-COMPUTER.   `computer-1`.\n" \
  138.                                "OBJECT-COMPUTER.   `computer-1`.\n" \
  139.                                "INPUT-OUTPUT SECTION.\n" \
  140.                                "FILE-CONTROL.\n\n" \
  141.                                "DATA DIVISION.\n" \
  142.                                "FILE SECTION.\n" \
  143.                                "WORKING-STORAGE SECTION.\n" \
  144.                                "LINKAGE SECTION.\n\n" \
  145.                                "PROCEDURE DIVISION.\n" 
  146.    language_template[ "D" ]=  "@DIVIDE `field-1` INTO `field-2`\n"
  147.    language_template[ "DI" ]= "@DIVIDE `field-1` INTO `field-2`\n" \
  148.                               "\tGIVING `field-3`\n" \
  149.                                 "REMAINDER `field-4`\n" 
  150.    language_template[ "DB" ]= "@DIVIDE `field-1` BY `field-2`\n" \
  151.                               "\tGIVING `field-3`\n" \
  152.                                 "REMAINDER `field-4`\n" 
  153.    language_template[ "DD" ]= "DATA DIVISION.\n" \
  154.                               "FILE SECTION.\n" \
  155.                               "WORKING-STORAGE SECTION.\n" \
  156.                               "LINKAGE SECTION.@"
  157.    language_template[ "ED" ]=  "ENVIRONMENT DIVISION.\n" \
  158.                                "CONFIGURATION SECTION.\n" \
  159.                                "SOURCE-COMPUTER.   IBM-PERSONAL-COMPUTER. \n"\
  160.                                "OBJECT-COMPUTER.   IBM-PERSONAL-COMPUTER.\n" \
  161.                                "INPUT-OUTPUT SECTION.\n" \
  162.                                "FILE-CONTROL.@" 
  163.    language_template[ "EA" ]= "END-ADD@"
  164.    language_template[ "EDI" ]= "END-DIVIDE@"
  165.    language_template[ "EI" ]= "END-IF@"
  166.    language_template[ "EM" ]= "END-MULTIPLY@"
  167.    language_template[ "ESE" ]= "END-SEARCH@"
  168.    language_template[ "ES" ]= "END-SUBTRACT@"
  169.    language_template[ "FD" ]= "@FD\t`filename-1`\n" \
  170.                                 "\tBLOCK CONTAINS `nnn-1` CHARACTERS\n" \
  171.                                   "RECORD CONTAINS `nnn-2` CHARACTERS\n" \
  172.                                   "LABEL RECORDS ARE STANDARD\n" \
  173.                                   "DATA RECORDS ARE `data-name-1`, `data-name-2`, `...`\n\n" \
  174.                             "\b01\t`data-name-1`.\n"
  175.    language_template[ "FS" ]= "FILE SECTION.@" 
  176.    language_template[ "ID" ]=  "@IDENTIFICATION DIVISION.\n" \
  177.                                "PROGRAM-ID.        `program-name-1`.\n" \
  178.                                "AUTHOR.            `your-name-1`.\n" \
  179.                                "INSTALLATION.      `company-name-1`.\n" \
  180.                                "DATE-WRITTEN.      `date-1`.\n"\
  181.                                "DATE-COMPILED.     `date-2`.\n"\
  182.                                "REMARKS.\n\n" 
  183.    language_template[ "IF" ]= "@IF `condition-1` \n" \
  184.                               "\t\t`statement-1`\n" \
  185.                               "\bELSE \n" \
  186.                               "\t`statement-2`\n" 
  187.    language_template[ "IFE" ]= "@IF `condition-1` \n" \
  188.                               "\t\t`statement-1`\n" \
  189.                               "\bELSE \n" \
  190.                               "\t`statement-2`\n" \
  191.                               "END-IF."
  192.    language_template[ "LS" ]= "LINKAGE SECTION.@" 
  193.    language_template[ "M" ]= "MOVE field-1` TO `field-2`.\n"
  194.    language_template[ "MB" ]= "MULTIPLY `field-1` BY `field-2` \n" \
  195.                               "\tGIVING `field-3` ROUNDED\n" 
  196.    language_template[ "MC" ]= "MOVE CORRESPONDING `group-1` TO `group-2`.\n"
  197.    language_template[ "O" ]= "OPEN@"
  198.    language_template[ "OI" ]= "OPEN INPUT@"
  199.    language_template[ "OIO" ]= "OPEN INPUT-OUTPUT@"
  200.    language_template[ "OO" ]= "OPEN OUTPUT@"
  201.    language_template[ "P" ]= "PIC@"
  202.    language_template[ "PD" ]= "PROCEDURE DIVISION.@" 
  203.    language_template[ "PE" ]= "PERFORM `procedure-1` THRU `procedure-2`.\n"
  204.    language_template[ "R" ]= "READ@"
  205.    language_template[ "S" ]= "SELECT `file-name-1` ASSIGN TO `name-1`.\n"
  206.    language_template[ "SC" ]= "SUBTRACT CORRESPONDING `group-1` FROM `group-2` \n" \
  207.                              "\tGIVING `group-3` \n" 
  208.    language_template[ "SE" ]= "SEARCH `table-1` VARYING `index-1` \n" \
  209.                               "\tAT END `statement-1` \n" \
  210.                               "WHEN `condition-1` `statement-2` \n" 
  211.    language_template[ "SO" ]= "SORT `filename-1` ON ASCENDING KEY `data-name-1` \n" \
  212.                               "USING `filename-2` \n" \
  213.                               "INPUT PROCEDURE IS `procedure-name-1` THRU `procedure-name-2` \n" \
  214.                               "GIVING `filename-3` \n" \
  215.                               "OUTPUT PROCEDURE IS `procedure-name-3` THRU `procedure-name-4` \n" 
  216.    language_template[ "ST" ]= "STRING `field-1` DELIMITED BY `delimiter-1` INTO `field-2`. \n"
  217.    language_template[ "SU" ]= "SUBTRACT `field-1` FROM `field-2` \n" \
  218.                              "\tGIVING `field-3` \n" 
  219.    language_template[ "U" ]= "USAGE @"
  220.    language_template[ "U1" ]= "USAGE COMPUTATIONAL-1 @"
  221.    language_template[ "U2" ]= "USAGE COMPUTATIONAL-2 @"
  222.    language_template[ "U3" ]= "USAGE COMPUTATIONAL-3 @"
  223.    language_template[ "U4" ]= "USAGE COMPUTATIONAL-4 @"
  224.    language_template[ "UB" ]= "USAGE BINARY @"
  225.    language_template[ "UC" ]= "USAGE COMPUTATIONAL @"
  226.    language_template[ "UD" ]= "USAGE DISPLAY @"
  227.    language_template[ "UD1" ]= "USAGE DISPLAY-1 @"
  228.    language_template[ "UI" ]= "USAGE INDEX @"
  229.    language_template[ "UP" ]= "USAGE PACKED-DECIMAL @"
  230.    language_template[ "US" ]= "UNSTRING `field-1` DELIMITED BY `delimiter-1` INTO `field-2`. \n"
  231.    language_template[ "V" ]= "VALUE @"
  232.    language_template[ "W" ]= "WRITE `record-1` FROM `field-1`. "
  233.    language_template[ "WS" ]= "WORKING-STORAGE SECTION. @"
  234. }
  235.  
  236. global function add_cobol_type()
  237. {
  238.    local flags = BUFFER_TABS_TO_SPACES + BUFFER_EXPAND_TABS;
  239.  
  240.    add_type("cobol", "Microfocus 3.2", "cobol", "8 12", "1 80", 
  241.             "IF END-IF PERFORM END-PERFORM ADD END-ADD DIVIDE END-DIVIDE MULTIPLY END-MULTIPLY SEARCH END-SEARCH   SUBTRACT END-SUBTRACT", "\\", 
  242.             flags, 1, 1, "()[];:='", 1);
  243. }
  244.  
  245. global function load_factory_cobol_syntax()
  246. {
  247.    local type = "cobol"
  248.  
  249.    set_factory_categories( type );
  250.  
  251.    add_syntax_item(type, KEYWORD, "ACCEPT", CATEGORY_RESERVED);
  252.    add_syntax_item(type, KEYWORD, "ACCESS", CATEGORY_CLAUSE );
  253.    add_syntax_item(type, KEYWORD, "ACTUAL", CATEGORY_RESERVED);
  254.    add_syntax_item(type, KEYWORD, "ADD", CATEGORY_RESERVED);
  255.    add_syntax_item(type, KEYWORD, "ADDRESS", CATEGORY_RESERVED  );
  256.    add_syntax_item(type, KEYWORD, "ADVANCING", CATEGORY_RESERVED  );
  257.    add_syntax_item(type, KEYWORD, "AFTER", CATEGORY_RESERVED  );
  258.    add_syntax_item(type, KEYWORD, "ALL", CATEGORY_RESERVED  );
  259.    add_syntax_item(type, KEYWORD, "ALPHABET", CATEGORY_RESERVED  );
  260.    add_syntax_item(type, KEYWORD, "ALPHABETIC", CATEGORY_RESERVED  );
  261.    add_syntax_item(type, KEYWORD, "ALPHABETIC-LOWER", CATEGORY_RESERVED  );
  262.    add_syntax_item(type, KEYWORD, "ALPHABETIC-UPPER", CATEGORY_RESERVED  );
  263.    add_syntax_item(type, KEYWORD, "ALPHANUMERIC", CATEGORY_RESERVED  );
  264.    add_syntax_item(type, KEYWORD, "ALPHANUMERIC-EDITED", CATEGORY_RESERVED  );
  265.    add_syntax_item(type, KEYWORD, "ALSO", CATEGORY_RESERVED  );
  266.    add_syntax_item(type, KEYWORD, "ALTER", CATEGORY_RESERVED  );
  267.  
  268.    add_syntax_item(type, KEYWORD, "ALTERNATE", CATEGORY_CLAUSE );
  269.    add_syntax_item(type, KEYWORD, "AND", CATEGORY_RESERVED  );
  270.    add_syntax_item(type, KEYWORD, "ANY", CATEGORY_RESERVED  );
  271.    add_syntax_item(type, KEYWORD, "APPLY", CATEGORY_CLAUSE );
  272.    add_syntax_item(type, KEYWORD, "ARE", CATEGORY_RESERVED  );
  273.    add_syntax_item(type, KEYWORD, "AREA", CATEGORY_RESERVED  );
  274.    add_syntax_item(type, KEYWORD, "AREAS", CATEGORY_RESERVED  );
  275.    add_syntax_item(type, KEYWORD, "ARITHMETIC", CATEGORY_RESERVED  );
  276.    add_syntax_item(type, KEYWORD, "ASCENDING", CATEGORY_RESERVED  );
  277.    add_syntax_item(type, KEYWORD, "ASSIGN", CATEGORY_CLAUSE );
  278.    add_syntax_item(type, KEYWORD, "AT", CATEGORY_RESERVED  );
  279.    add_syntax_item(type, KEYWORD, "AUTHOR", CATEGORY_PARAGRAPH );
  280.    add_syntax_item(type, KEYWORD, "B-AND", CATEGORY_RESERVED  );
  281.    add_syntax_item(type, KEYWORD, "B-EXOR", CATEGORY_RESERVED  );
  282.    add_syntax_item(type, KEYWORD, "B-NOT", CATEGORY_RESERVED  );
  283.    add_syntax_item(type, KEYWORD, "B-OR", CATEGORY_RESERVED  );
  284.    add_syntax_item(type, KEYWORD, "BASIS", CATEGORY_RESERVED  );
  285.    add_syntax_item(type, KEYWORD, "BEFORE", CATEGORY_RESERVED  );
  286.    add_syntax_item(type, KEYWORD, "BEGINNING", CATEGORY_RESERVED  );
  287.    add_syntax_item(type, KEYWORD, "BINARY", CATEGORY_RESERVED  );
  288.    add_syntax_item(type, KEYWORD, "BIT", CATEGORY_RESERVED  );
  289.    add_syntax_item(type, KEYWORD, "BITS", CATEGORY_RESERVED  );
  290.    add_syntax_item(type, KEYWORD, "BLANK", CATEGORY_CLAUSE );
  291.    add_syntax_item(type, KEYWORD, "BLOCK", CATEGORY_CLAUSE );
  292.    add_syntax_item(type, KEYWORD, "BOOLEAN", CATEGORY_RESERVED  );
  293.    add_syntax_item(type, KEYWORD, "BOTTOM", CATEGORY_RESERVED  );
  294.    add_syntax_item(type, KEYWORD, "BY", CATEGORY_RESERVED  );
  295.    add_syntax_item(type, KEYWORD, "CALL", CATEGORY_RESERVED  );
  296.    add_syntax_item(type, KEYWORD, "CANCEL", CATEGORY_RESERVED  );
  297.    add_syntax_item(type, KEYWORD, "CBL", CATEGORY_RESERVED  );
  298.    add_syntax_item(type, KEYWORD, "CD", CATEGORY_RESERVED  );
  299.    add_syntax_item(type, KEYWORD, "CF", CATEGORY_RESERVED  );
  300.    add_syntax_item(type, KEYWORD, "CH", CATEGORY_RESERVED  );
  301.    add_syntax_item(type, KEYWORD, "CHANGED", CATEGORY_RESERVED  );
  302.    add_syntax_item(type, KEYWORD, "CHARACTER", CATEGORY_RESERVED  );
  303.    add_syntax_item(type, KEYWORD, "CHARACTERS", CATEGORY_RESERVED  );
  304.    add_syntax_item(type, KEYWORD, "CLASS", CATEGORY_RESERVED  );
  305.    add_syntax_item(type, KEYWORD, "CLOSE", CATEGORY_RESERVED  );
  306.    add_syntax_item(type, KEYWORD, type, CATEGORY_RESERVED  );
  307.    add_syntax_item(type, KEYWORD, "CODE", CATEGORY_RESERVED  );
  308.    add_syntax_item(type, KEYWORD, "CODE-SET", CATEGORY_CLAUSE );
  309.    add_syntax_item(type, KEYWORD, "COLLATING", CATEGORY_RESERVED  );
  310.    add_syntax_item(type, KEYWORD, "COLUMN", CATEGORY_RESERVED  );
  311.    add_syntax_item(type, KEYWORD, "COM-REG", CATEGORY_RESERVED  );
  312.    add_syntax_item(type, KEYWORD, "COMMA", CATEGORY_RESERVED  );
  313.    add_syntax_item(type, KEYWORD, "COMMIT", CATEGORY_RESERVED  );
  314.    add_syntax_item(type, KEYWORD, "COMMON", CATEGORY_RESERVED  );
  315.    add_syntax_item(type, KEYWORD, "COMMUNICATION", CATEGORY_SECTION );
  316.    add_syntax_item(type, KEYWORD, "COMP", CATEGORY_RESERVED  );
  317.    add_syntax_item(type, KEYWORD, "COMP-1", CATEGORY_RESERVED  );
  318.    add_syntax_item(type, KEYWORD, "COMP-2", CATEGORY_RESERVED  );
  319.    add_syntax_item(type, KEYWORD, "COMP-3", CATEGORY_RESERVED  );
  320.    add_syntax_item(type, KEYWORD, "COMP-4", CATEGORY_RESERVED  );
  321.    add_syntax_item(type, KEYWORD, "COMPUTATIONAL", CATEGORY_RESERVED  );
  322.    add_syntax_item(type, KEYWORD, "COMPUTATIONAL-1", CATEGORY_RESERVED  );
  323.    add_syntax_item(type, KEYWORD, "COMPUTATIONAL-2", CATEGORY_RESERVED  );
  324.    add_syntax_item(type, KEYWORD, "COMPUTATIONAL-3", CATEGORY_RESERVED  );
  325.    add_syntax_item(type, KEYWORD, "COMPUTATIONAL-4", CATEGORY_RESERVED  );
  326.    add_syntax_item(type, KEYWORD, "COMPUTE", CATEGORY_RESERVED  );
  327.    add_syntax_item(type, KEYWORD, "CONFIGURATION", CATEGORY_SECTION );
  328.    add_syntax_item(type, KEYWORD, "CONNECT", CATEGORY_RESERVED  );
  329.    add_syntax_item(type, KEYWORD, "CONSOLE", CATEGORY_RESERVED  );
  330.    add_syntax_item(type, KEYWORD, "CONTAINS", CATEGORY_CLAUSE );
  331.    add_syntax_item(type, KEYWORD, "CONTENT", CATEGORY_RESERVED  );
  332.    add_syntax_item(type, KEYWORD, "CONTINUE", CATEGORY_RESERVED  );
  333.    add_syntax_item(type, KEYWORD, "CONTROL", CATEGORY_RESERVED  );
  334.    add_syntax_item(type, KEYWORD, "CONTROLS", CATEGORY_RESERVED  );
  335.    add_syntax_item(type, KEYWORD, "CONVERTING", CATEGORY_RESERVED  );
  336.    add_syntax_item(type, KEYWORD, "COPY", CATEGORY_RESERVED  );
  337.    add_syntax_item(type, KEYWORD, "CORE-INDEX", CATEGORY_RESERVED  );
  338.    add_syntax_item(type, KEYWORD, "CORR", CATEGORY_RESERVED  );
  339.    add_syntax_item(type, KEYWORD, "CORRESPONDING", CATEGORY_RESERVED  );
  340.    add_syntax_item(type, KEYWORD, "COUNT", CATEGORY_RESERVED  );
  341.    add_syntax_item(type, KEYWORD, "CSP", CATEGORY_RESERVED  );
  342.    add_syntax_item(type, KEYWORD, "CURRENCY", CATEGORY_RESERVED  );
  343.    add_syntax_item(type, KEYWORD, "CURRENT", CATEGORY_RESERVED  );
  344.    add_syntax_item(type, KEYWORD, "CURRENT-DATE", CATEGORY_RESERVED  );
  345.    add_syntax_item(type, KEYWORD, "C01", CATEGORY_RESERVED  );
  346.    add_syntax_item(type, KEYWORD, "C02", CATEGORY_RESERVED  );
  347.    add_syntax_item(type, KEYWORD, "C03", CATEGORY_RESERVED  );
  348.    add_syntax_item(type, KEYWORD, "C04", CATEGORY_RESERVED  );
  349.    add_syntax_item(type, KEYWORD, "C05", CATEGORY_RESERVED  );
  350.    add_syntax_item(type, KEYWORD, "C06", CATEGORY_RESERVED  );
  351.    add_syntax_item(type, KEYWORD, "C07", CATEGORY_RESERVED  );
  352.    add_syntax_item(type, KEYWORD, "C08", CATEGORY_RESERVED  );
  353.    add_syntax_item(type, KEYWORD, "C09", CATEGORY_RESERVED  );
  354.    add_syntax_item(type, KEYWORD, "C10", CATEGORY_RESERVED  );
  355.    add_syntax_item(type, KEYWORD, "C11", CATEGORY_RESERVED  );
  356.    add_syntax_item(type, KEYWORD, "C12", CATEGORY_RESERVED  );
  357.    add_syntax_item(type, KEYWORD, "DATA", CATEGORY_DIVISION );
  358.    add_syntax_item(type, KEYWORD, "DATE", CATEGORY_RESERVED  );
  359.    add_syntax_item(type, KEYWORD, "DATE-COMPILED", CATEGORY_PARAGRAPH );
  360.    add_syntax_item(type, KEYWORD, "DATE-WRITTEN", CATEGORY_PARAGRAPH );
  361.    add_syntax_item(type, KEYWORD, "DAY", CATEGORY_RESERVED  );
  362.    add_syntax_item(type, KEYWORD, "DAY-OF-WEEK", CATEGORY_RESERVED  );
  363.    add_syntax_item(type, KEYWORD, "DB", CATEGORY_RESERVED  );
  364.    add_syntax_item(type, KEYWORD, "DB-ACCESS-CONTROL-KEY", CATEGORY_RESERVED  );
  365.    add_syntax_item(type, KEYWORD, "DB-DATA-NAME", CATEGORY_RESERVED  );
  366.    add_syntax_item(type, KEYWORD, "DB-EXCEPTION", CATEGORY_RESERVED  );
  367.    add_syntax_item(type, KEYWORD, "DB-RECORD-NAME", CATEGORY_RESERVED  );
  368.    add_syntax_item(type, KEYWORD, "DB-SET-NAME", CATEGORY_RESERVED  );
  369.    add_syntax_item(type, KEYWORD, "DB-STATUS", CATEGORY_RESERVED  );
  370.    add_syntax_item(type, KEYWORD, "DE", CATEGORY_RESERVED  );
  371.    add_syntax_item(type, KEYWORD, "DEBUG", CATEGORY_RESERVED  );
  372.    add_syntax_item(type, KEYWORD, "DEBUG-CONTENTS", CATEGORY_RESERVED  );
  373.    add_syntax_item(type, KEYWORD, "DEBUG-ITEM", CATEGORY_RESERVED  );
  374.    add_syntax_item(type, KEYWORD, "DEBUG-LINE", CATEGORY_RESERVED  );
  375.    add_syntax_item(type, KEYWORD, "DEBUG-NAME", CATEGORY_RESERVED  );
  376.    add_syntax_item(type, KEYWORD, "DEBUG-SUB-1", CATEGORY_RESERVED  );
  377.    add_syntax_item(type, KEYWORD, "DEBUG-SUB-2", CATEGORY_RESERVED  );
  378.    add_syntax_item(type, KEYWORD, "DEBUG-SUB-3", CATEGORY_RESERVED  );
  379.    add_syntax_item(type, KEYWORD, "DEBUGGING", CATEGORY_RESERVED  );
  380.    add_syntax_item(type, KEYWORD, "DECIMAL-POINT", CATEGORY_RESERVED  );
  381.    add_syntax_item(type, KEYWORD, "DECLARATIVES", CATEGORY_RESERVED  );
  382.    add_syntax_item(type, KEYWORD, "DEFAULT", CATEGORY_RESERVED  );
  383.    add_syntax_item(type, KEYWORD, "DELETE", CATEGORY_RESERVED  );
  384.    add_syntax_item(type, KEYWORD, "DELIMITED", CATEGORY_RESERVED  );
  385.    add_syntax_item(type, KEYWORD, "DELIMITER", CATEGORY_RESERVED  );
  386.    add_syntax_item(type, KEYWORD, "DEPENDING", CATEGORY_RESERVED  );
  387.    add_syntax_item(type, KEYWORD, "DESCENDING", CATEGORY_RESERVED  );
  388.    add_syntax_item(type, KEYWORD, "DESTINATION", CATEGORY_RESERVED  );
  389.    add_syntax_item(type, KEYWORD, "DETAIL", CATEGORY_RESERVED  );
  390.    add_syntax_item(type, KEYWORD, "DISABLE", CATEGORY_RESERVED  );
  391.    add_syntax_item(type, KEYWORD, "DISCONNECT", CATEGORY_RESERVED  );
  392.    add_syntax_item(type, KEYWORD, "DISP", CATEGORY_RESERVED  );
  393.    add_syntax_item(type, KEYWORD, "DISPLAY", CATEGORY_RESERVED  );
  394.    add_syntax_item(type, KEYWORD, "DISPLAY-1", CATEGORY_RESERVED  );
  395.    add_syntax_item(type, KEYWORD, "DISPLAY-ST", CATEGORY_RESERVED  );
  396.    add_syntax_item(type, KEYWORD, "DIVIDE", CATEGORY_RESERVED  );
  397.    add_syntax_item(type, KEYWORD, "DIVISION", CATEGORY_DIVISION );
  398.    add_syntax_item(type, KEYWORD, "DOWN", CATEGORY_RESERVED  );
  399.    add_syntax_item(type, KEYWORD, "DUPLICATE", CATEGORY_RESERVED  );
  400.    add_syntax_item(type, KEYWORD, "DUPLICATES", CATEGORY_RESERVED  );
  401.    add_syntax_item(type, KEYWORD, "DYNAMIC", CATEGORY_RESERVED  );
  402.    add_syntax_item(type, KEYWORD, "EGCS", CATEGORY_RESERVED  );
  403.    add_syntax_item(type, KEYWORD, "EGI", CATEGORY_RESERVED  );
  404.    add_syntax_item(type, KEYWORD, "EJECT", CATEGORY_RESERVED  );
  405.    add_syntax_item(type, KEYWORD, "ELSE", CATEGORY_RESERVED  );
  406.    add_syntax_item(type, KEYWORD, "EMI", CATEGORY_RESERVED  );
  407.    add_syntax_item(type, KEYWORD, "EMPTY", CATEGORY_RESERVED  );
  408.    add_syntax_item(type, KEYWORD, "ENABLE", CATEGORY_RESERVED  );
  409.    add_syntax_item(type, KEYWORD, "END", CATEGORY_RESERVED  );
  410.    add_syntax_item(type, KEYWORD, "END-ADD", CATEGORY_RESERVED  );
  411.    add_syntax_item(type, KEYWORD, "END-CALL", CATEGORY_RESERVED  );
  412.    add_syntax_item(type, KEYWORD, "END-COMPUTE", CATEGORY_RESERVED  );
  413.    add_syntax_item(type, KEYWORD, "END-DELETE", CATEGORY_RESERVED  );
  414.    add_syntax_item(type, KEYWORD, "END-DIVIDE", CATEGORY_RESERVED  );
  415.    add_syntax_item(type, KEYWORD, "END-EVALUATE", CATEGORY_RESERVED  );
  416.    add_syntax_item(type, KEYWORD, "END-IF", CATEGORY_RESERVED  );
  417.    add_syntax_item(type, KEYWORD, "END-MULTIPLY", CATEGORY_RESERVED  );
  418.    add_syntax_item(type, KEYWORD, "END-OF-PAGE", CATEGORY_RESERVED  );
  419.    add_syntax_item(type, KEYWORD, "END-PERFORM", CATEGORY_RESERVED  );
  420.    add_syntax_item(type, KEYWORD, "END-READ", CATEGORY_RESERVED  );
  421.    add_syntax_item(type, KEYWORD, "END-RECEIVE", CATEGORY_RESERVED  );
  422.    add_syntax_item(type, KEYWORD, "END-RETURN", CATEGORY_RESERVED  );
  423.    add_syntax_item(type, KEYWORD, "END-REWRITE", CATEGORY_RESERVED  );
  424.    add_syntax_item(type, KEYWORD, "END-SEARCH", CATEGORY_RESERVED  );
  425.    add_syntax_item(type, KEYWORD, "END-START", CATEGORY_RESERVED  );
  426.    add_syntax_item(type, KEYWORD, "END-STRING", CATEGORY_RESERVED  );
  427.    add_syntax_item(type, KEYWORD, "END-SUBTRACT", CATEGORY_RESERVED  );
  428.    add_syntax_item(type, KEYWORD, "END-UNSTRING", CATEGORY_RESERVED  );
  429.    add_syntax_item(type, KEYWORD, "END-WRITE", CATEGORY_RESERVED  );
  430.    add_syntax_item(type, KEYWORD, "ENDING", CATEGORY_RESERVED  );
  431.    add_syntax_item(type, KEYWORD, "ENTER", CATEGORY_RESERVED  );
  432.    add_syntax_item(type, KEYWORD, "ENTRY", CATEGORY_RESERVED  );
  433.    add_syntax_item(type, KEYWORD, "ENVIRONMENT", CATEGORY_DIVISION );
  434.    add_syntax_item(type, KEYWORD, "EOP", CATEGORY_RESERVED  );
  435.    add_syntax_item(type, KEYWORD, "EQUAL", CATEGORY_RESERVED  );
  436.    add_syntax_item(type, KEYWORD, "EQUALS", CATEGORY_RESERVED  );
  437.  
  438.    load_factory_cobol_syntax2(type);
  439. }
  440.  
  441. local function load_factory_cobol_syntax2(type)
  442. {
  443.    add_syntax_item(type, KEYWORD, "ERASE", CATEGORY_RESERVED  );
  444.    add_syntax_item(type, KEYWORD, "ERROR", CATEGORY_RESERVED  );
  445.    add_syntax_item(type, KEYWORD, "ESI", CATEGORY_RESERVED  );
  446.    add_syntax_item(type, KEYWORD, "EVALUATE", CATEGORY_RESERVED  );
  447.    add_syntax_item(type, KEYWORD, "EVERY", CATEGORY_RESERVED  );
  448.    add_syntax_item(type, KEYWORD, "EXAMINE", CATEGORY_RESERVED  );
  449.    add_syntax_item(type, KEYWORD, "EXCEEDS", CATEGORY_RESERVED  );
  450.    add_syntax_item(type, KEYWORD, "EXCEPTION", CATEGORY_RESERVED  );
  451.    add_syntax_item(type, KEYWORD, "EXCLUSIVE", CATEGORY_RESERVED  );
  452.    add_syntax_item(type, KEYWORD, "EXHIBIT", CATEGORY_RESERVED  );
  453.    add_syntax_item(type, KEYWORD, "EXIT", CATEGORY_RESERVED  );
  454.    add_syntax_item(type, KEYWORD, "EXOR", CATEGORY_RESERVED  );
  455.    add_syntax_item(type, KEYWORD, "EXTEND", CATEGORY_RESERVED  );
  456.    add_syntax_item(type, KEYWORD, "EXTERNAL", CATEGORY_RESERVED  );
  457.    add_syntax_item(type, KEYWORD, "FALSE", CATEGORY_RESERVED  );
  458.    add_syntax_item(type, KEYWORD, "FD", CATEGORY_RESERVED  );
  459.    add_syntax_item(type, KEYWORD, "FETCH", CATEGORY_RESERVED  );
  460.    add_syntax_item(type, KEYWORD, "FILE", CATEGORY_SECTION );
  461.    add_syntax_item(type, KEYWORD, "FILE-CONTROL", CATEGORY_RESERVED  );
  462.    add_syntax_item(type, KEYWORD, "FILE-LIMIT", CATEGORY_RESERVED  );
  463.    add_syntax_item(type, KEYWORD, "FILE-LIMITS", CATEGORY_CLAUSE );
  464.    add_syntax_item(type, KEYWORD, "FILES", CATEGORY_RESERVED  );
  465.    add_syntax_item(type, KEYWORD, "FILLER", CATEGORY_CLAUSE );
  466.    add_syntax_item(type, KEYWORD, "FINAL", CATEGORY_RESERVED  );
  467.    add_syntax_item(type, KEYWORD, "FIND", CATEGORY_RESERVED  );
  468.    add_syntax_item(type, KEYWORD, "FINISH", CATEGORY_RESERVED  );
  469.    add_syntax_item(type, KEYWORD, "FIRST", CATEGORY_RESERVED  );
  470.    add_syntax_item(type, KEYWORD, "FOOTING", CATEGORY_RESERVED  );
  471.    add_syntax_item(type, KEYWORD, "FOR", CATEGORY_RESERVED  );
  472.    add_syntax_item(type, KEYWORD, "FORMAT", CATEGORY_RESERVED  );
  473.    add_syntax_item(type, KEYWORD, "FREE", CATEGORY_RESERVED  );
  474.    add_syntax_item(type, KEYWORD, "FROM", CATEGORY_RESERVED  );
  475.    add_syntax_item(type, KEYWORD, "FUNCTION", CATEGORY_RESERVED  );
  476.    add_syntax_item(type, KEYWORD, "GENERATE", CATEGORY_RESERVED  );
  477.    add_syntax_item(type, KEYWORD, "GET", CATEGORY_RESERVED  );
  478.    add_syntax_item(type, KEYWORD, "GIVING", CATEGORY_RESERVED  );
  479.    add_syntax_item(type, KEYWORD, "GLOBAL", CATEGORY_RESERVED  );
  480.    add_syntax_item(type, KEYWORD, "GO", CATEGORY_RESERVED  );
  481.    add_syntax_item(type, KEYWORD, "GOBACK", CATEGORY_RESERVED  );
  482.    add_syntax_item(type, KEYWORD, "GREATER", CATEGORY_RESERVED  );
  483.    add_syntax_item(type, KEYWORD, "GROUP", CATEGORY_RESERVED  );
  484.    add_syntax_item(type, KEYWORD, "HEADING", CATEGORY_RESERVED  );
  485.    add_syntax_item(type, KEYWORD, "HIGH-VALUE", CATEGORY_RESERVED  );
  486.    add_syntax_item(type, KEYWORD, "HIGH-VALUES", CATEGORY_RESERVED  );
  487.    add_syntax_item(type, KEYWORD, "I-O", CATEGORY_RESERVED  );
  488.    add_syntax_item(type, KEYWORD, "I-O-CONTROL", CATEGORY_PARAGRAPH );
  489.    add_syntax_item(type, KEYWORD, "ID", CATEGORY_RESERVED  );
  490.    add_syntax_item(type, KEYWORD, "IDENTIFICATION", CATEGORY_DIVISION );
  491.    add_syntax_item(type, KEYWORD, "IF", CATEGORY_RESERVED  );
  492.    add_syntax_item(type, KEYWORD, "IN", CATEGORY_RESERVED  );
  493.    add_syntax_item(type, KEYWORD, "INDEX", CATEGORY_RESERVED  );
  494.    add_syntax_item(type, KEYWORD, "INDEXED", CATEGORY_RESERVED  );
  495.    add_syntax_item(type, KEYWORD, "INDICATE", CATEGORY_RESERVED  );
  496.    add_syntax_item(type, KEYWORD, "INITIAL", CATEGORY_RESERVED  );
  497.    add_syntax_item(type, KEYWORD, "INITIALIZE", CATEGORY_RESERVED  );
  498.    add_syntax_item(type, KEYWORD, "INITIATE", CATEGORY_RESERVED  );
  499.    add_syntax_item(type, KEYWORD, "INPUT", CATEGORY_RESERVED  );
  500.    add_syntax_item(type, KEYWORD, "INPUT-OUTPUT", CATEGORY_SECTION );
  501.    add_syntax_item(type, KEYWORD, "INSERT", CATEGORY_RESERVED  );
  502.    add_syntax_item(type, KEYWORD, "INSPECT", CATEGORY_RESERVED  );
  503.    add_syntax_item(type, KEYWORD, "INSTALLATION", CATEGORY_PARAGRAPH );
  504.    add_syntax_item(type, KEYWORD, "INTO", CATEGORY_RESERVED  );
  505.    add_syntax_item(type, KEYWORD, "INVALID", CATEGORY_RESERVED  );
  506.    add_syntax_item(type, KEYWORD, "IS", CATEGORY_RESERVED  );
  507.    add_syntax_item(type, KEYWORD, "JUST", CATEGORY_RESERVED  );
  508.    add_syntax_item(type, KEYWORD, "JUSTIFIED", CATEGORY_CLAUSE );
  509.    add_syntax_item(type, KEYWORD, "KANJI", CATEGORY_RESERVED  );
  510.    add_syntax_item(type, KEYWORD, "KEEP", CATEGORY_RESERVED  );
  511.    add_syntax_item(type, KEYWORD, "KEY", CATEGORY_CLAUSE );
  512.    add_syntax_item(type, KEYWORD, "LABEL", CATEGORY_CLAUSE );
  513.    add_syntax_item(type, KEYWORD, "LAST", CATEGORY_RESERVED  );
  514.    add_syntax_item(type, KEYWORD, "LD", CATEGORY_RESERVED  );
  515.    add_syntax_item(type, KEYWORD, "LEADING", CATEGORY_RESERVED  );
  516.    add_syntax_item(type, KEYWORD, "LEAVE", CATEGORY_RESERVED  );
  517.    add_syntax_item(type, KEYWORD, "LEFT", CATEGORY_RESERVED  );
  518.    add_syntax_item(type, KEYWORD, "LENGTH", CATEGORY_RESERVED  );
  519.    add_syntax_item(type, KEYWORD, "LESS", CATEGORY_RESERVED  );
  520.    add_syntax_item(type, KEYWORD, "LIMIT", CATEGORY_RESERVED  );
  521.    add_syntax_item(type, KEYWORD, "LIMITS", CATEGORY_RESERVED  );
  522.    add_syntax_item(type, KEYWORD, "LINAGE", CATEGORY_CLAUSE );
  523.    add_syntax_item(type, KEYWORD, "LINAGE-COUNTER", CATEGORY_RESERVED  );
  524.    add_syntax_item(type, KEYWORD, "LINE", CATEGORY_RESERVED  );
  525.    add_syntax_item(type, KEYWORD, "LINE-COUNTER", CATEGORY_RESERVED  );
  526.    add_syntax_item(type, KEYWORD, "LINES", CATEGORY_RESERVED  );
  527.    add_syntax_item(type, KEYWORD, "LINKAGE", CATEGORY_SECTION );
  528.    add_syntax_item(type, KEYWORD, "LOCALLY", CATEGORY_RESERVED  );
  529.    add_syntax_item(type, KEYWORD, "LOCK", CATEGORY_RESERVED  );
  530.    add_syntax_item(type, KEYWORD, "LOW-VALUE", CATEGORY_RESERVED  );
  531.    add_syntax_item(type, KEYWORD, "LOW-VALUES", CATEGORY_RESERVED  );
  532.    add_syntax_item(type, KEYWORD, "MEMBER", CATEGORY_RESERVED  );
  533.    add_syntax_item(type, KEYWORD, "MEMORY", CATEGORY_RESERVED  );
  534.    add_syntax_item(type, KEYWORD, "MERGE", CATEGORY_RESERVED  );
  535.    add_syntax_item(type, KEYWORD, "MESSAGE", CATEGORY_RESERVED  );
  536.    add_syntax_item(type, KEYWORD, "MODE", CATEGORY_CLAUSE );
  537.    add_syntax_item(type, KEYWORD, "MODIFY", CATEGORY_RESERVED  );
  538.    add_syntax_item(type, KEYWORD, "MODULES", CATEGORY_RESERVED  );
  539.    add_syntax_item(type, KEYWORD, "MORE-LABELS", CATEGORY_RESERVED  );
  540.    add_syntax_item(type, KEYWORD, "MOVE", CATEGORY_RESERVED  );
  541.    add_syntax_item(type, KEYWORD, "MULTIPLE", CATEGORY_CLAUSE );
  542.    add_syntax_item(type, KEYWORD, "MULTIPLY", CATEGORY_RESERVED  );
  543.    add_syntax_item(type, KEYWORD, "NAMED", CATEGORY_RESERVED  );
  544.    add_syntax_item(type, KEYWORD, "NATIVE", CATEGORY_RESERVED  );
  545.    add_syntax_item(type, KEYWORD, "NEGATIVE", CATEGORY_RESERVED  );
  546.    add_syntax_item(type, KEYWORD, "NEXT", CATEGORY_RESERVED  );
  547.    add_syntax_item(type, KEYWORD, "NO", CATEGORY_RESERVED  );
  548.    add_syntax_item(type, KEYWORD, "NOMINAL", CATEGORY_CLAUSE );
  549.    add_syntax_item(type, KEYWORD, "NONE", CATEGORY_RESERVED  );
  550.    add_syntax_item(type, KEYWORD, "NOT", CATEGORY_RESERVED  );
  551.  
  552.    add_syntax_item(type, KEYWORD, "NOTE", CATEGORY_RESERVED  );
  553.    add_syntax_item(type, KEYWORD, "NULL", CATEGORY_RESERVED  );
  554.    add_syntax_item(type, KEYWORD, "NULLS", CATEGORY_RESERVED  );
  555.    add_syntax_item(type, KEYWORD, "NUMBER", CATEGORY_RESERVED  );
  556.    add_syntax_item(type, KEYWORD, "NUMERIC", CATEGORY_RESERVED  );
  557.    add_syntax_item(type, KEYWORD, "NUMERIC-EDITED", CATEGORY_RESERVED  );
  558.    add_syntax_item(type, KEYWORD, "OBJECT-COMPUTER", CATEGORY_PARAGRAPH );
  559.    add_syntax_item(type, KEYWORD, "OCCURS", CATEGORY_CLAUSE );
  560.    add_syntax_item(type, KEYWORD, "OF", CATEGORY_RESERVED  );
  561.    add_syntax_item(type, KEYWORD, "OFF", CATEGORY_RESERVED  );
  562.    add_syntax_item(type, KEYWORD, "OMITTED", CATEGORY_RESERVED  );
  563.    add_syntax_item(type, KEYWORD, "ON", CATEGORY_RESERVED  );
  564.    add_syntax_item(type, KEYWORD, "ONLY", CATEGORY_RESERVED  );
  565.    add_syntax_item(type, KEYWORD, "OPEN", CATEGORY_RESERVED  );
  566.    add_syntax_item(type, KEYWORD, "OPTIONAL", CATEGORY_RESERVED  );
  567.    add_syntax_item(type, KEYWORD, "OR", CATEGORY_RESERVED  );
  568.    add_syntax_item(type, KEYWORD, "ORDER", CATEGORY_RESERVED  );
  569.    add_syntax_item(type, KEYWORD, "ORGANIZATION", CATEGORY_CLAUSE );
  570.    add_syntax_item(type, KEYWORD, "OTHER", CATEGORY_RESERVED  );
  571.    add_syntax_item(type, KEYWORD, "OTHERWISE", CATEGORY_RESERVED  );
  572.    add_syntax_item(type, KEYWORD, "OUTPUT", CATEGORY_RESERVED  );
  573.    add_syntax_item(type, KEYWORD, "OVERFLOW", CATEGORY_RESERVED  );
  574.    add_syntax_item(type, KEYWORD, "OWNER", CATEGORY_RESERVED  );
  575.    add_syntax_item(type, KEYWORD, "PACKED-DECIMAL", CATEGORY_RESERVED  );
  576.    add_syntax_item(type, KEYWORD, "PADDING", CATEGORY_RESERVED  );
  577.    add_syntax_item(type, KEYWORD, "PAGE", CATEGORY_RESERVED  );
  578.    add_syntax_item(type, KEYWORD, "PAGE-COUNTER", CATEGORY_RESERVED  );
  579.    add_syntax_item(type, KEYWORD, "PASSWORD", CATEGORY_CLAUSE );
  580.    add_syntax_item(type, KEYWORD, "PERFORM", CATEGORY_RESERVED  );
  581.    add_syntax_item(type, KEYWORD, "PF", CATEGORY_RESERVED  );
  582.    add_syntax_item(type, KEYWORD, "PH", CATEGORY_RESERVED  );
  583.    add_syntax_item(type, KEYWORD, "PIC", CATEGORY_RESERVED  );
  584.    add_syntax_item(type, KEYWORD, "PICTURE", CATEGORY_CLAUSE );
  585.    add_syntax_item(type, KEYWORD, "PLUS", CATEGORY_RESERVED  );
  586.    add_syntax_item(type, KEYWORD, "POINTER", CATEGORY_RESERVED  );
  587.    add_syntax_item(type, KEYWORD, "POSITION", CATEGORY_RESERVED  );
  588.    add_syntax_item(type, KEYWORD, "POSITIONING", CATEGORY_RESERVED  );
  589.    add_syntax_item(type, KEYWORD, "POSITIVE", CATEGORY_RESERVED  );
  590.    add_syntax_item(type, KEYWORD, "PRESENT", CATEGORY_RESERVED  );
  591.    add_syntax_item(type, KEYWORD, "PRINTING", CATEGORY_RESERVED  );
  592.    add_syntax_item(type, KEYWORD, "PRIOR", CATEGORY_RESERVED  );
  593.    add_syntax_item(type, KEYWORD, "PROCEDURE", CATEGORY_DIVISION );
  594.    add_syntax_item(type, KEYWORD, "PROCEDURES", CATEGORY_RESERVED  );
  595.    add_syntax_item(type, KEYWORD, "PROCEED", CATEGORY_RESERVED  );
  596.    add_syntax_item(type, KEYWORD, "PROCESS", CATEGORY_RESERVED  );
  597.    add_syntax_item(type, KEYWORD, "PROCESSING", CATEGORY_CLAUSE );
  598.    add_syntax_item(type, KEYWORD, "PROGRAM", CATEGORY_RESERVED  );
  599.    add_syntax_item(type, KEYWORD, "PROGRAM-ID", CATEGORY_PARAGRAPH );
  600.    add_syntax_item(type, KEYWORD, "PROTECTED", CATEGORY_RESERVED  );
  601.    add_syntax_item(type, KEYWORD, "PURGE", CATEGORY_RESERVED  );
  602.    add_syntax_item(type, KEYWORD, "QUEUE", CATEGORY_RESERVED  );
  603.    add_syntax_item(type, KEYWORD, "QUOTE", CATEGORY_RESERVED  );
  604.    add_syntax_item(type, KEYWORD, "QUOTES", CATEGORY_RESERVED  );
  605.    add_syntax_item(type, KEYWORD, "RANDOM", CATEGORY_RESERVED  );
  606.    add_syntax_item(type, KEYWORD, "RD", CATEGORY_RESERVED  );
  607.    add_syntax_item(type, KEYWORD, "READ", CATEGORY_RESERVED  );
  608.    add_syntax_item(type, KEYWORD, "READY", CATEGORY_RESERVED  );
  609.    add_syntax_item(type, KEYWORD, "REALM", CATEGORY_RESERVED  );
  610.    add_syntax_item(type, KEYWORD, "RECEIVE", CATEGORY_RESERVED  );
  611.    add_syntax_item(type, KEYWORD, "RECONNECT", CATEGORY_RESERVED  );
  612.    add_syntax_item(type, KEYWORD, "RECORD", CATEGORY_CLAUSE );
  613.    add_syntax_item(type, KEYWORD, "RECORD-NAME", CATEGORY_RESERVED  );
  614.    add_syntax_item(type, KEYWORD, "RECORD-OVERFLOW", CATEGORY_RESERVED  );
  615.    add_syntax_item(type, KEYWORD, "RECORDING", CATEGORY_CLAUSE );
  616.    add_syntax_item(type, KEYWORD, "RECORDS", CATEGORY_CLAUSE );
  617.    add_syntax_item(type, KEYWORD, "REDEFINES", CATEGORY_CLAUSE );
  618.    add_syntax_item(type, KEYWORD, "REEL", CATEGORY_RESERVED  );
  619.    add_syntax_item(type, KEYWORD, "REFERENCE", CATEGORY_RESERVED  );
  620.    add_syntax_item(type, KEYWORD, "REFERENCES", CATEGORY_RESERVED  );
  621.    add_syntax_item(type, KEYWORD, "RELATION", CATEGORY_RESERVED  );
  622.    add_syntax_item(type, KEYWORD, "RELATIVE", CATEGORY_RESERVED  );
  623.    add_syntax_item(type, KEYWORD, "RELEASE", CATEGORY_RESERVED  );
  624.    add_syntax_item(type, KEYWORD, "RELOAD", CATEGORY_RESERVED  );
  625.    add_syntax_item(type, KEYWORD, "REMAINDER", CATEGORY_RESERVED  );
  626.    add_syntax_item(type, KEYWORD, "REMARKS", CATEGORY_PARAGRAPH );
  627.    add_syntax_item(type, KEYWORD, "REMOVAL", CATEGORY_RESERVED  );
  628.    add_syntax_item(type, KEYWORD, "RENAMES", CATEGORY_CLAUSE );
  629.    add_syntax_item(type, KEYWORD, "REORG-CRITERIA", CATEGORY_RESERVED  );
  630.    add_syntax_item(type, KEYWORD, "REPEATED", CATEGORY_RESERVED  );
  631.    add_syntax_item(type, KEYWORD, "REPLACE", CATEGORY_RESERVED  );
  632.    add_syntax_item(type, KEYWORD, "REPLACING", CATEGORY_RESERVED  );
  633.    add_syntax_item(type, KEYWORD, "REPORT", CATEGORY_SECTION );
  634.    add_syntax_item(type, KEYWORD, "REPORTING", CATEGORY_RESERVED  );
  635.    add_syntax_item(type, KEYWORD, "REPORTS", CATEGORY_RESERVED  );
  636.    add_syntax_item(type, KEYWORD, "REREAD", CATEGORY_RESERVED  );
  637.    add_syntax_item(type, KEYWORD, "RERUN", CATEGORY_CLAUSE );
  638.    add_syntax_item(type, KEYWORD, "RESERVE", CATEGORY_CLAUSE );
  639.    add_syntax_item(type, KEYWORD, "RESET", CATEGORY_RESERVED  );
  640.    add_syntax_item(type, KEYWORD, "RETAINING", CATEGORY_RESERVED  );
  641.  
  642.    load_factory_cobol_syntax3(type);
  643. }
  644.  
  645.  
  646. local function load_factory_cobol_syntax3(type)
  647. {
  648.    add_syntax_item(type, KEYWORD, "RETRIEVAL", CATEGORY_RESERVED  );
  649.    add_syntax_item(type, KEYWORD, "RETURN", CATEGORY_RESERVED  );
  650.    add_syntax_item(type, KEYWORD, "RETURN-CODE", CATEGORY_RESERVED  );
  651.    add_syntax_item(type, KEYWORD, "REVERSED", CATEGORY_RESERVED  );
  652.    add_syntax_item(type, KEYWORD, "REWIND", CATEGORY_RESERVED  );
  653.    add_syntax_item(type, KEYWORD, "REWRITE", CATEGORY_RESERVED  );
  654.    add_syntax_item(type, KEYWORD, "RF", CATEGORY_RESERVED  );
  655.    add_syntax_item(type, KEYWORD, "RH", CATEGORY_RESERVED  );
  656.    add_syntax_item(type, KEYWORD, "RIGHT", CATEGORY_RESERVED  );
  657.    add_syntax_item(type, KEYWORD, "ROLLBACK", CATEGORY_RESERVED  );
  658.    add_syntax_item(type, KEYWORD, "ROUNDED", CATEGORY_RESERVED  );
  659.    add_syntax_item(type, KEYWORD, "RUN", CATEGORY_RESERVED  );
  660.    add_syntax_item(type, KEYWORD, "SAME", CATEGORY_CLAUSE );
  661.    add_syntax_item(type, KEYWORD, "SD", CATEGORY_RESERVED  );
  662.    add_syntax_item(type, KEYWORD, "SEARCH", CATEGORY_RESERVED  );
  663.    add_syntax_item(type, KEYWORD, "SECTION", CATEGORY_RESERVED  );
  664.    add_syntax_item(type, KEYWORD, "SECURITY", CATEGORY_PARAGRAPH );
  665.    add_syntax_item(type, KEYWORD, "SEEK", CATEGORY_RESERVED  );
  666.    add_syntax_item(type, KEYWORD, "SEGMENT", CATEGORY_RESERVED  );
  667.    add_syntax_item(type, KEYWORD, "SEGMENT-LIMIT", CATEGORY_RESERVED  );
  668.    add_syntax_item(type, KEYWORD, "SELECT", CATEGORY_CLAUSE );
  669.    add_syntax_item(type, KEYWORD, "SELECTIVE", CATEGORY_RESERVED  );
  670.    add_syntax_item(type, KEYWORD, "SEND", CATEGORY_RESERVED  );
  671.    add_syntax_item(type, KEYWORD, "SENTENCE", CATEGORY_RESERVED  );
  672.    add_syntax_item(type, KEYWORD, "SEPARATE", CATEGORY_RESERVED  );
  673.    add_syntax_item(type, KEYWORD, "SEQUENCE", CATEGORY_RESERVED  );
  674.    add_syntax_item(type, KEYWORD, "SEQUENTIAL", CATEGORY_RESERVED  );
  675.    add_syntax_item(type, KEYWORD, "SERVICE", CATEGORY_RESERVED  );
  676.    add_syntax_item(type, KEYWORD, "SET", CATEGORY_RESERVED  );
  677.    add_syntax_item(type, KEYWORD, "SHARED", CATEGORY_RESERVED  );
  678.    add_syntax_item(type, KEYWORD, "SIGN", CATEGORY_CLAUSE );
  679.    add_syntax_item(type, KEYWORD, "SIZE", CATEGORY_RESERVED  );
  680.    add_syntax_item(type, KEYWORD, "SKIP1", CATEGORY_RESERVED  );
  681.    add_syntax_item(type, KEYWORD, "SKIP2", CATEGORY_RESERVED  );
  682.    add_syntax_item(type, KEYWORD, "SKIP3", CATEGORY_RESERVED  );
  683.    add_syntax_item(type, KEYWORD, "SORT", CATEGORY_RESERVED  );
  684.    add_syntax_item(type, KEYWORD, "SORT-CONTROL", CATEGORY_RESERVED  );
  685.    add_syntax_item(type, KEYWORD, "SORT-CORE-SIZE", CATEGORY_RESERVED  );
  686.    add_syntax_item(type, KEYWORD, "SORT-FILE-SIZE", CATEGORY_RESERVED  );
  687.    add_syntax_item(type, KEYWORD, "SORT-MERGE", CATEGORY_RESERVED  );
  688.    add_syntax_item(type, KEYWORD, "SHORT-MESSAGE", CATEGORY_RESERVED  );
  689.    add_syntax_item(type, KEYWORD, "SHORT-MODE-SIZE", CATEGORY_RESERVED  );
  690.    add_syntax_item(type, KEYWORD, "SORT-RETURN", CATEGORY_RESERVED  );
  691.    add_syntax_item(type, KEYWORD, "SOURCE", CATEGORY_RESERVED  );
  692.    add_syntax_item(type, KEYWORD, "SOURCE-COMPUTER", CATEGORY_PARAGRAPH );
  693.    add_syntax_item(type, KEYWORD, "SPACE", CATEGORY_RESERVED  );
  694.    add_syntax_item(type, KEYWORD, "SPACES", CATEGORY_RESERVED  );
  695.    add_syntax_item(type, KEYWORD, "SPECIAL-NAMES", CATEGORY_PARAGRAPH );
  696.    add_syntax_item(type, KEYWORD, "STANDARD", CATEGORY_RESERVED  );
  697.    add_syntax_item(type, KEYWORD, "STANDARD-1", CATEGORY_RESERVED  );
  698.    add_syntax_item(type, KEYWORD, "START", CATEGORY_RESERVED  );
  699.    add_syntax_item(type, KEYWORD, "STATUS", CATEGORY_CLAUSE );
  700.    add_syntax_item(type, KEYWORD, "STOP", CATEGORY_RESERVED  );
  701.    add_syntax_item(type, KEYWORD, "STORE", CATEGORY_RESERVED  );
  702.    add_syntax_item(type, KEYWORD, "STRING", CATEGORY_RESERVED  );
  703.    add_syntax_item(type, KEYWORD, "SUB-QUEUE-1", CATEGORY_RESERVED  );
  704.    add_syntax_item(type, KEYWORD, "SUB-QUEUE-2", CATEGORY_RESERVED  );
  705.    add_syntax_item(type, KEYWORD, "SUB-QUEUE-3", CATEGORY_RESERVED  );
  706.    add_syntax_item(type, KEYWORD, "SUB-SCHEMA", CATEGORY_RESERVED  );
  707.    add_syntax_item(type, KEYWORD, "SUBTRACT", CATEGORY_RESERVED  );
  708.    add_syntax_item(type, KEYWORD, "SUM", CATEGORY_RESERVED  );
  709.    add_syntax_item(type, KEYWORD, "SUPPRESS", CATEGORY_RESERVED  );
  710.    add_syntax_item(type, KEYWORD, "SYMBOLIC", CATEGORY_RESERVED  );
  711.    add_syntax_item(type, KEYWORD, "SYNC", CATEGORY_RESERVED  );
  712.    add_syntax_item(type, KEYWORD, "SYNCHRONIZED", CATEGORY_CLAUSE );
  713.    add_syntax_item(type, KEYWORD, "SYSIN", CATEGORY_RESERVED  );
  714.    add_syntax_item(type, KEYWORD, "SYSOUT", CATEGORY_RESERVED  );
  715.    add_syntax_item(type, KEYWORD, "SYSPUNCH", CATEGORY_RESERVED  );
  716.    add_syntax_item(type, KEYWORD, "S01", CATEGORY_RESERVED  );
  717.    add_syntax_item(type, KEYWORD, "S02", CATEGORY_RESERVED  );
  718.    add_syntax_item(type, KEYWORD, "TABLE", CATEGORY_RESERVED  );
  719.    add_syntax_item(type, KEYWORD, "TALLY", CATEGORY_RESERVED  );
  720.    add_syntax_item(type, KEYWORD, "TALLYING", CATEGORY_RESERVED  );
  721.    add_syntax_item(type, KEYWORD, "TAPE", CATEGORY_CLAUSE );
  722.    add_syntax_item(type, KEYWORD, "TENANT", CATEGORY_RESERVED  );
  723.    add_syntax_item(type, KEYWORD, "TERMINAL", CATEGORY_RESERVED  );
  724.    add_syntax_item(type, KEYWORD, "TERMINATE", CATEGORY_RESERVED  );
  725.    add_syntax_item(type, KEYWORD, "TEST", CATEGORY_RESERVED  );
  726.    add_syntax_item(type, KEYWORD, "TEXT", CATEGORY_RESERVED  );
  727.    add_syntax_item(type, KEYWORD, "THAN", CATEGORY_RESERVED  );
  728.    add_syntax_item(type, KEYWORD, "THEN", CATEGORY_RESERVED  );
  729.    add_syntax_item(type, KEYWORD, "THROUGH", CATEGORY_RESERVED  );
  730.    add_syntax_item(type, KEYWORD, "THRU", CATEGORY_RESERVED  );
  731.    add_syntax_item(type, KEYWORD, "TIME", CATEGORY_RESERVED  );
  732.    add_syntax_item(type, KEYWORD, "TIME-OF-DAY", CATEGORY_RESERVED  );
  733.    add_syntax_item(type, KEYWORD, "TIMES", CATEGORY_RESERVED  );
  734.    add_syntax_item(type, KEYWORD, "TITLE", CATEGORY_RESERVED  );
  735.    add_syntax_item(type, KEYWORD, "TO", CATEGORY_RESERVED  );
  736.    add_syntax_item(type, KEYWORD, "TOP", CATEGORY_RESERVED  );
  737.    add_syntax_item(type, KEYWORD, "TOTALING", CATEGORY_RESERVED  );
  738.    add_syntax_item(type, KEYWORD, "TRACE", CATEGORY_RESERVED  );
  739.    add_syntax_item(type, KEYWORD, "TRACK-AREA", CATEGORY_CLAUSE );
  740.    add_syntax_item(type, KEYWORD, "TRACK-LIMIT", CATEGORY_RESERVED  );
  741.    add_syntax_item(type, KEYWORD, "TRACKS", CATEGORY_RESERVED  );
  742.    add_syntax_item(type, KEYWORD, "TRAILING", CATEGORY_RESERVED  );
  743.    add_syntax_item(type, KEYWORD, "TRANSFORM", CATEGORY_RESERVED  );
  744.    add_syntax_item(type, KEYWORD, "TRUE", CATEGORY_RESERVED  );
  745.    add_syntax_item(type, KEYWORD, "TYPE", CATEGORY_RESERVED  );
  746.    add_syntax_item(type, KEYWORD, "UNEQUAL", CATEGORY_RESERVED  );
  747.    add_syntax_item(type, KEYWORD, "UNIT", CATEGORY_RESERVED  );
  748.    add_syntax_item(type, KEYWORD, "UNSTRING", CATEGORY_RESERVED  );
  749.    add_syntax_item(type, KEYWORD, "UNTIL", CATEGORY_RESERVED  );
  750.    add_syntax_item(type, KEYWORD, "UP", CATEGORY_RESERVED  );
  751.    add_syntax_item(type, KEYWORD, "UPDATE", CATEGORY_RESERVED  );
  752.    add_syntax_item(type, KEYWORD, "UPON", CATEGORY_RESERVED  );
  753.    add_syntax_item(type, KEYWORD, "UPSI-0", CATEGORY_RESERVED  );
  754.    add_syntax_item(type, KEYWORD, "UPSI-1", CATEGORY_RESERVED  );
  755.    add_syntax_item(type, KEYWORD, "UPSI-2", CATEGORY_RESERVED  );
  756.    add_syntax_item(type, KEYWORD, "UPSI-3", CATEGORY_RESERVED  );
  757.    add_syntax_item(type, KEYWORD, "UPSI-4", CATEGORY_RESERVED  );
  758.    add_syntax_item(type, KEYWORD, "UPSI-5", CATEGORY_RESERVED  );
  759.    add_syntax_item(type, KEYWORD, "UPSI-6", CATEGORY_RESERVED  );
  760.    add_syntax_item(type, KEYWORD, "UPSI-7", CATEGORY_RESERVED  );
  761.    add_syntax_item(type, KEYWORD, "USAGE", CATEGORY_CLAUSE );
  762.    add_syntax_item(type, KEYWORD, "USAGE-MODE", CATEGORY_RESERVED  );
  763.    add_syntax_item(type, KEYWORD, "USE", CATEGORY_RESERVED  );
  764.    add_syntax_item(type, KEYWORD, "USING", CATEGORY_RESERVED  );
  765.    add_syntax_item(type, KEYWORD, "VALID", CATEGORY_RESERVED  );
  766.    add_syntax_item(type, KEYWORD, "VALIDATE", CATEGORY_RESERVED  );
  767.    add_syntax_item(type, KEYWORD, "VALUE", CATEGORY_CLAUSE );
  768.    add_syntax_item(type, KEYWORD, "VALUES", CATEGORY_RESERVED  );
  769.    add_syntax_item(type, KEYWORD, "VARYING", CATEGORY_RESERVED  );
  770.    add_syntax_item(type, KEYWORD, "WAIT", CATEGORY_RESERVED  );
  771.    add_syntax_item(type, KEYWORD, "WHEN", CATEGORY_CLAUSE );
  772.    add_syntax_item(type, KEYWORD, "WHEN-COMPILED", CATEGORY_RESERVED  );
  773.    add_syntax_item(type, KEYWORD, "WITH", CATEGORY_RESERVED  );
  774.    add_syntax_item(type, KEYWORD, "WITHIN", CATEGORY_RESERVED  );
  775.    add_syntax_item(type, KEYWORD, "WORDS", CATEGORY_RESERVED  );
  776.    add_syntax_item(type, KEYWORD, "WORKING-STORAGE", CATEGORY_SECTION );
  777.    add_syntax_item(type, KEYWORD, "WRITE", CATEGORY_RESERVED  );
  778.    add_syntax_item(type, KEYWORD, "WRITE-ONLY", CATEGORY_RESERVED  );
  779.    add_syntax_item(type, KEYWORD, "ZERO", CATEGORY_CLAUSE );
  780.    add_syntax_item(type, KEYWORD, "ZEROES", CATEGORY_RESERVED  );
  781.    add_syntax_item(type, KEYWORD, "ZEROS", CATEGORY_RESERVED  );
  782.  
  783.    add_syntax_item(type, LINE, "*", 0x07000000 + CATEGORY_COMMENT );
  784.    add_syntax_item(type, LINE, "/", 0x07000000 + CATEGORY_COMMENT );
  785.    add_syntax_item(type, LINE, "\" \"", 0x010000 + CATEGORY_LITERAL );
  786.  
  787.    set_escape_character(type, "\\")
  788.    set_style_delimiters(type, ".();,='")
  789.  
  790.    set_case_sensitive(type, 1)
  791. }
  792.