diff options
Diffstat (limited to 'gcc/cobol')
-rw-r--r-- | gcc/cobol/cdf.y | 94 | ||||
-rw-r--r-- | gcc/cobol/cdfval.h | 4 | ||||
-rw-r--r-- | gcc/cobol/dts.h | 14 | ||||
-rw-r--r-- | gcc/cobol/except.cc | 2 | ||||
-rw-r--r-- | gcc/cobol/gcobol.1 | 192 | ||||
-rw-r--r-- | gcc/cobol/genapi.cc | 6 | ||||
-rw-r--r-- | gcc/cobol/genutil.cc | 7 | ||||
-rw-r--r-- | gcc/cobol/lexio.cc | 72 | ||||
-rw-r--r-- | gcc/cobol/parse.y | 21 | ||||
-rw-r--r-- | gcc/cobol/parse_ante.h | 48 | ||||
-rw-r--r-- | gcc/cobol/scan.l | 13 | ||||
-rw-r--r-- | gcc/cobol/scan_post.h | 2 | ||||
-rw-r--r-- | gcc/cobol/symbols.h | 3 | ||||
-rw-r--r-- | gcc/cobol/token_names.h | 2228 | ||||
-rw-r--r-- | gcc/cobol/udf/stored-char-length.cbl | 4 | ||||
-rw-r--r-- | gcc/cobol/util.cc | 90 | ||||
-rw-r--r-- | gcc/cobol/util.h | 15 |
17 files changed, 1540 insertions, 1275 deletions
diff --git a/gcc/cobol/cdf.y b/gcc/cobol/cdf.y index f1a7912..840eb50 100644 --- a/gcc/cobol/cdf.y +++ b/gcc/cobol/cdf.y @@ -105,14 +105,14 @@ void input_file_status_notify(); using std::map; - static map<std::string, cdfval_t> dictionary; - #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-function" static bool cdfval_add( const char name[], const cdfval_t& value, bool override = false ) { + cdf_values_t& dictionary( cdf_dictionary() ); + if( scanner_parsing() ) { if( ! override ) { if( dictionary.find(name) != dictionary.end() ) return false; @@ -123,6 +123,8 @@ void input_file_status_notify(); } static void cdfval_off( const char name[] ) { + cdf_values_t& dictionary( cdf_dictionary() ); + if( scanner_parsing() ) { auto p = dictionary.find(name); if( p == dictionary.end() ) { @@ -159,6 +161,8 @@ exception_turn_t exception_turn; bool apply_cdf_turn( const exception_turn_t& turn ) { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); + for( auto elem : turn.exception_files() ) { std::set<size_t> files(elem.second.begin(), elem.second.end()); enabled_exceptions.turn_on_off(turn.enabled, @@ -204,15 +208,17 @@ apply_cdf_turn( const exception_turn_t& turn ) { %type <file> filename %type <files> filenames -%token BY 482 +%type <number> cdf_stackable + +%token BY 486 %token COPY 362 %token CDF_DISPLAY 384 ">>DISPLAY" -%token IN 601 +%token IN 605 %token NAME 286 %token NUMSTR 305 "numeric literal" -%token OF 682 -%token PSEUDOTEXT 717 -%token REPLACING 739 +%token OF 686 +%token PSEUDOTEXT 721 +%token REPLACING 743 %token LITERAL 298 %token SUPPRESS 376 @@ -227,25 +233,32 @@ apply_cdf_turn( const exception_turn_t& turn ) { %token CDF_WHEN 389 ">>WHEN" %token CDF_END_EVALUATE 390 ">>END-EVALUATE" -%token AS 464 CONSTANT 361 DEFINED 363 +%token ALL 450 +%token CALL_CONVENTION 391 ">>CALL-CONVENTION" +%token COBOL_WORDS 380 ">>COBOL-WORDS" +%token CDF_PUSH 394 ">>PUSH" +%token CDF_POP 395 ">>POP" +%token SOURCE_FORMAT 396 ">>SOURCE FORMAT" + +%token AS 468 CONSTANT 361 DEFINED 363 %type <boolean> DEFINED -%token OTHER 694 PARAMETER_kw 368 "PARAMETER" -%token OFF 683 OVERRIDE 369 -%token THRU 935 -%token TRUE_kw 809 "True" +%token OTHER 698 PARAMETER_kw 368 "PARAMETER" +%token OFF 687 OVERRIDE 369 +%token THRU 939 +%token TRUE_kw 813 "True" -%token CALL_COBOL 391 "CALL" -%token CALL_VERBATIM 392 "CALL (as C)" +%token CALL_COBOL 392 "CALL" +%token CALL_VERBATIM 393 "CALL (as C)" -%token TURN 811 CHECKING 492 LOCATION 645 ON 685 WITH 837 +%token TURN 815 CHECKING 496 LOCATION 649 ON 689 WITH 841 -%left OR 936 -%left AND 937 -%right NOT 938 -%left '<' '>' '=' NE 939 LE 940 GE 941 +%left OR 940 +%left AND 941 +%right NOT 942 +%left '<' '>' '=' NE 943 LE 944 GE 945 %left '-' '+' %left '*' '/' -%right NEG 943 +%right NEG 947 %define api.prefix {ydf} %define api.token.prefix{YDF_} @@ -277,6 +290,8 @@ complete: cdf_define | cdf_display | cdf_turn | cdf_call_convention + | cdf_push + | cdf_pop ; /* @@ -328,6 +343,7 @@ cdf_define: CDF_DEFINE cdf_constant NAME as cdf_expr[value] override } if( !cdfval_add( $NAME, cdfval_t($value), $override) ) { error_msg(@NAME, "name already in dictionary: %s", $NAME); + cdf_values_t& dictionary( cdf_dictionary() ); const cdfval_t& entry = dictionary[$NAME]; if( entry.filename ) { error_msg(@NAME, "%s previously defined in %s:%d", @@ -357,7 +373,7 @@ cdf_define: CDF_DEFINE cdf_constant NAME as cdf_expr[value] override * available regardless. */ { - if( 0 == dictionary.count($NAME) ) { + if( 0 == cdf_dictionary().count($NAME) ) { yywarn("CDF: '%s' is defined AS PARAMETER " "but was not defined", $NAME); } @@ -400,6 +416,35 @@ cdf_call_convention: } ; +cdf_push: CDF_PUSH cdf_stackable { + switch( $cdf_stackable ) { + case YDF_ALL: cdf_push(); break; + case YDF_CALL_CONVENTION: cdf_push_call_convention(); break; + case YDF_CDF_DEFINE: cdf_push_dictionary(); break; + case YDF_COBOL_WORDS: cdf_push_current_tokens(); break; + case YDF_SOURCE_FORMAT: cdf_push_source_format(); break; + default: gcc_unreachable(); + } + } + ; +cdf_pop: CDF_POP cdf_stackable { + switch( $cdf_stackable ) { + case YDF_ALL: cdf_pop(); break; + case YDF_CALL_CONVENTION: cdf_pop_call_convention(); break; + case YDF_CDF_DEFINE: cdf_pop_dictionary(); break; + case YDF_COBOL_WORDS: cdf_pop_current_tokens(); break; + case YDF_SOURCE_FORMAT: cdf_pop_source_format(); break; + default: gcc_unreachable(); + } + } + ; + +cdf_stackable: ALL { $$ = YDF_ALL; } + | CALL_CONVENTION { $$ = YDF_CALL_CONVENTION; } + | COBOL_WORDS { $$ = YDF_COBOL_WORDS; } + | CDF_DEFINE { $$ = YDF_CDF_DEFINE; } + | SOURCE_FORMAT { $$ = YDF_SOURCE_FORMAT; } + ; except_names: except_name | except_names except_name @@ -471,6 +516,7 @@ cdf_eval_obj: cdf_cond_expr cdf_cond_expr: BOOL | NAME DEFINED { + cdf_values_t& dictionary( cdf_dictionary() ); auto p = dictionary.find($1); bool found = p != dictionary.end(); if( !$DEFINED ) found = ! found; @@ -552,6 +598,7 @@ cdf_expr: cdf_expr '+' cdf_expr { $$ = $1(@1) + $3(@3); } ; cdf_factor: NAME { + cdf_values_t& dictionary( cdf_dictionary() ); auto that = dictionary.find($1); if( that != dictionary.end() ) { $$ = that->second; @@ -651,6 +698,7 @@ name_any: namelit name_one: NAME { + cdf_values_t& dictionary( cdf_dictionary() ); cdf_arg_t arg = { YDF_NAME, $1 }; auto p = dictionary.find($1); @@ -665,6 +713,7 @@ name_one: NAME namelit: name { + cdf_values_t& dictionary( cdf_dictionary() ); cdf_arg_t arg = { YDF_NAME, $1 }; auto p = dictionary.find($1); @@ -745,6 +794,7 @@ location_set( const YYLTYPE& loc ) { bool // used by cobol1.cc defined_cmd( const char arg[] ) { + cdf_values_t& dictionary( cdf_dictionary() ); cdfval_t value(1); char *name = xstrdup(arg); @@ -868,6 +918,7 @@ static int ydflex(void) { bool cdf_value( const char name[], const cdfval_t& value ) { + cdf_values_t& dictionary( cdf_dictionary() ); auto p = dictionary.find(name); if( p != dictionary.end() ) return false; @@ -878,6 +929,7 @@ cdf_value( const char name[], const cdfval_t& value ) { const cdfval_t * cdf_value( const char name[] ) { + cdf_values_t& dictionary( cdf_dictionary() ); auto p = dictionary.find(name); if( p == dictionary.end() ) return NULL; diff --git a/gcc/cobol/cdfval.h b/gcc/cobol/cdfval.h index 465bdbb..cc474a2 100644 --- a/gcc/cobol/cdfval.h +++ b/gcc/cobol/cdfval.h @@ -126,4 +126,8 @@ cdf_value( const char name[] ); bool cdf_value( const char name[], const cdfval_t& value ); +typedef std::map<std::string, cdfval_t> cdf_values_t; + +cdf_values_t& cdf_dictionary(); + #endif diff --git a/gcc/cobol/dts.h b/gcc/cobol/dts.h index aa3fa58..e12b979 100644 --- a/gcc/cobol/dts.h +++ b/gcc/cobol/dts.h @@ -86,18 +86,24 @@ namespace dts { #if __cpp_exceptions static const char msg[] = "input not NUL-terminated"; throw std::domain_error( msg ); -#else - // eoinput terminates input - eoinput = strchr(input, '\0'); // cppcheck-suppress uselessAssignmentPtrArg #endif } auto ncm = re.size(); cm.resize(ncm); std::vector <regmatch_t> cms(ncm); - int erc = regexec( &re, input, ncm, cms.data(), 0 ); if( erc != 0 ) return false; +#if __cpp_exceptions + // This is not correct at all, but current use depends on current behavior. + // The following line is excluded from the GCC build, which is compiled + // without __cpp_exceptions. parse_copy_directive (for one) depends on + // regex_search returning true even if the match is beyond eoinput. + if( eoinput < cm[0].second ) return false; + // Correct behavior would return match only between input and eoinput. + // Because regex(3) uses a NUL terminator, it may match text between + // eoinput and the NUL. +#endif std::transform( cms.begin(), cms.end(), cm.begin(), [input]( const regmatch_t& m ) { return csub_match( input, m ); diff --git a/gcc/cobol/except.cc b/gcc/cobol/except.cc index 60b8416..e42aea2 100644 --- a/gcc/cobol/except.cc +++ b/gcc/cobol/except.cc @@ -84,8 +84,6 @@ cbl_enabled_exception_t::dump( int i ) const { file ); } -cbl_enabled_exceptions_t enabled_exceptions; - void cbl_enabled_exceptions_t::dump() const { extern int yydebug; diff --git a/gcc/cobol/gcobol.1 b/gcc/cobol/gcobol.1 index 6db5400..ebb833c 100644 --- a/gcc/cobol/gcobol.1 +++ b/gcc/cobol/gcobol.1 @@ -587,6 +587,21 @@ statement, regardless of compile-time constants. .. . .Ss Implemented Exception Conditions +By default, per ISO, no EC is enabled. Implemented ECs may be enabled +on the command line or via the +.Sy TURN +directive. Any attempt to enable an EC that is not implemented is +treated as an error. +.Pp +An enabled EC not handled by a +.Sy DECLARATIVE +is written to the system log and to standard error. (The authors +intend to make that an option.) A fatal EC not handled with +.Sy RESUME +ends with a call to +.Xr abort 3 +and process termination. +.Pp Not all Exception Conditions are implemented. Any attempt to enable an EC that that is not implemented produces a warning message. The following are implemented: @@ -913,11 +928,90 @@ or has no effect; the two are interchangeable. .. . -.Ss Compiler-Directing Facility (CDF) +.Sh COMPILER-DIRECTING FACILITY The CDF should be used with caution because no comprehensive test -suite has been identified. +suite has been identified. . -.Ss Conditional Compilation +.Ss CDF Text Manipulation +.Bl -tag -width >>DEFINE +.It Sy COPY Ar copybook Li Oo OF|BY Ar library Oc Oo Sy REPLACING ... Oc +If +.Ar copybook +is a literal, it treated a literal filename, which either does or does not exist. If +.Ar copybook +is a \*[lang] word, +.Nm +looks first for an environment variable named +.Va copybook +and, if found, uses the contents of that variable as the name of the +copybook file. If that file does not exist, it continues looking for +a file named one of: +.sp +.Bl -bullet -compact -offset 5n +.It +.Pa copybook +(literally) +.It +.Pa copybook.cpy +.It +.Pa copybook.CPY +.It +.Pa copybook.cbl +.It +.Pa copybook.CBL +.It +.Pa copybook.cob +.It +.Pa copybook.COB +.El +.sp +in that order. It looks first in the same directory as the source +code file, and then in any +.Ar copybook-path +named with the +.Fl I +option. +. +.\" FIXME: need escape mechanism for directories with ':' in the name. +.Ar copybook-path +may (like the shell's +.Ev PATH +variable) be a colon-separated list. +The +.Fl I +option may occur multiple times on the command line. Each successive +.Ar copybook-path +is concatenated to previous ones. +Relative paths (having no leading +.Ql / Ns +\&) +are searched relative to the compiler's current working directory. +.Pp +For example, +.D1 \& +.D1 Fl I Li /usr/local/include:include +.D1 \& +searches first the directory where the \*[lang] program is found, next in +.Pa /usr/local/include , +and finally in an +.Pa include +subdirectory of the directory from which +.Nm +was invoked. +.Pp +For the +.Sy REPLACING +phrase, both the modern pseudo-text and the \*[lang]/85 forms are +recognized. (The older forms are used in the NIST CCVS/85 test suite.) +.It Sy REPLACE ... +.Nm +supports the full ISO +.Sy REPLACE +syntax. +.El +. +.Ss CDF Directives +.\"Bl -tag -width >>PROPAGATE .Bl -tag -width >>DEFINE .It >> Ns Sy DEFINE Ar name Sy AS Bro Ar expression Li | Sy PARAMETER Brc Op Sy OVERRIDE Define @@ -959,10 +1053,6 @@ is supported. Boolean literals are not supported. . .It >> Ns Sy EVALUATE Not implemented. -.El -. -.Ss Other CDF Directives -.Bl -tag -width >>PROPAGATE .It >> Ns Sy CALL-CONVENTION Ar convention .Ar convention may be one of: @@ -1036,6 +1126,24 @@ Not implemented. Not implemented. .It >> Ns Sy PROPAGATE Not implemented. +.It >> Ns Sy PUSH Ar directive +.It >> Ns Sy POP Ar directive +With +.Sy PUSH , +push CDF state onto a stack. +With +.Sy POP , +return to the prior pushed state. +.Ar directive +may be one of +.Bl -tag -compact +.It Sy CALL-CONVENTION +.It Sy COBOL-WORDS +.It Sy DEFINE +.It Sy SOURCE FORMAT +.It Sy TURN +.El +. .It >> Ns Sy TURN Oo .Ar ec Oo Ar file Li ... Oc ... .Oc Sy CHECKING Bro Oo Sy ON Oc Oo Oo Sy WITH Oc Sy LOCATION Oc | Sy OFF Brc @@ -1087,76 +1195,6 @@ the directive must appear before To test a feature-set variable, use .Dl >>IF Ar feature Li DEFINED . -.Ss Copybooks -.Nm -supports the CDF -.Sy COPY -statement, with or without its -.Sy REPLACING -component. For any statement -.sp -.D1 COPY Ar copybook -.sp -.Nm -looks first for an environment variable named -.Va copybook -and, if found, uses the contents of that variable as the name of the -copybook file. If that file does not exist, it continues looking for -a file named one of: -.sp -.Bl -bullet -compact -offset 5n -.It -.Pa copybook -(literally) -.It -.Pa copybook.cpy -.It -.Pa copybook.CPY -.It -.Pa copybook.cbl -.It -.Pa copybook.CBL -.It -.Pa copybook.cob -.It -.Pa copybook.COB -.El -.sp -in that order. It looks first in the same directory as the source -code file, and then in any -.Ar copybook-path -named with the -.Fl I -option. -. -.\" FIXME: need escape mechanism for directories with ':' in the name. -.Ar copybook-path -may (like the shell's -.Ev PATH -variable) be a colon-separated list. -. -The -.Fl I -option may occur multiple times on the command line. Each successive -.Ar copybook-path -is concatenated to previous ones. -Relative paths (having no leading -.Ql / Ns -\&) -are searched relative to the compiler's current working directory. -.Pp -For example, -.D1 \& -.D1 Fl I Li /usr/local/include:include -.D1 \& -searches first the directory where the \*[lang] program is found, next in -.Pa /usr/local/include , -and finally in an -.Pa include -subdirectory of the directory from which -.Nm -was invoked. -. .Ss Intrinsic functions .Nm implements all intrinsic functions defined by \*[isostd], plus a few diff --git a/gcc/cobol/genapi.cc b/gcc/cobol/genapi.cc index 55db870..3c4e9a9 100644 --- a/gcc/cobol/genapi.cc +++ b/gcc/cobol/genapi.cc @@ -1166,7 +1166,7 @@ parser_statement_begin( const cbl_name_t statement_name, // the execution time of a program doing two-billion simple adds in an inner // loop dropped from 3.8 seconds to 0.175 seconds. - bool exception_processing = enabled_exceptions.size() ; + bool exception_processing = cdf_enabled_exceptions().size() ; if( !exception_processing ) { @@ -12236,6 +12236,8 @@ parser_file_merge( cbl_file_t *workfile, ELSE ENDIF + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); + for(size_t i=0; i<ninputs; i++) { if( process_this_exception(ec_sort_merge_file_open_e) ) @@ -13905,7 +13907,7 @@ parser_check_fatal_exception() // in its innermost loop had an execution time of 19.5 seconds. By putting in // the if() statement, that was reduced to 3.8 seconds. - if( enabled_exceptions.size() || sv_is_i_o ) + if( cdf_enabled_exceptions().size() || sv_is_i_o ) { gg_call(VOID, "__gg__check_fatal_exception", diff --git a/gcc/cobol/genutil.cc b/gcc/cobol/genutil.cc index 1d921a3..e09b1bf 100644 --- a/gcc/cobol/genutil.cc +++ b/gcc/cobol/genutil.cc @@ -307,6 +307,8 @@ get_and_check_refstart_and_reflen( tree refstart,// LONG returned value tree reflen, // LONG returned value cbl_refer_t &refer) { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); + if( !enabled_exceptions.match(ec_bound_ref_mod_e) ) { // This is normal operation -- no exception checking. Thus, we won't @@ -458,6 +460,7 @@ get_depending_on_value_from_odo(tree retval, cbl_field_t *odo) declarative with a RESUME NEXT STATEMENT, or before the default_condition processing can do a controlled exit. */ + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); cbl_field_t *depending_on; depending_on = cbl_field_of(symbol_at(odo->occurs.depending_on)); @@ -601,6 +604,7 @@ get_data_offset(cbl_refer_t &refer, } else { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); if( !enabled_exceptions.match(ec_bound_subscript_e) ) { // With no exception testing, just pick up the value @@ -657,6 +661,8 @@ get_data_offset(cbl_refer_t &refer, // Although we strictly don't need to look at the ODO value at this point, // we do want it checked for the purposes of ec-bound-odo + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); + if( enabled_exceptions.match(ec_bound_odo_e) ) { if( parent->occurs.depending_on ) @@ -1669,6 +1675,7 @@ set_exception_code_func(ec_type_t ec, int /*line*/, int from_raise_statement) bool process_this_exception(ec_type_t ec) { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); bool retval; if( enabled_exceptions.match(ec) || !skip_exception_processing ) { diff --git a/gcc/cobol/lexio.cc b/gcc/cobol/lexio.cc index 4a50441..0aebe52 100644 --- a/gcc/cobol/lexio.cc +++ b/gcc/cobol/lexio.cc @@ -321,7 +321,69 @@ recognize_replacements( filespan_t mfile, std::list<replace_t>& pending_replacem } static void +check_push_pop_directive( filespan_t& mfile ) { + char eol = '\0'; + const char *p = std::find(mfile.cur, mfile.eol, '>'); + if( ! (p < mfile.eol && p[1] == *p ) ) return; + + const char pattern[] = + ">>[[:blank:]]*(push|pop)[[:blank:]]+" + "(" + "all|" + "call-convention|" + "cobol-words|" + "define|" + "source[[:blank:]]+format|" + "turn" + ")"; + static regex re(pattern, extended_icase); + + // show contents of marked subexpressions within each match + cmatch cm; + + std::swap(*mfile.eol, eol); // see implementation for excuses + bool ok = regex_search(p, const_cast<const char *>(mfile.eol), cm, re); + std::swap(*mfile.eol, eol); + + if( ok ) { + gcc_assert(cm.size() > 1); + bool push = TOUPPER(cm[1].first[1]) == 'U'; + switch( TOUPPER(cm[2].first[0]) ) { + case 'A': // ALL + push? cdf_push() : cdf_pop(); + break; + case 'C': + switch( TOUPPER(cm[2].first[1]) ) { + case 'A': // CALL-CONVENTION + push? cdf_push_call_convention() : cdf_pop_call_convention(); + break; + case 'O': // COBOL-WORDS + push? cdf_push_current_tokens() : cdf_pop_current_tokens(); + break; + default: + gcc_unreachable(); + } + break; + case 'D': // DEFINE + push? cdf_push_dictionary() : cdf_pop_dictionary(); + break; + case 'S': // SOURCE FORMAT + push? cdf_push_source_format() : cdf_pop_source_format(); + break; + case 'T': // TURN + push? cdf_push_enabled_exceptions() : cdf_pop_enabled_exceptions(); + break; + default: + gcc_unreachable(); + } + erase_line(const_cast<char*>(cm[0].first), + const_cast<char*>(cm[0].second)); + } +} + +static void check_source_format_directive( filespan_t& mfile ) { + char eol = '\0'; const char *p = std::find(mfile.cur, mfile.eol, '>'); if( ! (p < mfile.eol && p[1] == *p ) ) return; @@ -334,7 +396,12 @@ check_source_format_directive( filespan_t& mfile ) { // show contents of marked subexpressions within each match cmatch cm; - if( regex_search(p, const_cast<const char *>(mfile.eol), cm, re) ) { + + std::swap(*mfile.eol, eol); // see implementation for excuses + bool ok = regex_search(p, const_cast<const char *>(mfile.eol), cm, re); + std::swap(*mfile.eol, eol); + + if( ok ) { gcc_assert(cm.size() > 1); switch( cm[3].length() ) { case 4: @@ -353,8 +420,8 @@ check_source_format_directive( filespan_t& mfile ) { cdf_source_format().description(), (fmt_size_t)mfile.lineno() ); char *bol = cdf_source_format().is_fixed()? mfile.cur : const_cast<char*>(cm[0].first); + gcc_assert(cm[0].second <= mfile.eol); erase_line(bol, const_cast<char*>(cm[0].second)); - mfile.cur = const_cast<char*>(cm[0].second); } } @@ -1688,6 +1755,7 @@ cdftext::free_form_reference_format( int input ) { } while( mfile.next_line() ) { + check_push_pop_directive(mfile); check_source_format_directive(mfile); remove_inline_comment(mfile.cur, mfile.eol); diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y index 2212acc..83bffdf 100644 --- a/gcc/cobol/parse.y +++ b/gcc/cobol/parse.y @@ -386,7 +386,10 @@ CDF_EVALUATE ">>EVALUATE" CDF_WHEN ">>WHEN" CDF_END_EVALUATE ">>END-EVALUATE" + CALL_CONVENTION ">>CALL-CONVENTION" CALL_COBOL "CALL" CALL_VERBATIM "CALL (as C)" + CDF_PUSH ">>PUSH" CDF_POP ">>POP" + SOURCE_FORMAT ">>SOURCE FORMAT" IF THEN ELSE SENTENCE @@ -1469,16 +1472,16 @@ cobol_words: cobol_words1 | cobol_words cobol_words1 ; cobol_words1: COBOL_WORDS EQUATE NAME[keyword] WITH NAME[name] { - if( ! tokens.equate(@keyword, $keyword, $name) ) { YYERROR; } + if( ! cdf_tokens.equate(@keyword, $keyword, $name) ) { YYERROR; } } | COBOL_WORDS UNDEFINE NAME[keyword] { - if( ! tokens.undefine(@keyword, $keyword) ) { YYERROR; } + if( ! cdf_tokens.undefine(@keyword, $keyword) ) { YYERROR; } } | COBOL_WORDS SUBSTITUTE NAME[keyword] BY NAME[name] { - if( ! tokens.substitute(@keyword, $keyword, $name) ) { YYERROR; } + if( ! cdf_tokens.substitute(@keyword, $keyword, $name) ) { YYERROR; } } | COBOL_WORDS RESERVE NAME[name] { - if( ! tokens.reserve(@name, $name) ) { YYERROR; } + if( ! cdf_tokens.reserve(@name, $name) ) { YYERROR; } } ; @@ -4915,6 +4918,7 @@ by_value_arg: scalar declaratives: %empty | DECLARATIVES '.' <label>{ + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); current.enabled_exception_cache = enabled_exceptions; enabled_exceptions.clear(); current.doing_declaratives(true); @@ -4933,6 +4937,7 @@ declaratives: %empty * forward reference, because we haven't yet begun to parse * nondeclarative procedures. */ + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); parser_label_label($label); enabled_exceptions = current.enabled_exception_cache; current.enabled_exception_cache.clear(); @@ -11433,6 +11438,7 @@ void ast_call( const YYLTYPE& loc, cbl_refer_t name, const cbl_refer_t& returnin */ static bool possible_ec() { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); bool format_1 = current.declaratives.has_format_1(); bool enabled = 0xFF < (current.declaratives.status() @@ -11455,6 +11461,7 @@ possible_ec() { */ static void statement_epilog( int token ) { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); if( possible_ec() && token != CONTINUE ) { if( enabled_exceptions.size() ) { current.declaratives_evaluate(); @@ -11517,7 +11524,7 @@ keyword_str( int token ) { return ascii; } - return tokens.name_of(token); + return cdf_tokens.name_of(token); } bool iso_cobol_word( const std::string& name, bool include_context ); @@ -11589,7 +11596,7 @@ current_tokens_t::tokenset_t::find( const cbl_name_t name, bool include_intrinsi int keyword_tok( const char * text, bool include_intrinsics ) { - return tokens.find(text, include_intrinsics); + return cdf_tokens.find(text, include_intrinsics); } static inline size_t @@ -13131,7 +13138,7 @@ cobol_dialect_set( cbl_dialect_t dialect ) { break; case dialect_gnu_e: if( 0 == (cbl_dialects & dialect) ) { // first time - tokens.equate(YYLTYPE(), "BINARY-DOUBLE", "BINARY-C-LONG"); + cdf_tokens.equate(YYLTYPE(), "BINARY-DOUBLE", "BINARY-C-LONG"); } break; } diff --git a/gcc/cobol/parse_ante.h b/gcc/cobol/parse_ante.h index 3543a00..fa06e6c 100644 --- a/gcc/cobol/parse_ante.h +++ b/gcc/cobol/parse_ante.h @@ -935,11 +935,11 @@ teed_up_names() { return name_queue_t::namelist_of( name_queue.peek() ); } -current_tokens_t tokens; +#define cdf_tokens cdf_current_tokens() int redefined_token( const cbl_name_t name ) { - return tokens.redefined_as(name); + return cdf_tokens.redefined_as(name); } struct file_list_t { @@ -1321,7 +1321,6 @@ class prog_descr_t { } } } locale; - cbl_call_convention_t call_convention; cbl_options_t options; explicit prog_descr_t( size_t isymbol ) @@ -1330,9 +1329,7 @@ class prog_descr_t { , paragraph(NULL) , section(NULL) , collating_sequence(NULL) - { - call_convention = current_call_convention(); - } + {} std::set<std::string> external_targets() { std::set<std::string> externals; @@ -1421,24 +1418,13 @@ static cbl_label_t * implicit_section(); class program_stack_t : protected std::stack<prog_descr_t> { struct pending_t { - cbl_call_convention_t call_convention; bool initial; - pending_t() - : call_convention(cbl_call_convention_t(0)) - , initial(false) - {} + pending_t() : initial(false) {} } pending; public: - cbl_call_convention_t - pending_call_convention( cbl_call_convention_t convention ) { - return pending.call_convention = convention; - } bool pending_initial() { return pending.initial = true; } void push( prog_descr_t descr ) { - cbl_call_convention_t call_convention = cbl_call_cobol_e; - if( !empty() ) call_convention = top().call_convention; - descr.call_convention = call_convention; std::stack<prog_descr_t>& me(*this); me.push(descr); } @@ -1464,9 +1450,6 @@ class program_stack_t : protected std::stack<prog_descr_t> { } void apply_pending() { - if( size() == 1 && 0 != pending.call_convention ) { - top().call_convention = pending.call_convention; - } if( pending.initial ) { auto e = symbol_at(top().program_index); auto prog(cbl_label_of(e)); @@ -1873,19 +1856,6 @@ static class current_t { return programs.top().options.default_round = mode; } - cbl_call_convention_t - call_convention() { - return programs.empty()? cbl_call_cobol_e : programs.top().call_convention; - } - cbl_call_convention_t - call_convention( cbl_call_convention_t convention) { - if( programs.empty() ) { - return programs.pending_call_convention(convention); - } - auto& prog( programs.top() ); - return prog.call_convention = convention; - } - const char * locale() { return programs.empty()? NULL : programs.top().locale.os_name; @@ -1983,6 +1953,7 @@ static class current_t { * ISO, in new_program. */ std::set<std::string> end_program() { + cbl_enabled_exceptions_t& enabled_exceptions( cdf_enabled_exceptions() ); if( enabled_exceptions.size() ) { declaratives_evaluate(); } @@ -2273,15 +2244,6 @@ current_rounded_mode( cbl_round_t rounded) { #endif static cbl_round_t current_rounded_mode( int token ); -cbl_call_convention_t -current_call_convention() { - return current.call_convention(); -} -cbl_call_convention_t -current_call_convention( cbl_call_convention_t convention) { - return current.call_convention(convention); -} - size_t program_level() { return current.program_level(); } static size_t constant_index( int token ); diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l index 3c12eda..8b5dc25 100644 --- a/gcc/cobol/scan.l +++ b/gcc/cobol/scan.l @@ -2095,15 +2095,28 @@ BASIS { yy_push_state(basis); return BASIS; } ^[ ]*>>{OBLANK}TURN { yy_push_state(exception); return TURN; } ^[ ]*>>{OBLANK}COBOL-WORDS { yy_push_state(cobol_words); return COBOL_WORDS; } + ^[ ]*>>{OBLANK}SOURCE{BLANK}FORMAT { return SOURCE_FORMAT; } + + ^[ ]*>>{OBLANK}PUSH { return CDF_PUSH; } + ^[ ]*>>{OBLANK}POP { return CDF_POP; } + ^[ ]*>>{OBLANK}{NAME} { error_msg(yylloc, "unknown CDF token: %s", yytext); } + OTHER { return OTHER; } OVERRIDE { return OVERRIDE; } PARAMETER { return PARAMETER_kw; } THRU { return THRU; } TRUE { return TRUE_kw; } + + ALL { return ALL; } + CALL-CONVENTION { return CALL_CONVENTION; } + COBOL-WORDS { return COBOL_WORDS; } + DEFINE { return CDF_DEFINE; } + SOURCE{BLANK}FORMAT { return SOURCE_FORMAT; } + } <cobol_words>{ diff --git a/gcc/cobol/scan_post.h b/gcc/cobol/scan_post.h index fd70ea9..7cf2b98 100644 --- a/gcc/cobol/scan_post.h +++ b/gcc/cobol/scan_post.h @@ -158,6 +158,8 @@ is_cdf_token( int token ) { case CDF_DISPLAY: case CDF_IF: case CDF_ELSE: case CDF_END_IF: case CDF_EVALUATE: case CDF_WHEN: case CDF_END_EVALUATE: + case CDF_PUSH: + case CDF_POP: return true; case CALL_COBOL: case CALL_VERBATIM: diff --git a/gcc/cobol/symbols.h b/gcc/cobol/symbols.h index f96f1ec..c3de0aa 100644 --- a/gcc/cobol/symbols.h +++ b/gcc/cobol/symbols.h @@ -2551,8 +2551,9 @@ class current_tokens_t { }; cbl_call_convention_t current_call_convention(); +current_tokens_t& cdf_current_tokens(); -cbl_call_convention_t +void current_call_convention( cbl_call_convention_t convention); class procref_base_t { diff --git a/gcc/cobol/token_names.h b/gcc/cobol/token_names.h index d35b706..ca51510 100644 --- a/gcc/cobol/token_names.h +++ b/gcc/cobol/token_names.h @@ -1,5 +1,5 @@ // generated by ./token_names.h.gen ../../build/gcc/cobol/parse.h -// Fri Jul 4 12:35:01 EDT 2025 +// Tue Jul 8 19:21:28 EDT 2025 tokens = { { "identification", IDENTIFICATION_DIV }, // 258 { "environment", ENVIRONMENT_DIV }, // 259 @@ -137,562 +137,566 @@ tokens = { { "cdf-evaluate", CDF_EVALUATE }, // 388 { "cdf-when", CDF_WHEN }, // 389 { "cdf-end-evaluate", CDF_END_EVALUATE }, // 390 - { "call-cobol", CALL_COBOL }, // 391 - { "call-verbatim", CALL_VERBATIM }, // 392 - { "if", IF }, // 393 - { "then", THEN }, // 394 - { "else", ELSE }, // 395 - { "sentence", SENTENCE }, // 396 - { "accept", ACCEPT }, // 397 - { "add", ADD }, // 398 - { "alter", ALTER }, // 399 - { "call", CALL }, // 400 - { "cancel", CANCEL }, // 401 - { "close", CLOSE }, // 402 - { "compute", COMPUTE }, // 403 - { "continue", CONTINUE }, // 404 - { "delete", DELETE }, // 405 - { "display", DISPLAY }, // 406 - { "divide", DIVIDE }, // 407 - { "evaluate", EVALUATE }, // 408 - { "exit", EXIT }, // 409 - { "filler", FILLER_kw }, // 410 - { "goback", GOBACK }, // 411 - { "goto", GOTO }, // 412 - { "initialize", INITIALIZE }, // 413 - { "inspect", INSPECT }, // 414 - { "merge", MERGE }, // 415 - { "move", MOVE }, // 416 - { "multiply", MULTIPLY }, // 417 - { "open", OPEN }, // 418 - { "paragraph", PARAGRAPH }, // 419 - { "read", READ }, // 420 - { "release", RELEASE }, // 421 - { "return", RETURN }, // 422 - { "rewrite", REWRITE }, // 423 - { "search", SEARCH }, // 424 - { "set", SET }, // 425 - { "select", SELECT }, // 426 - { "sort", SORT }, // 427 - { "sort-merge", SORT_MERGE }, // 428 - { "string", STRING_kw }, // 429 - { "stop", STOP }, // 430 - { "subtract", SUBTRACT }, // 431 - { "start", START }, // 432 - { "unstring", UNSTRING }, // 433 - { "write", WRITE }, // 434 - { "when", WHEN }, // 435 - { "argument-number", ARGUMENT_NUMBER }, // 436 - { "argument-value", ARGUMENT_VALUE }, // 437 - { "environment-name", ENVIRONMENT_NAME }, // 438 - { "environment-value", ENVIRONMENT_VALUE }, // 439 - { "abs", ABS }, // 440 - { "access", ACCESS }, // 441 - { "acos", ACOS }, // 442 - { "actual", ACTUAL }, // 443 - { "advancing", ADVANCING }, // 444 - { "after", AFTER }, // 445 - { "all", ALL }, // 446 - { "allocate", ALLOCATE }, // 447 - { "alphabet", ALPHABET }, // 448 - { "alphabetic", ALPHABETIC }, // 449 - { "alphabetic-lower", ALPHABETIC_LOWER }, // 450 - { "alphabetic-upper", ALPHABETIC_UPPER }, // 451 - { "alphanumeric", ALPHANUMERIC }, // 452 - { "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 453 - { "also", ALSO }, // 454 - { "alternate", ALTERNATE }, // 455 - { "annuity", ANNUITY }, // 456 - { "anum", ANUM }, // 457 - { "any", ANY }, // 458 - { "anycase", ANYCASE }, // 459 - { "apply", APPLY }, // 460 - { "are", ARE }, // 461 - { "area", AREA }, // 462 - { "areas", AREAS }, // 463 - { "as", AS }, // 464 - { "ascending", ASCENDING }, // 465 - { "activating", ACTIVATING }, // 466 - { "asin", ASIN }, // 467 - { "assign", ASSIGN }, // 468 - { "at", AT }, // 469 - { "atan", ATAN }, // 470 - { "based", BASED }, // 471 - { "baseconvert", BASECONVERT }, // 472 - { "before", BEFORE }, // 473 - { "binary", BINARY }, // 474 - { "bit", BIT }, // 475 - { "bit-of", BIT_OF }, // 476 - { "bit-to-char", BIT_TO_CHAR }, // 477 - { "blank", BLANK }, // 478 - { "block", BLOCK_kw }, // 479 - { "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 480 - { "bottom", BOTTOM }, // 481 - { "by", BY }, // 482 - { "byte", BYTE }, // 483 - { "byte-length", BYTE_LENGTH }, // 484 - { "cf", CF }, // 485 - { "ch", CH }, // 486 - { "changed", CHANGED }, // 487 - { "char", CHAR }, // 488 - { "char-national", CHAR_NATIONAL }, // 489 - { "character", CHARACTER }, // 490 - { "characters", CHARACTERS }, // 491 - { "checking", CHECKING }, // 492 - { "class", CLASS }, // 493 - { "cobol", COBOL }, // 494 - { "code", CODE }, // 495 - { "code-set", CODESET }, // 496 - { "collating", COLLATING }, // 497 - { "column", COLUMN }, // 498 - { "combined-datetime", COMBINED_DATETIME }, // 499 - { "comma", COMMA }, // 500 - { "command-line", COMMAND_LINE }, // 501 - { "command-line-count", COMMAND_LINE_COUNT }, // 502 - { "commit", COMMIT }, // 503 - { "common", COMMON }, // 504 - { "concat", CONCAT }, // 505 - { "condition", CONDITION }, // 506 - { "configuration", CONFIGURATION_SECT }, // 507 - { "contains", CONTAINS }, // 508 - { "content", CONTENT }, // 509 - { "control", CONTROL }, // 510 - { "controls", CONTROLS }, // 511 - { "convert", CONVERT }, // 512 - { "converting", CONVERTING }, // 513 - { "corresponding", CORRESPONDING }, // 514 - { "cos", COS }, // 515 - { "count", COUNT }, // 516 - { "currency", CURRENCY }, // 517 - { "current", CURRENT }, // 518 - { "current-date", CURRENT_DATE }, // 519 - { "data", DATA }, // 520 - { "date", DATE }, // 521 - { "date-compiled", DATE_COMPILED }, // 522 - { "date-of-integer", DATE_OF_INTEGER }, // 523 - { "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 524 - { "date-written", DATE_WRITTEN }, // 525 - { "day", DAY }, // 526 - { "day-of-integer", DAY_OF_INTEGER }, // 527 - { "day-of-week", DAY_OF_WEEK }, // 528 - { "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 529 - { "dbcs", DBCS }, // 530 - { "de", DE }, // 531 - { "debugging", DEBUGGING }, // 532 - { "decimal-point", DECIMAL_POINT }, // 533 - { "declaratives", DECLARATIVES }, // 534 - { "default", DEFAULT }, // 535 - { "delimited", DELIMITED }, // 536 - { "delimiter", DELIMITER }, // 537 - { "depending", DEPENDING }, // 538 - { "descending", DESCENDING }, // 539 - { "detail", DETAIL }, // 540 - { "direct", DIRECT }, // 541 - { "direct-access", DIRECT_ACCESS }, // 542 - { "down", DOWN }, // 543 - { "duplicates", DUPLICATES }, // 544 - { "dynamic", DYNAMIC }, // 545 - { "e", E }, // 546 - { "ebcdic", EBCDIC }, // 547 - { "ec", EC }, // 548 - { "egcs", EGCS }, // 549 - { "entry", ENTRY }, // 550 - { "environment", ENVIRONMENT }, // 551 - { "equal", EQUAL }, // 552 - { "every", EVERY }, // 553 - { "examine", EXAMINE }, // 554 - { "exhibit", EXHIBIT }, // 555 - { "exp", EXP }, // 556 - { "exp10", EXP10 }, // 557 - { "extend", EXTEND }, // 558 - { "external", EXTERNAL }, // 559 - { "exception-file", EXCEPTION_FILE }, // 560 - { "exception-file-n", EXCEPTION_FILE_N }, // 561 - { "exception-location", EXCEPTION_LOCATION }, // 562 - { "exception-location-n", EXCEPTION_LOCATION_N }, // 563 - { "exception-statement", EXCEPTION_STATEMENT }, // 564 - { "exception-status", EXCEPTION_STATUS }, // 565 - { "factorial", FACTORIAL }, // 566 - { "false", FALSE_kw }, // 567 - { "fd", FD }, // 568 - { "file-control", FILE_CONTROL }, // 569 - { "file", FILE_KW }, // 570 - { "file-limit", FILE_LIMIT }, // 571 - { "final", FINAL }, // 572 - { "finally", FINALLY }, // 573 - { "find-string", FIND_STRING }, // 574 - { "first", FIRST }, // 575 - { "fixed", FIXED }, // 576 - { "footing", FOOTING }, // 577 - { "for", FOR }, // 578 - { "formatted-current-date", FORMATTED_CURRENT_DATE }, // 579 - { "formatted-date", FORMATTED_DATE }, // 580 - { "formatted-datetime", FORMATTED_DATETIME }, // 581 - { "formatted-time", FORMATTED_TIME }, // 582 - { "form-overflow", FORM_OVERFLOW }, // 583 - { "free", FREE }, // 584 - { "fraction-part", FRACTION_PART }, // 585 - { "from", FROM }, // 586 - { "function", FUNCTION }, // 587 - { "generate", GENERATE }, // 588 - { "giving", GIVING }, // 589 - { "global", GLOBAL }, // 590 - { "go", GO }, // 591 - { "group", GROUP }, // 592 - { "heading", HEADING }, // 593 - { "hex", HEX }, // 594 - { "hex-of", HEX_OF }, // 595 - { "hex-to-char", HEX_TO_CHAR }, // 596 - { "high-values", HIGH_VALUES }, // 597 - { "highest-algebraic", HIGHEST_ALGEBRAIC }, // 598 - { "hold", HOLD }, // 599 - { "ibm-360", IBM_360 }, // 600 - { "in", IN }, // 601 - { "include", INCLUDE }, // 602 - { "index", INDEX }, // 603 - { "indexed", INDEXED }, // 604 - { "indicate", INDICATE }, // 605 - { "initial", INITIAL_kw }, // 606 - { "initiate", INITIATE }, // 607 - { "input", INPUT }, // 608 - { "installation", INSTALLATION }, // 609 - { "interface", INTERFACE }, // 610 - { "integer", INTEGER }, // 611 - { "integer-of-boolean", INTEGER_OF_BOOLEAN }, // 612 - { "integer-of-date", INTEGER_OF_DATE }, // 613 - { "integer-of-day", INTEGER_OF_DAY }, // 614 - { "integer-of-formatted-date", INTEGER_OF_FORMATTED_DATE }, // 615 - { "integer-part", INTEGER_PART }, // 616 - { "into", INTO }, // 617 - { "intrinsic", INTRINSIC }, // 618 - { "invoke", INVOKE }, // 619 - { "i-o", IO }, // 620 - { "i-o-control", IO_CONTROL }, // 621 - { "is", IS }, // 622 - { "isnt", ISNT }, // 623 - { "kanji", KANJI }, // 624 - { "key", KEY }, // 625 - { "label", LABEL }, // 626 - { "last", LAST }, // 627 - { "leading", LEADING }, // 628 - { "left", LEFT }, // 629 - { "length", LENGTH }, // 630 - { "length-of", LENGTH_OF }, // 631 - { "limit", LIMIT }, // 632 - { "limits", LIMITS }, // 633 - { "line", LINE }, // 634 - { "lines", LINES }, // 635 - { "line-counter", LINE_COUNTER }, // 636 - { "linage", LINAGE }, // 637 - { "linkage", LINKAGE }, // 638 - { "locale", LOCALE }, // 639 - { "locale-compare", LOCALE_COMPARE }, // 640 - { "locale-date", LOCALE_DATE }, // 641 - { "locale-time", LOCALE_TIME }, // 642 - { "locale-time-from-seconds", LOCALE_TIME_FROM_SECONDS }, // 643 - { "local-storage", LOCAL_STORAGE }, // 644 - { "location", LOCATION }, // 645 - { "lock", LOCK }, // 646 - { "lock-on", LOCK_ON }, // 647 - { "log", LOG }, // 648 - { "log10", LOG10 }, // 649 - { "lower-case", LOWER_CASE }, // 650 - { "low-values", LOW_VALUES }, // 651 - { "lowest-algebraic", LOWEST_ALGEBRAIC }, // 652 - { "lparen", LPAREN }, // 653 - { "manual", MANUAL }, // 654 - { "maxx", MAXX }, // 655 - { "mean", MEAN }, // 656 - { "median", MEDIAN }, // 657 - { "midrange", MIDRANGE }, // 658 - { "minn", MINN }, // 659 - { "multiple", MULTIPLE }, // 660 - { "mod", MOD }, // 661 - { "mode", MODE }, // 662 - { "module-name", MODULE_NAME }, // 663 - { "named", NAMED }, // 664 - { "nat", NAT }, // 665 - { "national", NATIONAL }, // 666 - { "national-edited", NATIONAL_EDITED }, // 667 - { "national-of", NATIONAL_OF }, // 668 - { "native", NATIVE }, // 669 - { "nested", NESTED }, // 670 - { "next", NEXT }, // 671 - { "no", NO }, // 672 - { "note", NOTE }, // 673 - { "nulls", NULLS }, // 674 - { "null", NULLS }, // 674 - { "nullptr", NULLPTR }, // 675 - { "numeric", NUMERIC }, // 676 - { "numeric-edited", NUMERIC_EDITED }, // 677 - { "numval", NUMVAL }, // 678 - { "numval-c", NUMVAL_C }, // 679 - { "numval-f", NUMVAL_F }, // 680 - { "occurs", OCCURS }, // 681 - { "of", OF }, // 682 - { "off", OFF }, // 683 - { "omitted", OMITTED }, // 684 - { "on", ON }, // 685 - { "only", ONLY }, // 686 - { "optional", OPTIONAL }, // 687 - { "options", OPTIONS }, // 688 - { "ord", ORD }, // 689 - { "order", ORDER }, // 690 - { "ord-max", ORD_MAX }, // 691 - { "ord-min", ORD_MIN }, // 692 - { "organization", ORGANIZATION }, // 693 - { "other", OTHER }, // 694 - { "otherwise", OTHERWISE }, // 695 - { "output", OUTPUT }, // 696 - { "packed-decimal", PACKED_DECIMAL }, // 697 - { "padding", PADDING }, // 698 - { "page", PAGE }, // 699 - { "page-counter", PAGE_COUNTER }, // 700 - { "pf", PF }, // 701 - { "ph", PH }, // 702 - { "pi", PI }, // 703 - { "pic", PIC }, // 704 - { "picture", PICTURE }, // 705 - { "plus", PLUS }, // 706 - { "present-value", PRESENT_VALUE }, // 707 - { "print-switch", PRINT_SWITCH }, // 708 - { "procedure", PROCEDURE }, // 709 - { "procedures", PROCEDURES }, // 710 - { "proceed", PROCEED }, // 711 - { "process", PROCESS }, // 712 - { "program-id", PROGRAM_ID }, // 713 - { "program", PROGRAM_kw }, // 714 - { "property", PROPERTY }, // 715 - { "prototype", PROTOTYPE }, // 716 - { "pseudotext", PSEUDOTEXT }, // 717 - { "quotes", QUOTES }, // 718 - { "quote", QUOTES }, // 718 - { "random", RANDOM }, // 719 - { "random-seed", RANDOM_SEED }, // 720 - { "range", RANGE }, // 721 - { "raise", RAISE }, // 722 - { "raising", RAISING }, // 723 - { "rd", RD }, // 724 - { "record", RECORD }, // 725 - { "recording", RECORDING }, // 726 - { "records", RECORDS }, // 727 - { "recursive", RECURSIVE }, // 728 - { "redefines", REDEFINES }, // 729 - { "reel", REEL }, // 730 - { "reference", REFERENCE }, // 731 - { "relative", RELATIVE }, // 732 - { "rem", REM }, // 733 - { "remainder", REMAINDER }, // 734 - { "remarks", REMARKS }, // 735 - { "removal", REMOVAL }, // 736 - { "renames", RENAMES }, // 737 - { "replace", REPLACE }, // 738 - { "replacing", REPLACING }, // 739 - { "report", REPORT }, // 740 - { "reporting", REPORTING }, // 741 - { "reports", REPORTS }, // 742 - { "repository", REPOSITORY }, // 743 - { "rerun", RERUN }, // 744 - { "reserve", RESERVE }, // 745 - { "restricted", RESTRICTED }, // 746 - { "resume", RESUME }, // 747 - { "reverse", REVERSE }, // 748 - { "reversed", REVERSED }, // 749 - { "rewind", REWIND }, // 750 - { "rf", RF }, // 751 - { "rh", RH }, // 752 - { "right", RIGHT }, // 753 - { "rounded", ROUNDED }, // 754 - { "run", RUN }, // 755 - { "same", SAME }, // 756 - { "screen", SCREEN }, // 757 - { "sd", SD }, // 758 - { "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 759 - { "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 760 - { "security", SECURITY }, // 761 - { "separate", SEPARATE }, // 762 - { "sequence", SEQUENCE }, // 763 - { "sequential", SEQUENTIAL }, // 764 - { "sharing", SHARING }, // 765 - { "simple-exit", SIMPLE_EXIT }, // 766 - { "sign", SIGN }, // 767 - { "sin", SIN }, // 768 - { "size", SIZE }, // 769 - { "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 770 - { "source", SOURCE }, // 771 - { "source-computer", SOURCE_COMPUTER }, // 772 - { "special-names", SPECIAL_NAMES }, // 773 - { "sqrt", SQRT }, // 774 - { "stack", STACK }, // 775 - { "standard", STANDARD }, // 776 - { "standard-1", STANDARD_1 }, // 777 - { "standard-deviation", STANDARD_DEVIATION }, // 778 - { "standard-compare", STANDARD_COMPARE }, // 779 - { "status", STATUS }, // 780 - { "strong", STRONG }, // 781 - { "substitute", SUBSTITUTE }, // 782 - { "sum", SUM }, // 783 - { "symbol", SYMBOL }, // 784 - { "symbolic", SYMBOLIC }, // 785 - { "synchronized", SYNCHRONIZED }, // 786 - { "tally", TALLY }, // 787 - { "tallying", TALLYING }, // 788 - { "tan", TAN }, // 789 - { "terminate", TERMINATE }, // 790 - { "test", TEST }, // 791 - { "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 792 - { "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 793 - { "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 794 - { "test-numval", TEST_NUMVAL }, // 795 - { "test-numval-c", TEST_NUMVAL_C }, // 796 - { "test-numval-f", TEST_NUMVAL_F }, // 797 - { "than", THAN }, // 798 - { "time", TIME }, // 799 - { "times", TIMES }, // 800 - { "to", TO }, // 801 - { "top", TOP }, // 802 - { "top-level", TOP_LEVEL }, // 803 - { "tracks", TRACKS }, // 804 - { "track-area", TRACK_AREA }, // 805 - { "trailing", TRAILING }, // 806 - { "transform", TRANSFORM }, // 807 - { "trim", TRIM }, // 808 - { "true", TRUE_kw }, // 809 - { "try", TRY }, // 810 - { "turn", TURN }, // 811 - { "type", TYPE }, // 812 - { "typedef", TYPEDEF }, // 813 - { "ulength", ULENGTH }, // 814 - { "unbounded", UNBOUNDED }, // 815 - { "unit", UNIT }, // 816 - { "units", UNITS }, // 817 - { "unit-record", UNIT_RECORD }, // 818 - { "until", UNTIL }, // 819 - { "up", UP }, // 820 - { "upon", UPON }, // 821 - { "upos", UPOS }, // 822 - { "upper-case", UPPER_CASE }, // 823 - { "usage", USAGE }, // 824 - { "using", USING }, // 825 - { "usubstr", USUBSTR }, // 826 - { "usupplementary", USUPPLEMENTARY }, // 827 - { "utility", UTILITY }, // 828 - { "uuid4", UUID4 }, // 829 - { "uvalid", UVALID }, // 830 - { "uwidth", UWIDTH }, // 831 - { "value", VALUE }, // 832 - { "variance", VARIANCE }, // 833 - { "varying", VARYING }, // 834 - { "volatile", VOLATILE }, // 835 - { "when-compiled", WHEN_COMPILED }, // 836 - { "with", WITH }, // 837 - { "working-storage", WORKING_STORAGE }, // 838 - { "xml", XML }, // 839 - { "xmlgenerate", XMLGENERATE }, // 840 - { "xmlparse", XMLPARSE }, // 841 - { "year-to-yyyy", YEAR_TO_YYYY }, // 842 - { "yyyyddd", YYYYDDD }, // 843 - { "yyyymmdd", YYYYMMDD }, // 844 - { "arithmetic", ARITHMETIC }, // 845 - { "attribute", ATTRIBUTE }, // 846 - { "auto", AUTO }, // 847 - { "automatic", AUTOMATIC }, // 848 - { "away-from-zero", AWAY_FROM_ZERO }, // 849 - { "background-color", BACKGROUND_COLOR }, // 850 - { "bell", BELL }, // 851 - { "binary-encoding", BINARY_ENCODING }, // 852 - { "blink", BLINK }, // 853 - { "capacity", CAPACITY }, // 854 - { "center", CENTER }, // 855 - { "classification", CLASSIFICATION }, // 856 - { "cycle", CYCLE }, // 857 - { "decimal-encoding", DECIMAL_ENCODING }, // 858 - { "entry-convention", ENTRY_CONVENTION }, // 859 - { "eol", EOL }, // 860 - { "eos", EOS }, // 861 - { "erase", ERASE }, // 862 - { "expands", EXPANDS }, // 863 - { "float-binary", FLOAT_BINARY }, // 864 - { "float-decimal", FLOAT_DECIMAL }, // 865 - { "foreground-color", FOREGROUND_COLOR }, // 866 - { "forever", FOREVER }, // 867 - { "full", FULL }, // 868 - { "highlight", HIGHLIGHT }, // 869 - { "high-order-left", HIGH_ORDER_LEFT }, // 870 - { "high-order-right", HIGH_ORDER_RIGHT }, // 871 - { "ignoring", IGNORING }, // 872 - { "implements", IMPLEMENTS }, // 873 - { "initialized", INITIALIZED }, // 874 - { "intermediate", INTERMEDIATE }, // 875 - { "lc-all", LC_ALL_kw }, // 876 - { "lc-collate", LC_COLLATE_kw }, // 877 - { "lc-ctype", LC_CTYPE_kw }, // 878 - { "lc-messages", LC_MESSAGES_kw }, // 879 - { "lc-monetary", LC_MONETARY_kw }, // 880 - { "lc-numeric", LC_NUMERIC_kw }, // 881 - { "lc-time", LC_TIME_kw }, // 882 - { "lowlight", LOWLIGHT }, // 883 - { "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 884 - { "nearest-even", NEAREST_EVEN }, // 885 - { "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 886 - { "none", NONE }, // 887 - { "normal", NORMAL }, // 888 - { "numbers", NUMBERS }, // 889 - { "prefixed", PREFIXED }, // 890 - { "previous", PREVIOUS }, // 891 - { "prohibited", PROHIBITED }, // 892 - { "relation", RELATION }, // 893 - { "required", REQUIRED }, // 894 - { "reverse-video", REVERSE_VIDEO }, // 895 - { "rounding", ROUNDING }, // 896 - { "seconds", SECONDS }, // 897 - { "secure", SECURE }, // 898 - { "short", SHORT }, // 899 - { "signed", SIGNED_kw }, // 900 - { "standard-binary", STANDARD_BINARY }, // 901 - { "standard-decimal", STANDARD_DECIMAL }, // 902 - { "statement", STATEMENT }, // 903 - { "step", STEP }, // 904 - { "structure", STRUCTURE }, // 905 - { "toward-greater", TOWARD_GREATER }, // 906 - { "toward-lesser", TOWARD_LESSER }, // 907 - { "truncation", TRUNCATION }, // 908 - { "ucs-4", UCS_4 }, // 909 - { "underline", UNDERLINE }, // 910 - { "unsigned", UNSIGNED_kw }, // 911 - { "utf-16", UTF_16 }, // 912 - { "utf-8", UTF_8 }, // 913 - { "address", ADDRESS }, // 914 - { "end-accept", END_ACCEPT }, // 915 - { "end-add", END_ADD }, // 916 - { "end-call", END_CALL }, // 917 - { "end-compute", END_COMPUTE }, // 918 - { "end-delete", END_DELETE }, // 919 - { "end-display", END_DISPLAY }, // 920 - { "end-divide", END_DIVIDE }, // 921 - { "end-evaluate", END_EVALUATE }, // 922 - { "end-multiply", END_MULTIPLY }, // 923 - { "end-perform", END_PERFORM }, // 924 - { "end-read", END_READ }, // 925 - { "end-return", END_RETURN }, // 926 - { "end-rewrite", END_REWRITE }, // 927 - { "end-search", END_SEARCH }, // 928 - { "end-start", END_START }, // 929 - { "end-string", END_STRING }, // 930 - { "end-subtract", END_SUBTRACT }, // 931 - { "end-unstring", END_UNSTRING }, // 932 - { "end-write", END_WRITE }, // 933 - { "end-if", END_IF }, // 934 - { "thru", THRU }, // 935 - { "through", THRU }, // 935 - { "or", OR }, // 936 - { "and", AND }, // 937 - { "not", NOT }, // 938 - { "ne", NE }, // 939 - { "le", LE }, // 940 - { "ge", GE }, // 941 - { "pow", POW }, // 942 - { "neg", NEG }, // 943 + { "call-convention", CALL_CONVENTION }, // 391 + { "call-cobol", CALL_COBOL }, // 392 + { "call-verbatim", CALL_VERBATIM }, // 393 + { "cdf-push", CDF_PUSH }, // 394 + { "cdf-pop", CDF_POP }, // 395 + { "source-format", SOURCE_FORMAT }, // 396 + { "if", IF }, // 397 + { "then", THEN }, // 398 + { "else", ELSE }, // 399 + { "sentence", SENTENCE }, // 400 + { "accept", ACCEPT }, // 401 + { "add", ADD }, // 402 + { "alter", ALTER }, // 403 + { "call", CALL }, // 404 + { "cancel", CANCEL }, // 405 + { "close", CLOSE }, // 406 + { "compute", COMPUTE }, // 407 + { "continue", CONTINUE }, // 408 + { "delete", DELETE }, // 409 + { "display", DISPLAY }, // 410 + { "divide", DIVIDE }, // 411 + { "evaluate", EVALUATE }, // 412 + { "exit", EXIT }, // 413 + { "filler", FILLER_kw }, // 414 + { "goback", GOBACK }, // 415 + { "goto", GOTO }, // 416 + { "initialize", INITIALIZE }, // 417 + { "inspect", INSPECT }, // 418 + { "merge", MERGE }, // 419 + { "move", MOVE }, // 420 + { "multiply", MULTIPLY }, // 421 + { "open", OPEN }, // 422 + { "paragraph", PARAGRAPH }, // 423 + { "read", READ }, // 424 + { "release", RELEASE }, // 425 + { "return", RETURN }, // 426 + { "rewrite", REWRITE }, // 427 + { "search", SEARCH }, // 428 + { "set", SET }, // 429 + { "select", SELECT }, // 430 + { "sort", SORT }, // 431 + { "sort-merge", SORT_MERGE }, // 432 + { "string", STRING_kw }, // 433 + { "stop", STOP }, // 434 + { "subtract", SUBTRACT }, // 435 + { "start", START }, // 436 + { "unstring", UNSTRING }, // 437 + { "write", WRITE }, // 438 + { "when", WHEN }, // 439 + { "argument-number", ARGUMENT_NUMBER }, // 440 + { "argument-value", ARGUMENT_VALUE }, // 441 + { "environment-name", ENVIRONMENT_NAME }, // 442 + { "environment-value", ENVIRONMENT_VALUE }, // 443 + { "abs", ABS }, // 444 + { "access", ACCESS }, // 445 + { "acos", ACOS }, // 446 + { "actual", ACTUAL }, // 447 + { "advancing", ADVANCING }, // 448 + { "after", AFTER }, // 449 + { "all", ALL }, // 450 + { "allocate", ALLOCATE }, // 451 + { "alphabet", ALPHABET }, // 452 + { "alphabetic", ALPHABETIC }, // 453 + { "alphabetic-lower", ALPHABETIC_LOWER }, // 454 + { "alphabetic-upper", ALPHABETIC_UPPER }, // 455 + { "alphanumeric", ALPHANUMERIC }, // 456 + { "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 457 + { "also", ALSO }, // 458 + { "alternate", ALTERNATE }, // 459 + { "annuity", ANNUITY }, // 460 + { "anum", ANUM }, // 461 + { "any", ANY }, // 462 + { "anycase", ANYCASE }, // 463 + { "apply", APPLY }, // 464 + { "are", ARE }, // 465 + { "area", AREA }, // 466 + { "areas", AREAS }, // 467 + { "as", AS }, // 468 + { "ascending", ASCENDING }, // 469 + { "activating", ACTIVATING }, // 470 + { "asin", ASIN }, // 471 + { "assign", ASSIGN }, // 472 + { "at", AT }, // 473 + { "atan", ATAN }, // 474 + { "based", BASED }, // 475 + { "baseconvert", BASECONVERT }, // 476 + { "before", BEFORE }, // 477 + { "binary", BINARY }, // 478 + { "bit", BIT }, // 479 + { "bit-of", BIT_OF }, // 480 + { "bit-to-char", BIT_TO_CHAR }, // 481 + { "blank", BLANK }, // 482 + { "block", BLOCK_kw }, // 483 + { "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 484 + { "bottom", BOTTOM }, // 485 + { "by", BY }, // 486 + { "byte", BYTE }, // 487 + { "byte-length", BYTE_LENGTH }, // 488 + { "cf", CF }, // 489 + { "ch", CH }, // 490 + { "changed", CHANGED }, // 491 + { "char", CHAR }, // 492 + { "char-national", CHAR_NATIONAL }, // 493 + { "character", CHARACTER }, // 494 + { "characters", CHARACTERS }, // 495 + { "checking", CHECKING }, // 496 + { "class", CLASS }, // 497 + { "cobol", COBOL }, // 498 + { "code", CODE }, // 499 + { "code-set", CODESET }, // 500 + { "collating", COLLATING }, // 501 + { "column", COLUMN }, // 502 + { "combined-datetime", COMBINED_DATETIME }, // 503 + { "comma", COMMA }, // 504 + { "command-line", COMMAND_LINE }, // 505 + { "command-line-count", COMMAND_LINE_COUNT }, // 506 + { "commit", COMMIT }, // 507 + { "common", COMMON }, // 508 + { "concat", CONCAT }, // 509 + { "condition", CONDITION }, // 510 + { "configuration", CONFIGURATION_SECT }, // 511 + { "contains", CONTAINS }, // 512 + { "content", CONTENT }, // 513 + { "control", CONTROL }, // 514 + { "controls", CONTROLS }, // 515 + { "convert", CONVERT }, // 516 + { "converting", CONVERTING }, // 517 + { "corresponding", CORRESPONDING }, // 518 + { "cos", COS }, // 519 + { "count", COUNT }, // 520 + { "currency", CURRENCY }, // 521 + { "current", CURRENT }, // 522 + { "current-date", CURRENT_DATE }, // 523 + { "data", DATA }, // 524 + { "date", DATE }, // 525 + { "date-compiled", DATE_COMPILED }, // 526 + { "date-of-integer", DATE_OF_INTEGER }, // 527 + { "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 528 + { "date-written", DATE_WRITTEN }, // 529 + { "day", DAY }, // 530 + { "day-of-integer", DAY_OF_INTEGER }, // 531 + { "day-of-week", DAY_OF_WEEK }, // 532 + { "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 533 + { "dbcs", DBCS }, // 534 + { "de", DE }, // 535 + { "debugging", DEBUGGING }, // 536 + { "decimal-point", DECIMAL_POINT }, // 537 + { "declaratives", DECLARATIVES }, // 538 + { "default", DEFAULT }, // 539 + { "delimited", DELIMITED }, // 540 + { "delimiter", DELIMITER }, // 541 + { "depending", DEPENDING }, // 542 + { "descending", DESCENDING }, // 543 + { "detail", DETAIL }, // 544 + { "direct", DIRECT }, // 545 + { "direct-access", DIRECT_ACCESS }, // 546 + { "down", DOWN }, // 547 + { "duplicates", DUPLICATES }, // 548 + { "dynamic", DYNAMIC }, // 549 + { "e", E }, // 550 + { "ebcdic", EBCDIC }, // 551 + { "ec", EC }, // 552 + { "egcs", EGCS }, // 553 + { "entry", ENTRY }, // 554 + { "environment", ENVIRONMENT }, // 555 + { "equal", EQUAL }, // 556 + { "every", EVERY }, // 557 + { "examine", EXAMINE }, // 558 + { "exhibit", EXHIBIT }, // 559 + { "exp", EXP }, // 560 + { "exp10", EXP10 }, // 561 + { "extend", EXTEND }, // 562 + { "external", EXTERNAL }, // 563 + { "exception-file", EXCEPTION_FILE }, // 564 + { "exception-file-n", EXCEPTION_FILE_N }, // 565 + { "exception-location", EXCEPTION_LOCATION }, // 566 + { "exception-location-n", EXCEPTION_LOCATION_N }, // 567 + { "exception-statement", EXCEPTION_STATEMENT }, // 568 + { "exception-status", EXCEPTION_STATUS }, // 569 + { "factorial", FACTORIAL }, // 570 + { "false", FALSE_kw }, // 571 + { "fd", FD }, // 572 + { "file-control", FILE_CONTROL }, // 573 + { "file", FILE_KW }, // 574 + { "file-limit", FILE_LIMIT }, // 575 + { "final", FINAL }, // 576 + { "finally", FINALLY }, // 577 + { "find-string", FIND_STRING }, // 578 + { "first", FIRST }, // 579 + { "fixed", FIXED }, // 580 + { "footing", FOOTING }, // 581 + { "for", FOR }, // 582 + { "formatted-current-date", FORMATTED_CURRENT_DATE }, // 583 + { "formatted-date", FORMATTED_DATE }, // 584 + { "formatted-datetime", FORMATTED_DATETIME }, // 585 + { "formatted-time", FORMATTED_TIME }, // 586 + { "form-overflow", FORM_OVERFLOW }, // 587 + { "free", FREE }, // 588 + { "fraction-part", FRACTION_PART }, // 589 + { "from", FROM }, // 590 + { "function", FUNCTION }, // 591 + { "generate", GENERATE }, // 592 + { "giving", GIVING }, // 593 + { "global", GLOBAL }, // 594 + { "go", GO }, // 595 + { "group", GROUP }, // 596 + { "heading", HEADING }, // 597 + { "hex", HEX }, // 598 + { "hex-of", HEX_OF }, // 599 + { "hex-to-char", HEX_TO_CHAR }, // 600 + { "high-values", HIGH_VALUES }, // 601 + { "highest-algebraic", HIGHEST_ALGEBRAIC }, // 602 + { "hold", HOLD }, // 603 + { "ibm-360", IBM_360 }, // 604 + { "in", IN }, // 605 + { "include", INCLUDE }, // 606 + { "index", INDEX }, // 607 + { "indexed", INDEXED }, // 608 + { "indicate", INDICATE }, // 609 + { "initial", INITIAL_kw }, // 610 + { "initiate", INITIATE }, // 611 + { "input", INPUT }, // 612 + { "installation", INSTALLATION }, // 613 + { "interface", INTERFACE }, // 614 + { "integer", INTEGER }, // 615 + { "integer-of-boolean", INTEGER_OF_BOOLEAN }, // 616 + { "integer-of-date", INTEGER_OF_DATE }, // 617 + { "integer-of-day", INTEGER_OF_DAY }, // 618 + { "integer-of-formatted-date", INTEGER_OF_FORMATTED_DATE }, // 619 + { "integer-part", INTEGER_PART }, // 620 + { "into", INTO }, // 621 + { "intrinsic", INTRINSIC }, // 622 + { "invoke", INVOKE }, // 623 + { "i-o", IO }, // 624 + { "i-o-control", IO_CONTROL }, // 625 + { "is", IS }, // 626 + { "isnt", ISNT }, // 627 + { "kanji", KANJI }, // 628 + { "key", KEY }, // 629 + { "label", LABEL }, // 630 + { "last", LAST }, // 631 + { "leading", LEADING }, // 632 + { "left", LEFT }, // 633 + { "length", LENGTH }, // 634 + { "length-of", LENGTH_OF }, // 635 + { "limit", LIMIT }, // 636 + { "limits", LIMITS }, // 637 + { "line", LINE }, // 638 + { "lines", LINES }, // 639 + { "line-counter", LINE_COUNTER }, // 640 + { "linage", LINAGE }, // 641 + { "linkage", LINKAGE }, // 642 + { "locale", LOCALE }, // 643 + { "locale-compare", LOCALE_COMPARE }, // 644 + { "locale-date", LOCALE_DATE }, // 645 + { "locale-time", LOCALE_TIME }, // 646 + { "locale-time-from-seconds", LOCALE_TIME_FROM_SECONDS }, // 647 + { "local-storage", LOCAL_STORAGE }, // 648 + { "location", LOCATION }, // 649 + { "lock", LOCK }, // 650 + { "lock-on", LOCK_ON }, // 651 + { "log", LOG }, // 652 + { "log10", LOG10 }, // 653 + { "lower-case", LOWER_CASE }, // 654 + { "low-values", LOW_VALUES }, // 655 + { "lowest-algebraic", LOWEST_ALGEBRAIC }, // 656 + { "lparen", LPAREN }, // 657 + { "manual", MANUAL }, // 658 + { "maxx", MAXX }, // 659 + { "mean", MEAN }, // 660 + { "median", MEDIAN }, // 661 + { "midrange", MIDRANGE }, // 662 + { "minn", MINN }, // 663 + { "multiple", MULTIPLE }, // 664 + { "mod", MOD }, // 665 + { "mode", MODE }, // 666 + { "module-name", MODULE_NAME }, // 667 + { "named", NAMED }, // 668 + { "nat", NAT }, // 669 + { "national", NATIONAL }, // 670 + { "national-edited", NATIONAL_EDITED }, // 671 + { "national-of", NATIONAL_OF }, // 672 + { "native", NATIVE }, // 673 + { "nested", NESTED }, // 674 + { "next", NEXT }, // 675 + { "no", NO }, // 676 + { "note", NOTE }, // 677 + { "nulls", NULLS }, // 678 + { "null", NULLS }, // 678 + { "nullptr", NULLPTR }, // 679 + { "numeric", NUMERIC }, // 680 + { "numeric-edited", NUMERIC_EDITED }, // 681 + { "numval", NUMVAL }, // 682 + { "numval-c", NUMVAL_C }, // 683 + { "numval-f", NUMVAL_F }, // 684 + { "occurs", OCCURS }, // 685 + { "of", OF }, // 686 + { "off", OFF }, // 687 + { "omitted", OMITTED }, // 688 + { "on", ON }, // 689 + { "only", ONLY }, // 690 + { "optional", OPTIONAL }, // 691 + { "options", OPTIONS }, // 692 + { "ord", ORD }, // 693 + { "order", ORDER }, // 694 + { "ord-max", ORD_MAX }, // 695 + { "ord-min", ORD_MIN }, // 696 + { "organization", ORGANIZATION }, // 697 + { "other", OTHER }, // 698 + { "otherwise", OTHERWISE }, // 699 + { "output", OUTPUT }, // 700 + { "packed-decimal", PACKED_DECIMAL }, // 701 + { "padding", PADDING }, // 702 + { "page", PAGE }, // 703 + { "page-counter", PAGE_COUNTER }, // 704 + { "pf", PF }, // 705 + { "ph", PH }, // 706 + { "pi", PI }, // 707 + { "pic", PIC }, // 708 + { "picture", PICTURE }, // 709 + { "plus", PLUS }, // 710 + { "present-value", PRESENT_VALUE }, // 711 + { "print-switch", PRINT_SWITCH }, // 712 + { "procedure", PROCEDURE }, // 713 + { "procedures", PROCEDURES }, // 714 + { "proceed", PROCEED }, // 715 + { "process", PROCESS }, // 716 + { "program-id", PROGRAM_ID }, // 717 + { "program", PROGRAM_kw }, // 718 + { "property", PROPERTY }, // 719 + { "prototype", PROTOTYPE }, // 720 + { "pseudotext", PSEUDOTEXT }, // 721 + { "quotes", QUOTES }, // 722 + { "quote", QUOTES }, // 722 + { "random", RANDOM }, // 723 + { "random-seed", RANDOM_SEED }, // 724 + { "range", RANGE }, // 725 + { "raise", RAISE }, // 726 + { "raising", RAISING }, // 727 + { "rd", RD }, // 728 + { "record", RECORD }, // 729 + { "recording", RECORDING }, // 730 + { "records", RECORDS }, // 731 + { "recursive", RECURSIVE }, // 732 + { "redefines", REDEFINES }, // 733 + { "reel", REEL }, // 734 + { "reference", REFERENCE }, // 735 + { "relative", RELATIVE }, // 736 + { "rem", REM }, // 737 + { "remainder", REMAINDER }, // 738 + { "remarks", REMARKS }, // 739 + { "removal", REMOVAL }, // 740 + { "renames", RENAMES }, // 741 + { "replace", REPLACE }, // 742 + { "replacing", REPLACING }, // 743 + { "report", REPORT }, // 744 + { "reporting", REPORTING }, // 745 + { "reports", REPORTS }, // 746 + { "repository", REPOSITORY }, // 747 + { "rerun", RERUN }, // 748 + { "reserve", RESERVE }, // 749 + { "restricted", RESTRICTED }, // 750 + { "resume", RESUME }, // 751 + { "reverse", REVERSE }, // 752 + { "reversed", REVERSED }, // 753 + { "rewind", REWIND }, // 754 + { "rf", RF }, // 755 + { "rh", RH }, // 756 + { "right", RIGHT }, // 757 + { "rounded", ROUNDED }, // 758 + { "run", RUN }, // 759 + { "same", SAME }, // 760 + { "screen", SCREEN }, // 761 + { "sd", SD }, // 762 + { "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 763 + { "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 764 + { "security", SECURITY }, // 765 + { "separate", SEPARATE }, // 766 + { "sequence", SEQUENCE }, // 767 + { "sequential", SEQUENTIAL }, // 768 + { "sharing", SHARING }, // 769 + { "simple-exit", SIMPLE_EXIT }, // 770 + { "sign", SIGN }, // 771 + { "sin", SIN }, // 772 + { "size", SIZE }, // 773 + { "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 774 + { "source", SOURCE }, // 775 + { "source-computer", SOURCE_COMPUTER }, // 776 + { "special-names", SPECIAL_NAMES }, // 777 + { "sqrt", SQRT }, // 778 + { "stack", STACK }, // 779 + { "standard", STANDARD }, // 780 + { "standard-1", STANDARD_1 }, // 781 + { "standard-deviation", STANDARD_DEVIATION }, // 782 + { "standard-compare", STANDARD_COMPARE }, // 783 + { "status", STATUS }, // 784 + { "strong", STRONG }, // 785 + { "substitute", SUBSTITUTE }, // 786 + { "sum", SUM }, // 787 + { "symbol", SYMBOL }, // 788 + { "symbolic", SYMBOLIC }, // 789 + { "synchronized", SYNCHRONIZED }, // 790 + { "tally", TALLY }, // 791 + { "tallying", TALLYING }, // 792 + { "tan", TAN }, // 793 + { "terminate", TERMINATE }, // 794 + { "test", TEST }, // 795 + { "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 796 + { "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 797 + { "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 798 + { "test-numval", TEST_NUMVAL }, // 799 + { "test-numval-c", TEST_NUMVAL_C }, // 800 + { "test-numval-f", TEST_NUMVAL_F }, // 801 + { "than", THAN }, // 802 + { "time", TIME }, // 803 + { "times", TIMES }, // 804 + { "to", TO }, // 805 + { "top", TOP }, // 806 + { "top-level", TOP_LEVEL }, // 807 + { "tracks", TRACKS }, // 808 + { "track-area", TRACK_AREA }, // 809 + { "trailing", TRAILING }, // 810 + { "transform", TRANSFORM }, // 811 + { "trim", TRIM }, // 812 + { "true", TRUE_kw }, // 813 + { "try", TRY }, // 814 + { "turn", TURN }, // 815 + { "type", TYPE }, // 816 + { "typedef", TYPEDEF }, // 817 + { "ulength", ULENGTH }, // 818 + { "unbounded", UNBOUNDED }, // 819 + { "unit", UNIT }, // 820 + { "units", UNITS }, // 821 + { "unit-record", UNIT_RECORD }, // 822 + { "until", UNTIL }, // 823 + { "up", UP }, // 824 + { "upon", UPON }, // 825 + { "upos", UPOS }, // 826 + { "upper-case", UPPER_CASE }, // 827 + { "usage", USAGE }, // 828 + { "using", USING }, // 829 + { "usubstr", USUBSTR }, // 830 + { "usupplementary", USUPPLEMENTARY }, // 831 + { "utility", UTILITY }, // 832 + { "uuid4", UUID4 }, // 833 + { "uvalid", UVALID }, // 834 + { "uwidth", UWIDTH }, // 835 + { "value", VALUE }, // 836 + { "variance", VARIANCE }, // 837 + { "varying", VARYING }, // 838 + { "volatile", VOLATILE }, // 839 + { "when-compiled", WHEN_COMPILED }, // 840 + { "with", WITH }, // 841 + { "working-storage", WORKING_STORAGE }, // 842 + { "xml", XML }, // 843 + { "xmlgenerate", XMLGENERATE }, // 844 + { "xmlparse", XMLPARSE }, // 845 + { "year-to-yyyy", YEAR_TO_YYYY }, // 846 + { "yyyyddd", YYYYDDD }, // 847 + { "yyyymmdd", YYYYMMDD }, // 848 + { "arithmetic", ARITHMETIC }, // 849 + { "attribute", ATTRIBUTE }, // 850 + { "auto", AUTO }, // 851 + { "automatic", AUTOMATIC }, // 852 + { "away-from-zero", AWAY_FROM_ZERO }, // 853 + { "background-color", BACKGROUND_COLOR }, // 854 + { "bell", BELL }, // 855 + { "binary-encoding", BINARY_ENCODING }, // 856 + { "blink", BLINK }, // 857 + { "capacity", CAPACITY }, // 858 + { "center", CENTER }, // 859 + { "classification", CLASSIFICATION }, // 860 + { "cycle", CYCLE }, // 861 + { "decimal-encoding", DECIMAL_ENCODING }, // 862 + { "entry-convention", ENTRY_CONVENTION }, // 863 + { "eol", EOL }, // 864 + { "eos", EOS }, // 865 + { "erase", ERASE }, // 866 + { "expands", EXPANDS }, // 867 + { "float-binary", FLOAT_BINARY }, // 868 + { "float-decimal", FLOAT_DECIMAL }, // 869 + { "foreground-color", FOREGROUND_COLOR }, // 870 + { "forever", FOREVER }, // 871 + { "full", FULL }, // 872 + { "highlight", HIGHLIGHT }, // 873 + { "high-order-left", HIGH_ORDER_LEFT }, // 874 + { "high-order-right", HIGH_ORDER_RIGHT }, // 875 + { "ignoring", IGNORING }, // 876 + { "implements", IMPLEMENTS }, // 877 + { "initialized", INITIALIZED }, // 878 + { "intermediate", INTERMEDIATE }, // 879 + { "lc-all", LC_ALL_kw }, // 880 + { "lc-collate", LC_COLLATE_kw }, // 881 + { "lc-ctype", LC_CTYPE_kw }, // 882 + { "lc-messages", LC_MESSAGES_kw }, // 883 + { "lc-monetary", LC_MONETARY_kw }, // 884 + { "lc-numeric", LC_NUMERIC_kw }, // 885 + { "lc-time", LC_TIME_kw }, // 886 + { "lowlight", LOWLIGHT }, // 887 + { "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 888 + { "nearest-even", NEAREST_EVEN }, // 889 + { "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 890 + { "none", NONE }, // 891 + { "normal", NORMAL }, // 892 + { "numbers", NUMBERS }, // 893 + { "prefixed", PREFIXED }, // 894 + { "previous", PREVIOUS }, // 895 + { "prohibited", PROHIBITED }, // 896 + { "relation", RELATION }, // 897 + { "required", REQUIRED }, // 898 + { "reverse-video", REVERSE_VIDEO }, // 899 + { "rounding", ROUNDING }, // 900 + { "seconds", SECONDS }, // 901 + { "secure", SECURE }, // 902 + { "short", SHORT }, // 903 + { "signed", SIGNED_kw }, // 904 + { "standard-binary", STANDARD_BINARY }, // 905 + { "standard-decimal", STANDARD_DECIMAL }, // 906 + { "statement", STATEMENT }, // 907 + { "step", STEP }, // 908 + { "structure", STRUCTURE }, // 909 + { "toward-greater", TOWARD_GREATER }, // 910 + { "toward-lesser", TOWARD_LESSER }, // 911 + { "truncation", TRUNCATION }, // 912 + { "ucs-4", UCS_4 }, // 913 + { "underline", UNDERLINE }, // 914 + { "unsigned", UNSIGNED_kw }, // 915 + { "utf-16", UTF_16 }, // 916 + { "utf-8", UTF_8 }, // 917 + { "address", ADDRESS }, // 918 + { "end-accept", END_ACCEPT }, // 919 + { "end-add", END_ADD }, // 920 + { "end-call", END_CALL }, // 921 + { "end-compute", END_COMPUTE }, // 922 + { "end-delete", END_DELETE }, // 923 + { "end-display", END_DISPLAY }, // 924 + { "end-divide", END_DIVIDE }, // 925 + { "end-evaluate", END_EVALUATE }, // 926 + { "end-multiply", END_MULTIPLY }, // 927 + { "end-perform", END_PERFORM }, // 928 + { "end-read", END_READ }, // 929 + { "end-return", END_RETURN }, // 930 + { "end-rewrite", END_REWRITE }, // 931 + { "end-search", END_SEARCH }, // 932 + { "end-start", END_START }, // 933 + { "end-string", END_STRING }, // 934 + { "end-subtract", END_SUBTRACT }, // 935 + { "end-unstring", END_UNSTRING }, // 936 + { "end-write", END_WRITE }, // 937 + { "end-if", END_IF }, // 938 + { "thru", THRU }, // 939 + { "through", THRU }, // 939 + { "or", OR }, // 940 + { "and", AND }, // 941 + { "not", NOT }, // 942 + { "ne", NE }, // 943 + { "le", LE }, // 944 + { "ge", GE }, // 945 + { "pow", POW }, // 946 + { "neg", NEG }, // 947 }; // cppcheck-suppress useInitializationList @@ -830,557 +834,561 @@ token_names = { "CDF-EVALUATE", // 130 (388) "CDF-WHEN", // 131 (389) "CDF-END-EVALUATE", // 132 (390) - "CALL-COBOL", // 133 (391) - "CALL-VERBATIM", // 134 (392) - "IF", // 135 (393) - "THEN", // 136 (394) - "ELSE", // 137 (395) - "SENTENCE", // 138 (396) - "ACCEPT", // 139 (397) - "ADD", // 140 (398) - "ALTER", // 141 (399) - "CALL", // 142 (400) - "CANCEL", // 143 (401) - "CLOSE", // 144 (402) - "COMPUTE", // 145 (403) - "CONTINUE", // 146 (404) - "DELETE", // 147 (405) - "DISPLAY", // 148 (406) - "DIVIDE", // 149 (407) - "EVALUATE", // 150 (408) - "EXIT", // 151 (409) - "FILLER", // 152 (410) - "GOBACK", // 153 (411) - "GOTO", // 154 (412) - "INITIALIZE", // 155 (413) - "INSPECT", // 156 (414) - "MERGE", // 157 (415) - "MOVE", // 158 (416) - "MULTIPLY", // 159 (417) - "OPEN", // 160 (418) - "PARAGRAPH", // 161 (419) - "READ", // 162 (420) - "RELEASE", // 163 (421) - "RETURN", // 164 (422) - "REWRITE", // 165 (423) - "SEARCH", // 166 (424) - "SET", // 167 (425) - "SELECT", // 168 (426) - "SORT", // 169 (427) - "SORT-MERGE", // 170 (428) - "STRING", // 171 (429) - "STOP", // 172 (430) - "SUBTRACT", // 173 (431) - "START", // 174 (432) - "UNSTRING", // 175 (433) - "WRITE", // 176 (434) - "WHEN", // 177 (435) - "ARGUMENT-NUMBER", // 178 (436) - "ARGUMENT-VALUE", // 179 (437) - "ENVIRONMENT-NAME", // 180 (438) - "ENVIRONMENT-VALUE", // 181 (439) - "ABS", // 182 (440) - "ACCESS", // 183 (441) - "ACOS", // 184 (442) - "ACTUAL", // 185 (443) - "ADVANCING", // 186 (444) - "AFTER", // 187 (445) - "ALL", // 188 (446) - "ALLOCATE", // 189 (447) - "ALPHABET", // 190 (448) - "ALPHABETIC", // 191 (449) - "ALPHABETIC-LOWER", // 192 (450) - "ALPHABETIC-UPPER", // 193 (451) - "ALPHANUMERIC", // 194 (452) - "ALPHANUMERIC-EDITED", // 195 (453) - "ALSO", // 196 (454) - "ALTERNATE", // 197 (455) - "ANNUITY", // 198 (456) - "ANUM", // 199 (457) - "ANY", // 200 (458) - "ANYCASE", // 201 (459) - "APPLY", // 202 (460) - "ARE", // 203 (461) - "AREA", // 204 (462) - "AREAS", // 205 (463) - "AS", // 206 (464) - "ASCENDING", // 207 (465) - "ACTIVATING", // 208 (466) - "ASIN", // 209 (467) - "ASSIGN", // 210 (468) - "AT", // 211 (469) - "ATAN", // 212 (470) - "BASED", // 213 (471) - "BASECONVERT", // 214 (472) - "BEFORE", // 215 (473) - "BINARY", // 216 (474) - "BIT", // 217 (475) - "BIT-OF", // 218 (476) - "BIT-TO-CHAR", // 219 (477) - "BLANK", // 220 (478) - "BLOCK", // 221 (479) - "BOOLEAN-OF-INTEGER", // 222 (480) - "BOTTOM", // 223 (481) - "BY", // 224 (482) - "BYTE", // 225 (483) - "BYTE-LENGTH", // 226 (484) - "CF", // 227 (485) - "CH", // 228 (486) - "CHANGED", // 229 (487) - "CHAR", // 230 (488) - "CHAR-NATIONAL", // 231 (489) - "CHARACTER", // 232 (490) - "CHARACTERS", // 233 (491) - "CHECKING", // 234 (492) - "CLASS", // 235 (493) - "COBOL", // 236 (494) - "CODE", // 237 (495) - "CODE-SET", // 238 (496) - "COLLATING", // 239 (497) - "COLUMN", // 240 (498) - "COMBINED-DATETIME", // 241 (499) - "COMMA", // 242 (500) - "COMMAND-LINE", // 243 (501) - "COMMAND-LINE-COUNT", // 244 (502) - "COMMIT", // 245 (503) - "COMMON", // 246 (504) - "CONCAT", // 247 (505) - "CONDITION", // 248 (506) - "CONFIGURATION", // 249 (507) - "CONTAINS", // 250 (508) - "CONTENT", // 251 (509) - "CONTROL", // 252 (510) - "CONTROLS", // 253 (511) - "CONVERT", // 254 (512) - "CONVERTING", // 255 (513) - "CORRESPONDING", // 256 (514) - "COS", // 257 (515) - "COUNT", // 258 (516) - "CURRENCY", // 259 (517) - "CURRENT", // 260 (518) - "CURRENT-DATE", // 261 (519) - "DATA", // 262 (520) - "DATE", // 263 (521) - "DATE-COMPILED", // 264 (522) - "DATE-OF-INTEGER", // 265 (523) - "DATE-TO-YYYYMMDD", // 266 (524) - "DATE-WRITTEN", // 267 (525) - "DAY", // 268 (526) - "DAY-OF-INTEGER", // 269 (527) - "DAY-OF-WEEK", // 270 (528) - "DAY-TO-YYYYDDD", // 271 (529) - "DBCS", // 272 (530) - "DE", // 273 (531) - "DEBUGGING", // 274 (532) - "DECIMAL-POINT", // 275 (533) - "DECLARATIVES", // 276 (534) - "DEFAULT", // 277 (535) - "DELIMITED", // 278 (536) - "DELIMITER", // 279 (537) - "DEPENDING", // 280 (538) - "DESCENDING", // 281 (539) - "DETAIL", // 282 (540) - "DIRECT", // 283 (541) - "DIRECT-ACCESS", // 284 (542) - "DOWN", // 285 (543) - "DUPLICATES", // 286 (544) - "DYNAMIC", // 287 (545) - "E", // 288 (546) - "EBCDIC", // 289 (547) - "EC", // 290 (548) - "EGCS", // 291 (549) - "ENTRY", // 292 (550) - "ENVIRONMENT", // 293 (551) - "EQUAL", // 294 (552) - "EVERY", // 295 (553) - "EXAMINE", // 296 (554) - "EXHIBIT", // 297 (555) - "EXP", // 298 (556) - "EXP10", // 299 (557) - "EXTEND", // 300 (558) - "EXTERNAL", // 301 (559) - "EXCEPTION-FILE", // 302 (560) - "EXCEPTION-FILE-N", // 303 (561) - "EXCEPTION-LOCATION", // 304 (562) - "EXCEPTION-LOCATION-N", // 305 (563) - "EXCEPTION-STATEMENT", // 306 (564) - "EXCEPTION-STATUS", // 307 (565) - "FACTORIAL", // 308 (566) - "FALSE", // 309 (567) - "FD", // 310 (568) - "FILE-CONTROL", // 311 (569) - "FILE", // 312 (570) - "FILE-LIMIT", // 313 (571) - "FINAL", // 314 (572) - "FINALLY", // 315 (573) - "FIND-STRING", // 316 (574) - "FIRST", // 317 (575) - "FIXED", // 318 (576) - "FOOTING", // 319 (577) - "FOR", // 320 (578) - "FORMATTED-CURRENT-DATE", // 321 (579) - "FORMATTED-DATE", // 322 (580) - "FORMATTED-DATETIME", // 323 (581) - "FORMATTED-TIME", // 324 (582) - "FORM-OVERFLOW", // 325 (583) - "FREE", // 326 (584) - "FRACTION-PART", // 327 (585) - "FROM", // 328 (586) - "FUNCTION", // 329 (587) - "GENERATE", // 330 (588) - "GIVING", // 331 (589) - "GLOBAL", // 332 (590) - "GO", // 333 (591) - "GROUP", // 334 (592) - "HEADING", // 335 (593) - "HEX", // 336 (594) - "HEX-OF", // 337 (595) - "HEX-TO-CHAR", // 338 (596) - "HIGH-VALUES", // 339 (597) - "HIGHEST-ALGEBRAIC", // 340 (598) - "HOLD", // 341 (599) - "IBM-360", // 342 (600) - "IN", // 343 (601) - "INCLUDE", // 344 (602) - "INDEX", // 345 (603) - "INDEXED", // 346 (604) - "INDICATE", // 347 (605) - "INITIAL", // 348 (606) - "INITIATE", // 349 (607) - "INPUT", // 350 (608) - "INSTALLATION", // 351 (609) - "INTERFACE", // 352 (610) - "INTEGER", // 353 (611) - "INTEGER-OF-BOOLEAN", // 354 (612) - "INTEGER-OF-DATE", // 355 (613) - "INTEGER-OF-DAY", // 356 (614) - "INTEGER-OF-FORMATTED-DATE", // 357 (615) - "INTEGER-PART", // 358 (616) - "INTO", // 359 (617) - "INTRINSIC", // 360 (618) - "INVOKE", // 361 (619) - "I-O", // 362 (620) - "I-O-CONTROL", // 363 (621) - "IS", // 364 (622) - "ISNT", // 365 (623) - "KANJI", // 366 (624) - "KEY", // 367 (625) - "LABEL", // 368 (626) - "LAST", // 369 (627) - "LEADING", // 370 (628) - "LEFT", // 371 (629) - "LENGTH", // 372 (630) - "LENGTH-OF", // 373 (631) - "LIMIT", // 374 (632) - "LIMITS", // 375 (633) - "LINE", // 376 (634) - "LINES", // 377 (635) - "LINE-COUNTER", // 378 (636) - "LINAGE", // 379 (637) - "LINKAGE", // 380 (638) - "LOCALE", // 381 (639) - "LOCALE-COMPARE", // 382 (640) - "LOCALE-DATE", // 383 (641) - "LOCALE-TIME", // 384 (642) - "LOCALE-TIME-FROM-SECONDS", // 385 (643) - "LOCAL-STORAGE", // 386 (644) - "LOCATION", // 387 (645) - "LOCK", // 388 (646) - "LOCK-ON", // 389 (647) - "LOG", // 390 (648) - "LOG10", // 391 (649) - "LOWER-CASE", // 392 (650) - "LOW-VALUES", // 393 (651) - "LOWEST-ALGEBRAIC", // 394 (652) - "LPAREN", // 395 (653) - "MANUAL", // 396 (654) - "MAXX", // 397 (655) - "MEAN", // 398 (656) - "MEDIAN", // 399 (657) - "MIDRANGE", // 400 (658) - "MINN", // 401 (659) - "MULTIPLE", // 402 (660) - "MOD", // 403 (661) - "MODE", // 404 (662) - "MODULE-NAME", // 405 (663) - "NAMED", // 406 (664) - "NAT", // 407 (665) - "NATIONAL", // 408 (666) - "NATIONAL-EDITED", // 409 (667) - "NATIONAL-OF", // 410 (668) - "NATIVE", // 411 (669) - "NESTED", // 412 (670) - "NEXT", // 413 (671) - "NO", // 414 (672) - "NOTE", // 415 (673) - "NULLS", // 416 (674) - "NULLPTR", // 417 (675) - "NUMERIC", // 418 (676) - "NUMERIC-EDITED", // 419 (677) - "NUMVAL", // 420 (678) - "NUMVAL-C", // 421 (679) - "NUMVAL-F", // 422 (680) - "OCCURS", // 423 (681) - "OF", // 424 (682) - "OFF", // 425 (683) - "OMITTED", // 426 (684) - "ON", // 427 (685) - "ONLY", // 428 (686) - "OPTIONAL", // 429 (687) - "OPTIONS", // 430 (688) - "ORD", // 431 (689) - "ORDER", // 432 (690) - "ORD-MAX", // 433 (691) - "ORD-MIN", // 434 (692) - "ORGANIZATION", // 435 (693) - "OTHER", // 436 (694) - "OTHERWISE", // 437 (695) - "OUTPUT", // 438 (696) - "PACKED-DECIMAL", // 439 (697) - "PADDING", // 440 (698) - "PAGE", // 441 (699) - "PAGE-COUNTER", // 442 (700) - "PF", // 443 (701) - "PH", // 444 (702) - "PI", // 445 (703) - "PIC", // 446 (704) - "PICTURE", // 447 (705) - "PLUS", // 448 (706) - "PRESENT-VALUE", // 449 (707) - "PRINT-SWITCH", // 450 (708) - "PROCEDURE", // 451 (709) - "PROCEDURES", // 452 (710) - "PROCEED", // 453 (711) - "PROCESS", // 454 (712) - "PROGRAM-ID", // 455 (713) - "PROGRAM", // 456 (714) - "PROPERTY", // 457 (715) - "PROTOTYPE", // 458 (716) - "PSEUDOTEXT", // 459 (717) - "QUOTES", // 460 (718) - "RANDOM", // 461 (719) - "RANDOM-SEED", // 462 (720) - "RANGE", // 463 (721) - "RAISE", // 464 (722) - "RAISING", // 465 (723) - "RD", // 466 (724) - "RECORD", // 467 (725) - "RECORDING", // 468 (726) - "RECORDS", // 469 (727) - "RECURSIVE", // 470 (728) - "REDEFINES", // 471 (729) - "REEL", // 472 (730) - "REFERENCE", // 473 (731) - "RELATIVE", // 474 (732) - "REM", // 475 (733) - "REMAINDER", // 476 (734) - "REMARKS", // 477 (735) - "REMOVAL", // 478 (736) - "RENAMES", // 479 (737) - "REPLACE", // 480 (738) - "REPLACING", // 481 (739) - "REPORT", // 482 (740) - "REPORTING", // 483 (741) - "REPORTS", // 484 (742) - "REPOSITORY", // 485 (743) - "RERUN", // 486 (744) - "RESERVE", // 487 (745) - "RESTRICTED", // 488 (746) - "RESUME", // 489 (747) - "REVERSE", // 490 (748) - "REVERSED", // 491 (749) - "REWIND", // 492 (750) - "RF", // 493 (751) - "RH", // 494 (752) - "RIGHT", // 495 (753) - "ROUNDED", // 496 (754) - "RUN", // 497 (755) - "SAME", // 498 (756) - "SCREEN", // 499 (757) - "SD", // 500 (758) - "SECONDS-FROM-FORMATTED-TIME", // 501 (759) - "SECONDS-PAST-MIDNIGHT", // 502 (760) - "SECURITY", // 503 (761) - "SEPARATE", // 504 (762) - "SEQUENCE", // 505 (763) - "SEQUENTIAL", // 506 (764) - "SHARING", // 507 (765) - "SIMPLE-EXIT", // 508 (766) - "SIGN", // 509 (767) - "SIN", // 510 (768) - "SIZE", // 511 (769) - "SMALLEST-ALGEBRAIC", // 512 (770) - "SOURCE", // 513 (771) - "SOURCE-COMPUTER", // 514 (772) - "SPECIAL-NAMES", // 515 (773) - "SQRT", // 516 (774) - "STACK", // 517 (775) - "STANDARD", // 518 (776) - "STANDARD-1", // 519 (777) - "STANDARD-DEVIATION", // 520 (778) - "STANDARD-COMPARE", // 521 (779) - "STATUS", // 522 (780) - "STRONG", // 523 (781) - "SUBSTITUTE", // 524 (782) - "SUM", // 525 (783) - "SYMBOL", // 526 (784) - "SYMBOLIC", // 527 (785) - "SYNCHRONIZED", // 528 (786) - "TALLY", // 529 (787) - "TALLYING", // 530 (788) - "TAN", // 531 (789) - "TERMINATE", // 532 (790) - "TEST", // 533 (791) - "TEST-DATE-YYYYMMDD", // 534 (792) - "TEST-DAY-YYYYDDD", // 535 (793) - "TEST-FORMATTED-DATETIME", // 536 (794) - "TEST-NUMVAL", // 537 (795) - "TEST-NUMVAL-C", // 538 (796) - "TEST-NUMVAL-F", // 539 (797) - "THAN", // 540 (798) - "TIME", // 541 (799) - "TIMES", // 542 (800) - "TO", // 543 (801) - "TOP", // 544 (802) - "TOP-LEVEL", // 545 (803) - "TRACKS", // 546 (804) - "TRACK-AREA", // 547 (805) - "TRAILING", // 548 (806) - "TRANSFORM", // 549 (807) - "TRIM", // 550 (808) - "TRUE", // 551 (809) - "TRY", // 552 (810) - "TURN", // 553 (811) - "TYPE", // 554 (812) - "TYPEDEF", // 555 (813) - "ULENGTH", // 556 (814) - "UNBOUNDED", // 557 (815) - "UNIT", // 558 (816) - "UNITS", // 559 (817) - "UNIT-RECORD", // 560 (818) - "UNTIL", // 561 (819) - "UP", // 562 (820) - "UPON", // 563 (821) - "UPOS", // 564 (822) - "UPPER-CASE", // 565 (823) - "USAGE", // 566 (824) - "USING", // 567 (825) - "USUBSTR", // 568 (826) - "USUPPLEMENTARY", // 569 (827) - "UTILITY", // 570 (828) - "UUID4", // 571 (829) - "UVALID", // 572 (830) - "UWIDTH", // 573 (831) - "VALUE", // 574 (832) - "VARIANCE", // 575 (833) - "VARYING", // 576 (834) - "VOLATILE", // 577 (835) - "WHEN-COMPILED", // 578 (836) - "WITH", // 579 (837) - "WORKING-STORAGE", // 580 (838) - "XML", // 581 (839) - "XMLGENERATE", // 582 (840) - "XMLPARSE", // 583 (841) - "YEAR-TO-YYYY", // 584 (842) - "YYYYDDD", // 585 (843) - "YYYYMMDD", // 586 (844) - "ARITHMETIC", // 587 (845) - "ATTRIBUTE", // 588 (846) - "AUTO", // 589 (847) - "AUTOMATIC", // 590 (848) - "AWAY-FROM-ZERO", // 591 (849) - "BACKGROUND-COLOR", // 592 (850) - "BELL", // 593 (851) - "BINARY-ENCODING", // 594 (852) - "BLINK", // 595 (853) - "CAPACITY", // 596 (854) - "CENTER", // 597 (855) - "CLASSIFICATION", // 598 (856) - "CYCLE", // 599 (857) - "DECIMAL-ENCODING", // 600 (858) - "ENTRY-CONVENTION", // 601 (859) - "EOL", // 602 (860) - "EOS", // 603 (861) - "ERASE", // 604 (862) - "EXPANDS", // 605 (863) - "FLOAT-BINARY", // 606 (864) - "FLOAT-DECIMAL", // 607 (865) - "FOREGROUND-COLOR", // 608 (866) - "FOREVER", // 609 (867) - "FULL", // 610 (868) - "HIGHLIGHT", // 611 (869) - "HIGH-ORDER-LEFT", // 612 (870) - "HIGH-ORDER-RIGHT", // 613 (871) - "IGNORING", // 614 (872) - "IMPLEMENTS", // 615 (873) - "INITIALIZED", // 616 (874) - "INTERMEDIATE", // 617 (875) - "LC-ALL", // 618 (876) - "LC-COLLATE", // 619 (877) - "LC-CTYPE", // 620 (878) - "LC-MESSAGES", // 621 (879) - "LC-MONETARY", // 622 (880) - "LC-NUMERIC", // 623 (881) - "LC-TIME", // 624 (882) - "LOWLIGHT", // 625 (883) - "NEAREST-AWAY-FROM-ZERO", // 626 (884) - "NEAREST-EVEN", // 627 (885) - "NEAREST-TOWARD-ZERO", // 628 (886) - "NONE", // 629 (887) - "NORMAL", // 630 (888) - "NUMBERS", // 631 (889) - "PREFIXED", // 632 (890) - "PREVIOUS", // 633 (891) - "PROHIBITED", // 634 (892) - "RELATION", // 635 (893) - "REQUIRED", // 636 (894) - "REVERSE-VIDEO", // 637 (895) - "ROUNDING", // 638 (896) - "SECONDS", // 639 (897) - "SECURE", // 640 (898) - "SHORT", // 641 (899) - "SIGNED", // 642 (900) - "STANDARD-BINARY", // 643 (901) - "STANDARD-DECIMAL", // 644 (902) - "STATEMENT", // 645 (903) - "STEP", // 646 (904) - "STRUCTURE", // 647 (905) - "TOWARD-GREATER", // 648 (906) - "TOWARD-LESSER", // 649 (907) - "TRUNCATION", // 650 (908) - "UCS-4", // 651 (909) - "UNDERLINE", // 652 (910) - "UNSIGNED", // 653 (911) - "UTF-16", // 654 (912) - "UTF-8", // 655 (913) - "ADDRESS", // 656 (914) - "END-ACCEPT", // 657 (915) - "END-ADD", // 658 (916) - "END-CALL", // 659 (917) - "END-COMPUTE", // 660 (918) - "END-DELETE", // 661 (919) - "END-DISPLAY", // 662 (920) - "END-DIVIDE", // 663 (921) - "END-EVALUATE", // 664 (922) - "END-MULTIPLY", // 665 (923) - "END-PERFORM", // 666 (924) - "END-READ", // 667 (925) - "END-RETURN", // 668 (926) - "END-REWRITE", // 669 (927) - "END-SEARCH", // 670 (928) - "END-START", // 671 (929) - "END-STRING", // 672 (930) - "END-SUBTRACT", // 673 (931) - "END-UNSTRING", // 674 (932) - "END-WRITE", // 675 (933) - "END-IF", // 676 (934) - "THRU", // 677 (935) - "OR", // 678 (936) - "AND", // 679 (937) - "NOT", // 680 (938) - "NE", // 681 (939) - "LE", // 682 (940) - "GE", // 683 (941) - "POW", // 684 (942) - "NEG", // 685 (943) + "CALL-CONVENTION", // 133 (391) + "CALL-COBOL", // 134 (392) + "CALL-VERBATIM", // 135 (393) + "CDF-PUSH", // 136 (394) + "CDF-POP", // 137 (395) + "SOURCE-FORMAT", // 138 (396) + "IF", // 139 (397) + "THEN", // 140 (398) + "ELSE", // 141 (399) + "SENTENCE", // 142 (400) + "ACCEPT", // 143 (401) + "ADD", // 144 (402) + "ALTER", // 145 (403) + "CALL", // 146 (404) + "CANCEL", // 147 (405) + "CLOSE", // 148 (406) + "COMPUTE", // 149 (407) + "CONTINUE", // 150 (408) + "DELETE", // 151 (409) + "DISPLAY", // 152 (410) + "DIVIDE", // 153 (411) + "EVALUATE", // 154 (412) + "EXIT", // 155 (413) + "FILLER", // 156 (414) + "GOBACK", // 157 (415) + "GOTO", // 158 (416) + "INITIALIZE", // 159 (417) + "INSPECT", // 160 (418) + "MERGE", // 161 (419) + "MOVE", // 162 (420) + "MULTIPLY", // 163 (421) + "OPEN", // 164 (422) + "PARAGRAPH", // 165 (423) + "READ", // 166 (424) + "RELEASE", // 167 (425) + "RETURN", // 168 (426) + "REWRITE", // 169 (427) + "SEARCH", // 170 (428) + "SET", // 171 (429) + "SELECT", // 172 (430) + "SORT", // 173 (431) + "SORT-MERGE", // 174 (432) + "STRING", // 175 (433) + "STOP", // 176 (434) + "SUBTRACT", // 177 (435) + "START", // 178 (436) + "UNSTRING", // 179 (437) + "WRITE", // 180 (438) + "WHEN", // 181 (439) + "ARGUMENT-NUMBER", // 182 (440) + "ARGUMENT-VALUE", // 183 (441) + "ENVIRONMENT-NAME", // 184 (442) + "ENVIRONMENT-VALUE", // 185 (443) + "ABS", // 186 (444) + "ACCESS", // 187 (445) + "ACOS", // 188 (446) + "ACTUAL", // 189 (447) + "ADVANCING", // 190 (448) + "AFTER", // 191 (449) + "ALL", // 192 (450) + "ALLOCATE", // 193 (451) + "ALPHABET", // 194 (452) + "ALPHABETIC", // 195 (453) + "ALPHABETIC-LOWER", // 196 (454) + "ALPHABETIC-UPPER", // 197 (455) + "ALPHANUMERIC", // 198 (456) + "ALPHANUMERIC-EDITED", // 199 (457) + "ALSO", // 200 (458) + "ALTERNATE", // 201 (459) + "ANNUITY", // 202 (460) + "ANUM", // 203 (461) + "ANY", // 204 (462) + "ANYCASE", // 205 (463) + "APPLY", // 206 (464) + "ARE", // 207 (465) + "AREA", // 208 (466) + "AREAS", // 209 (467) + "AS", // 210 (468) + "ASCENDING", // 211 (469) + "ACTIVATING", // 212 (470) + "ASIN", // 213 (471) + "ASSIGN", // 214 (472) + "AT", // 215 (473) + "ATAN", // 216 (474) + "BASED", // 217 (475) + "BASECONVERT", // 218 (476) + "BEFORE", // 219 (477) + "BINARY", // 220 (478) + "BIT", // 221 (479) + "BIT-OF", // 222 (480) + "BIT-TO-CHAR", // 223 (481) + "BLANK", // 224 (482) + "BLOCK", // 225 (483) + "BOOLEAN-OF-INTEGER", // 226 (484) + "BOTTOM", // 227 (485) + "BY", // 228 (486) + "BYTE", // 229 (487) + "BYTE-LENGTH", // 230 (488) + "CF", // 231 (489) + "CH", // 232 (490) + "CHANGED", // 233 (491) + "CHAR", // 234 (492) + "CHAR-NATIONAL", // 235 (493) + "CHARACTER", // 236 (494) + "CHARACTERS", // 237 (495) + "CHECKING", // 238 (496) + "CLASS", // 239 (497) + "COBOL", // 240 (498) + "CODE", // 241 (499) + "CODE-SET", // 242 (500) + "COLLATING", // 243 (501) + "COLUMN", // 244 (502) + "COMBINED-DATETIME", // 245 (503) + "COMMA", // 246 (504) + "COMMAND-LINE", // 247 (505) + "COMMAND-LINE-COUNT", // 248 (506) + "COMMIT", // 249 (507) + "COMMON", // 250 (508) + "CONCAT", // 251 (509) + "CONDITION", // 252 (510) + "CONFIGURATION", // 253 (511) + "CONTAINS", // 254 (512) + "CONTENT", // 255 (513) + "CONTROL", // 256 (514) + "CONTROLS", // 257 (515) + "CONVERT", // 258 (516) + "CONVERTING", // 259 (517) + "CORRESPONDING", // 260 (518) + "COS", // 261 (519) + "COUNT", // 262 (520) + "CURRENCY", // 263 (521) + "CURRENT", // 264 (522) + "CURRENT-DATE", // 265 (523) + "DATA", // 266 (524) + "DATE", // 267 (525) + "DATE-COMPILED", // 268 (526) + "DATE-OF-INTEGER", // 269 (527) + "DATE-TO-YYYYMMDD", // 270 (528) + "DATE-WRITTEN", // 271 (529) + "DAY", // 272 (530) + "DAY-OF-INTEGER", // 273 (531) + "DAY-OF-WEEK", // 274 (532) + "DAY-TO-YYYYDDD", // 275 (533) + "DBCS", // 276 (534) + "DE", // 277 (535) + "DEBUGGING", // 278 (536) + "DECIMAL-POINT", // 279 (537) + "DECLARATIVES", // 280 (538) + "DEFAULT", // 281 (539) + "DELIMITED", // 282 (540) + "DELIMITER", // 283 (541) + "DEPENDING", // 284 (542) + "DESCENDING", // 285 (543) + "DETAIL", // 286 (544) + "DIRECT", // 287 (545) + "DIRECT-ACCESS", // 288 (546) + "DOWN", // 289 (547) + "DUPLICATES", // 290 (548) + "DYNAMIC", // 291 (549) + "E", // 292 (550) + "EBCDIC", // 293 (551) + "EC", // 294 (552) + "EGCS", // 295 (553) + "ENTRY", // 296 (554) + "ENVIRONMENT", // 297 (555) + "EQUAL", // 298 (556) + "EVERY", // 299 (557) + "EXAMINE", // 300 (558) + "EXHIBIT", // 301 (559) + "EXP", // 302 (560) + "EXP10", // 303 (561) + "EXTEND", // 304 (562) + "EXTERNAL", // 305 (563) + "EXCEPTION-FILE", // 306 (564) + "EXCEPTION-FILE-N", // 307 (565) + "EXCEPTION-LOCATION", // 308 (566) + "EXCEPTION-LOCATION-N", // 309 (567) + "EXCEPTION-STATEMENT", // 310 (568) + "EXCEPTION-STATUS", // 311 (569) + "FACTORIAL", // 312 (570) + "FALSE", // 313 (571) + "FD", // 314 (572) + "FILE-CONTROL", // 315 (573) + "FILE", // 316 (574) + "FILE-LIMIT", // 317 (575) + "FINAL", // 318 (576) + "FINALLY", // 319 (577) + "FIND-STRING", // 320 (578) + "FIRST", // 321 (579) + "FIXED", // 322 (580) + "FOOTING", // 323 (581) + "FOR", // 324 (582) + "FORMATTED-CURRENT-DATE", // 325 (583) + "FORMATTED-DATE", // 326 (584) + "FORMATTED-DATETIME", // 327 (585) + "FORMATTED-TIME", // 328 (586) + "FORM-OVERFLOW", // 329 (587) + "FREE", // 330 (588) + "FRACTION-PART", // 331 (589) + "FROM", // 332 (590) + "FUNCTION", // 333 (591) + "GENERATE", // 334 (592) + "GIVING", // 335 (593) + "GLOBAL", // 336 (594) + "GO", // 337 (595) + "GROUP", // 338 (596) + "HEADING", // 339 (597) + "HEX", // 340 (598) + "HEX-OF", // 341 (599) + "HEX-TO-CHAR", // 342 (600) + "HIGH-VALUES", // 343 (601) + "HIGHEST-ALGEBRAIC", // 344 (602) + "HOLD", // 345 (603) + "IBM-360", // 346 (604) + "IN", // 347 (605) + "INCLUDE", // 348 (606) + "INDEX", // 349 (607) + "INDEXED", // 350 (608) + "INDICATE", // 351 (609) + "INITIAL", // 352 (610) + "INITIATE", // 353 (611) + "INPUT", // 354 (612) + "INSTALLATION", // 355 (613) + "INTERFACE", // 356 (614) + "INTEGER", // 357 (615) + "INTEGER-OF-BOOLEAN", // 358 (616) + "INTEGER-OF-DATE", // 359 (617) + "INTEGER-OF-DAY", // 360 (618) + "INTEGER-OF-FORMATTED-DATE", // 361 (619) + "INTEGER-PART", // 362 (620) + "INTO", // 363 (621) + "INTRINSIC", // 364 (622) + "INVOKE", // 365 (623) + "I-O", // 366 (624) + "I-O-CONTROL", // 367 (625) + "IS", // 368 (626) + "ISNT", // 369 (627) + "KANJI", // 370 (628) + "KEY", // 371 (629) + "LABEL", // 372 (630) + "LAST", // 373 (631) + "LEADING", // 374 (632) + "LEFT", // 375 (633) + "LENGTH", // 376 (634) + "LENGTH-OF", // 377 (635) + "LIMIT", // 378 (636) + "LIMITS", // 379 (637) + "LINE", // 380 (638) + "LINES", // 381 (639) + "LINE-COUNTER", // 382 (640) + "LINAGE", // 383 (641) + "LINKAGE", // 384 (642) + "LOCALE", // 385 (643) + "LOCALE-COMPARE", // 386 (644) + "LOCALE-DATE", // 387 (645) + "LOCALE-TIME", // 388 (646) + "LOCALE-TIME-FROM-SECONDS", // 389 (647) + "LOCAL-STORAGE", // 390 (648) + "LOCATION", // 391 (649) + "LOCK", // 392 (650) + "LOCK-ON", // 393 (651) + "LOG", // 394 (652) + "LOG10", // 395 (653) + "LOWER-CASE", // 396 (654) + "LOW-VALUES", // 397 (655) + "LOWEST-ALGEBRAIC", // 398 (656) + "LPAREN", // 399 (657) + "MANUAL", // 400 (658) + "MAXX", // 401 (659) + "MEAN", // 402 (660) + "MEDIAN", // 403 (661) + "MIDRANGE", // 404 (662) + "MINN", // 405 (663) + "MULTIPLE", // 406 (664) + "MOD", // 407 (665) + "MODE", // 408 (666) + "MODULE-NAME", // 409 (667) + "NAMED", // 410 (668) + "NAT", // 411 (669) + "NATIONAL", // 412 (670) + "NATIONAL-EDITED", // 413 (671) + "NATIONAL-OF", // 414 (672) + "NATIVE", // 415 (673) + "NESTED", // 416 (674) + "NEXT", // 417 (675) + "NO", // 418 (676) + "NOTE", // 419 (677) + "NULLS", // 420 (678) + "NULLPTR", // 421 (679) + "NUMERIC", // 422 (680) + "NUMERIC-EDITED", // 423 (681) + "NUMVAL", // 424 (682) + "NUMVAL-C", // 425 (683) + "NUMVAL-F", // 426 (684) + "OCCURS", // 427 (685) + "OF", // 428 (686) + "OFF", // 429 (687) + "OMITTED", // 430 (688) + "ON", // 431 (689) + "ONLY", // 432 (690) + "OPTIONAL", // 433 (691) + "OPTIONS", // 434 (692) + "ORD", // 435 (693) + "ORDER", // 436 (694) + "ORD-MAX", // 437 (695) + "ORD-MIN", // 438 (696) + "ORGANIZATION", // 439 (697) + "OTHER", // 440 (698) + "OTHERWISE", // 441 (699) + "OUTPUT", // 442 (700) + "PACKED-DECIMAL", // 443 (701) + "PADDING", // 444 (702) + "PAGE", // 445 (703) + "PAGE-COUNTER", // 446 (704) + "PF", // 447 (705) + "PH", // 448 (706) + "PI", // 449 (707) + "PIC", // 450 (708) + "PICTURE", // 451 (709) + "PLUS", // 452 (710) + "PRESENT-VALUE", // 453 (711) + "PRINT-SWITCH", // 454 (712) + "PROCEDURE", // 455 (713) + "PROCEDURES", // 456 (714) + "PROCEED", // 457 (715) + "PROCESS", // 458 (716) + "PROGRAM-ID", // 459 (717) + "PROGRAM", // 460 (718) + "PROPERTY", // 461 (719) + "PROTOTYPE", // 462 (720) + "PSEUDOTEXT", // 463 (721) + "QUOTES", // 464 (722) + "RANDOM", // 465 (723) + "RANDOM-SEED", // 466 (724) + "RANGE", // 467 (725) + "RAISE", // 468 (726) + "RAISING", // 469 (727) + "RD", // 470 (728) + "RECORD", // 471 (729) + "RECORDING", // 472 (730) + "RECORDS", // 473 (731) + "RECURSIVE", // 474 (732) + "REDEFINES", // 475 (733) + "REEL", // 476 (734) + "REFERENCE", // 477 (735) + "RELATIVE", // 478 (736) + "REM", // 479 (737) + "REMAINDER", // 480 (738) + "REMARKS", // 481 (739) + "REMOVAL", // 482 (740) + "RENAMES", // 483 (741) + "REPLACE", // 484 (742) + "REPLACING", // 485 (743) + "REPORT", // 486 (744) + "REPORTING", // 487 (745) + "REPORTS", // 488 (746) + "REPOSITORY", // 489 (747) + "RERUN", // 490 (748) + "RESERVE", // 491 (749) + "RESTRICTED", // 492 (750) + "RESUME", // 493 (751) + "REVERSE", // 494 (752) + "REVERSED", // 495 (753) + "REWIND", // 496 (754) + "RF", // 497 (755) + "RH", // 498 (756) + "RIGHT", // 499 (757) + "ROUNDED", // 500 (758) + "RUN", // 501 (759) + "SAME", // 502 (760) + "SCREEN", // 503 (761) + "SD", // 504 (762) + "SECONDS-FROM-FORMATTED-TIME", // 505 (763) + "SECONDS-PAST-MIDNIGHT", // 506 (764) + "SECURITY", // 507 (765) + "SEPARATE", // 508 (766) + "SEQUENCE", // 509 (767) + "SEQUENTIAL", // 510 (768) + "SHARING", // 511 (769) + "SIMPLE-EXIT", // 512 (770) + "SIGN", // 513 (771) + "SIN", // 514 (772) + "SIZE", // 515 (773) + "SMALLEST-ALGEBRAIC", // 516 (774) + "SOURCE", // 517 (775) + "SOURCE-COMPUTER", // 518 (776) + "SPECIAL-NAMES", // 519 (777) + "SQRT", // 520 (778) + "STACK", // 521 (779) + "STANDARD", // 522 (780) + "STANDARD-1", // 523 (781) + "STANDARD-DEVIATION", // 524 (782) + "STANDARD-COMPARE", // 525 (783) + "STATUS", // 526 (784) + "STRONG", // 527 (785) + "SUBSTITUTE", // 528 (786) + "SUM", // 529 (787) + "SYMBOL", // 530 (788) + "SYMBOLIC", // 531 (789) + "SYNCHRONIZED", // 532 (790) + "TALLY", // 533 (791) + "TALLYING", // 534 (792) + "TAN", // 535 (793) + "TERMINATE", // 536 (794) + "TEST", // 537 (795) + "TEST-DATE-YYYYMMDD", // 538 (796) + "TEST-DAY-YYYYDDD", // 539 (797) + "TEST-FORMATTED-DATETIME", // 540 (798) + "TEST-NUMVAL", // 541 (799) + "TEST-NUMVAL-C", // 542 (800) + "TEST-NUMVAL-F", // 543 (801) + "THAN", // 544 (802) + "TIME", // 545 (803) + "TIMES", // 546 (804) + "TO", // 547 (805) + "TOP", // 548 (806) + "TOP-LEVEL", // 549 (807) + "TRACKS", // 550 (808) + "TRACK-AREA", // 551 (809) + "TRAILING", // 552 (810) + "TRANSFORM", // 553 (811) + "TRIM", // 554 (812) + "TRUE", // 555 (813) + "TRY", // 556 (814) + "TURN", // 557 (815) + "TYPE", // 558 (816) + "TYPEDEF", // 559 (817) + "ULENGTH", // 560 (818) + "UNBOUNDED", // 561 (819) + "UNIT", // 562 (820) + "UNITS", // 563 (821) + "UNIT-RECORD", // 564 (822) + "UNTIL", // 565 (823) + "UP", // 566 (824) + "UPON", // 567 (825) + "UPOS", // 568 (826) + "UPPER-CASE", // 569 (827) + "USAGE", // 570 (828) + "USING", // 571 (829) + "USUBSTR", // 572 (830) + "USUPPLEMENTARY", // 573 (831) + "UTILITY", // 574 (832) + "UUID4", // 575 (833) + "UVALID", // 576 (834) + "UWIDTH", // 577 (835) + "VALUE", // 578 (836) + "VARIANCE", // 579 (837) + "VARYING", // 580 (838) + "VOLATILE", // 581 (839) + "WHEN-COMPILED", // 582 (840) + "WITH", // 583 (841) + "WORKING-STORAGE", // 584 (842) + "XML", // 585 (843) + "XMLGENERATE", // 586 (844) + "XMLPARSE", // 587 (845) + "YEAR-TO-YYYY", // 588 (846) + "YYYYDDD", // 589 (847) + "YYYYMMDD", // 590 (848) + "ARITHMETIC", // 591 (849) + "ATTRIBUTE", // 592 (850) + "AUTO", // 593 (851) + "AUTOMATIC", // 594 (852) + "AWAY-FROM-ZERO", // 595 (853) + "BACKGROUND-COLOR", // 596 (854) + "BELL", // 597 (855) + "BINARY-ENCODING", // 598 (856) + "BLINK", // 599 (857) + "CAPACITY", // 600 (858) + "CENTER", // 601 (859) + "CLASSIFICATION", // 602 (860) + "CYCLE", // 603 (861) + "DECIMAL-ENCODING", // 604 (862) + "ENTRY-CONVENTION", // 605 (863) + "EOL", // 606 (864) + "EOS", // 607 (865) + "ERASE", // 608 (866) + "EXPANDS", // 609 (867) + "FLOAT-BINARY", // 610 (868) + "FLOAT-DECIMAL", // 611 (869) + "FOREGROUND-COLOR", // 612 (870) + "FOREVER", // 613 (871) + "FULL", // 614 (872) + "HIGHLIGHT", // 615 (873) + "HIGH-ORDER-LEFT", // 616 (874) + "HIGH-ORDER-RIGHT", // 617 (875) + "IGNORING", // 618 (876) + "IMPLEMENTS", // 619 (877) + "INITIALIZED", // 620 (878) + "INTERMEDIATE", // 621 (879) + "LC-ALL", // 622 (880) + "LC-COLLATE", // 623 (881) + "LC-CTYPE", // 624 (882) + "LC-MESSAGES", // 625 (883) + "LC-MONETARY", // 626 (884) + "LC-NUMERIC", // 627 (885) + "LC-TIME", // 628 (886) + "LOWLIGHT", // 629 (887) + "NEAREST-AWAY-FROM-ZERO", // 630 (888) + "NEAREST-EVEN", // 631 (889) + "NEAREST-TOWARD-ZERO", // 632 (890) + "NONE", // 633 (891) + "NORMAL", // 634 (892) + "NUMBERS", // 635 (893) + "PREFIXED", // 636 (894) + "PREVIOUS", // 637 (895) + "PROHIBITED", // 638 (896) + "RELATION", // 639 (897) + "REQUIRED", // 640 (898) + "REVERSE-VIDEO", // 641 (899) + "ROUNDING", // 642 (900) + "SECONDS", // 643 (901) + "SECURE", // 644 (902) + "SHORT", // 645 (903) + "SIGNED", // 646 (904) + "STANDARD-BINARY", // 647 (905) + "STANDARD-DECIMAL", // 648 (906) + "STATEMENT", // 649 (907) + "STEP", // 650 (908) + "STRUCTURE", // 651 (909) + "TOWARD-GREATER", // 652 (910) + "TOWARD-LESSER", // 653 (911) + "TRUNCATION", // 654 (912) + "UCS-4", // 655 (913) + "UNDERLINE", // 656 (914) + "UNSIGNED", // 657 (915) + "UTF-16", // 658 (916) + "UTF-8", // 659 (917) + "ADDRESS", // 660 (918) + "END-ACCEPT", // 661 (919) + "END-ADD", // 662 (920) + "END-CALL", // 663 (921) + "END-COMPUTE", // 664 (922) + "END-DELETE", // 665 (923) + "END-DISPLAY", // 666 (924) + "END-DIVIDE", // 667 (925) + "END-EVALUATE", // 668 (926) + "END-MULTIPLY", // 669 (927) + "END-PERFORM", // 670 (928) + "END-READ", // 671 (929) + "END-RETURN", // 672 (930) + "END-REWRITE", // 673 (931) + "END-SEARCH", // 674 (932) + "END-START", // 675 (933) + "END-STRING", // 676 (934) + "END-SUBTRACT", // 677 (935) + "END-UNSTRING", // 678 (936) + "END-WRITE", // 679 (937) + "END-IF", // 680 (938) + "THRU", // 681 (939) + "OR", // 682 (940) + "AND", // 683 (941) + "NOT", // 684 (942) + "NE", // 685 (943) + "LE", // 686 (944) + "GE", // 687 (945) + "POW", // 688 (946) + "NEG", // 689 (947) }; diff --git a/gcc/cobol/udf/stored-char-length.cbl b/gcc/cobol/udf/stored-char-length.cbl index 9ab3b14..66889d0 100644 --- a/gcc/cobol/udf/stored-char-length.cbl +++ b/gcc/cobol/udf/stored-char-length.cbl @@ -1,3 +1,6 @@ + >> PUSH source format + >>SOURCE format is fixed + * This function is in public domain. * Contributed by James K. Lowden of Cobolworx in August 2024 @@ -13,3 +16,4 @@ to Output-Value. End Function STORED-CHAR-LENGTH. + >> pop source format
\ No newline at end of file diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc index 0076fc4..c85b4cb 100644 --- a/gcc/cobol/util.cc +++ b/gcc/cobol/util.cc @@ -121,35 +121,76 @@ gb4( size_t input ) { * command-line option. A push to a stack pushes the default value onto it; a * pop copies the top of the stack to the default value. * + * Supported: + * CALL-CONVENTION + * COBOL-WORDS + * DEFINE + * DISPLAY + * IF + * POP + * PUSH + * SOURCE FORMAT + * TURN + * not supported + * EVALUATE + * FLAG-02 + * FLAG-14 + * LEAP-SECOND + * LISTING + * PAGE + * PROPAGATE + * REF-MOD-ZERO-LENGTH + * * >>PUSH ALL calls the class's push() method. * >>POP ALL calls the class's pop() method. */ class cdf_directives_t { - typedef std::map<std::string, cdfval_t> cdf_values_t; - template <typename T> class cdf_stack_t : private std::stack<T> { T default_value; + const T& top() const { return std::stack<T>::top(); } + bool empty() const { return std::stack<T>::empty(); } public: void value( const T& value ) { - T& output( std::stack<T>::empty()? default_value : std::stack<T>::top() ); + T& output( empty()? default_value : std::stack<T>::top() ); output = value; + dbgmsg("cdf_directives_t::%s: %s", __func__, str(output).c_str()); } T& value() { - return std::stack<T>::empty()? default_value : std::stack<T>::top(); + return empty()? default_value : std::stack<T>::top(); } void push() { std::stack<T>::push(value()); + dbgmsg("cdf_directives_t::%s: %s", __func__, str(top()).c_str()); } void pop() { - if( std::stack<T>::empty() ) { + if( empty() ) { error_msg(YYLTYPE(), "CDF stack empty"); return; } - default_value = std::stack<T>::top(); + default_value = top(); std::stack<T>::pop(); + dbgmsg("cdf_directives_t::%s: %s", __func__, str(default_value).c_str()); + } + protected: + static std::string str(cbl_call_convention_t arg) { + char output[2] = { static_cast<char>(arg) }; + return std::string("call-convention ") + output; + } + static std::string str(current_tokens_t) { + return "<cobol-words>"; + } + static std::string str(cdf_values_t) { + return "<dictionary>"; + } + static std::string str(source_format_t arg) { + return arg.description(); } + static std::string str(cbl_enabled_exceptions_t) { + return "<enabled_exceptions>"; + } + }; public: @@ -181,6 +222,25 @@ class cdf_directives_t static cdf_directives_t cdf_directives; void +current_call_convention( cbl_call_convention_t convention) { + cdf_directives.call_convention.value(convention); +} +cbl_call_convention_t +current_call_convention() { + return cdf_directives.call_convention.value(); +} + +current_tokens_t& +cdf_current_tokens() { + return cdf_directives.cobol_words.value(); +} + +cdf_values_t& +cdf_dictionary() { + return cdf_directives.dictionary.value(); +} + +void cobol_set_indicator_column( int column ) { cdf_directives.source_format.value().indicator_column_set(column); } @@ -188,6 +248,24 @@ source_format_t& cdf_source_format() { return cdf_directives.source_format.value(); } +cbl_enabled_exceptions_t& +cdf_enabled_exceptions() { + return cdf_directives.enabled_exceptions.value(); +} + +void cdf_push() { cdf_directives.push(); } +void cdf_push_call_convention() { cdf_directives.call_convention.push(); } +void cdf_push_current_tokens() { cdf_directives.cobol_words.push(); } +void cdf_push_dictionary() { cdf_directives.dictionary.push(); } +void cdf_push_enabled_exceptions() { cdf_directives.enabled_exceptions.push(); } +void cdf_push_source_format() { cdf_directives.source_format.push(); } + +void cdf_pop() { cdf_directives.pop(); } +void cdf_pop_call_convention() { cdf_directives.call_convention.pop(); } +void cdf_pop_current_tokens() { cdf_directives.cobol_words.pop(); } +void cdf_pop_dictionary() { cdf_directives.dictionary.pop(); } +void cdf_pop_enabled_exceptions() { cdf_directives.enabled_exceptions.pop(); } +void cdf_pop_source_format() { cdf_directives.source_format.pop(); } const char * symbol_type_str( enum symbol_type_t type ) diff --git a/gcc/cobol/util.h b/gcc/cobol/util.h index 2881809..d07b669 100644 --- a/gcc/cobol/util.h +++ b/gcc/cobol/util.h @@ -110,4 +110,19 @@ public: } }; + +void cdf_push(); +void cdf_push_call_convention(); +void cdf_push_current_tokens(); +void cdf_push_dictionary(); +void cdf_push_enabled_exceptions(); +void cdf_push_source_format(); + +void cdf_pop(); +void cdf_pop_call_convention(); +void cdf_pop_current_tokens(); +void cdf_pop_dictionary(); +void cdf_pop_source_format(); +void cdf_pop_enabled_exceptions(); + #endif |