GnuCOBOL  2.0
A free COBOL compiler
parser.c File Reference
#include <stdio.h>
#include "config.h"
#include <stdlib.h>
#include <string.h>
#include "cobc.h"
#include "tree.h"
#include <stddef.h>
Include dependency graph for parser.c:

Go to the source code of this file.

Data Structures

union  yyalloc
 

Macros

#define YYBISON   1
 
#define YYBISON_VERSION   "3.0.2"
 
#define YYSKELETON_NAME   "yacc.c"
 
#define YYPURE   0
 
#define YYPUSH   0
 
#define YYPULL   1
 
#define YYDEBUG   1
 
#define COB_IN_PARSER   1
 
#define YYSTYPE   cb_tree
 
#define yyerror   cb_error
 
#define PENDING(x)   cb_warning (_("'%s' not implemented"), x)
 
#define emit_statement(x)
 
#define push_expr(type, node)   current_expr = cb_build_list (cb_int (type), node, current_expr)
 
#define TERM_NONE   0
 
#define TERM_ACCEPT   1U
 
#define TERM_ADD   2U
 
#define TERM_CALL   3U
 
#define TERM_COMPUTE   4U
 
#define TERM_DELETE   5U
 
#define TERM_DISPLAY   6U
 
#define TERM_DIVIDE   7U
 
#define TERM_EVALUATE   8U
 
#define TERM_IF   9U
 
#define TERM_MULTIPLY   10U
 
#define TERM_PERFORM   11U
 
#define TERM_READ   12U
 
#define TERM_RECEIVE   13U
 
#define TERM_RETURN   14U
 
#define TERM_REWRITE   15U
 
#define TERM_SEARCH   16U
 
#define TERM_START   17U
 
#define TERM_STRING   18U
 
#define TERM_SUBTRACT   19U
 
#define TERM_UNSTRING   20U
 
#define TERM_WRITE   21U
 
#define TERM_MAX   22U
 
#define TERMINATOR_WARNING(x, z)   terminator_warning (x, TERM_##z, #z)
 
#define TERMINATOR_ERROR(x, z)   terminator_error (x, TERM_##z, #z)
 
#define TERMINATOR_CLEAR(x, z)   terminator_clear (x, TERM_##z)
 
#define SYN_CLAUSE_1   (1U << 0)
 
#define SYN_CLAUSE_2   (1U << 1)
 
#define SYN_CLAUSE_3   (1U << 2)
 
#define SYN_CLAUSE_4   (1U << 3)
 
#define SYN_CLAUSE_5   (1U << 4)
 
#define SYN_CLAUSE_6   (1U << 5)
 
#define SYN_CLAUSE_7   (1U << 6)
 
#define SYN_CLAUSE_8   (1U << 7)
 
#define SYN_CLAUSE_9   (1U << 8)
 
#define SYN_CLAUSE_10   (1U << 9)
 
#define SYN_CLAUSE_11   (1U << 10)
 
#define SYN_CLAUSE_12   (1U << 11)
 
#define SYN_CLAUSE_13   (1U << 12)
 
#define SYN_CLAUSE_14   (1U << 13)
 
#define SYN_CLAUSE_15   (1U << 14)
 
#define SYN_CLAUSE_16   (1U << 15)
 
#define SYN_CLAUSE_17   (1U << 16)
 
#define SYN_CLAUSE_18   (1U << 17)
 
#define SYN_CLAUSE_19   (1U << 18)
 
#define SYN_CLAUSE_20   (1U << 19)
 
#define SYN_CLAUSE_21   (1U << 20)
 
#define SYN_CLAUSE_22   (1U << 21)
 
#define SYN_CLAUSE_23   (1U << 22)
 
#define SYN_CLAUSE_24   (1U << 23)
 
#define SYN_CLAUSE_25   (1U << 24)
 
#define SYN_CLAUSE_26   (1U << 25)
 
#define SYN_CLAUSE_27   (1U << 26)
 
#define SYN_CLAUSE_28   (1U << 27)
 
#define SYN_CLAUSE_29   (1U << 28)
 
#define SYN_CLAUSE_30   (1U << 29)
 
#define SYN_CLAUSE_31   (1U << 30)
 
#define SYN_CLAUSE_32   (1U << 31)
 
#define EVAL_DEPTH   32
 
#define PROG_DEPTH   16
 
#define COBC_HD_ENVIRONMENT_DIVISION   (1U << 0)
 
#define COBC_HD_CONFIGURATION_SECTION   (1U << 1)
 
#define COBC_HD_SPECIAL_NAMES   (1U << 2)
 
#define COBC_HD_INPUT_OUTPUT_SECTION   (1U << 3)
 
#define COBC_HD_FILE_CONTROL   (1U << 4)
 
#define COBC_HD_I_O_CONTROL   (1U << 5)
 
#define COBC_HD_DATA_DIVISION   (1U << 6)
 
#define COBC_HD_FILE_SECTION   (1U << 7)
 
#define COBC_HD_WORKING_STORAGE_SECTION   (1U << 8)
 
#define COBC_HD_LOCAL_STORAGE_SECTION   (1U << 9)
 
#define COBC_HD_LINKAGE_SECTION   (1U << 10)
 
#define COBC_HD_COMMUNICATIONS_SECTION   (1U << 11)
 
#define COBC_HD_REPORT_SECTION   (1U << 12)
 
#define COBC_HD_SCREEN_SECTION   (1U << 13)
 
#define COBC_HD_PROCEDURE_DIVISION   (1U << 14)
 
#define COBC_HD_PROGRAM_ID   (1U << 15)
 
#define YY_NULLPTR   0
 
#define YYERROR_VERBOSE   1
 
#define YY_YY_PARSER_H_INCLUDED
 
#define YYTOKENTYPE
 
#define YYSIZE_T   size_t
 
#define YYSIZE_MAXIMUM   ((YYSIZE_T) -1)
 
#define YY_(Msgid)   Msgid
 
#define YY_ATTRIBUTE(Spec)   /* empty */
 
#define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
 
#define YY_ATTRIBUTE_UNUSED   YY_ATTRIBUTE ((__unused__))
 
#define _Noreturn   YY_ATTRIBUTE ((__noreturn__))
 
#define YYUSE(E)   ((void) (E))
 
#define YY_INITIAL_VALUE(Value)   Value
 
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
 
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
 
#define YYSTACK_ALLOC   YYMALLOC
 
#define YYSTACK_FREE   YYFREE
 
#define YYSTACK_ALLOC_MAXIMUM   YYSIZE_MAXIMUM
 
#define YYMALLOC   malloc
 
#define YYFREE   free
 
#define YYSTACK_GAP_MAXIMUM   (sizeof (union yyalloc) - 1)
 
#define YYSTACK_BYTES(N)
 
#define YYCOPY_NEEDED   1
 
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
 
#define YYCOPY(Dst, Src, Count)
 
#define YYFINAL   3
 
#define YYLAST   8985
 
#define YYNTOKENS   518
 
#define YYNNTS   828
 
#define YYNRULES   1932
 
#define YYNSTATES   2767
 
#define YYUNDEFTOK   2
 
#define YYMAXUTOK   772
 
#define YYTRANSLATE(YYX)   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
#define YYPACT_NINF   -2264
 
#define yypact_value_is_default(Yystate)   (!!((Yystate) == (-2264)))
 
#define YYTABLE_NINF   -1883
 
#define yytable_value_is_error(Yytable_value)   0
 
#define yyerrok   (yyerrstatus = 0)
 
#define yyclearin   (yychar = YYEMPTY)
 
#define YYEMPTY   (-2)
 
#define YYEOF   0
 
#define YYACCEPT   goto yyacceptlab
 
#define YYABORT   goto yyabortlab
 
#define YYERROR   goto yyerrorlab
 
#define YYRECOVERING()   (!!yyerrstatus)
 
#define YYBACKUP(Token, Value)
 
#define YYTERROR   1
 
#define YYERRCODE   256
 
#define YYFPRINTF   fprintf
 
#define YYDPRINTF(Args)
 
#define YY_LOCATION_PRINT(File, Loc)   ((void) 0)
 
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
 
#define YY_STACK_PRINT(Bottom, Top)
 
#define YY_REDUCE_PRINT(Rule)
 
#define YYINITDEPTH   200
 
#define YYMAXDEPTH   10000
 
#define YYCASE_(N, S)
 
#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
 
#define YYSYNTAX_ERROR
 

Typedefs

typedef unsigned char yytype_uint8
 
typedef signed char yytype_int8
 
typedef unsigned short int yytype_uint16
 
typedef short int yytype_int16
 

Enumerations

enum  yytokentype {
  TOKEN_EOF = 0, ACCEPT = 258, ACCESS = 259, ADD = 260,
  ADDRESS = 261, ADVANCING = 262, AFTER = 263, ALL = 264,
  ALLOCATE = 265, ALPHABET = 266, ALPHABETIC = 267, ALPHABETIC_LOWER = 268,
  ALPHABETIC_UPPER = 269, ALPHANUMERIC = 270, ALPHANUMERIC_EDITED = 271, ALSO = 272,
  ALTER = 273, ALTERNATE = 274, AND = 275, ANY = 276,
  ARE = 277, AREA = 278, ARGUMENT_NUMBER = 279, ARGUMENT_VALUE = 280,
  AS = 281, ASCENDING = 282, ASCII = 283, ASSIGN = 284,
  AT = 285, ATTRIBUTE = 286, AUTO = 287, AUTOMATIC = 288,
  AWAY_FROM_ZERO = 289, BACKGROUND_COLOR = 290, BASED = 291, BEFORE = 292,
  BELL = 293, BINARY = 294, BINARY_C_LONG = 295, BINARY_CHAR = 296,
  BINARY_DOUBLE = 297, BINARY_LONG = 298, BINARY_SHORT = 299, BLANK = 300,
  BLINK = 301, BLOCK = 302, BOTTOM = 303, BY = 304,
  BYTE_LENGTH = 305, CALL = 306, CANCEL = 307, CAPACITY = 308,
  CF = 309, CH = 310, CHAINING = 311, CHARACTER = 312,
  CHARACTERS = 313, CLASS = 314, CLASSIFICATION = 315, CLOSE = 316,
  CODE = 317, CODE_SET = 318, COLLATING = 319, COL = 320,
  COLS = 321, COLUMN = 322, COLUMNS = 323, COMMA = 324,
  COMMAND_LINE = 325, COMMA_DELIM = 326, COMMIT = 327, COMMON = 328,
  COMP = 329, COMPUTE = 330, COMP_1 = 331, COMP_2 = 332,
  COMP_3 = 333, COMP_4 = 334, COMP_5 = 335, COMP_6 = 336,
  COMP_X = 337, CONCATENATE_FUNC = 338, CONDITION = 339, CONFIGURATION = 340,
  CONSTANT = 341, CONTAINS = 342, CONTENT = 343, CONTINUE = 344,
  CONTROL = 345, CONTROLS = 346, CONVERSION = 347, CONVERTING = 348,
  COPY = 349, CORRESPONDING = 350, COUNT = 351, CRT = 352,
  CRT_UNDER = 353, CURRENCY = 354, CURRENT_DATE_FUNC = 355, CURSOR = 356,
  CYCLE = 357, DATA = 358, DATE = 359, DAY = 360,
  DAY_OF_WEEK = 361, DE = 362, DEBUGGING = 363, DECIMAL_POINT = 364,
  DECLARATIVES = 365, DEFAULT = 366, DELETE = 367, DELIMITED = 368,
  DELIMITER = 369, DEPENDING = 370, DESCENDING = 371, DETAIL = 372,
  DISC = 373, DISK = 374, DISPLAY = 375, DISPLAY_OF_FUNC = 376,
  DIVIDE = 377, DIVISION = 378, DOWN = 379, DUPLICATES = 380,
  DYNAMIC = 381, EBCDIC = 382, EC = 383, ELSE = 384,
  END = 385, END_ACCEPT = 386, END_ADD = 387, END_CALL = 388,
  END_COMPUTE = 389, END_DELETE = 390, END_DISPLAY = 391, END_DIVIDE = 392,
  END_EVALUATE = 393, END_FUNCTION = 394, END_IF = 395, END_MULTIPLY = 396,
  END_PERFORM = 397, END_PROGRAM = 398, END_READ = 399, END_RETURN = 400,
  END_REWRITE = 401, END_SEARCH = 402, END_START = 403, END_STRING = 404,
  END_SUBTRACT = 405, END_UNSTRING = 406, END_WRITE = 407, ENTRY = 408,
  ENVIRONMENT = 409, ENVIRONMENT_NAME = 410, ENVIRONMENT_VALUE = 411, EOL = 412,
  EOP = 413, EOS = 414, EQUAL = 415, ERASE = 416,
  ERROR = 417, ESCAPE = 418, EVALUATE = 419, EVENT_STATUS = 420,
  EXCEPTION = 421, EXCEPTION_CONDITION = 422, EXCLUSIVE = 423, EXIT = 424,
  EXPONENTIATION = 425, EXTEND = 426, EXTERNAL = 427, FD = 428,
  FILE_CONTROL = 429, FILE_ID = 430, FILLER = 431, FINAL = 432,
  FIRST = 433, FLOAT_BINARY_128 = 434, FLOAT_BINARY_32 = 435, FLOAT_BINARY_64 = 436,
  FLOAT_DECIMAL_16 = 437, FLOAT_DECIMAL_34 = 438, FLOAT_DECIMAL_7 = 439, FLOAT_EXTENDED = 440,
  FLOAT_LONG = 441, FLOAT_SHORT = 442, FOOTING = 443, FOR = 444,
  FOREGROUND_COLOR = 445, FOREVER = 446, FORMATTED_DATE_FUNC = 447, FORMATTED_DATETIME_FUNC = 448,
  FORMATTED_TIME_FUNC = 449, FREE = 450, FROM = 451, FROM_CRT = 452,
  FULL = 453, FUNCTION = 454, FUNCTION_ID = 455, FUNCTION_NAME = 456,
  GENERATE = 457, GIVING = 458, GLOBAL = 459, GO = 460,
  GOBACK = 461, GREATER = 462, GREATER_OR_EQUAL = 463, GRID = 464,
  GROUP = 465, HEADING = 466, HIGHLIGHT = 467, HIGH_VALUE = 468,
  ID = 469, IDENTIFICATION = 470, IF = 471, IGNORE = 472,
  IGNORING = 473, IN = 474, INDEX = 475, INDEXED = 476,
  INDICATE = 477, INITIALIZE = 478, INITIALIZED = 479, INITIATE = 480,
  INPUT = 481, INPUT_OUTPUT = 482, INSPECT = 483, INTO = 484,
  INTRINSIC = 485, INVALID = 486, INVALID_KEY = 487, IS = 488,
  I_O = 489, I_O_CONTROL = 490, JUSTIFIED = 491, KEPT = 492,
  KEY = 493, KEYBOARD = 494, LABEL = 495, LAST = 496,
  LEADING = 497, LEFT = 498, LEFTLINE = 499, LENGTH = 500,
  LENGTH_OF = 501, LESS = 502, LESS_OR_EQUAL = 503, LIMIT = 504,
  LIMITS = 505, LINAGE = 506, LINAGE_COUNTER = 507, LINE = 508,
  LINE_COUNTER = 509, LINES = 510, LINKAGE = 511, LITERAL = 512,
  LOCALE = 513, LOCALE_DATE_FUNC = 514, LOCALE_TIME_FUNC = 515, LOCALE_TIME_FROM_FUNC = 516,
  LOCAL_STORAGE = 517, LOCK = 518, LOWER = 519, LOWER_CASE_FUNC = 520,
  LOWLIGHT = 521, LOW_VALUE = 522, MANUAL = 523, MEMORY = 524,
  MERGE = 525, MINUS = 526, MNEMONIC_NAME = 527, MODE = 528,
  MOVE = 529, MULTIPLE = 530, MULTIPLY = 531, NAME = 532,
  NATIONAL = 533, NATIONAL_EDITED = 534, NATIONAL_OF_FUNC = 535, NATIVE = 536,
  NEAREST_AWAY_FROM_ZERO = 537, NEAREST_EVEN = 538, NEAREST_TOWARD_ZERO = 539, NEGATIVE = 540,
  NEXT = 541, NEXT_PAGE = 542, NO = 543, NO_ECHO = 544,
  NORMAL = 545, NOT = 546, NOTHING = 547, NOT_END = 548,
  NOT_EOP = 549, NOT_ESCAPE = 550, NOT_EQUAL = 551, NOT_EXCEPTION = 552,
  NOT_INVALID_KEY = 553, NOT_OVERFLOW = 554, NOT_SIZE_ERROR = 555, NO_ADVANCING = 556,
  NUMBER = 557, NUMBERS = 558, NUMERIC = 559, NUMERIC_EDITED = 560,
  NUMVALC_FUNC = 561, OBJECT_COMPUTER = 562, OCCURS = 563, OF = 564,
  OFF = 565, OMITTED = 566, ON = 567, ONLY = 568,
  OPEN = 569, OPTIONAL = 570, OR = 571, ORDER = 572,
  ORGANIZATION = 573, OTHER = 574, OUTPUT = 575, OVERLINE = 576,
  PACKED_DECIMAL = 577, PADDING = 578, PAGE = 579, PAGE_COUNTER = 580,
  PARAGRAPH = 581, PERFORM = 582, PH = 583, PF = 584,
  PICTURE = 585, PICTURE_SYMBOL = 586, PLUS = 587, POINTER = 588,
  POSITION = 589, POSITIVE = 590, PRESENT = 591, PREVIOUS = 592,
  PRINT = 593, PRINTER = 594, PRINTER_1 = 595, PRINTING = 596,
  PROCEDURE = 597, PROCEDURES = 598, PROCEED = 599, PROGRAM = 600,
  PROGRAM_ID = 601, PROGRAM_NAME = 602, PROGRAM_POINTER = 603, PROHIBITED = 604,
  PROMPT = 605, PROTECTED = 606, QUOTE = 607, RANDOM = 608,
  RD = 609, READ = 610, READY_TRACE = 611, RECORD = 612,
  RECORDING = 613, RECORDS = 614, RECURSIVE = 615, REDEFINES = 616,
  REEL = 617, REFERENCE = 618, REFERENCES = 619, RELATIVE = 620,
  RELEASE = 621, REMAINDER = 622, REMOVAL = 623, RENAMES = 624,
  REPLACE = 625, REPLACING = 626, REPORT = 627, REPORTING = 628,
  REPORTS = 629, REPOSITORY = 630, REQUIRED = 631, RESERVE = 632,
  RESET = 633, RESET_TRACE = 634, RETURN = 635, RETURNING = 636,
  REVERSE_FUNC = 637, REVERSE_VIDEO = 638, REVERSED = 639, REWIND = 640,
  REWRITE = 641, RF = 642, RH = 643, RIGHT = 644,
  ROLLBACK = 645, ROUNDED = 646, RUN = 647, SAME = 648,
  SCREEN = 649, SCREEN_CONTROL = 650, SCROLL = 651, SD = 652,
  SEARCH = 653, SECTION = 654, SECURE = 655, SEGMENT_LIMIT = 656,
  SELECT = 657, SEMI_COLON = 658, SENTENCE = 659, SEPARATE = 660,
  SEQUENCE = 661, SEQUENTIAL = 662, SET = 663, SHARING = 664,
  SIGN = 665, SIGNED = 666, SIGNED_INT = 667, SIGNED_LONG = 668,
  SIGNED_SHORT = 669, SIZE = 670, SIZE_ERROR = 671, SORT = 672,
  SORT_MERGE = 673, SOURCE = 674, SOURCE_COMPUTER = 675, SPACE = 676,
  SPECIAL_NAMES = 677, STANDARD = 678, STANDARD_1 = 679, STANDARD_2 = 680,
  START = 681, STATIC = 682, STATUS = 683, STDCALL = 684,
  STEP = 685, STOP = 686, STRING = 687, SUBSTITUTE_FUNC = 688,
  SUBSTITUTE_CASE_FUNC = 689, SUBTRACT = 690, SUM = 691, SUPPRESS = 692,
  SYMBOLIC = 693, SYNCHRONIZED = 694, SYSTEM_DEFAULT = 695, SYSTEM_OFFSET = 696,
  TAB = 697, TALLYING = 698, TAPE = 699, TERMINATE = 700,
  TEST = 701, THAN = 702, THEN = 703, THRU = 704,
  TIME = 705, TIMEOUT = 706, TIMES = 707, TO = 708,
  TOK_AMPER = 709, TOK_CLOSE_PAREN = 710, TOK_COLON = 711, TOK_DIV = 712,
  TOK_DOT = 713, TOK_EQUAL = 714, TOK_FALSE = 715, TOK_FILE = 716,
  TOK_GREATER = 717, TOK_INITIAL = 718, TOK_LESS = 719, TOK_MINUS = 720,
  TOK_MUL = 721, TOK_NULL = 722, TOK_OVERFLOW = 723, TOK_OPEN_PAREN = 724,
  TOK_PLUS = 725, TOK_TRUE = 726, TOP = 727, TOWARD_GREATER = 728,
  TOWARD_LESSER = 729, TRAILING = 730, TRANSFORM = 731, TRIM_FUNC = 732,
  TRUNCATION = 733, TYPE = 734, UNDERLINE = 735, UNIT = 736,
  UNLOCK = 737, UNSIGNED = 738, UNSIGNED_INT = 739, UNSIGNED_LONG = 740,
  UNSIGNED_SHORT = 741, UNSTRING = 742, UNTIL = 743, UP = 744,
  UPDATE = 745, UPON = 746, UPON_ARGUMENT_NUMBER = 747, UPON_COMMAND_LINE = 748,
  UPON_ENVIRONMENT_NAME = 749, UPON_ENVIRONMENT_VALUE = 750, UPPER = 751, UPPER_CASE_FUNC = 752,
  USAGE = 753, USE = 754, USER = 755, USER_DEFAULT = 756,
  USER_FUNCTION_NAME = 757, USING = 758, VALUE = 759, VARYING = 760,
  WAIT = 761, WHEN = 762, WHEN_COMPILED_FUNC = 763, WITH = 764,
  WORD = 765, WORDS = 766, WORKING_STORAGE = 767, WRITE = 768,
  YYYYDDD = 769, YYYYMMDD = 770, ZERO = 771, SHIFT_PREFER = 772,
  TOKEN_EOF = 0, ACCEPT = 258, ACCESS = 259, ADD = 260,
  ADDRESS = 261, ADVANCING = 262, AFTER = 263, ALL = 264,
  ALLOCATE = 265, ALPHABET = 266, ALPHABETIC = 267, ALPHABETIC_LOWER = 268,
  ALPHABETIC_UPPER = 269, ALPHANUMERIC = 270, ALPHANUMERIC_EDITED = 271, ALSO = 272,
  ALTER = 273, ALTERNATE = 274, AND = 275, ANY = 276,
  ARE = 277, AREA = 278, ARGUMENT_NUMBER = 279, ARGUMENT_VALUE = 280,
  AS = 281, ASCENDING = 282, ASCII = 283, ASSIGN = 284,
  AT = 285, ATTRIBUTE = 286, AUTO = 287, AUTOMATIC = 288,
  AWAY_FROM_ZERO = 289, BACKGROUND_COLOR = 290, BASED = 291, BEFORE = 292,
  BELL = 293, BINARY = 294, BINARY_C_LONG = 295, BINARY_CHAR = 296,
  BINARY_DOUBLE = 297, BINARY_LONG = 298, BINARY_SHORT = 299, BLANK = 300,
  BLINK = 301, BLOCK = 302, BOTTOM = 303, BY = 304,
  BYTE_LENGTH = 305, CALL = 306, CANCEL = 307, CAPACITY = 308,
  CF = 309, CH = 310, CHAINING = 311, CHARACTER = 312,
  CHARACTERS = 313, CLASS = 314, CLASSIFICATION = 315, CLOSE = 316,
  CODE = 317, CODE_SET = 318, COLLATING = 319, COL = 320,
  COLS = 321, COLUMN = 322, COLUMNS = 323, COMMA = 324,
  COMMAND_LINE = 325, COMMA_DELIM = 326, COMMIT = 327, COMMON = 328,
  COMP = 329, COMPUTE = 330, COMP_1 = 331, COMP_2 = 332,
  COMP_3 = 333, COMP_4 = 334, COMP_5 = 335, COMP_6 = 336,
  COMP_X = 337, CONCATENATE_FUNC = 338, CONDITION = 339, CONFIGURATION = 340,
  CONSTANT = 341, CONTAINS = 342, CONTENT = 343, CONTINUE = 344,
  CONTROL = 345, CONTROLS = 346, CONVERSION = 347, CONVERTING = 348,
  COPY = 349, CORRESPONDING = 350, COUNT = 351, CRT = 352,
  CRT_UNDER = 353, CURRENCY = 354, CURRENT_DATE_FUNC = 355, CURSOR = 356,
  CYCLE = 357, DATA = 358, DATE = 359, DAY = 360,
  DAY_OF_WEEK = 361, DE = 362, DEBUGGING = 363, DECIMAL_POINT = 364,
  DECLARATIVES = 365, DEFAULT = 366, DELETE = 367, DELIMITED = 368,
  DELIMITER = 369, DEPENDING = 370, DESCENDING = 371, DETAIL = 372,
  DISC = 373, DISK = 374, DISPLAY = 375, DISPLAY_OF_FUNC = 376,
  DIVIDE = 377, DIVISION = 378, DOWN = 379, DUPLICATES = 380,
  DYNAMIC = 381, EBCDIC = 382, EC = 383, ELSE = 384,
  END = 385, END_ACCEPT = 386, END_ADD = 387, END_CALL = 388,
  END_COMPUTE = 389, END_DELETE = 390, END_DISPLAY = 391, END_DIVIDE = 392,
  END_EVALUATE = 393, END_FUNCTION = 394, END_IF = 395, END_MULTIPLY = 396,
  END_PERFORM = 397, END_PROGRAM = 398, END_READ = 399, END_RETURN = 400,
  END_REWRITE = 401, END_SEARCH = 402, END_START = 403, END_STRING = 404,
  END_SUBTRACT = 405, END_UNSTRING = 406, END_WRITE = 407, ENTRY = 408,
  ENVIRONMENT = 409, ENVIRONMENT_NAME = 410, ENVIRONMENT_VALUE = 411, EOL = 412,
  EOP = 413, EOS = 414, EQUAL = 415, ERASE = 416,
  ERROR = 417, ESCAPE = 418, EVALUATE = 419, EVENT_STATUS = 420,
  EXCEPTION = 421, EXCEPTION_CONDITION = 422, EXCLUSIVE = 423, EXIT = 424,
  EXPONENTIATION = 425, EXTEND = 426, EXTERNAL = 427, FD = 428,
  FILE_CONTROL = 429, FILE_ID = 430, FILLER = 431, FINAL = 432,
  FIRST = 433, FLOAT_BINARY_128 = 434, FLOAT_BINARY_32 = 435, FLOAT_BINARY_64 = 436,
  FLOAT_DECIMAL_16 = 437, FLOAT_DECIMAL_34 = 438, FLOAT_DECIMAL_7 = 439, FLOAT_EXTENDED = 440,
  FLOAT_LONG = 441, FLOAT_SHORT = 442, FOOTING = 443, FOR = 444,
  FOREGROUND_COLOR = 445, FOREVER = 446, FORMATTED_DATE_FUNC = 447, FORMATTED_DATETIME_FUNC = 448,
  FORMATTED_TIME_FUNC = 449, FREE = 450, FROM = 451, FROM_CRT = 452,
  FULL = 453, FUNCTION = 454, FUNCTION_ID = 455, FUNCTION_NAME = 456,
  GENERATE = 457, GIVING = 458, GLOBAL = 459, GO = 460,
  GOBACK = 461, GREATER = 462, GREATER_OR_EQUAL = 463, GRID = 464,
  GROUP = 465, HEADING = 466, HIGHLIGHT = 467, HIGH_VALUE = 468,
  ID = 469, IDENTIFICATION = 470, IF = 471, IGNORE = 472,
  IGNORING = 473, IN = 474, INDEX = 475, INDEXED = 476,
  INDICATE = 477, INITIALIZE = 478, INITIALIZED = 479, INITIATE = 480,
  INPUT = 481, INPUT_OUTPUT = 482, INSPECT = 483, INTO = 484,
  INTRINSIC = 485, INVALID = 486, INVALID_KEY = 487, IS = 488,
  I_O = 489, I_O_CONTROL = 490, JUSTIFIED = 491, KEPT = 492,
  KEY = 493, KEYBOARD = 494, LABEL = 495, LAST = 496,
  LEADING = 497, LEFT = 498, LEFTLINE = 499, LENGTH = 500,
  LENGTH_OF = 501, LESS = 502, LESS_OR_EQUAL = 503, LIMIT = 504,
  LIMITS = 505, LINAGE = 506, LINAGE_COUNTER = 507, LINE = 508,
  LINE_COUNTER = 509, LINES = 510, LINKAGE = 511, LITERAL = 512,
  LOCALE = 513, LOCALE_DATE_FUNC = 514, LOCALE_TIME_FUNC = 515, LOCALE_TIME_FROM_FUNC = 516,
  LOCAL_STORAGE = 517, LOCK = 518, LOWER = 519, LOWER_CASE_FUNC = 520,
  LOWLIGHT = 521, LOW_VALUE = 522, MANUAL = 523, MEMORY = 524,
  MERGE = 525, MINUS = 526, MNEMONIC_NAME = 527, MODE = 528,
  MOVE = 529, MULTIPLE = 530, MULTIPLY = 531, NAME = 532,
  NATIONAL = 533, NATIONAL_EDITED = 534, NATIONAL_OF_FUNC = 535, NATIVE = 536,
  NEAREST_AWAY_FROM_ZERO = 537, NEAREST_EVEN = 538, NEAREST_TOWARD_ZERO = 539, NEGATIVE = 540,
  NEXT = 541, NEXT_PAGE = 542, NO = 543, NO_ECHO = 544,
  NORMAL = 545, NOT = 546, NOTHING = 547, NOT_END = 548,
  NOT_EOP = 549, NOT_ESCAPE = 550, NOT_EQUAL = 551, NOT_EXCEPTION = 552,
  NOT_INVALID_KEY = 553, NOT_OVERFLOW = 554, NOT_SIZE_ERROR = 555, NO_ADVANCING = 556,
  NUMBER = 557, NUMBERS = 558, NUMERIC = 559, NUMERIC_EDITED = 560,
  NUMVALC_FUNC = 561, OBJECT_COMPUTER = 562, OCCURS = 563, OF = 564,
  OFF = 565, OMITTED = 566, ON = 567, ONLY = 568,
  OPEN = 569, OPTIONAL = 570, OR = 571, ORDER = 572,
  ORGANIZATION = 573, OTHER = 574, OUTPUT = 575, OVERLINE = 576,
  PACKED_DECIMAL = 577, PADDING = 578, PAGE = 579, PAGE_COUNTER = 580,
  PARAGRAPH = 581, PERFORM = 582, PH = 583, PF = 584,
  PICTURE = 585, PICTURE_SYMBOL = 586, PLUS = 587, POINTER = 588,
  POSITION = 589, POSITIVE = 590, PRESENT = 591, PREVIOUS = 592,
  PRINT = 593, PRINTER = 594, PRINTER_1 = 595, PRINTING = 596,
  PROCEDURE = 597, PROCEDURES = 598, PROCEED = 599, PROGRAM = 600,
  PROGRAM_ID = 601, PROGRAM_NAME = 602, PROGRAM_POINTER = 603, PROHIBITED = 604,
  PROMPT = 605, PROTECTED = 606, QUOTE = 607, RANDOM = 608,
  RD = 609, READ = 610, READY_TRACE = 611, RECORD = 612,
  RECORDING = 613, RECORDS = 614, RECURSIVE = 615, REDEFINES = 616,
  REEL = 617, REFERENCE = 618, REFERENCES = 619, RELATIVE = 620,
  RELEASE = 621, REMAINDER = 622, REMOVAL = 623, RENAMES = 624,
  REPLACE = 625, REPLACING = 626, REPORT = 627, REPORTING = 628,
  REPORTS = 629, REPOSITORY = 630, REQUIRED = 631, RESERVE = 632,
  RESET = 633, RESET_TRACE = 634, RETURN = 635, RETURNING = 636,
  REVERSE_FUNC = 637, REVERSE_VIDEO = 638, REVERSED = 639, REWIND = 640,
  REWRITE = 641, RF = 642, RH = 643, RIGHT = 644,
  ROLLBACK = 645, ROUNDED = 646, RUN = 647, SAME = 648,
  SCREEN = 649, SCREEN_CONTROL = 650, SCROLL = 651, SD = 652,
  SEARCH = 653, SECTION = 654, SECURE = 655, SEGMENT_LIMIT = 656,
  SELECT = 657, SEMI_COLON = 658, SENTENCE = 659, SEPARATE = 660,
  SEQUENCE = 661, SEQUENTIAL = 662, SET = 663, SHARING = 664,
  SIGN = 665, SIGNED = 666, SIGNED_INT = 667, SIGNED_LONG = 668,
  SIGNED_SHORT = 669, SIZE = 670, SIZE_ERROR = 671, SORT = 672,
  SORT_MERGE = 673, SOURCE = 674, SOURCE_COMPUTER = 675, SPACE = 676,
  SPECIAL_NAMES = 677, STANDARD = 678, STANDARD_1 = 679, STANDARD_2 = 680,
  START = 681, STATIC = 682, STATUS = 683, STDCALL = 684,
  STEP = 685, STOP = 686, STRING = 687, SUBSTITUTE_FUNC = 688,
  SUBSTITUTE_CASE_FUNC = 689, SUBTRACT = 690, SUM = 691, SUPPRESS = 692,
  SYMBOLIC = 693, SYNCHRONIZED = 694, SYSTEM_DEFAULT = 695, SYSTEM_OFFSET = 696,
  TAB = 697, TALLYING = 698, TAPE = 699, TERMINATE = 700,
  TEST = 701, THAN = 702, THEN = 703, THRU = 704,
  TIME = 705, TIMEOUT = 706, TIMES = 707, TO = 708,
  TOK_AMPER = 709, TOK_CLOSE_PAREN = 710, TOK_COLON = 711, TOK_DIV = 712,
  TOK_DOT = 713, TOK_EQUAL = 714, TOK_FALSE = 715, TOK_FILE = 716,
  TOK_GREATER = 717, TOK_INITIAL = 718, TOK_LESS = 719, TOK_MINUS = 720,
  TOK_MUL = 721, TOK_NULL = 722, TOK_OVERFLOW = 723, TOK_OPEN_PAREN = 724,
  TOK_PLUS = 725, TOK_TRUE = 726, TOP = 727, TOWARD_GREATER = 728,
  TOWARD_LESSER = 729, TRAILING = 730, TRANSFORM = 731, TRIM_FUNC = 732,
  TRUNCATION = 733, TYPE = 734, UNDERLINE = 735, UNIT = 736,
  UNLOCK = 737, UNSIGNED = 738, UNSIGNED_INT = 739, UNSIGNED_LONG = 740,
  UNSIGNED_SHORT = 741, UNSTRING = 742, UNTIL = 743, UP = 744,
  UPDATE = 745, UPON = 746, UPON_ARGUMENT_NUMBER = 747, UPON_COMMAND_LINE = 748,
  UPON_ENVIRONMENT_NAME = 749, UPON_ENVIRONMENT_VALUE = 750, UPPER = 751, UPPER_CASE_FUNC = 752,
  USAGE = 753, USE = 754, USER = 755, USER_DEFAULT = 756,
  USER_FUNCTION_NAME = 757, USING = 758, VALUE = 759, VARYING = 760,
  WAIT = 761, WHEN = 762, WHEN_COMPILED_FUNC = 763, WITH = 764,
  WORD = 765, WORDS = 766, WORKING_STORAGE = 767, WRITE = 768,
  YYYYDDD = 769, YYYYMMDD = 770, ZERO = 771, SHIFT_PREFER = 772,
  TOKEN_EOF = 0, ALSO = 258, BY = 259, COPY = 260,
  EQEQ = 261, IN = 262, LAST = 263, LEADING = 264,
  OF = 265, OFF = 266, PRINTING = 267, REPLACE = 268,
  REPLACING = 269, SUPPRESS = 270, TRAILING = 271, DOT = 272,
  GARBAGE = 273, SOURCE_DIRECTIVE = 274, FORMAT = 275, IS = 276,
  FIXED = 277, FREE = 278, DEFINE_DIRECTIVE = 279, AS = 280,
  PARAMETER = 281, OVERRIDE = 282, SET_DIRECTIVE = 283, CONSTANT = 284,
  SOURCEFORMAT = 285, FOLDCOPYNAME = 286, NOFOLDCOPYNAME = 287, IF_DIRECTIVE = 288,
  ELSE_DIRECTIVE = 289, ENDIF_DIRECTIVE = 290, ELIF_DIRECTIVE = 291, GE = 292,
  LE = 293, LT = 294, GT = 295, EQ = 296,
  NE = 297, NOT = 298, THAN = 299, TO = 300,
  OR = 301, EQUAL = 302, GREATER = 303, LESS = 304,
  SET = 305, DEFINED = 306, TURN_DIRECTIVE = 307, ON = 308,
  CHECKING = 309, WITH = 310, LOCATION = 311, TERMINATOR = 312,
  TOKEN = 313, VARIABLE = 314, LITERAL = 315, TOKEN_EOF = 0,
  ALSO = 258, BY = 259, COPY = 260, EQEQ = 261,
  IN = 262, LAST = 263, LEADING = 264, OF = 265,
  OFF = 266, PRINTING = 267, REPLACE = 268, REPLACING = 269,
  SUPPRESS = 270, TRAILING = 271, DOT = 272, GARBAGE = 273,
  SOURCE_DIRECTIVE = 274, FORMAT = 275, IS = 276, FIXED = 277,
  FREE = 278, DEFINE_DIRECTIVE = 279, AS = 280, PARAMETER = 281,
  OVERRIDE = 282, SET_DIRECTIVE = 283, CONSTANT = 284, SOURCEFORMAT = 285,
  FOLDCOPYNAME = 286, NOFOLDCOPYNAME = 287, IF_DIRECTIVE = 288, ELSE_DIRECTIVE = 289,
  ENDIF_DIRECTIVE = 290, ELIF_DIRECTIVE = 291, GE = 292, LE = 293,
  LT = 294, GT = 295, EQ = 296, NE = 297,
  NOT = 298, THAN = 299, TO = 300, OR = 301,
  EQUAL = 302, GREATER = 303, LESS = 304, SET = 305,
  DEFINED = 306, TURN_DIRECTIVE = 307, ON = 308, CHECKING = 309,
  WITH = 310, LOCATION = 311, TERMINATOR = 312, TOKEN = 313,
  VARIABLE = 314, LITERAL = 315
}
 

Functions

static void begin_statement (const char *name, const unsigned int term)
 
static void begin_implicit_statement (void)
 
static void emit_entry (const char *name, const int encode, cb_tree using_list)
 
static size_t increment_depth (void)
 
static void terminator_warning (cb_tree stmt, const unsigned int termid, const char *name)
 
static void terminator_error (cb_tree stmt, const unsigned int termid, const char *name)
 
static void terminator_clear (cb_tree stmt, const unsigned int termid)
 
static int literal_value (cb_tree x)
 
static void set_up_use_file (struct cb_file *fileptr)
 
static void check_relaxed_syntax (const unsigned int lev)
 
static void check_headers_present (const unsigned int lev1, const unsigned int lev2, const unsigned int lev3, const unsigned int lev4)
 
static void build_nested_special (const int ndepth)
 
static void clear_initial_values (void)
 
static void begin_scope_of_program_name (struct cb_program *program)
 
static void remove_program_name (struct cb_list *l, struct cb_list *prev)
 
static void end_scope_of_program_name (struct cb_program *program)
 
static int set_up_program (cb_tree id, cb_tree as_literal, const unsigned char type)
 
static void decrement_depth (const char *name, const unsigned char type)
 
static void clean_up_program (cb_tree name, const unsigned char type)
 
static const char * get_literal_or_word_name (const cb_tree x)
 
static int check_prototype_redefines_current_func (const cb_tree prototype_name)
 
static int check_for_duplicate_prototype (const cb_tree prototype_name, const cb_tree func_prototype)
 
static void set_up_func_prototype (cb_tree prototype_name, cb_tree ext_name, const int is_current_func)
 
static void emit_duplicate_clause_message (const char *clause)
 
static void check_repeated (const char *clause, const unsigned int bitval, unsigned int *already_seen)
 
static void check_not_both (const int flag1, const int flag2, const char *flag1_name, const char *flag2_name, const int flags, const int flag_to_set)
 
static COB_INLINE COB_A_INLINE void check_not_highlight_and_lowlight (const int flags, const int flag_to_set)
 
static void check_screen_attr (const char *clause, const int bitval)
 
static void emit_conflicting_clause_message (const char *clause, const char *conflicting)
 
static void check_attr_with_conflict (const char *clause, const int bitval, const char *confl_clause, const int confl_bit, int *flags)
 
static COB_INLINE COB_A_INLINE void check_screen_attr_with_conflict (const char *clause, const int bitval, const char *confl_clause, const int confl_bit)
 
static COB_INLINE COB_A_INLINE void check_dispattr_with_conflict (const char *attrib_name, const int attrib, const char *confl_name, const int confl_attrib)
 
static void bit_set_attr (const cb_tree onoff, const int attrval)
 
static void attach_attrib_to_cur_stmt (void)
 
static void check_field_attribs (cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is)
 
static void check_attribs (cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is, const int attrib)
 
static void check_attribs_with_conflict (cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is, const char *attrib_name, const int attrib, const char *confl_name, const int confl_attrib)
 
static int zero_conflicting_flag (const int screen_flag, int parent_flag, const int flag1, const int flag2)
 
static int zero_conflicting_flags (const int screen_flag, int parent_flag)
 
static void remove_attrib (int attrib)
 
static void check_set_usage (const enum cb_usage usage)
 
static int has_relative_pos (struct cb_field const *field)
 
static void check_not_88_level (cb_tree x)
 
static int is_screen_field (cb_tree x)
 
static int contains_only_screen_field (struct cb_list *x_list)
 
static COB_INLINE COB_A_INLINE void emit_default_screen_display (cb_tree x_list)
 
static cb_tree get_default_display_device ()
 
static void emit_default_device_display (cb_tree x_list)
 
static void emit_default_displays_for_x_list (struct cb_list *x_list)
 
static void error_if_no_advancing_in_screen_display (cb_tree advancing)
 
int yyparse (void)
 
static void yy_symbol_value_print (FILE *yyoutput, int yytype, cb_tree const *const yyvaluep)
 
static void yy_symbol_print (FILE *yyoutput, int yytype, cb_tree const *const yyvaluep)
 
static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
 
static void yy_reduce_print (yytype_int16 *yyssp, cb_tree *yyvsp, int yyrule)
 
static size_t yystrlen (const char *yystr)
 
static char * yystpcpy (char *yydest, const char *yysrc)
 
static size_t yytnamerr (char *yyres, const char *yystr)
 
static int yysyntax_error (size_t *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken)
 
static void yydestruct (const char *yymsg, int yytype, cb_tree *yyvaluep)
 

Variables

struct cb_programcurrent_program = ((void*)0)
 
struct cb_statementcurrent_statement = ((void*)0)
 
struct cb_labelcurrent_section = ((void*)0)
 
struct cb_labelcurrent_paragraph = ((void*)0)
 
cb_tree defined_prog_list = ((void*)0)
 
char * cobc_glob_line = ((void*)0)
 
int cb_exp_line = 0
 
cb_tree cobc_printer_node = ((void*)0)
 
int functions_are_all = 0
 
int non_const_word = 0
 
unsigned int cobc_in_procedure = 0
 
unsigned int cobc_in_repository = 0
 
unsigned int cobc_force_literal = 0
 
unsigned int cobc_cs_check = 0
 
static struct cb_statementmain_statement
 
static cb_tree current_expr
 
static struct cb_fieldcurrent_field
 
static struct cb_fielddescription_field
 
static struct cb_filecurrent_file
 
static struct cb_reportcurrent_report
 
static struct cb_reportreport_instance
 
static struct cb_filelinage_file
 
static cb_tree next_label_list
 
static char * stack_progid [16]
 
static enum cb_storage current_storage
 
static cb_tree perform_stack
 
static cb_tree qualifier
 
static cb_tree save_tree
 
static cb_tree start_tree
 
static unsigned int check_unreached
 
static unsigned int in_declaratives
 
static unsigned int in_debugging
 
static unsigned int current_linage
 
static unsigned int report_count
 
static unsigned int prog_end
 
static unsigned int use_global_ind
 
static unsigned int samearea
 
static unsigned int inspect_keyword
 
static unsigned int main_flag_set
 
static int next_label_id
 
static int eval_level
 
static int eval_inc
 
static int eval_inc2
 
static int depth
 
static int first_nested_program
 
static int call_mode
 
static int size_mode
 
static int setattr_val_on
 
static int setattr_val_off
 
static unsigned int check_duplicate
 
static unsigned int check_on_off_duplicate
 
static unsigned int check_pic_duplicate
 
static unsigned int check_comp_duplicate
 
static int check_line_col_duplicate
 
static unsigned int skip_statements
 
static unsigned int start_debug
 
static unsigned int save_debug
 
static unsigned int needs_field_debug
 
static unsigned int needs_debug_item
 
static unsigned int env_div_seen
 
static unsigned int header_check
 
static unsigned int call_nothing
 
static cb_tree advancing_value
 
static cb_tree upon_value
 
static cb_tree line_column
 
static int term_array [22U]
 
static cb_tree eval_check [32][32]
 
int yydebug
 
cb_tree yylval
 
static const yytype_uint16 yytranslate []
 
static const yytype_uint16 yyrline []
 
static const char *const yytname []
 
static const yytype_int16 yypact []
 
static const yytype_uint16 yydefact []
 
static const yytype_int16 yypgoto []
 
static const yytype_int16 yydefgoto []
 
static const yytype_int16 yytable []
 
static const yytype_int16 yycheck []
 
static const yytype_uint16 yystos []
 
static const yytype_uint16 yyr1 []
 
static const yytype_uint8 yyr2 []
 
int yychar
 
int yynerrs
 

Macro Definition Documentation

#define _Noreturn   YY_ATTRIBUTE ((__noreturn__))

Definition at line 1960 of file parser.c.

#define COB_IN_PARSER   1

Definition at line 75 of file parser.c.

#define COBC_HD_COMMUNICATIONS_SECTION   (1U << 11)

Definition at line 262 of file parser.c.

Referenced by check_relaxed_syntax().

#define COBC_HD_CONFIGURATION_SECTION   (1U << 1)

Definition at line 252 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_DATA_DIVISION   (1U << 6)

Definition at line 257 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_ENVIRONMENT_DIVISION   (1U << 0)

Definition at line 251 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_FILE_CONTROL   (1U << 4)

Definition at line 255 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_FILE_SECTION   (1U << 7)

Definition at line 258 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_I_O_CONTROL   (1U << 5)

Definition at line 256 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_INPUT_OUTPUT_SECTION   (1U << 3)

Definition at line 254 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_LINKAGE_SECTION   (1U << 10)

Definition at line 261 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_LOCAL_STORAGE_SECTION   (1U << 9)

Definition at line 260 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_PROCEDURE_DIVISION   (1U << 14)

Definition at line 265 of file parser.c.

Referenced by check_relaxed_syntax(), set_up_program(), and yyparse().

#define COBC_HD_PROGRAM_ID   (1U << 15)

Definition at line 266 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_REPORT_SECTION   (1U << 12)

Definition at line 263 of file parser.c.

Referenced by check_relaxed_syntax().

#define COBC_HD_SCREEN_SECTION   (1U << 13)

Definition at line 264 of file parser.c.

Referenced by check_relaxed_syntax().

#define COBC_HD_SPECIAL_NAMES   (1U << 2)

Definition at line 253 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define COBC_HD_WORKING_STORAGE_SECTION   (1U << 8)

Definition at line 259 of file parser.c.

Referenced by check_relaxed_syntax(), and yyparse().

#define emit_statement (   x)
Value:
do { \
} \
struct cb_program * current_program
Definition: parser.c:168
static unsigned int skip_statements
Definition: parser.c:233
#define CB_ADD_TO_CHAIN(x, y)
Definition: tree.h:1854
cb_tree exec_list
Definition: tree.h:1253
#define ONCE_COB
Definition: common.h:530

Definition at line 88 of file parser.c.

Referenced by begin_statement(), emit_entry(), and yyparse().

#define EVAL_DEPTH   32

Definition at line 163 of file parser.c.

Referenced by yyparse().

#define PENDING (   x)    cb_warning (_("'%s' not implemented"), x)

Definition at line 86 of file parser.c.

Referenced by yyparse().

#define PROG_DEPTH   16

Definition at line 164 of file parser.c.

Referenced by increment_depth().

#define push_expr (   type,
  node 
)    current_expr = cb_build_list (cb_int (type), node, current_expr)

Definition at line 95 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_1   (1U << 0)

Definition at line 130 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_10   (1U << 9)

Definition at line 139 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_11   (1U << 10)

Definition at line 140 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_12   (1U << 11)

Definition at line 141 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_13   (1U << 12)

Definition at line 142 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_14   (1U << 13)

Definition at line 143 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_15   (1U << 14)

Definition at line 144 of file parser.c.

#define SYN_CLAUSE_16   (1U << 15)

Definition at line 145 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_17   (1U << 16)

Definition at line 146 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_18   (1U << 17)

Definition at line 147 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_19   (1U << 18)

Definition at line 148 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_2   (1U << 1)

Definition at line 131 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_20   (1U << 19)

Definition at line 149 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_21   (1U << 20)

Definition at line 150 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_22   (1U << 21)

Definition at line 151 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_23   (1U << 22)

Definition at line 152 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_24   (1U << 23)

Definition at line 153 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_25   (1U << 24)

Definition at line 154 of file parser.c.

#define SYN_CLAUSE_26   (1U << 25)

Definition at line 155 of file parser.c.

#define SYN_CLAUSE_27   (1U << 26)

Definition at line 156 of file parser.c.

#define SYN_CLAUSE_28   (1U << 27)

Definition at line 157 of file parser.c.

#define SYN_CLAUSE_29   (1U << 28)

Definition at line 158 of file parser.c.

#define SYN_CLAUSE_3   (1U << 2)

Definition at line 132 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_30   (1U << 29)

Definition at line 159 of file parser.c.

#define SYN_CLAUSE_31   (1U << 30)

Definition at line 160 of file parser.c.

#define SYN_CLAUSE_32   (1U << 31)

Definition at line 161 of file parser.c.

#define SYN_CLAUSE_4   (1U << 3)

Definition at line 133 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_5   (1U << 4)

Definition at line 134 of file parser.c.

Referenced by check_set_usage(), and yyparse().

#define SYN_CLAUSE_6   (1U << 5)

Definition at line 135 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_7   (1U << 6)

Definition at line 136 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_8   (1U << 7)

Definition at line 137 of file parser.c.

Referenced by yyparse().

#define SYN_CLAUSE_9   (1U << 8)

Definition at line 138 of file parser.c.

Referenced by yyparse().

#define TERM_ACCEPT   1U

Definition at line 100 of file parser.c.

Referenced by yyparse().

#define TERM_ADD   2U

Definition at line 101 of file parser.c.

Referenced by yyparse().

#define TERM_CALL   3U

Definition at line 102 of file parser.c.

Referenced by yyparse().

#define TERM_COMPUTE   4U

Definition at line 103 of file parser.c.

Referenced by yyparse().

#define TERM_DELETE   5U

Definition at line 104 of file parser.c.

Referenced by yyparse().

#define TERM_DISPLAY   6U

Definition at line 105 of file parser.c.

Referenced by yyparse().

#define TERM_DIVIDE   7U

Definition at line 106 of file parser.c.

Referenced by yyparse().

#define TERM_EVALUATE   8U

Definition at line 107 of file parser.c.

Referenced by yyparse().

#define TERM_IF   9U

Definition at line 108 of file parser.c.

Referenced by yyparse().

#define TERM_MAX   22U

Definition at line 121 of file parser.c.

#define TERM_MULTIPLY   10U

Definition at line 109 of file parser.c.

Referenced by yyparse().

#define TERM_NONE   0

Definition at line 99 of file parser.c.

#define TERM_PERFORM   11U

Definition at line 110 of file parser.c.

Referenced by yyparse().

#define TERM_READ   12U

Definition at line 111 of file parser.c.

Referenced by yyparse().

#define TERM_RECEIVE   13U

Definition at line 112 of file parser.c.

#define TERM_RETURN   14U

Definition at line 113 of file parser.c.

Referenced by yyparse().

#define TERM_REWRITE   15U

Definition at line 114 of file parser.c.

Referenced by yyparse().

#define TERM_SEARCH   16U

Definition at line 115 of file parser.c.

Referenced by yyparse().

#define TERM_START   17U

Definition at line 116 of file parser.c.

Referenced by yyparse().

#define TERM_STRING   18U

Definition at line 117 of file parser.c.

Referenced by yyparse().

#define TERM_SUBTRACT   19U

Definition at line 118 of file parser.c.

Referenced by yyparse().

#define TERM_UNSTRING   20U

Definition at line 119 of file parser.c.

Referenced by yyparse().

#define TERM_WRITE   21U

Definition at line 120 of file parser.c.

Referenced by yyparse().

#define TERMINATOR_CLEAR (   x,
 
)    terminator_clear (x, TERM_##z)

Definition at line 125 of file parser.c.

Referenced by yyparse().

#define TERMINATOR_ERROR (   x,
 
)    terminator_error (x, TERM_##z, #z)

Definition at line 124 of file parser.c.

Referenced by yyparse().

#define TERMINATOR_WARNING (   x,
 
)    terminator_warning (x, TERM_##z, #z)

Definition at line 123 of file parser.c.

Referenced by yyparse().

#define YY_ (   Msgid)    Msgid

Definition at line 1933 of file parser.c.

Referenced by yyparse(), and yysyntax_error().

#define YY_ATTRIBUTE (   Spec)    /* empty */

Definition at line 1943 of file parser.c.

#define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))

Definition at line 1948 of file parser.c.

#define YY_ATTRIBUTE_UNUSED   YY_ATTRIBUTE ((__unused__))

Definition at line 1952 of file parser.c.

#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN

Definition at line 1983 of file parser.c.

Referenced by yydestruct(), and yyparse().

#define YY_IGNORE_MAYBE_UNINITIALIZED_END

Definition at line 1984 of file parser.c.

Referenced by yydestruct(), and yyparse().

#define YY_INITIAL_VALUE (   Value)    Value

Definition at line 1980 of file parser.c.

#define YY_LOCATION_PRINT (   File,
  Loc 
)    ((void) 0)

Definition at line 6178 of file parser.c.

#define YY_NULLPTR   0

Definition at line 1316 of file parser.c.

Referenced by yysyntax_error().

#define YY_REDUCE_PRINT (   Rule)
Value:
do { \
if (yydebug) \
yy_reduce_print (yyssp, yyvsp, Rule); \
} while (0)
static void yy_reduce_print(yytype_int16 *yyssp, cb_tree *yyvsp, int yyrule)
Definition: parser.c:6256
int yydebug
Definition: parser.c:6283

Definition at line 6275 of file parser.c.

Referenced by yyparse().

#define YY_STACK_PRINT (   Bottom,
  Top 
)
Value:
do { \
if (yydebug) \
yy_stack_print ((Bottom), (Top)); \
} while (0)
static void yy_stack_print(yytype_int16 *yybottom, yytype_int16 *yytop)
Definition: parser.c:6233
int yydebug
Definition: parser.c:6283

Definition at line 6244 of file parser.c.

Referenced by yyparse().

#define YY_SYMBOL_PRINT (   Title,
  Type,
  Value,
  Location 
)
Value:
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
Type, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
static void yy_symbol_print(FILE *yyoutput, int yytype, cb_tree const *const yyvaluep)
Definition: parser.c:6218
int yydebug
Definition: parser.c:6283
#define YYFPRINTF
Definition: parser.c:6167

Definition at line 6182 of file parser.c.

Referenced by yydestruct(), and yyparse().

#define YY_YY_PARSER_H_INCLUDED

Definition at line 1331 of file parser.c.

#define YYABORT   goto yyabortlab

Definition at line 6133 of file parser.c.

Referenced by yyparse().

#define YYACCEPT   goto yyacceptlab

Definition at line 6132 of file parser.c.

Referenced by yyparse().

#define YYBACKUP (   Token,
  Value 
)
Value:
do \
if (yychar == YYEMPTY) \
{ \
yychar = (Token); \
yylval = (Value); \
YYPOPSTACK (yylen); \
yystate = *yyssp; \
goto yybackup; \
} \
else \
{ \
yyerror (YY_("syntax error: cannot back up")); \
} \
while (0)
#define YY_(Msgid)
Definition: parser.c:1933
#define YYEMPTY
Definition: parser.c:6129
int yychar
Definition: parser.c:6552
if fold fold static computed goto
Definition: flag.def:65
#define YYERROR
Definition: parser.c:6134
cb_tree yylval
Definition: parser.c:6555
#define YYPOPSTACK(N)
#define yyerror
Definition: parser.c:84

Definition at line 6139 of file parser.c.

#define YYBISON   1

Definition at line 44 of file parser.c.

#define YYBISON_VERSION   "3.0.2"

Definition at line 47 of file parser.c.

#define YYCASE_ (   N,
 
)
Value:
case N: \
yyformat = S; \
break

Referenced by yysyntax_error().

#define yyclearin   (yychar = YYEMPTY)

Definition at line 6128 of file parser.c.

Referenced by yyparse().

#define YYCOPY (   Dst,
  Src,
  Count 
)
Value:
do \
{ \
YYSIZE_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
while (0)
#define YYSIZE_T
Definition: parser.c:1917

Definition at line 2107 of file parser.c.

#define YYCOPY_NEEDED   1

Definition at line 2079 of file parser.c.

#define YYDEBUG   1

Definition at line 67 of file parser.c.

#define YYDPRINTF (   Args)
Value:
do { \
if (yydebug) \
YYFPRINTF Args; \
} while (0)
int yydebug
Definition: parser.c:6283
#define YYFPRINTF
Definition: parser.c:6167

Definition at line 6170 of file parser.c.

Referenced by yyparse().

#define YYEMPTY   (-2)

Definition at line 6129 of file parser.c.

Referenced by yyparse(), and yysyntax_error().

#define YYEOF   0

Definition at line 6130 of file parser.c.

Referenced by yyparse().

#define YYERRCODE   256

Definition at line 6158 of file parser.c.

#define yyerrok   (yyerrstatus = 0)

Definition at line 6127 of file parser.c.

Referenced by yyparse().

#define yyerror   cb_error

Definition at line 84 of file parser.c.

Referenced by yyparse().

#define YYERROR   goto yyerrorlab

Definition at line 6134 of file parser.c.

Referenced by yyparse().

#define YYERROR_VERBOSE   1

Definition at line 1325 of file parser.c.

#define YYFINAL   3

Definition at line 2120 of file parser.c.

Referenced by yyparse().

#define YYFPRINTF   fprintf

Definition at line 6167 of file parser.c.

Referenced by yy_reduce_print(), yy_stack_print(), and yy_symbol_print().

#define YYFREE   free

Definition at line 2050 of file parser.c.

#define YYINITDEPTH   200

Definition at line 6294 of file parser.c.

Referenced by yyparse().

#define YYLAST   8985

Definition at line 2122 of file parser.c.

Referenced by yyparse(), and yysyntax_error().

#define YYMALLOC   malloc

Definition at line 2044 of file parser.c.

#define YYMAXDEPTH   10000

Definition at line 6305 of file parser.c.

Referenced by yyparse().

#define YYMAXUTOK   772

Definition at line 2136 of file parser.c.

#define YYNNTS   828

Definition at line 2127 of file parser.c.

#define YYNRULES   1932

Definition at line 2129 of file parser.c.

#define YYNSTATES   2767

Definition at line 2131 of file parser.c.

#define YYNTOKENS   518

Definition at line 2125 of file parser.c.

Referenced by yy_symbol_print(), yy_symbol_value_print(), yyparse(), and yysyntax_error().

#define YYPACT_NINF   -2264

Definition at line 2815 of file parser.c.

#define yypact_value_is_default (   Yystate)    (!!((Yystate) == (-2264)))

Definition at line 2817 of file parser.c.

Referenced by yyparse(), and yysyntax_error().

#define YYPOPSTACK (   N)    (yyvsp -= (N), yyssp -= (N))

Referenced by yyparse().

#define YYPULL   1

Definition at line 59 of file parser.c.

#define YYPURE   0

Definition at line 53 of file parser.c.

#define YYPUSH   0

Definition at line 56 of file parser.c.

#define YYRECOVERING ( )    (!!yyerrstatus)

Definition at line 6137 of file parser.c.

#define YYSIZE_MAXIMUM   ((YYSIZE_T) -1)

Definition at line 1923 of file parser.c.

#define YYSIZE_T   size_t

Definition at line 1917 of file parser.c.

Referenced by yyparse(), yystrlen(), yysyntax_error(), and yytnamerr().

#define YYSKELETON_NAME   "yacc.c"

Definition at line 50 of file parser.c.

#define YYSTACK_ALLOC   YYMALLOC

Definition at line 2030 of file parser.c.

Referenced by yyparse().

#define YYSTACK_ALLOC_MAXIMUM   YYSIZE_MAXIMUM

Definition at line 2033 of file parser.c.

Referenced by yysyntax_error().

#define YYSTACK_BYTES (   N)
Value:
((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
short int yytype_int16
Definition: parser.c:1907
#define YYSTACK_GAP_MAXIMUM
Definition: parser.c:2071
#define YYSTYPE
Definition: parser.c:83

Definition at line 2075 of file parser.c.

Referenced by yyparse().

#define YYSTACK_FREE   YYFREE

Definition at line 2031 of file parser.c.

Referenced by yyparse().

#define YYSTACK_GAP_MAXIMUM   (sizeof (union yyalloc) - 1)

Definition at line 2071 of file parser.c.

#define YYSTACK_RELOCATE (   Stack_alloc,
  Stack 
)
Value:
do \
{ \
YYSIZE_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
yyptr += yynewbytes / sizeof (*yyptr); \
} \
while (0)
#define YYSTACK_GAP_MAXIMUM
Definition: parser.c:2071
#define YYCOPY(Dst, Src, Count)
Definition: parser.c:2107
#define YYSIZE_T
Definition: parser.c:1917

Definition at line 2086 of file parser.c.

Referenced by yyparse().

Definition at line 83 of file parser.c.

#define YYSYNTAX_ERROR
Value:
yysyntax_error (&yymsg_alloc, &yymsg, \
yyssp, yytoken)
static int yysyntax_error(size_t *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken)
Definition: parser.c:6404

Referenced by yyparse().

#define YYTABLE_NINF   -1883

Definition at line 2820 of file parser.c.

#define yytable_value_is_error (   Yytable_value)    0

Definition at line 2822 of file parser.c.

Referenced by yyparse(), and yysyntax_error().

#define YYTERROR   1

Definition at line 6157 of file parser.c.

Referenced by yyparse(), and yysyntax_error().

#define YYTOKENTYPE

Definition at line 1342 of file parser.c.

#define YYTRANSLATE (   YYX)    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)

Definition at line 2138 of file parser.c.

Referenced by yyparse().

#define YYUNDEFTOK   2

Definition at line 2135 of file parser.c.

#define YYUSE (   E)    ((void) (E))

Definition at line 1966 of file parser.c.

Referenced by yy_symbol_value_print(), and yydestruct().

Typedef Documentation

typedef short int yytype_int16

Definition at line 1907 of file parser.c.

typedef signed char yytype_int8

Definition at line 1895 of file parser.c.

typedef unsigned short int yytype_uint16

Definition at line 1901 of file parser.c.

typedef unsigned char yytype_uint8

Definition at line 1889 of file parser.c.

Enumeration Type Documentation

Enumerator
TOKEN_EOF 
ACCEPT 
ACCESS 
ADD 
ADDRESS 
ADVANCING 
AFTER 
ALL 
ALLOCATE 
ALPHABET 
ALPHABETIC 
ALPHABETIC_LOWER 
ALPHABETIC_UPPER 
ALPHANUMERIC 
ALPHANUMERIC_EDITED 
ALSO 
ALTER 
ALTERNATE 
AND 
ANY 
ARE 
AREA 
ARGUMENT_NUMBER 
ARGUMENT_VALUE 
AS 
ASCENDING 
ASCII 
ASSIGN 
AT 
ATTRIBUTE 
AUTO 
AUTOMATIC 
AWAY_FROM_ZERO 
BACKGROUND_COLOR 
BASED 
BEFORE 
BELL 
BINARY 
BINARY_C_LONG 
BINARY_CHAR 
BINARY_DOUBLE 
BINARY_LONG 
BINARY_SHORT 
BLANK 
BLINK 
BLOCK 
BOTTOM 
BY 
BYTE_LENGTH 
CALL 
CANCEL 
CAPACITY 
CF 
CH 
CHAINING 
CHARACTER 
CHARACTERS 
CLASS 
CLASSIFICATION 
CLOSE 
CODE 
CODE_SET 
COLLATING 
COL 
COLS 
COLUMN 
COLUMNS 
COMMA 
COMMAND_LINE 
COMMA_DELIM 
COMMIT 
COMMON 
COMP 
COMPUTE 
COMP_1 
COMP_2 
COMP_3 
COMP_4 
COMP_5 
COMP_6 
COMP_X 
CONCATENATE_FUNC 
CONDITION 
CONFIGURATION 
CONSTANT 
CONTAINS 
CONTENT 
CONTINUE 
CONTROL 
CONTROLS 
CONVERSION 
CONVERTING 
COPY 
CORRESPONDING 
COUNT 
CRT 
CRT_UNDER 
CURRENCY 
CURRENT_DATE_FUNC 
CURSOR 
CYCLE 
DATA 
DATE 
DAY 
DAY_OF_WEEK 
DE 
DEBUGGING 
DECIMAL_POINT 
DECLARATIVES 
DEFAULT 
DELETE 
DELIMITED 
DELIMITER 
DEPENDING 
DESCENDING 
DETAIL 
DISC 
DISK 
DISPLAY 
DISPLAY_OF_FUNC 
DIVIDE 
DIVISION 
DOWN 
DUPLICATES 
DYNAMIC 
EBCDIC 
EC 
ELSE 
END 
END_ACCEPT 
END_ADD 
END_CALL 
END_COMPUTE 
END_DELETE 
END_DISPLAY 
END_DIVIDE 
END_EVALUATE 
END_FUNCTION 
END_IF 
END_MULTIPLY 
END_PERFORM 
END_PROGRAM 
END_READ 
END_RETURN 
END_REWRITE 
END_SEARCH 
END_START 
END_STRING 
END_SUBTRACT 
END_UNSTRING 
END_WRITE 
ENTRY 
ENVIRONMENT 
ENVIRONMENT_NAME 
ENVIRONMENT_VALUE 
EOL 
EOP 
EOS 
EQUAL 
ERASE 
ERROR 
ESCAPE 
EVALUATE 
EVENT_STATUS 
EXCEPTION 
EXCEPTION_CONDITION 
EXCLUSIVE 
EXIT 
EXPONENTIATION 
EXTEND 
EXTERNAL 
FD 
FILE_CONTROL 
FILE_ID 
FILLER 
FINAL 
FIRST 
FLOAT_BINARY_128 
FLOAT_BINARY_32 
FLOAT_BINARY_64 
FLOAT_DECIMAL_16 
FLOAT_DECIMAL_34 
FLOAT_DECIMAL_7 
FLOAT_EXTENDED 
FLOAT_LONG 
FLOAT_SHORT 
FOOTING 
FOR 
FOREGROUND_COLOR 
FOREVER 
FORMATTED_DATE_FUNC 
FORMATTED_DATETIME_FUNC 
FORMATTED_TIME_FUNC 
FREE 
FROM 
FROM_CRT 
FULL 
FUNCTION 
FUNCTION_ID 
FUNCTION_NAME 
GENERATE 
GIVING 
GLOBAL 
GO 
GOBACK 
GREATER 
GREATER_OR_EQUAL 
GRID 
GROUP 
HEADING 
HIGHLIGHT 
HIGH_VALUE 
ID 
IDENTIFICATION 
IF 
IGNORE 
IGNORING 
IN 
INDEX 
INDEXED 
INDICATE 
INITIALIZE 
INITIALIZED 
INITIATE 
INPUT 
INPUT_OUTPUT 
INSPECT 
INTO 
INTRINSIC 
INVALID 
INVALID_KEY 
IS 
I_O 
I_O_CONTROL 
JUSTIFIED 
KEPT 
KEY 
KEYBOARD 
LABEL 
LAST 
LEADING 
LEFT 
LEFTLINE 
LENGTH 
LENGTH_OF 
LESS 
LESS_OR_EQUAL 
LIMIT 
LIMITS 
LINAGE 
LINAGE_COUNTER 
LINE 
LINE_COUNTER 
LINES 
LINKAGE 
LITERAL 
LOCALE 
LOCALE_DATE_FUNC 
LOCALE_TIME_FUNC 
LOCALE_TIME_FROM_FUNC 
LOCAL_STORAGE 
LOCK 
LOWER 
LOWER_CASE_FUNC 
LOWLIGHT 
LOW_VALUE 
MANUAL 
MEMORY 
MERGE 
MINUS 
MNEMONIC_NAME 
MODE 
MOVE 
MULTIPLE 
MULTIPLY 
NAME 
NATIONAL 
NATIONAL_EDITED 
NATIONAL_OF_FUNC 
NATIVE 
NEAREST_AWAY_FROM_ZERO 
NEAREST_EVEN 
NEAREST_TOWARD_ZERO 
NEGATIVE 
NEXT 
NEXT_PAGE 
NO 
NO_ECHO 
NORMAL 
NOT 
NOTHING 
NOT_END 
NOT_EOP 
NOT_ESCAPE 
NOT_EQUAL 
NOT_EXCEPTION 
NOT_INVALID_KEY 
NOT_OVERFLOW 
NOT_SIZE_ERROR 
NO_ADVANCING 
NUMBER 
NUMBERS 
NUMERIC 
NUMERIC_EDITED 
NUMVALC_FUNC 
OBJECT_COMPUTER 
OCCURS 
OF 
OFF 
OMITTED 
ON 
ONLY 
OPEN 
OPTIONAL 
OR 
ORDER 
ORGANIZATION 
OTHER 
OUTPUT 
OVERLINE 
PACKED_DECIMAL 
PADDING 
PAGE 
PAGE_COUNTER 
PARAGRAPH 
PERFORM 
PH 
PF 
PICTURE 
PICTURE_SYMBOL 
PLUS 
POINTER 
POSITION 
POSITIVE 
PRESENT 
PREVIOUS 
PRINT 
PRINTER 
PRINTER_1 
PRINTING 
PROCEDURE 
PROCEDURES 
PROCEED 
PROGRAM 
PROGRAM_ID 
PROGRAM_NAME 
PROGRAM_POINTER 
PROHIBITED 
PROMPT 
PROTECTED 
QUOTE 
RANDOM 
RD 
READ 
READY_TRACE 
RECORD 
RECORDING 
RECORDS 
RECURSIVE 
REDEFINES 
REEL 
REFERENCE 
REFERENCES 
RELATIVE 
RELEASE 
REMAINDER 
REMOVAL 
RENAMES 
REPLACE 
REPLACING 
REPORT 
REPORTING 
REPORTS 
REPOSITORY 
REQUIRED 
RESERVE 
RESET 
RESET_TRACE 
RETURN 
RETURNING 
REVERSE_FUNC 
REVERSE_VIDEO 
REVERSED 
REWIND 
REWRITE 
RF 
RH 
RIGHT 
ROLLBACK 
ROUNDED 
RUN 
SAME 
SCREEN 
SCREEN_CONTROL 
SCROLL 
SD 
SEARCH 
SECTION 
SECURE 
SEGMENT_LIMIT 
SELECT 
SEMI_COLON 
SENTENCE 
SEPARATE 
SEQUENCE 
SEQUENTIAL 
SET 
SHARING 
SIGN 
SIGNED 
SIGNED_INT 
SIGNED_LONG 
SIGNED_SHORT 
SIZE 
SIZE_ERROR 
SORT 
SORT_MERGE 
SOURCE 
SOURCE_COMPUTER 
SPACE 
SPECIAL_NAMES 
STANDARD 
STANDARD_1 
STANDARD_2 
START 
STATIC 
STATUS 
STDCALL 
STEP 
STOP 
STRING 
SUBSTITUTE_FUNC 
SUBSTITUTE_CASE_FUNC 
SUBTRACT 
SUM 
SUPPRESS 
SYMBOLIC 
SYNCHRONIZED 
SYSTEM_DEFAULT 
SYSTEM_OFFSET 
TAB 
TALLYING 
TAPE 
TERMINATE 
TEST 
THAN 
THEN 
THRU 
TIME 
TIMEOUT 
TIMES 
TO 
TOK_AMPER 
TOK_CLOSE_PAREN 
TOK_COLON 
TOK_DIV 
TOK_DOT 
TOK_EQUAL 
TOK_FALSE 
TOK_FILE 
TOK_GREATER 
TOK_INITIAL 
TOK_LESS 
TOK_MINUS 
TOK_MUL 
TOK_NULL 
TOK_OVERFLOW 
TOK_OPEN_PAREN 
TOK_PLUS 
TOK_TRUE 
TOP 
TOWARD_GREATER 
TOWARD_LESSER 
TRAILING 
TRANSFORM 
TRIM_FUNC 
TRUNCATION 
TYPE 
UNDERLINE 
UNIT 
UNLOCK 
UNSIGNED 
UNSIGNED_INT 
UNSIGNED_LONG 
UNSIGNED_SHORT 
UNSTRING 
UNTIL 
UP 
UPDATE 
UPON 
UPON_ARGUMENT_NUMBER 
UPON_COMMAND_LINE 
UPON_ENVIRONMENT_NAME 
UPON_ENVIRONMENT_VALUE 
UPPER 
UPPER_CASE_FUNC 
USAGE 
USE 
USER 
USER_DEFAULT 
USER_FUNCTION_NAME 
USING 
VALUE 
VARYING 
WAIT 
WHEN 
WHEN_COMPILED_FUNC 
WITH 
WORD 
WORDS 
WORKING_STORAGE 
WRITE 
YYYYDDD 
YYYYMMDD 
ZERO 
SHIFT_PREFER 
TOKEN_EOF 
ACCEPT 
ACCESS 
ADD 
ADDRESS 
ADVANCING 
AFTER 
ALL 
ALLOCATE 
ALPHABET 
ALPHABETIC 
ALPHABETIC_LOWER 
ALPHABETIC_UPPER 
ALPHANUMERIC 
ALPHANUMERIC_EDITED 
ALSO 
ALTER 
ALTERNATE 
AND 
ANY 
ARE 
AREA 
ARGUMENT_NUMBER 
ARGUMENT_VALUE 
AS 
ASCENDING 
ASCII 
ASSIGN 
AT 
ATTRIBUTE 
AUTO 
AUTOMATIC 
AWAY_FROM_ZERO 
BACKGROUND_COLOR 
BASED 
BEFORE 
BELL 
BINARY 
BINARY_C_LONG 
BINARY_CHAR 
BINARY_DOUBLE 
BINARY_LONG 
BINARY_SHORT 
BLANK 
BLINK 
BLOCK 
BOTTOM 
BY 
BYTE_LENGTH 
CALL 
CANCEL 
CAPACITY 
CF 
CH 
CHAINING 
CHARACTER 
CHARACTERS 
CLASS 
CLASSIFICATION 
CLOSE 
CODE 
CODE_SET 
COLLATING 
COL 
COLS 
COLUMN 
COLUMNS 
COMMA 
COMMAND_LINE 
COMMA_DELIM 
COMMIT 
COMMON 
COMP 
COMPUTE 
COMP_1 
COMP_2 
COMP_3 
COMP_4 
COMP_5 
COMP_6 
COMP_X 
CONCATENATE_FUNC 
CONDITION 
CONFIGURATION 
CONSTANT 
CONTAINS 
CONTENT 
CONTINUE 
CONTROL 
CONTROLS 
CONVERSION 
CONVERTING 
COPY 
CORRESPONDING 
COUNT 
CRT 
CRT_UNDER 
CURRENCY 
CURRENT_DATE_FUNC 
CURSOR 
CYCLE 
DATA 
DATE 
DAY 
DAY_OF_WEEK 
DE 
DEBUGGING 
DECIMAL_POINT 
DECLARATIVES 
DEFAULT 
DELETE 
DELIMITED 
DELIMITER 
DEPENDING 
DESCENDING 
DETAIL 
DISC 
DISK 
DISPLAY 
DISPLAY_OF_FUNC 
DIVIDE 
DIVISION 
DOWN 
DUPLICATES 
DYNAMIC 
EBCDIC 
EC 
ELSE 
END 
END_ACCEPT 
END_ADD 
END_CALL 
END_COMPUTE 
END_DELETE 
END_DISPLAY 
END_DIVIDE 
END_EVALUATE 
END_FUNCTION 
END_IF 
END_MULTIPLY 
END_PERFORM 
END_PROGRAM 
END_READ 
END_RETURN 
END_REWRITE 
END_SEARCH 
END_START 
END_STRING 
END_SUBTRACT 
END_UNSTRING 
END_WRITE 
ENTRY 
ENVIRONMENT 
ENVIRONMENT_NAME 
ENVIRONMENT_VALUE 
EOL 
EOP 
EOS 
EQUAL 
ERASE 
ERROR 
ESCAPE 
EVALUATE 
EVENT_STATUS 
EXCEPTION 
EXCEPTION_CONDITION 
EXCLUSIVE 
EXIT 
EXPONENTIATION 
EXTEND 
EXTERNAL 
FD 
FILE_CONTROL 
FILE_ID 
FILLER 
FINAL 
FIRST 
FLOAT_BINARY_128 
FLOAT_BINARY_32 
FLOAT_BINARY_64 
FLOAT_DECIMAL_16 
FLOAT_DECIMAL_34 
FLOAT_DECIMAL_7 
FLOAT_EXTENDED 
FLOAT_LONG 
FLOAT_SHORT 
FOOTING 
FOR 
FOREGROUND_COLOR 
FOREVER 
FORMATTED_DATE_FUNC 
FORMATTED_DATETIME_FUNC 
FORMATTED_TIME_FUNC 
FREE 
FROM 
FROM_CRT 
FULL 
FUNCTION 
FUNCTION_ID 
FUNCTION_NAME 
GENERATE 
GIVING 
GLOBAL 
GO 
GOBACK 
GREATER 
GREATER_OR_EQUAL 
GRID 
GROUP 
HEADING 
HIGHLIGHT 
HIGH_VALUE 
ID 
IDENTIFICATION 
IF 
IGNORE 
IGNORING 
IN 
INDEX 
INDEXED 
INDICATE 
INITIALIZE 
INITIALIZED 
INITIATE 
INPUT 
INPUT_OUTPUT 
INSPECT 
INTO 
INTRINSIC 
INVALID 
INVALID_KEY 
IS 
I_O 
I_O_CONTROL 
JUSTIFIED 
KEPT 
KEY 
KEYBOARD 
LABEL 
LAST 
LEADING 
LEFT 
LEFTLINE 
LENGTH 
LENGTH_OF 
LESS 
LESS_OR_EQUAL 
LIMIT 
LIMITS 
LINAGE 
LINAGE_COUNTER 
LINE 
LINE_COUNTER 
LINES 
LINKAGE 
LITERAL 
LOCALE 
LOCALE_DATE_FUNC 
LOCALE_TIME_FUNC 
LOCALE_TIME_FROM_FUNC 
LOCAL_STORAGE 
LOCK 
LOWER 
LOWER_CASE_FUNC 
LOWLIGHT 
LOW_VALUE 
MANUAL 
MEMORY 
MERGE 
MINUS 
MNEMONIC_NAME 
MODE 
MOVE 
MULTIPLE 
MULTIPLY 
NAME 
NATIONAL 
NATIONAL_EDITED 
NATIONAL_OF_FUNC 
NATIVE 
NEAREST_AWAY_FROM_ZERO 
NEAREST_EVEN 
NEAREST_TOWARD_ZERO 
NEGATIVE 
NEXT 
NEXT_PAGE 
NO 
NO_ECHO 
NORMAL 
NOT 
NOTHING 
NOT_END 
NOT_EOP 
NOT_ESCAPE 
NOT_EQUAL 
NOT_EXCEPTION 
NOT_INVALID_KEY 
NOT_OVERFLOW 
NOT_SIZE_ERROR 
NO_ADVANCING 
NUMBER 
NUMBERS 
NUMERIC 
NUMERIC_EDITED 
NUMVALC_FUNC 
OBJECT_COMPUTER 
OCCURS 
OF 
OFF 
OMITTED 
ON 
ONLY 
OPEN 
OPTIONAL 
OR 
ORDER 
ORGANIZATION 
OTHER 
OUTPUT 
OVERLINE 
PACKED_DECIMAL 
PADDING 
PAGE 
PAGE_COUNTER 
PARAGRAPH 
PERFORM 
PH 
PF 
PICTURE 
PICTURE_SYMBOL 
PLUS 
POINTER 
POSITION 
POSITIVE 
PRESENT 
PREVIOUS 
PRINT 
PRINTER 
PRINTER_1 
PRINTING 
PROCEDURE 
PROCEDURES 
PROCEED 
PROGRAM 
PROGRAM_ID 
PROGRAM_NAME 
PROGRAM_POINTER 
PROHIBITED 
PROMPT 
PROTECTED 
QUOTE 
RANDOM 
RD 
READ 
READY_TRACE 
RECORD 
RECORDING 
RECORDS 
RECURSIVE 
REDEFINES 
REEL 
REFERENCE 
REFERENCES 
RELATIVE 
RELEASE 
REMAINDER 
REMOVAL 
RENAMES 
REPLACE 
REPLACING 
REPORT 
REPORTING 
REPORTS 
REPOSITORY 
REQUIRED 
RESERVE 
RESET 
RESET_TRACE 
RETURN 
RETURNING 
REVERSE_FUNC 
REVERSE_VIDEO 
REVERSED 
REWIND 
REWRITE 
RF 
RH 
RIGHT 
ROLLBACK 
ROUNDED 
RUN 
SAME 
SCREEN 
SCREEN_CONTROL 
SCROLL 
SD 
SEARCH 
SECTION 
SECURE 
SEGMENT_LIMIT 
SELECT 
SEMI_COLON 
SENTENCE 
SEPARATE 
SEQUENCE 
SEQUENTIAL 
SET 
SHARING 
SIGN 
SIGNED 
SIGNED_INT 
SIGNED_LONG 
SIGNED_SHORT 
SIZE 
SIZE_ERROR 
SORT 
SORT_MERGE 
SOURCE 
SOURCE_COMPUTER 
SPACE 
SPECIAL_NAMES 
STANDARD 
STANDARD_1 
STANDARD_2 
START 
STATIC 
STATUS 
STDCALL 
STEP 
STOP 
STRING 
SUBSTITUTE_FUNC 
SUBSTITUTE_CASE_FUNC 
SUBTRACT 
SUM 
SUPPRESS 
SYMBOLIC 
SYNCHRONIZED 
SYSTEM_DEFAULT 
SYSTEM_OFFSET 
TAB 
TALLYING 
TAPE 
TERMINATE 
TEST 
THAN 
THEN 
THRU 
TIME 
TIMEOUT 
TIMES 
TO 
TOK_AMPER 
TOK_CLOSE_PAREN 
TOK_COLON 
TOK_DIV 
TOK_DOT 
TOK_EQUAL 
TOK_FALSE 
TOK_FILE 
TOK_GREATER 
TOK_INITIAL 
TOK_LESS 
TOK_MINUS 
TOK_MUL 
TOK_NULL 
TOK_OVERFLOW 
TOK_OPEN_PAREN 
TOK_PLUS 
TOK_TRUE 
TOP 
TOWARD_GREATER 
TOWARD_LESSER 
TRAILING 
TRANSFORM 
TRIM_FUNC 
TRUNCATION 
TYPE 
UNDERLINE 
UNIT 
UNLOCK 
UNSIGNED 
UNSIGNED_INT 
UNSIGNED_LONG 
UNSIGNED_SHORT 
UNSTRING 
UNTIL 
UP 
UPDATE 
UPON 
UPON_ARGUMENT_NUMBER 
UPON_COMMAND_LINE 
UPON_ENVIRONMENT_NAME 
UPON_ENVIRONMENT_VALUE 
UPPER 
UPPER_CASE_FUNC 
USAGE 
USE 
USER 
USER_DEFAULT 
USER_FUNCTION_NAME 
USING 
VALUE 
VARYING 
WAIT 
WHEN 
WHEN_COMPILED_FUNC 
WITH 
WORD 
WORDS 
WORKING_STORAGE 
WRITE 
YYYYDDD 
YYYYMMDD 
ZERO 
SHIFT_PREFER 
TOKEN_EOF 
ALSO 
BY 
COPY 
EQEQ 
IN 
LAST 
LEADING 
OF 
OFF 
PRINTING 
REPLACE 
REPLACING 
SUPPRESS 
TRAILING 
DOT 
GARBAGE 
SOURCE_DIRECTIVE 
FORMAT 
IS 
FIXED 
FREE 
DEFINE_DIRECTIVE 
AS 
PARAMETER 
OVERRIDE 
SET_DIRECTIVE 
CONSTANT 
SOURCEFORMAT 
FOLDCOPYNAME 
NOFOLDCOPYNAME 
IF_DIRECTIVE 
ELSE_DIRECTIVE 
ENDIF_DIRECTIVE 
ELIF_DIRECTIVE 
GE 
LE 
LT 
GT 
EQ 
NE 
NOT 
THAN 
TO 
OR 
EQUAL 
GREATER 
LESS 
SET 
DEFINED 
TURN_DIRECTIVE 
ON 
CHECKING 
WITH 
LOCATION 
TERMINATOR 
TOKEN 
VARIABLE 
LITERAL 
TOKEN_EOF 
ALSO 
BY 
COPY 
EQEQ 
IN 
LAST 
LEADING 
OF 
OFF 
PRINTING 
REPLACE 
REPLACING 
SUPPRESS 
TRAILING 
DOT 
GARBAGE 
SOURCE_DIRECTIVE 
FORMAT 
IS 
FIXED 
FREE 
DEFINE_DIRECTIVE 
AS 
PARAMETER 
OVERRIDE 
SET_DIRECTIVE 
CONSTANT 
SOURCEFORMAT 
FOLDCOPYNAME 
NOFOLDCOPYNAME 
IF_DIRECTIVE 
ELSE_DIRECTIVE 
ENDIF_DIRECTIVE 
ELIF_DIRECTIVE 
GE 
LE 
LT 
GT 
EQ 
NE 
NOT 
THAN 
TO 
OR 
EQUAL 
GREATER 
LESS 
SET 
DEFINED 
TURN_DIRECTIVE 
ON 
CHECKING 
WITH 
LOCATION 
TERMINATOR 
TOKEN 
VARIABLE 
LITERAL 

Definition at line 1343 of file parser.c.

1344  {
1345  TOKEN_EOF = 0,
1346  ACCEPT = 258,
1347  ACCESS = 259,
1348  ADD = 260,
1349  ADDRESS = 261,
1350  ADVANCING = 262,
1351  AFTER = 263,
1352  ALL = 264,
1353  ALLOCATE = 265,
1354  ALPHABET = 266,
1355  ALPHABETIC = 267,
1356  ALPHABETIC_LOWER = 268,
1357  ALPHABETIC_UPPER = 269,
1358  ALPHANUMERIC = 270,
1359  ALPHANUMERIC_EDITED = 271,
1360  ALSO = 272,
1361  ALTER = 273,
1362  ALTERNATE = 274,
1363  AND = 275,
1364  ANY = 276,
1365  ARE = 277,
1366  AREA = 278,
1367  ARGUMENT_NUMBER = 279,
1368  ARGUMENT_VALUE = 280,
1369  AS = 281,
1370  ASCENDING = 282,
1371  ASCII = 283,
1372  ASSIGN = 284,
1373  AT = 285,
1374  ATTRIBUTE = 286,
1375  AUTO = 287,
1376  AUTOMATIC = 288,
1377  AWAY_FROM_ZERO = 289,
1378  BACKGROUND_COLOR = 290,
1379  BASED = 291,
1380  BEFORE = 292,
1381  BELL = 293,
1382  BINARY = 294,
1383  BINARY_C_LONG = 295,
1384  BINARY_CHAR = 296,
1385  BINARY_DOUBLE = 297,
1386  BINARY_LONG = 298,
1387  BINARY_SHORT = 299,
1388  BLANK = 300,
1389  BLINK = 301,
1390  BLOCK = 302,
1391  BOTTOM = 303,
1392  BY = 304,
1393  BYTE_LENGTH = 305,
1394  CALL = 306,
1395  CANCEL = 307,
1396  CAPACITY = 308,
1397  CF = 309,
1398  CH = 310,
1399  CHAINING = 311,
1400  CHARACTER = 312,
1401  CHARACTERS = 313,
1402  CLASS = 314,
1403  CLASSIFICATION = 315,
1404  CLOSE = 316,
1405  CODE = 317,
1406  CODE_SET = 318,
1407  COLLATING = 319,
1408  COL = 320,
1409  COLS = 321,
1410  COLUMN = 322,
1411  COLUMNS = 323,
1412  COMMA = 324,
1413  COMMAND_LINE = 325,
1414  COMMA_DELIM = 326,
1415  COMMIT = 327,
1416  COMMON = 328,
1417  COMP = 329,
1418  COMPUTE = 330,
1419  COMP_1 = 331,
1420  COMP_2 = 332,
1421  COMP_3 = 333,
1422  COMP_4 = 334,
1423  COMP_5 = 335,
1424  COMP_6 = 336,
1425  COMP_X = 337,
1426  CONCATENATE_FUNC = 338,
1427  CONDITION = 339,
1428  CONFIGURATION = 340,
1429  CONSTANT = 341,
1430  CONTAINS = 342,
1431  CONTENT = 343,
1432  CONTINUE = 344,
1433  CONTROL = 345,
1434  CONTROLS = 346,
1435  CONVERSION = 347,
1436  CONVERTING = 348,
1437  COPY = 349,
1438  CORRESPONDING = 350,
1439  COUNT = 351,
1440  CRT = 352,
1441  CRT_UNDER = 353,
1442  CURRENCY = 354,
1443  CURRENT_DATE_FUNC = 355,
1444  CURSOR = 356,
1445  CYCLE = 357,
1446  DATA = 358,
1447  DATE = 359,
1448  DAY = 360,
1449  DAY_OF_WEEK = 361,
1450  DE = 362,
1451  DEBUGGING = 363,
1452  DECIMAL_POINT = 364,
1453  DECLARATIVES = 365,
1454  DEFAULT = 366,
1455  DELETE = 367,
1456  DELIMITED = 368,
1457  DELIMITER = 369,
1458  DEPENDING = 370,
1459  DESCENDING = 371,
1460  DETAIL = 372,
1461  DISC = 373,
1462  DISK = 374,
1463  DISPLAY = 375,
1464  DISPLAY_OF_FUNC = 376,
1465  DIVIDE = 377,
1466  DIVISION = 378,
1467  DOWN = 379,
1468  DUPLICATES = 380,
1469  DYNAMIC = 381,
1470  EBCDIC = 382,
1471  EC = 383,
1472  ELSE = 384,
1473  END = 385,
1474  END_ACCEPT = 386,
1475  END_ADD = 387,
1476  END_CALL = 388,
1477  END_COMPUTE = 389,
1478  END_DELETE = 390,
1479  END_DISPLAY = 391,
1480  END_DIVIDE = 392,
1481  END_EVALUATE = 393,
1482  END_FUNCTION = 394,
1483  END_IF = 395,
1484  END_MULTIPLY = 396,
1485  END_PERFORM = 397,
1486  END_PROGRAM = 398,
1487  END_READ = 399,
1488  END_RETURN = 400,
1489  END_REWRITE = 401,
1490  END_SEARCH = 402,
1491  END_START = 403,
1492  END_STRING = 404,
1493  END_SUBTRACT = 405,
1494  END_UNSTRING = 406,
1495  END_WRITE = 407,
1496  ENTRY = 408,
1497  ENVIRONMENT = 409,
1498  ENVIRONMENT_NAME = 410,
1499  ENVIRONMENT_VALUE = 411,
1500  EOL = 412,
1501  EOP = 413,
1502  EOS = 414,
1503  EQUAL = 415,
1504  ERASE = 416,
1505  ERROR = 417,
1506  ESCAPE = 418,
1507  EVALUATE = 419,
1508  EVENT_STATUS = 420,
1509  EXCEPTION = 421,
1510  EXCEPTION_CONDITION = 422,
1511  EXCLUSIVE = 423,
1512  EXIT = 424,
1513  EXPONENTIATION = 425,
1514  EXTEND = 426,
1515  EXTERNAL = 427,
1516  FD = 428,
1517  FILE_CONTROL = 429,
1518  FILE_ID = 430,
1519  FILLER = 431,
1520  FINAL = 432,
1521  FIRST = 433,
1522  FLOAT_BINARY_128 = 434,
1523  FLOAT_BINARY_32 = 435,
1524  FLOAT_BINARY_64 = 436,
1525  FLOAT_DECIMAL_16 = 437,
1526  FLOAT_DECIMAL_34 = 438,
1527  FLOAT_DECIMAL_7 = 439,
1528  FLOAT_EXTENDED = 440,
1529  FLOAT_LONG = 441,
1530  FLOAT_SHORT = 442,
1531  FOOTING = 443,
1532  FOR = 444,
1533  FOREGROUND_COLOR = 445,
1534  FOREVER = 446,
1535  FORMATTED_DATE_FUNC = 447,
1537  FORMATTED_TIME_FUNC = 449,
1538  FREE = 450,
1539  FROM = 451,
1540  FROM_CRT = 452,
1541  FULL = 453,
1542  FUNCTION = 454,
1543  FUNCTION_ID = 455,
1544  FUNCTION_NAME = 456,
1545  GENERATE = 457,
1546  GIVING = 458,
1547  GLOBAL = 459,
1548  GO = 460,
1549  GOBACK = 461,
1550  GREATER = 462,
1551  GREATER_OR_EQUAL = 463,
1552  GRID = 464,
1553  GROUP = 465,
1554  HEADING = 466,
1555  HIGHLIGHT = 467,
1556  HIGH_VALUE = 468,
1557  ID = 469,
1558  IDENTIFICATION = 470,
1559  IF = 471,
1560  IGNORE = 472,
1561  IGNORING = 473,
1562  IN = 474,
1563  INDEX = 475,
1564  INDEXED = 476,
1565  INDICATE = 477,
1566  INITIALIZE = 478,
1567  INITIALIZED = 479,
1568  INITIATE = 480,
1569  INPUT = 481,
1570  INPUT_OUTPUT = 482,
1571  INSPECT = 483,
1572  INTO = 484,
1573  INTRINSIC = 485,
1574  INVALID = 486,
1575  INVALID_KEY = 487,
1576  IS = 488,
1577  I_O = 489,
1578  I_O_CONTROL = 490,
1579  JUSTIFIED = 491,
1580  KEPT = 492,
1581  KEY = 493,
1582  KEYBOARD = 494,
1583  LABEL = 495,
1584  LAST = 496,
1585  LEADING = 497,
1586  LEFT = 498,
1587  LEFTLINE = 499,
1588  LENGTH = 500,
1589  LENGTH_OF = 501,
1590  LESS = 502,
1591  LESS_OR_EQUAL = 503,
1592  LIMIT = 504,
1593  LIMITS = 505,
1594  LINAGE = 506,
1595  LINAGE_COUNTER = 507,
1596  LINE = 508,
1597  LINE_COUNTER = 509,
1598  LINES = 510,
1599  LINKAGE = 511,
1600  LITERAL = 512,
1601  LOCALE = 513,
1602  LOCALE_DATE_FUNC = 514,
1603  LOCALE_TIME_FUNC = 515,
1604  LOCALE_TIME_FROM_FUNC = 516,
1605  LOCAL_STORAGE = 517,
1606  LOCK = 518,
1607  LOWER = 519,
1608  LOWER_CASE_FUNC = 520,
1609  LOWLIGHT = 521,
1610  LOW_VALUE = 522,
1611  MANUAL = 523,
1612  MEMORY = 524,
1613  MERGE = 525,
1614  MINUS = 526,
1615  MNEMONIC_NAME = 527,
1616  MODE = 528,
1617  MOVE = 529,
1618  MULTIPLE = 530,
1619  MULTIPLY = 531,
1620  NAME = 532,
1621  NATIONAL = 533,
1622  NATIONAL_EDITED = 534,
1623  NATIONAL_OF_FUNC = 535,
1624  NATIVE = 536,
1625  NEAREST_AWAY_FROM_ZERO = 537,
1626  NEAREST_EVEN = 538,
1627  NEAREST_TOWARD_ZERO = 539,
1628  NEGATIVE = 540,
1629  NEXT = 541,
1630  NEXT_PAGE = 542,
1631  NO = 543,
1632  NO_ECHO = 544,
1633  NORMAL = 545,
1634  NOT = 546,
1635  NOTHING = 547,
1636  NOT_END = 548,
1637  NOT_EOP = 549,
1638  NOT_ESCAPE = 550,
1639  NOT_EQUAL = 551,
1640  NOT_EXCEPTION = 552,
1641  NOT_INVALID_KEY = 553,
1642  NOT_OVERFLOW = 554,
1643  NOT_SIZE_ERROR = 555,
1644  NO_ADVANCING = 556,
1645  NUMBER = 557,
1646  NUMBERS = 558,
1647  NUMERIC = 559,
1648  NUMERIC_EDITED = 560,
1649  NUMVALC_FUNC = 561,
1650  OBJECT_COMPUTER = 562,
1651  OCCURS = 563,
1652  OF = 564,
1653  OFF = 565,
1654  OMITTED = 566,
1655  ON = 567,
1656  ONLY = 568,
1657  OPEN = 569,
1658  OPTIONAL = 570,
1659  OR = 571,
1660  ORDER = 572,
1661  ORGANIZATION = 573,
1662  OTHER = 574,
1663  OUTPUT = 575,
1664  OVERLINE = 576,
1665  PACKED_DECIMAL = 577,
1666  PADDING = 578,
1667  PAGE = 579,
1668  PAGE_COUNTER = 580,
1669  PARAGRAPH = 581,
1670  PERFORM = 582,
1671  PH = 583,
1672  PF = 584,
1673  PICTURE = 585,
1674  PICTURE_SYMBOL = 586,
1675  PLUS = 587,
1676  POINTER = 588,
1677  POSITION = 589,
1678  POSITIVE = 590,
1679  PRESENT = 591,
1680  PREVIOUS = 592,
1681  PRINT = 593,
1682  PRINTER = 594,
1683  PRINTER_1 = 595,
1684  PRINTING = 596,
1685  PROCEDURE = 597,
1686  PROCEDURES = 598,
1687  PROCEED = 599,
1688  PROGRAM = 600,
1689  PROGRAM_ID = 601,
1690  PROGRAM_NAME = 602,
1691  PROGRAM_POINTER = 603,
1692  PROHIBITED = 604,
1693  PROMPT = 605,
1694  PROTECTED = 606,
1695  QUOTE = 607,
1696  RANDOM = 608,
1697  RD = 609,
1698  READ = 610,
1699  READY_TRACE = 611,
1700  RECORD = 612,
1701  RECORDING = 613,
1702  RECORDS = 614,
1703  RECURSIVE = 615,
1704  REDEFINES = 616,
1705  REEL = 617,
1706  REFERENCE = 618,
1707  REFERENCES = 619,
1708  RELATIVE = 620,
1709  RELEASE = 621,
1710  REMAINDER = 622,
1711  REMOVAL = 623,
1712  RENAMES = 624,
1713  REPLACE = 625,
1714  REPLACING = 626,
1715  REPORT = 627,
1716  REPORTING = 628,
1717  REPORTS = 629,
1718  REPOSITORY = 630,
1719  REQUIRED = 631,
1720  RESERVE = 632,
1721  RESET = 633,
1722  RESET_TRACE = 634,
1723  RETURN = 635,
1724  RETURNING = 636,
1725  REVERSE_FUNC = 637,
1726  REVERSE_VIDEO = 638,
1727  REVERSED = 639,
1728  REWIND = 640,
1729  REWRITE = 641,
1730  RF = 642,
1731  RH = 643,
1732  RIGHT = 644,
1733  ROLLBACK = 645,
1734  ROUNDED = 646,
1735  RUN = 647,
1736  SAME = 648,
1737  SCREEN = 649,
1738  SCREEN_CONTROL = 650,
1739  SCROLL = 651,
1740  SD = 652,
1741  SEARCH = 653,
1742  SECTION = 654,
1743  SECURE = 655,
1744  SEGMENT_LIMIT = 656,
1745  SELECT = 657,
1746  SEMI_COLON = 658,
1747  SENTENCE = 659,
1748  SEPARATE = 660,
1749  SEQUENCE = 661,
1750  SEQUENTIAL = 662,
1751  SET = 663,
1752  SHARING = 664,
1753  SIGN = 665,
1754  SIGNED = 666,
1755  SIGNED_INT = 667,
1756  SIGNED_LONG = 668,
1757  SIGNED_SHORT = 669,
1758  SIZE = 670,
1759  SIZE_ERROR = 671,
1760  SORT = 672,
1761  SORT_MERGE = 673,
1762  SOURCE = 674,
1763  SOURCE_COMPUTER = 675,
1764  SPACE = 676,
1765  SPECIAL_NAMES = 677,
1766  STANDARD = 678,
1767  STANDARD_1 = 679,
1768  STANDARD_2 = 680,
1769  START = 681,
1770  STATIC = 682,
1771  STATUS = 683,
1772  STDCALL = 684,
1773  STEP = 685,
1774  STOP = 686,
1775  STRING = 687,
1776  SUBSTITUTE_FUNC = 688,
1777  SUBSTITUTE_CASE_FUNC = 689,
1778  SUBTRACT = 690,
1779  SUM = 691,
1780  SUPPRESS = 692,
1781  SYMBOLIC = 693,
1782  SYNCHRONIZED = 694,
1783  SYSTEM_DEFAULT = 695,
1784  SYSTEM_OFFSET = 696,
1785  TAB = 697,
1786  TALLYING = 698,
1787  TAPE = 699,
1788  TERMINATE = 700,
1789  TEST = 701,
1790  THAN = 702,
1791  THEN = 703,
1792  THRU = 704,
1793  TIME = 705,
1794  TIMEOUT = 706,
1795  TIMES = 707,
1796  TO = 708,
1797  TOK_AMPER = 709,
1798  TOK_CLOSE_PAREN = 710,
1799  TOK_COLON = 711,
1800  TOK_DIV = 712,
1801  TOK_DOT = 713,
1802  TOK_EQUAL = 714,
1803  TOK_FALSE = 715,
1804  TOK_FILE = 716,
1805  TOK_GREATER = 717,
1806  TOK_INITIAL = 718,
1807  TOK_LESS = 719,
1808  TOK_MINUS = 720,
1809  TOK_MUL = 721,
1810  TOK_NULL = 722,
1811  TOK_OVERFLOW = 723,
1812  TOK_OPEN_PAREN = 724,
1813  TOK_PLUS = 725,
1814  TOK_TRUE = 726,
1815  TOP = 727,
1816  TOWARD_GREATER = 728,
1817  TOWARD_LESSER = 729,
1818  TRAILING = 730,
1819  TRANSFORM = 731,
1820  TRIM_FUNC = 732,
1821  TRUNCATION = 733,
1822  TYPE = 734,
1823  UNDERLINE = 735,
1824  UNIT = 736,
1825  UNLOCK = 737,
1826  UNSIGNED = 738,
1827  UNSIGNED_INT = 739,
1828  UNSIGNED_LONG = 740,
1829  UNSIGNED_SHORT = 741,
1830  UNSTRING = 742,
1831  UNTIL = 743,
1832  UP = 744,
1833  UPDATE = 745,
1834  UPON = 746,
1835  UPON_ARGUMENT_NUMBER = 747,
1836  UPON_COMMAND_LINE = 748,
1837  UPON_ENVIRONMENT_NAME = 749,
1838  UPON_ENVIRONMENT_VALUE = 750,
1839  UPPER = 751,
1840  UPPER_CASE_FUNC = 752,
1841  USAGE = 753,
1842  USE = 754,
1843  USER = 755,
1844  USER_DEFAULT = 756,
1845  USER_FUNCTION_NAME = 757,
1846  USING = 758,
1847  VALUE = 759,
1848  VARYING = 760,
1849  WAIT = 761,
1850  WHEN = 762,
1851  WHEN_COMPILED_FUNC = 763,
1852  WITH = 764,
1853  WORD = 765,
1854  WORDS = 766,
1855  WORKING_STORAGE = 767,
1856  WRITE = 768,
1857  YYYYDDD = 769,
1858  YYYYMMDD = 770,
1859  ZERO = 771,
1860  SHIFT_PREFER = 772
1861  };
Definition: parser.c:1852
Definition: parser.c:1532
Definition: parser.c:1437
Definition: parser.c:1583
Definition: parser.c:1577
Definition: parser.c:1792
Definition: parser.c:1504
Definition: parser.c:1563
Definition: parser.c:1785
Definition: parser.c:1364
Definition: parser.c:1363
Definition: parser.c:1653
Definition: parser.c:1671
Definition: parser.c:1562
Definition: parser.c:1392
Definition: parser.c:1592
Definition: parser.c:1847
Definition: parser.c:1856
Definition: parser.c:1389
Definition: parser.c:1854
Definition: parser.c:1366
Definition: parser.c:1397
Definition: parser.c:1659
Definition: parser.c:1843
Definition: parser.c:1450
Definition: parser.c:1613
Definition: parser.c:1445
Definition: parser.c:1697
Definition: parser.c:1655
Definition: parser.c:1365
Definition: parser.c:1409
Definition: parser.c:1695
Definition: parser.c:1796
Definition: parser.c:1793
Definition: parser.c:1404
Definition: parser.c:1606
Definition: parser.c:1379
Definition: parser.c:1371
Definition: parser.c:1839
Definition: parser.c:1405
Definition: parser.c:1440
Definition: parser.c:1520
Definition: parser.c:1580
Definition: parser.c:1381
Definition: parser.c:1815
Definition: parser.c:1471
Definition: parser.c:1607
Definition: parser.c:1787
Definition: parser.c:1731
Definition: parser.c:1842
Definition: parser.c:1596
Definition: parser.c:1773
Definition: parser.c:1388
Definition: parser.c:1553
Definition: parser.c:1417
Definition: parser.c:1631
Definition: parser.c:1584
Definition: parser.c:1557
Definition: parser.c:1789
Definition: parser.c:1841
Definition: parser.c:1629
Definition: parser.c:1496
Definition: parser.c:1348
Definition: parser.c:1662
Definition: parser.c:1672
Definition: parser.c:1698
Definition: parser.c:1774
Definition: parser.c:1735
Definition: parser.c:1539
Definition: parser.c:1859
Definition: parser.c:1569
Definition: parser.c:1598
Definition: parser.c:1559
Definition: parser.c:1590
Definition: parser.c:1652
Definition: parser.c:1373
Definition: parser.c:1751
Definition: parser.c:1351
Definition: parser.c:1779
Definition: parser.c:1681
Definition: parser.c:1572
Definition: parser.c:1849
Definition: parser.c:1467
Definition: parser.c:1758
Definition: parser.c:1736
Definition: parser.c:1446
Definition: parser.c:1375
Definition: parser.c:1473
Definition: parser.c:1447
Definition: parser.c:1616
Definition: parser.c:1503
Definition: parser.c:1705
Definition: parser.c:1541
Definition: parser.c:1657
Definition: parser.c:1394
Definition: parser.c:1850
Definition: parser.c:1764
Definition: parser.c:1732
Definition: parser.c:1656
Definition: parser.c:1660
Definition: parser.c:1472
Definition: parser.c:1586
Definition: parser.c:1753
Definition: parser.c:1824
Definition: parser.c:1448
Definition: parser.c:1760
Definition: parser.c:1538
Definition: parser.c:1790
Definition: parser.c:1361
Definition: parser.c:1675
Definition: parser.c:1552
Definition: parser.c:1831
Definition: parser.c:1634
Definition: parser.c:1398
Definition: parser.c:1505
Definition: parser.c:1721
Definition: parser.c:1617
Definition: parser.c:1581
Definition: parser.c:1769
Definition: parser.c:1360
Definition: parser.c:1834
Definition: parser.c:1667
Definition: parser.c:1412
Definition: parser.c:1502
Definition: parser.c:1614
Definition: parser.c:1501
Definition: parser.c:1832
Definition: parser.c:1462
Definition: parser.c:1791
Definition: parser.c:1521
Definition: parser.c:1795
Definition: parser.c:1369
Definition: parser.c:1500
Definition: parser.c:1548
Definition: parser.c:1512
Definition: parser.c:1402
Definition: parser.c:1730
Definition: parser.c:1390
Definition: parser.c:1352
Definition: parser.c:1853
Definition: parser.c:1740
Definition: parser.c:1576
Definition: parser.c:1822
Definition: parser.c:1439
Definition: parser.c:1516
Definition: parser.c:1620
Definition: parser.c:1846
Definition: parser.c:1408
Definition: parser.c:1461

Function Documentation

static void attach_attrib_to_cur_stmt ( void  )
static

Definition at line 1075 of file parser.c.

References cb_statement::attr_ptr, and cobc_parse_malloc().

Referenced by check_attribs(), and check_attribs_with_conflict().

1076 {
1077  if (!current_statement->attr_ptr) {
1079  cobc_parse_malloc (sizeof(struct cb_attr_struct));
1080  }
1081 }
void * cobc_parse_malloc(const size_t size)
Definition: cobc.c:809
struct cb_attr_struct * attr_ptr
Definition: tree.h:1147
struct cb_statement * current_statement
Definition: parser.c:169

Here is the call graph for this function:

Here is the caller graph for this function:

static void begin_implicit_statement ( void  )
static

Definition at line 290 of file parser.c.

References cb_statement::body, cb_build_statement(), cb_list_add(), CB_TREE, cb_statement::flag_in_debug, in_debugging, and NULL.

Referenced by emit_default_displays_for_x_list(), and yyparse().

291 {
296 }
#define CB_TREE(x)
Definition: tree.h:440
static struct cb_statement * main_statement
Definition: parser.c:186
static unsigned int in_debugging
Definition: parser.c:210
struct cb_statement * cb_build_statement(const char *name)
Definition: tree.c:3201
unsigned int flag_in_debug
Definition: tree.h:1150
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
struct cb_statement * current_statement
Definition: parser.c:169
cb_tree body
Definition: tree.h:1139
cb_tree cb_list_add(cb_tree l, cb_tree x)
Definition: tree.c:1315

Here is the call graph for this function:

Here is the caller graph for this function:

static void begin_scope_of_program_name ( struct cb_program program)
static

Definition at line 695 of file parser.c.

References _, CB_CHAIN, cb_error_x(), cb_list_add(), CB_VALUE, cb_program::orig_program_id, and cb_program::program_name.

Referenced by set_up_program().

696 {
697  const char *prog_name = program->program_name;
698  const char *prog_id = program->orig_program_id;
699  const char *elt_name;
700  const char *elt_id;
701  cb_tree l;
702 
703  /* Error if a program with the same name has been defined. */
704  for (l = defined_prog_list; l; l = CB_CHAIN (l)) {
705  elt_name = ((struct cb_program *) CB_VALUE (l))->program_name;
706  elt_id = ((struct cb_program *) CB_VALUE (l))->orig_program_id;
707  if (cb_fold_call && strcasecmp (prog_name, elt_name) == 0) {
708  cb_error_x ((cb_tree) program,
709  _("Redefinition of program name '%s'"),
710  elt_name);
711  } else if (strcmp (prog_id, elt_id) == 0) {
712  cb_error_x ((cb_tree) program,
713  _("Redefinition of program ID '%s'"),
714  elt_id);
715  return;
716  }
717  }
718 
719  /* Otherwise, add the program to the list. */
721  (cb_tree) program);
722 }
void cb_error_x(cb_tree x, const char *fmt,...)
Definition: error.c:233
#define CB_VALUE(x)
Definition: tree.h:1193
cb_tree defined_prog_list
Definition: parser.c:172
#define _(s)
Definition: cobcrun.c:59
#define CB_CHAIN(x)
Definition: tree.h:1194
const char * program_name
Definition: tree.h:1243
char * orig_program_id
Definition: tree.h:1246
cb_tree cb_list_add(cb_tree l, cb_tree x)
Definition: tree.c:1315

Here is the call graph for this function:

Here is the caller graph for this function:

static void begin_statement ( const char *  name,
const unsigned int  term 
)
static

Definition at line 271 of file parser.c.

References _, cb_build_statement(), cb_source_file, cb_source_line, CB_TREE, cb_warning(), check_unreached, cobc_glob_line, current_statement, emit_statement, cb_statement::flag_in_debug, cb_label::flag_statement, in_debugging, cb_statement::statement, and term_array.

Referenced by yyparse().

272 {
273  if (cb_warn_unreachable && check_unreached) {
274  cb_warning (_("Unreachable statement '%s'"), name);
275  }
278  CB_TREE (current_statement)->source_file = cb_source_file;
279  CB_TREE (current_statement)->source_line = cb_source_line;
283  if (term) {
284  term_array[term]++;
285  }
287 }
static int term_array[22U]
Definition: parser.c:246
#define CB_TREE(x)
Definition: tree.h:440
const char * cb_source_file
Definition: cobc.c:145
#define emit_statement(x)
Definition: parser.c:88
char * cobc_glob_line
Definition: parser.c:173
static struct cb_statement * main_statement
Definition: parser.c:186
static unsigned int in_debugging
Definition: parser.c:210
static unsigned int check_unreached
Definition: parser.c:208
struct cb_statement * cb_build_statement(const char *name)
Definition: tree.c:3201
unsigned int flag_in_debug
Definition: tree.h:1150
#define _(s)
Definition: cobcrun.c:59
unsigned int flag_statement
Definition: tree.h:792
void cb_warning(const char *,...) COB_A_FORMAT12
Definition: error.c:87
int cb_source_line
Definition: cobc.c:178
struct cb_statement * current_statement
Definition: parser.c:169
const char * statement
Definition: tree.h:1138
struct cb_label * current_paragraph
Definition: parser.c:171

Here is the call graph for this function:

Here is the caller graph for this function:

static void bit_set_attr ( const cb_tree  onoff,
const int  attrval 
)
static

Definition at line 1065 of file parser.c.

References cb_int1, setattr_val_off, and setattr_val_on.

Referenced by yyparse().

1066 {
1067  if (onoff == cb_int1) {
1068  setattr_val_on |= attrval;
1069  } else {
1070  setattr_val_off |= attrval;
1071  }
1072 }
cb_tree cb_int1
Definition: tree.c:134
static int setattr_val_on
Definition: parser.c:226
static int setattr_val_off
Definition: parser.c:227

Here is the caller graph for this function:

static void build_nested_special ( const int  ndepth)
static

Definition at line 620 of file parser.c.

References cb_build_constant(), cb_build_reference(), CB_CHAIN, cb_define(), cb_name(), CB_PURPOSE, CB_SYSTEM_NAME_P, CB_VALUE, and cb_program::mnemonic_spec_list.

Referenced by set_up_program().

621 {
622  cb_tree x;
623  cb_tree y;
624 
625  if (!ndepth) {
626  return;
627  }
628 
629  /* Inherit special name mnemonics from parent */
630  for (x = current_program->mnemonic_spec_list; x; x = CB_CHAIN (x)) {
632  if (CB_SYSTEM_NAME_P (CB_VALUE(x))) {
633  cb_define (y, CB_VALUE(x));
634  } else {
635  cb_build_constant (y, CB_VALUE(x));
636  }
637  }
638 }
cb_tree mnemonic_spec_list
Definition: tree.h:1268
cb_tree cb_build_constant(cb_tree name, cb_tree value)
Definition: tree.c:2189
char * cb_name(cb_tree x)
Definition: tree.c:735
#define CB_PURPOSE(x)
Definition: tree.h:1192
struct cb_program * current_program
Definition: parser.c:168
#define CB_VALUE(x)
Definition: tree.h:1193
#define CB_CHAIN(x)
Definition: tree.h:1194
cb_tree cb_build_reference(const char *name)
Definition: tree.c:2572
#define CB_SYSTEM_NAME_P(x)
Definition: tree.h:587
const char * cb_define(cb_tree name, cb_tree val)
Definition: tree.c:1367

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_attr_with_conflict ( const char *  clause,
const int  bitval,
const char *  confl_clause,
const int  confl_bit,
int *  flags 
)
static

Definition at line 1035 of file parser.c.

References emit_conflicting_clause_message(), and emit_duplicate_clause_message().

Referenced by check_dispattr_with_conflict(), check_screen_attr_with_conflict(), and yyparse().

1038 {
1039  if (*flags & bitval) {
1041  } else if (*flags & confl_bit) {
1042  emit_conflicting_clause_message (clause, confl_clause);
1043  } else {
1044  *flags |= bitval;
1045  }
1046 }
static void emit_conflicting_clause_message(const char *clause, const char *conflicting)
Definition: parser.c:1022
static void emit_duplicate_clause_message(const char *clause)
Definition: parser.c:970

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_attribs ( cb_tree  fgc,
cb_tree  bgc,
cb_tree  scroll,
cb_tree  timeout,
cb_tree  prompt,
cb_tree  size_is,
const int  attrib 
)
static

Definition at line 1114 of file parser.c.

References attach_attrib_to_cur_stmt(), cb_statement::attr_ptr, check_field_attribs(), and cb_attr_struct::dispattrs.

Referenced by yyparse().

1117 {
1119  check_field_attribs (fgc, bgc, scroll, timeout, prompt, size_is);
1120 
1121  current_statement->attr_ptr->dispattrs |= attrib;
1122 }
struct cb_attr_struct * attr_ptr
Definition: tree.h:1147
static void attach_attrib_to_cur_stmt(void)
Definition: parser.c:1075
static void check_field_attribs(cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is)
Definition: parser.c:1084
struct cb_statement * current_statement
Definition: parser.c:169
int dispattrs
Definition: tree.h:1130

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_attribs_with_conflict ( cb_tree  fgc,
cb_tree  bgc,
cb_tree  scroll,
cb_tree  timeout,
cb_tree  prompt,
cb_tree  size_is,
const char *  attrib_name,
const int  attrib,
const char *  confl_name,
const int  confl_attrib 
)
static

Definition at line 1125 of file parser.c.

References attach_attrib_to_cur_stmt(), check_dispattr_with_conflict(), and check_field_attribs().

Referenced by yyparse().

1129 {
1131  check_field_attribs (fgc, bgc, scroll, timeout, prompt, size_is);
1132 
1133  check_dispattr_with_conflict (attrib_name, attrib, confl_name,
1134  confl_attrib);
1135 }
static COB_INLINE COB_A_INLINE void check_dispattr_with_conflict(const char *attrib_name, const int attrib, const char *confl_name, const int confl_attrib)
Definition: parser.c:1057
static void attach_attrib_to_cur_stmt(void)
Definition: parser.c:1075
static void check_field_attribs(cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is)
Definition: parser.c:1084

Here is the call graph for this function:

Here is the caller graph for this function:

static COB_INLINE COB_A_INLINE void check_dispattr_with_conflict ( const char *  attrib_name,
const int  attrib,
const char *  confl_name,
const int  confl_attrib 
)
static

Definition at line 1057 of file parser.c.

References cb_statement::attr_ptr, check_attr_with_conflict(), and cb_attr_struct::dispattrs.

Referenced by check_attribs_with_conflict().

1059 {
1060  check_attr_with_conflict (attrib_name, attrib, confl_name, confl_attrib,
1062 }
struct cb_attr_struct * attr_ptr
Definition: tree.h:1147
static void check_attr_with_conflict(const char *clause, const int bitval, const char *confl_clause, const int confl_bit, int *flags)
Definition: parser.c:1035
struct cb_statement * current_statement
Definition: parser.c:169
int dispattrs
Definition: tree.h:1130

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_field_attribs ( cb_tree  fgc,
cb_tree  bgc,
cb_tree  scroll,
cb_tree  timeout,
cb_tree  prompt,
cb_tree  size_is 
)
static

Definition at line 1084 of file parser.c.

References cb_statement::attr_ptr, cb_attr_struct::bgc, cb_attr_struct::fgc, cb_attr_struct::prompt, cb_attr_struct::scroll, cb_attr_struct::size_is, and cb_attr_struct::timeout.

Referenced by check_attribs(), and check_attribs_with_conflict().

1086 {
1087  /* [WITH] FOREGROUND-COLOR [IS] */
1088  if (fgc) {
1089  current_statement->attr_ptr->fgc = fgc;
1090  }
1091  /* [WITH] BACKGROUND-COLOR [IS] */
1092  if (bgc) {
1093  current_statement->attr_ptr->bgc = bgc;
1094  }
1095  /* [WITH] SCROLL UP | DOWN */
1096  if (scroll) {
1097  current_statement->attr_ptr->scroll = scroll;
1098  }
1099  /* [WITH] TIMEOUT [AFTER] */
1100  if (timeout) {
1101  current_statement->attr_ptr->timeout = timeout;
1102  }
1103  /* [WITH] PROMPT CHARACTER [IS] */
1104  if (prompt) {
1105  current_statement->attr_ptr->prompt = prompt;
1106  }
1107  /* [WITH] SIZE [IS] */
1108  if (size_is) {
1109  current_statement->attr_ptr->size_is = size_is;
1110  }
1111 }
cb_tree scroll
Definition: tree.h:1126
cb_tree size_is
Definition: tree.h:1129
struct cb_attr_struct * attr_ptr
Definition: tree.h:1147
cb_tree bgc
Definition: tree.h:1125
cb_tree timeout
Definition: tree.h:1127
cb_tree prompt
Definition: tree.h:1128
struct cb_statement * current_statement
Definition: parser.c:169
cb_tree fgc
Definition: tree.h:1124

Here is the caller graph for this function:

static int check_for_duplicate_prototype ( const cb_tree  prototype_name,
const cb_tree  func_prototype 
)
static

Definition at line 912 of file parser.c.

References _, cb_error_x(), CB_FUNC_PROTOTYPE, CB_FUNC_PROTOTYPE_P, cb_ref(), cb_warning_x(), CB_WORD_COUNT, get_literal_or_word_name(), and redefinition_error().

Referenced by set_up_func_prototype().

914 {
915  cb_tree dup;
916 
917  if (CB_WORD_COUNT (prototype_name) > 0) {
918  /* Make sure the duplicate is a prototype */
919  dup = cb_ref (prototype_name);
920  if (!CB_FUNC_PROTOTYPE_P (dup)) {
921  redefinition_error (prototype_name);
922  return 1;
923  }
924 
925  /* Check the duplicate prototypes match */
926  if (strcmp (CB_FUNC_PROTOTYPE (func_prototype)->ext_name,
927  CB_FUNC_PROTOTYPE (dup)->ext_name)) {
928  cb_error_x (prototype_name,
929  _("Duplicate REPOSITORY entries for '%s' do not match"),
930  get_literal_or_word_name (prototype_name));
931  } else {
932  cb_warning_x (prototype_name,
933  _("Duplicate REPOSITORY entry for '%s'"),
934  get_literal_or_word_name (prototype_name));
935  }
936  return 1;
937  }
938 
939  return 0;
940 }
void cb_error_x(cb_tree x, const char *fmt,...)
Definition: error.c:233
void cb_warning_x(cb_tree x, const char *fmt,...)
Definition: error.c:222
cb_tree cb_ref(cb_tree x)
Definition: tree.c:2653
static const char * get_literal_or_word_name(const cb_tree x)
Definition: parser.c:887
#define _(s)
Definition: cobcrun.c:59
void redefinition_error(cb_tree x)
Definition: error.c:284
#define CB_FUNC_PROTOTYPE(x)
Definition: tree.h:1339
#define CB_WORD_COUNT(x)
Definition: tree.h:905
#define CB_FUNC_PROTOTYPE_P(x)
Definition: tree.h:1340

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_headers_present ( const unsigned int  lev1,
const unsigned int  lev2,
const unsigned int  lev3,
const unsigned int  lev4 
)
static

Definition at line 590 of file parser.c.

References check_relaxed_syntax(), and header_check.

Referenced by set_up_program(), and yyparse().

592 {
593  /* Lev1 is always present and checked */
594  /* Lev2/3/4, if non-zero (forced) may be present */
595  if (!(header_check & lev1)) {
596  header_check |= lev1;
597  check_relaxed_syntax (lev1);
598  }
599  if (lev2) {
600  if (!(header_check & lev2)) {
601  header_check |= lev2;
602  check_relaxed_syntax (lev2);
603  }
604  }
605  if (lev3) {
606  if (!(header_check & lev3)) {
607  header_check |= lev3;
608  check_relaxed_syntax (lev3);
609  }
610  }
611  if (lev4) {
612  if (!(header_check & lev4)) {
613  header_check |= lev4;
614  check_relaxed_syntax (lev4);
615  }
616  }
617 }
static unsigned int header_check
Definition: parser.c:239
static void check_relaxed_syntax(const unsigned int lev)
Definition: parser.c:525

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_not_88_level ( cb_tree  x)
static

Definition at line 1191 of file parser.c.

References _, cb_error(), cb_error_node, CB_FIELD, cb_ref(), CB_TAG_REFERENCE, cb_field::level, and cb_tree_common::tag.

Referenced by yyparse().

1192 {
1193  struct cb_field *f;
1194 
1195  if (x == cb_error_node || x->tag != CB_TAG_REFERENCE) {
1196  return;
1197  }
1198 
1199  f = CB_FIELD (cb_ref (x));
1200 
1201  if (f != (struct cb_field *) cb_error_node && f->level == 88) {
1202  cb_error (_("88-level cannot be used here"));
1203  }
1204 }
cb_tree cb_ref(cb_tree x)
Definition: tree.c:2653
int level
Definition: tree.h:673
#define _(s)
Definition: cobcrun.c:59
Definition: tree.h:643
enum cb_tag tag
Definition: tree.h:429
cb_tree cb_error_node
Definition: tree.c:140
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
#define CB_FIELD(x)
Definition: tree.h:740

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_not_both ( const int  flag1,
const int  flag2,
const char *  flag1_name,
const char *  flag2_name,
const int  flags,
const int  flag_to_set 
)
static

Definition at line 990 of file parser.c.

References _, and cb_error().

Referenced by check_not_highlight_and_lowlight().

993 {
994  if (flag_to_set == flag1 && (flags & flag2)) {
995  cb_error (_("Cannot specify both %s and %s"),
996  flag1_name, flag2_name);
997  } else if (flag_to_set == flag2 && (flags & flag1)) {
998  cb_error (_("Cannot specify both %s and %s"),
999  flag1_name, flag2_name);
1000 
1001  }
1002 }
#define _(s)
Definition: cobcrun.c:59
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98

Here is the call graph for this function:

Here is the caller graph for this function:

static COB_INLINE COB_A_INLINE void check_not_highlight_and_lowlight ( const int  flags,
const int  flag_to_set 
)
static

Definition at line 1005 of file parser.c.

References check_not_both(), COB_SCREEN_HIGHLIGHT, and COB_SCREEN_LOWLIGHT.

Referenced by yyparse().

1006 {
1008  "HIGHLIGHT", "LOWLIGHT", flags, flag_to_set);
1009 }
static void check_not_both(const int flag1, const int flag2, const char *flag1_name, const char *flag2_name, const int flags, const int flag_to_set)
Definition: parser.c:990
#define COB_SCREEN_LOWLIGHT
Definition: common.h:908
#define COB_SCREEN_HIGHLIGHT
Definition: common.h:907

Here is the call graph for this function:

Here is the caller graph for this function:

static int check_prototype_redefines_current_func ( const cb_tree  prototype_name)
static

Definition at line 898 of file parser.c.

References _, cb_warning_x(), get_literal_or_word_name(), and cb_program::program_name.

Referenced by set_up_func_prototype().

899 {
900  const char *name = get_literal_or_word_name (prototype_name);
901 
902  if (strcasecmp (name, current_program->program_name) == 0) {
903  cb_warning_x (prototype_name, _("Prototype has same name as current function and will be ignored"));
904  return 1;
905  }
906 
907  return 0;
908 }
const char * name
Definition: tree.h:645
void cb_warning_x(cb_tree x, const char *fmt,...)
Definition: error.c:222
static const char * get_literal_or_word_name(const cb_tree x)
Definition: parser.c:887
struct cb_program * current_program
Definition: parser.c:168
#define _(s)
Definition: cobcrun.c:59
const char * program_name
Definition: tree.h:1243

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_relaxed_syntax ( const unsigned int  lev)
static

Definition at line 525 of file parser.c.

References _, cb_error(), cb_warning(), COBC_HD_COMMUNICATIONS_SECTION, COBC_HD_CONFIGURATION_SECTION, COBC_HD_DATA_DIVISION, COBC_HD_ENVIRONMENT_DIVISION, COBC_HD_FILE_CONTROL, COBC_HD_FILE_SECTION, COBC_HD_I_O_CONTROL, COBC_HD_INPUT_OUTPUT_SECTION, COBC_HD_LINKAGE_SECTION, COBC_HD_LOCAL_STORAGE_SECTION, COBC_HD_PROCEDURE_DIVISION, COBC_HD_PROGRAM_ID, COBC_HD_REPORT_SECTION, COBC_HD_SCREEN_SECTION, COBC_HD_SPECIAL_NAMES, and COBC_HD_WORKING_STORAGE_SECTION.

Referenced by check_headers_present(), and yyparse().

526 {
527  const char *s;
528 
529  switch (lev) {
531  s = "ENVIRONMENT DIVISION";
532  break;
534  s = "CONFIGURATION SECTION";
535  break;
537  s = "SPECIAL-NAMES";
538  break;
540  s = "INPUT-OUTPUT SECTION";
541  break;
543  s = "FILE-CONTROL";
544  break;
545  case COBC_HD_I_O_CONTROL:
546  s = "I-O-CONTROL";
547  break;
549  s = "DATA DIVISION";
550  break;
552  s = "FILE SECTION";
553  break;
555  s = "WORKING-STORAGE SECTION";
556  break;
558  s = "LOCAL-STORAGE SECTION";
559  break;
561  s = "LINKAGE SECTION";
562  break;
564  s = "COMMUNICATIONS SECTION";
565  break;
567  s = "REPORT SECTION";
568  break;
570  s = "SCREEN SECTION";
571  break;
573  s = "PROCEDURE DIVISION";
574  break;
575  case COBC_HD_PROGRAM_ID:
576  s = "PROGRAM-ID";
577  break;
578  default:
579  s = "Unknown";
580  break;
581  }
582  if (cb_relaxed_syntax_check) {
583  cb_warning (_("%s header missing - assumed"), s);
584  } else {
585  cb_error (_("%s header missing"), s);
586  }
587 }
#define COBC_HD_I_O_CONTROL
Definition: parser.c:256
#define COBC_HD_PROCEDURE_DIVISION
Definition: parser.c:265
#define COBC_HD_FILE_CONTROL
Definition: parser.c:255
#define COBC_HD_LINKAGE_SECTION
Definition: parser.c:261
#define COBC_HD_CONFIGURATION_SECTION
Definition: parser.c:252
#define COBC_HD_WORKING_STORAGE_SECTION
Definition: parser.c:259
#define COBC_HD_COMMUNICATIONS_SECTION
Definition: parser.c:262
#define _(s)
Definition: cobcrun.c:59
#define COBC_HD_SPECIAL_NAMES
Definition: parser.c:253
#define COBC_HD_REPORT_SECTION
Definition: parser.c:263
#define COBC_HD_SCREEN_SECTION
Definition: parser.c:264
#define COBC_HD_FILE_SECTION
Definition: parser.c:258
#define COBC_HD_LOCAL_STORAGE_SECTION
Definition: parser.c:260
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
#define COBC_HD_ENVIRONMENT_DIVISION
Definition: parser.c:251
#define COBC_HD_INPUT_OUTPUT_SECTION
Definition: parser.c:254
#define COBC_HD_DATA_DIVISION
Definition: parser.c:257
#define COBC_HD_PROGRAM_ID
Definition: parser.c:266
void cb_warning(const char *,...) COB_A_FORMAT12
Definition: error.c:87

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_repeated ( const char *  clause,
const unsigned int  bitval,
unsigned int *  already_seen 
)
static

Definition at line 980 of file parser.c.

References emit_duplicate_clause_message().

Referenced by check_set_usage(), and yyparse().

981 {
982  if (*already_seen & bitval) {
984  } else {
985  *already_seen |= bitval;
986  }
987 }
static void emit_duplicate_clause_message(const char *clause)
Definition: parser.c:970

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_screen_attr ( const char *  clause,
const int  bitval 
)
static

Definition at line 1012 of file parser.c.

References emit_duplicate_clause_message(), and cb_field::screen_flag.

Referenced by yyparse().

1013 {
1014  if (current_field->screen_flag & bitval) {
1016  } else {
1017  current_field->screen_flag |= bitval;
1018  }
1019 }
static struct cb_field * current_field
Definition: parser.c:189
int screen_flag
Definition: tree.h:684
static void emit_duplicate_clause_message(const char *clause)
Definition: parser.c:970

Here is the call graph for this function:

Here is the caller graph for this function:

static COB_INLINE COB_A_INLINE void check_screen_attr_with_conflict ( const char *  clause,
const int  bitval,
const char *  confl_clause,
const int  confl_bit 
)
static

Definition at line 1049 of file parser.c.

References check_attr_with_conflict(), and cb_field::screen_flag.

Referenced by yyparse().

1051 {
1052  check_attr_with_conflict (clause, bitval, confl_clause, confl_bit,
1054 }
static struct cb_field * current_field
Definition: parser.c:189
int screen_flag
Definition: tree.h:684
static void check_attr_with_conflict(const char *clause, const int bitval, const char *confl_clause, const int confl_bit, int *flags)
Definition: parser.c:1035

Here is the call graph for this function:

Here is the caller graph for this function:

static void check_set_usage ( const enum cb_usage  usage)
static

Definition at line 1176 of file parser.c.

References check_pic_duplicate, check_repeated(), SYN_CLAUSE_5, and cb_field::usage.

Referenced by yyparse().

1177 {
1180 }
static unsigned int check_pic_duplicate
Definition: parser.c:230
static struct cb_field * current_field
Definition: parser.c:189
static void check_repeated(const char *clause, const unsigned int bitval, unsigned int *already_seen)
Definition: parser.c:980
#define SYN_CLAUSE_5
Definition: parser.c:134
enum cb_usage usage
Definition: tree.h:693

Here is the call graph for this function:

Here is the caller graph for this function:

static void clean_up_program ( cb_tree  name,
const unsigned char  type 
)
static

Definition at line 866 of file parser.c.

References CB_LITERAL, CB_LITERAL_P, CB_NAME, cb_validate_program_body(), decrement_depth(), end_scope_of_program_name(), and cb_program::flag_validated.

Referenced by yyparse().

867 {
868  char *s;
869 
871 
872  if (CB_LITERAL_P (name)) {
873  s = (char *)(CB_LITERAL (name)->data);
874  } else {
875  s = (char *)(CB_NAME (name));
876  }
877 
878  decrement_depth (s, type);
879 
883  }
884 }
void cb_validate_program_body(struct cb_program *)
Definition: typeck.c:2554
#define CB_LITERAL(x)
Definition: tree.h:601
struct cb_program * current_program
Definition: parser.c:168
#define CB_LITERAL_P(x)
Definition: tree.h:602
#define CB_NAME(x)
Definition: tree.h:904
static void decrement_depth(const char *name, const unsigned char type)
Definition: parser.c:833
unsigned int flag_validated
Definition: tree.h:1310
static void end_scope_of_program_name(struct cb_program *program)
Definition: parser.c:737

Here is the call graph for this function:

Here is the caller graph for this function:

static void clear_initial_values ( void  )
static

Definition at line 641 of file parser.c.

References CB_STORAGE_WORKING, check_comp_duplicate, check_duplicate, check_pic_duplicate, check_unreached, cobc_force_literal, cobc_free(), cobc_glob_line, cobc_in_procedure, cobc_in_repository, current_linage, current_storage, env_div_seen, eval_inc, eval_inc2, eval_level, header_check, in_debugging, in_declaratives, inspect_keyword, needs_debug_item, needs_field_debug, next_label_id, non_const_word, NULL, report_count, samearea, save_debug, setattr_val_off, setattr_val_on, skip_statements, start_debug, term_array, and use_global_ind.

Referenced by set_up_program(), and yyparse().

642 {
646  qualifier = NULL;
647  in_declaratives = 0;
648  in_debugging = 0;
649  use_global_ind = 0;
650  check_duplicate = 0;
653  skip_statements = 0;
654  start_debug = 0;
655  save_debug = 0;
656  needs_field_debug = 0;
657  needs_debug_item = 0;
658  env_div_seen = 0;
659  header_check = 0;
660  next_label_id = 0;
661  current_linage = 0;
662  setattr_val_on = 0;
663  setattr_val_off = 0;
664  report_count = 0;
666  eval_level = 0;
667  eval_inc = 0;
668  eval_inc2 = 0;
669  inspect_keyword = 0;
670  check_unreached = 0;
671  cobc_in_procedure = 0;
672  cobc_in_repository = 0;
673  cobc_force_literal = 0;
674  non_const_word = 0;
675  samearea = 1;
676  memset ((void *)eval_check, 0, sizeof(eval_check));
677  memset ((void *)term_array, 0, sizeof(term_array));
678  linage_file = NULL;
679  current_file = NULL;
683  if (cobc_glob_line) {
686  }
687 }
static int term_array[22U]
Definition: parser.c:246
unsigned int cobc_force_literal
Definition: parser.c:181
static struct cb_report * report_instance
Definition: parser.c:193
static unsigned int in_declaratives
Definition: parser.c:209
static cb_tree qualifier
Definition: parser.c:203
static unsigned int needs_debug_item
Definition: parser.c:237
char * cobc_glob_line
Definition: parser.c:173
static unsigned int report_count
Definition: parser.c:212
void cobc_free(void *mptr)
Definition: cobc.c:657
static int next_label_id
Definition: parser.c:218
static struct cb_statement * main_statement
Definition: parser.c:186
static unsigned int in_debugging
Definition: parser.c:210
static enum cb_storage current_storage
Definition: parser.c:200
static unsigned int needs_field_debug
Definition: parser.c:236
static struct cb_report * current_report
Definition: parser.c:192
static struct cb_file * current_file
Definition: parser.c:191
static unsigned int check_unreached
Definition: parser.c:208
static unsigned int save_debug
Definition: parser.c:235
unsigned int cobc_in_repository
Definition: parser.c:180
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
static unsigned int check_pic_duplicate
Definition: parser.c:230
static unsigned int header_check
Definition: parser.c:239
static unsigned int env_div_seen
Definition: parser.c:238
int non_const_word
Definition: parser.c:178
static unsigned int use_global_ind
Definition: parser.c:214
static unsigned int inspect_keyword
Definition: parser.c:216
static unsigned int samearea
Definition: parser.c:215
static unsigned int current_linage
Definition: parser.c:211
static cb_tree next_label_list
Definition: parser.c:196
static unsigned int skip_statements
Definition: parser.c:233
static unsigned int check_duplicate
Definition: parser.c:228
static int eval_inc2
Definition: parser.c:221
unsigned int cobc_in_procedure
Definition: parser.c:179
static unsigned int start_debug
Definition: parser.c:234
static int eval_inc
Definition: parser.c:220
static cb_tree eval_check[32][32]
Definition: parser.c:247
static cb_tree perform_stack
Definition: parser.c:202
static int eval_level
Definition: parser.c:219
static int setattr_val_on
Definition: parser.c:226
struct cb_statement * current_statement
Definition: parser.c:169
static unsigned int check_comp_duplicate
Definition: parser.c:231
static struct cb_file * linage_file
Definition: parser.c:195
static int setattr_val_off
Definition: parser.c:227

Here is the call graph for this function:

Here is the caller graph for this function:

static int contains_only_screen_field ( struct cb_list x_list)
static

Definition at line 1219 of file parser.c.

References cb_list_length(), cb_null, and is_screen_field().

Referenced by yyparse().

1220 {
1221  return (cb_tree) x_list != cb_null
1222  && cb_list_length ((cb_tree) x_list) == 1
1223  && is_screen_field (x_list->value);
1224 }
int cb_list_length(cb_tree l)
Definition: tree.c:1342
static int is_screen_field(cb_tree x)
Definition: parser.c:1207
cb_tree value
Definition: tree.h:1184
cb_tree cb_null
Definition: tree.c:124

Here is the call graph for this function:

Here is the caller graph for this function:

static void decrement_depth ( const char *  name,
const unsigned char  type 
)
static

Definition at line 833 of file parser.c.

References _, cb_error(), CB_FUNCTION_TYPE, depth, and stack_progid.

Referenced by clean_up_program().

834 {
835  int d;
836 
837  if (depth) {
838  depth--;
839  }
840 
841  if (!strcmp (stack_progid[depth], name)) {
842  return;
843  }
844 
845  if (type == CB_FUNCTION_TYPE) {
846  cb_error (_("END FUNCTION '%s' is different to FUNCTION-ID '%s'"),
847  name, stack_progid[depth]);
848  return;
849  }
850 
851  /* Set depth to that of whatever program we just ended, if it exists. */
852  for (d = depth; d >= 0; --d) {
853  if (!strcmp (stack_progid[d], name)) {
854  depth = d;
855  return;
856  }
857  }
858 
859  if (depth != d) {
860  cb_error (_("END PROGRAM '%s' is different to PROGRAM-ID '%s'"),
861  name, stack_progid[depth]);
862  }
863 }
const char * name
Definition: tree.h:645
static char * stack_progid[16]
Definition: parser.c:198
#define _(s)
Definition: cobcrun.c:59
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
#define CB_FUNCTION_TYPE
Definition: tree.h:42
static int depth
Definition: parser.c:222

Here is the call graph for this function:

Here is the caller graph for this function:

static void emit_conflicting_clause_message ( const char *  clause,
const char *  conflicting 
)
static

Definition at line 1022 of file parser.c.

References _, cb_error(), and cb_warning().

Referenced by check_attr_with_conflict().

1023 {
1024  if (cb_relaxed_syntax_check) {
1025  cb_warning (_("Cannot specify both %s and %s, %s ignored"),
1026  clause, conflicting, clause);
1027  } else {
1028  cb_error (_("Cannot specify both %s and %s"),
1029  clause, conflicting);
1030  }
1031 
1032 }
#define _(s)
Definition: cobcrun.c:59
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
void cb_warning(const char *,...) COB_A_FORMAT12
Definition: error.c:87

Here is the call graph for this function:

Here is the caller graph for this function:

static void emit_default_device_display ( cb_tree  x_list)
static

Definition at line 1243 of file parser.c.

References cb_emit_display(), cb_int1, get_default_display_device(), and NULL.

Referenced by emit_default_displays_for_x_list().

1244 {
1246  NULL);
1247 }
cb_tree cb_int1
Definition: tree.c:134
static cb_tree get_default_display_device()
Definition: parser.c:1233
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
void cb_emit_display(cb_tree, cb_tree, cb_tree, cb_tree, struct cb_attr_struct *)
Definition: typeck.c:5236

Here is the call graph for this function:

Here is the caller graph for this function:

static void emit_default_displays_for_x_list ( struct cb_list x_list)
static

Definition at line 1250 of file parser.c.

References begin_implicit_statement(), cb_error(), cb_list_add(), CB_LIST_INIT, cb_ref(), CB_REFERENCE_P, cb_list::chain, emit_default_device_display(), emit_default_screen_display(), cb_program::flag_console_is_crt, is_screen_field(), NULL, value, and cb_list::value.

Referenced by yyparse().

1251 {
1252  struct cb_list *elt;
1253  cb_tree value;
1254  cb_tree device_display_x_list = NULL;
1255  int display_on_crt = current_program->flag_console_is_crt;
1256 
1257  for (elt = x_list; elt; elt = (struct cb_list *) elt->chain) {
1258  /* Get the list element value */
1259  if (CB_REFERENCE_P (elt->value)) {
1260  value = cb_ref (elt->value);
1261  } else {
1262  value = elt->value;
1263  }
1264 
1265  if (is_screen_field (value)) {
1266  /*
1267  Emit DISPLAY for previous values before emitting
1268  screen DISPLAY
1269  */
1270  if (device_display_x_list != NULL) {
1271  emit_default_device_display (device_display_x_list);
1273 
1274  device_display_x_list = NULL;
1275  }
1276 
1279  } else {
1280  if (display_on_crt) {
1281  cb_error ("Cannot display item upon CRT without LINE or COLUMN");
1282  return;
1283  }
1284 
1285  /* Add value to list for screen DISPLAY */
1286  if (device_display_x_list == NULL) {
1287  device_display_x_list = CB_LIST_INIT (elt->value);
1288  } else {
1289  cb_list_add (device_display_x_list, elt->value);
1290  }
1291  }
1292  }
1293 
1294  /* Emit screen DISPLAY for remaining values */
1295  if (device_display_x_list != NULL) {
1296  emit_default_device_display (device_display_x_list);
1298  }
1299 }
static COB_INLINE COB_A_INLINE void emit_default_screen_display(cb_tree x_list)
Definition: parser.c:1227
Definition: tree.h:1181
#define CB_REFERENCE_P(x)
Definition: tree.h:902
cb_tree cb_ref(cb_tree x)
Definition: tree.c:2653
struct cb_program * current_program
Definition: parser.c:168
strict implicit external value
Definition: warning.def:54
static int is_screen_field(cb_tree x)
Definition: parser.c:1207
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
cb_tree value
Definition: tree.h:1184
static void emit_default_device_display(cb_tree x_list)
Definition: parser.c:1243
unsigned int flag_console_is_crt
Definition: tree.h:1319
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
cb_tree chain
Definition: tree.h:1183
#define CB_LIST_INIT(x)
Definition: tree.h:1851
static void begin_implicit_statement(void)
Definition: parser.c:290
cb_tree cb_list_add(cb_tree l, cb_tree x)
Definition: tree.c:1315

Here is the call graph for this function:

Here is the caller graph for this function:

static COB_INLINE COB_A_INLINE void emit_default_screen_display ( cb_tree  x_list)
static

Definition at line 1227 of file parser.c.

References cb_emit_display(), cb_int1, cb_null, and NULL.

Referenced by emit_default_displays_for_x_list().

1228 {
1229  cb_emit_display (x_list, cb_null, cb_int1, NULL, NULL);
1230 }
cb_tree cb_int1
Definition: tree.c:134
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
cb_tree cb_null
Definition: tree.c:124
void cb_emit_display(cb_tree, cb_tree, cb_tree, cb_tree, struct cb_attr_struct *)
Definition: typeck.c:5236

Here is the call graph for this function:

Here is the caller graph for this function:

static void emit_duplicate_clause_message ( const char *  clause)
static

Definition at line 970 of file parser.c.

References _, cb_error(), and cb_warning().

Referenced by check_attr_with_conflict(), check_repeated(), and check_screen_attr().

971 {
972  if (cb_relaxed_syntax_check) {
973  cb_warning (_("Duplicate %s clause"), clause);
974  } else {
975  cb_error (_("Duplicate %s clause"), clause);
976  }
977 }
#define _(s)
Definition: cobcrun.c:59
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
void cb_warning(const char *,...) COB_A_FORMAT12
Definition: error.c:87

Here is the call graph for this function:

Here is the caller graph for this function:

static void emit_entry ( const char *  name,
const int  encode,
cb_tree  using_list 
)
static

Definition at line 315 of file parser.c.

References _, cb_build_debug(), cb_build_label(), CB_BUILD_PAIR, cb_build_reference(), CB_CHAIN, cb_debug_contents, cb_encode_program_id(), cb_error_node, cb_error_x(), CB_FIELD, CB_FUNCTION_TYPE, CB_LABEL, cb_list_append(), cb_name(), CB_PURPOSE, cb_ref(), cb_source_file, cb_source_line, CB_STORAGE_LINKAGE, CB_STORAGE_WORKING, CB_TREE, CB_VALID_TREE, CB_VALUE, cb_warning(), COB_MINI_BUFF, COB_MINI_MAX, emit_statement, cb_program::entry_list, cb_field::flag_chained, cb_program::flag_chained, cb_program::flag_debugging, cb_field::flag_external, cb_field::flag_is_pdiv_parm, cb_field::flag_item_based, cb_field::level, cb_program::linkage_storage, cb_field::name, NULL, cb_program::orig_program_id, cb_field::param_num, cb_program::prog_type, cb_field::redefines, cb_program::returning, cb_field::sister, cb_tree_common::source_file, cb_tree_common::source_line, and cb_field::storage.

Referenced by yyparse().

316 {
317  cb_tree l;
318  cb_tree label;
319  cb_tree x;
320  struct cb_field *f;
321  int parmnum;
322  char buff[COB_MINI_BUFF];
323 
324  snprintf (buff, (size_t)COB_MINI_MAX, "E$%s", name);
325  label = cb_build_label (cb_build_reference (buff), NULL);
326  if (encode) {
327  CB_LABEL (label)->name = cb_encode_program_id (name);
328  CB_LABEL (label)->orig_name = name;
329  } else {
330  CB_LABEL (label)->name = name;
331  CB_LABEL (label)->orig_name = current_program->orig_program_id;
332  }
333  CB_LABEL (label)->flag_begin = 1;
334  CB_LABEL (label)->flag_entry = 1;
335  label->source_file = cb_source_file;
336  label->source_line = cb_source_line;
337  emit_statement (label);
338 
341  "START PROGRAM", NULL));
342  }
343 
344  parmnum = 1;
345  for (l = using_list; l; l = CB_CHAIN (l)) {
346  x = CB_VALUE (l);
347  if (CB_VALID_TREE (x) && cb_ref (x) != cb_error_node) {
348  f = CB_FIELD (cb_ref (x));
349  if (f->level != 01 && f->level != 77) {
350  cb_error_x (x, _("'%s' not level 01 or 77"), cb_name (x));
351  }
353  if (f->storage != CB_STORAGE_LINKAGE) {
354  cb_error_x (x, _("'%s' is not in LINKAGE SECTION"), cb_name (x));
355  }
356  if (f->flag_item_based || f->flag_external) {
357  cb_error_x (x, _("'%s' can not be BASED/EXTERNAL"), cb_name (x));
358  }
359  f->flag_is_pdiv_parm = 1;
360  } else {
361  if (f->storage != CB_STORAGE_WORKING) {
362  cb_error_x (x, _("'%s' is not in WORKING-STORAGE SECTION"), cb_name (x));
363  }
364  f->flag_chained = 1;
365  f->param_num = parmnum;
366  parmnum++;
367  }
368  if (f->redefines) {
369  cb_error_x (x, _("'%s' REDEFINES field not allowed here"), cb_name (x));
370  }
371  }
372  }
373 
374  /* Check dangling LINKAGE items */
375  if (cb_warn_linkage) {
376  for (f = current_program->linkage_storage; f; f = f->sister) {
377  if (current_program->returning) {
379  if (f == CB_FIELD (cb_ref (current_program->returning))) {
380  continue;
381  }
382  }
383  }
384  for (l = using_list; l; l = CB_CHAIN (l)) {
385  x = CB_VALUE (l);
386  if (CB_VALID_TREE (x) && cb_ref (x) != cb_error_node) {
387  if (f == CB_FIELD (cb_ref (x))) {
388  break;
389  }
390  }
391  }
392  if (!l && !f->redefines) {
393  cb_warning (_("LINKAGE item '%s' is not a PROCEDURE USING parameter"), f->name);
394  }
395  }
396  }
397 
398  /* Check returning item against using items when FUNCTION */
400  for (l = using_list; l; l = CB_CHAIN (l)) {
401  x = CB_VALUE (l);
404  cb_error_x (x, _("'%s' USING item duplicates RETURNING item"), cb_name (x));
405  }
406  }
407  }
408 
409  for (l = current_program->entry_list; l; l = CB_CHAIN (l)) {
410  if (strcmp ((const char *)name,
411  (const char *)(CB_LABEL(CB_PURPOSE(l))->name)) == 0) {
413  _("ENTRY '%s' duplicated"), name);
414  }
415  }
416 
419  CB_BUILD_PAIR (label, using_list));
420 }
const char * name
Definition: tree.h:645
#define CB_TREE(x)
Definition: tree.h:440
cb_tree returning
Definition: tree.h:1288
void cb_error_x(cb_tree x, const char *fmt,...)
Definition: error.c:233
#define CB_LABEL(x)
Definition: tree.h:801
cb_tree cb_list_append(cb_tree l1, cb_tree l2)
Definition: tree.c:1305
const char * cb_source_file
Definition: cobc.c:145
#define CB_VALID_TREE(x)
Definition: tree.h:445
struct cb_field * sister
Definition: tree.h:653
#define emit_statement(x)
Definition: parser.c:88
cb_tree cb_ref(cb_tree x)
Definition: tree.c:2653
const char * source_file
Definition: tree.h:431
char * cb_name(cb_tree x)
Definition: tree.c:735
#define COB_MINI_BUFF
Definition: common.h:539
#define CB_PURPOSE(x)
Definition: tree.h:1192
int level
Definition: tree.h:673
struct cb_program * current_program
Definition: parser.c:168
unsigned int flag_debugging
Definition: tree.h:1320
#define CB_VALUE(x)
Definition: tree.h:1193
int source_line
Definition: tree.h:432
unsigned int flag_is_pdiv_parm
Definition: tree.h:724
#define _(s)
Definition: cobcrun.c:59
Definition: tree.h:643
cb_tree cb_build_label(cb_tree name, struct cb_label *section)
Definition: tree.c:2988
#define CB_CHAIN(x)
Definition: tree.h:1194
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
unsigned char prog_type
Definition: tree.h:1303
cb_tree entry_list
Definition: tree.h:1251
cb_tree cb_build_reference(const char *name)
Definition: tree.c:2572
cb_tree cb_error_node
Definition: tree.c:140
int param_num
Definition: tree.h:683
unsigned int flag_chained
Definition: tree.h:1311
char * cb_encode_program_id(const char *)
Definition: typeck.c:1132
#define CB_FUNCTION_TYPE
Definition: tree.h:42
void cb_warning(const char *,...) COB_A_FORMAT12
Definition: error.c:87
struct cb_field * linkage_storage
Definition: tree.h:1278
int cb_source_line
Definition: cobc.c:178
#define CB_BUILD_PAIR(x, y)
Definition: tree.h:1853
cb_tree cb_build_debug(const cb_tree target, const char *str, const cb_tree fld)
Definition: tree.c:1566
struct cb_statement * current_statement
Definition: parser.c:169
struct cb_field * redefines
Definition: tree.h:654
unsigned int flag_chained
Definition: tree.h:719
cb_tree cb_debug_contents
Definition: typeck.c:88
enum cb_storage storage
Definition: tree.h:692
#define CB_FIELD(x)
Definition: tree.h:740
char * orig_program_id
Definition: tree.h:1246
#define COB_MINI_MAX
Definition: common.h:545
unsigned char flag_external
Definition: tree.h:697
unsigned int flag_item_based
Definition: tree.h:713

Here is the call graph for this function:

Here is the caller graph for this function:

static void end_scope_of_program_name ( struct cb_program program)
static

Definition at line 737 of file parser.c.

References CB_LIST, CB_PROGRAM, cb_list::chain, cb_program::flag_common, cb_program::nested_level, NULL, cb_program::orig_program_id, remove_program_name(), and cb_list::value.

Referenced by clean_up_program().

738 {
739  struct cb_list *prev = NULL;
740  struct cb_list *l = (struct cb_list *) defined_prog_list;
741 
742  if (program->nested_level == 0) {
743  return;
744  }
745 
746  /* Remove any subprograms */
748  while (l) {
749  if (CB_PROGRAM (l->value)->nested_level > program->nested_level) {
750  remove_program_name (l, prev);
751  l = CB_LIST (prev->chain);
752  } else {
753  prev = l;
754  l = CB_LIST (l->chain);
755  }
756  }
757 
758  /* Remove the specified program, if it is not COMMON */
759  if (!program->flag_common) {
760  l = (struct cb_list *) defined_prog_list;
761  while (l) {
762  if (strcmp (program->orig_program_id,
763  CB_PROGRAM (l->value)->orig_program_id)
764  == 0) {
765  remove_program_name (l, prev);
766  l = CB_LIST (prev->chain);
767  break;
768  } else {
769  prev = l;
770  l = CB_LIST (l->chain);
771  }
772  }
773  }
774 }
Definition: tree.h:1181
static void remove_program_name(struct cb_list *l, struct cb_list *prev)
Definition: parser.c:725
int nested_level
Definition: tree.h:1295
#define CB_LIST(x)
Definition: tree.h:1189
cb_tree defined_prog_list
Definition: parser.c:172
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
cb_tree value
Definition: tree.h:1184
#define CB_PROGRAM(x)
Definition: tree.h:1328
unsigned int flag_common
Definition: tree.h:1306
cb_tree chain
Definition: tree.h:1183
char * orig_program_id
Definition: tree.h:1246

Here is the call graph for this function:

Here is the caller graph for this function:

static void error_if_no_advancing_in_screen_display ( cb_tree  advancing)
static

Definition at line 1302 of file parser.c.

References _, cb_error(), and cb_int1.

Referenced by yyparse().

1303 {
1304  if (advancing_value != cb_int1) {
1305  cb_error (_("Cannot specify NO ADVANCING in screen DISPLAY"));
1306  }
1307 }
cb_tree cb_int1
Definition: tree.c:134
#define _(s)
Definition: cobcrun.c:59
static cb_tree advancing_value
Definition: parser.c:242
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98

Here is the call graph for this function:

Here is the caller graph for this function:

static cb_tree get_default_display_device ( )
static

Definition at line 1233 of file parser.c.

References cb_int0, cb_null, and cb_program::flag_console_is_crt.

Referenced by emit_default_device_display(), and yyparse().

1234 {
1236  return cb_null;
1237  } else {
1238  return cb_int0;
1239  }
1240 }
struct cb_program * current_program
Definition: parser.c:168
cb_tree cb_int0
Definition: tree.c:133
unsigned int flag_console_is_crt
Definition: tree.h:1319
cb_tree cb_null
Definition: tree.c:124

Here is the caller graph for this function:

static const char* get_literal_or_word_name ( const cb_tree  x)
static

Definition at line 887 of file parser.c.

References CB_LITERAL, CB_LITERAL_P, and CB_NAME.

Referenced by check_for_duplicate_prototype(), and check_prototype_redefines_current_func().

888 {
889  if (CB_LITERAL_P (x)) {
890  return (const char *) CB_LITERAL (x)->data;
891  } else { /* CB_REFERENCE_P (x) */
892  return (const char *) CB_NAME (x);
893  }
894 }
#define CB_LITERAL(x)
Definition: tree.h:601
#define CB_LITERAL_P(x)
Definition: tree.h:602
#define CB_NAME(x)
Definition: tree.h:904

Here is the caller graph for this function:

static int has_relative_pos ( struct cb_field const *  field)
static

Definition at line 1183 of file parser.c.

References COB_SCREEN_COLUMN_MINUS, COB_SCREEN_COLUMN_PLUS, COB_SCREEN_LINE_MINUS, COB_SCREEN_LINE_PLUS, and cb_field::screen_flag.

Referenced by yyparse().

1184 {
1185  return !!(field->screen_flag
1188 }
#define COB_SCREEN_COLUMN_PLUS
Definition: common.h:897
#define COB_SCREEN_LINE_MINUS
Definition: common.h:896
#define COB_SCREEN_LINE_PLUS
Definition: common.h:895
#define COB_SCREEN_COLUMN_MINUS
Definition: common.h:898

Here is the caller graph for this function:

static size_t increment_depth ( void  )
static

Definition at line 423 of file parser.c.

References _, cb_error(), depth, and PROG_DEPTH.

Referenced by set_up_program(), and yyparse().

424 {
425  if (++depth >= PROG_DEPTH) {
426  cb_error (_("Maximum nested program depth exceeded (%d)"),
427  PROG_DEPTH);
428  return 1;
429  }
430  return 0;
431 }
#define PROG_DEPTH
Definition: parser.c:164
#define _(s)
Definition: cobcrun.c:59
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
static int depth
Definition: parser.c:222

Here is the call graph for this function:

Here is the caller graph for this function:

static int is_screen_field ( cb_tree  x)
static

Definition at line 1207 of file parser.c.

References CB_FIELD, CB_FIELD_P, cb_ref(), CB_REFERENCE_P, and CB_STORAGE_SCREEN.

Referenced by contains_only_screen_field(), emit_default_displays_for_x_list(), and yyparse().

1208 {
1209  if (CB_FIELD_P (x)) {
1210  return (CB_FIELD (x))->storage == CB_STORAGE_SCREEN;
1211  } else if (CB_REFERENCE_P (x)) {
1212  return is_screen_field (cb_ref (x));
1213  } else {
1214  return 0;
1215  }
1216 }
#define CB_REFERENCE_P(x)
Definition: tree.h:902
cb_tree cb_ref(cb_tree x)
Definition: tree.c:2653
#define CB_FIELD_P(x)
Definition: tree.h:741
static int is_screen_field(cb_tree x)
Definition: parser.c:1207
#define CB_FIELD(x)
Definition: tree.h:740

Here is the call graph for this function:

Here is the caller graph for this function:

static int literal_value ( cb_tree  x)
static

Definition at line 476 of file parser.c.

References CB_CLASS_NUMERIC, cb_get_int(), cb_high, CB_LITERAL, cb_low, cb_null, cb_quote, cb_space, CB_TREE_CLASS, and cb_zero.

Referenced by yyparse().

477 {
478  if (x == cb_space) {
479  return ' ';
480  } else if (x == cb_zero) {
481  return '0';
482  } else if (x == cb_quote) {
483  return cb_flag_apostrophe ? '\'' : '"';
484  } else if (x == cb_null) {
485  return 0;
486  } else if (x == cb_low) {
487  return 0;
488  } else if (x == cb_high) {
489  return 255;
490  } else if (CB_TREE_CLASS (x) == CB_CLASS_NUMERIC) {
491  return cb_get_int (x);
492  } else {
493  return CB_LITERAL (x)->data[0];
494  }
495 }
#define CB_LITERAL(x)
Definition: tree.h:601
int cb_get_int(const cb_tree x)
Definition: tree.c:1101
cb_tree cb_zero
Definition: tree.c:125
cb_tree cb_quote
Definition: tree.c:132
cb_tree cb_space
Definition: tree.c:127
#define CB_TREE_CLASS(x)
Definition: tree.h:442
cb_tree cb_null
Definition: tree.c:124
cb_tree cb_high
Definition: tree.c:129
cb_tree cb_low
Definition: tree.c:128

Here is the call graph for this function:

Here is the caller graph for this function:

static void remove_attrib ( int  attrib)
static

Definition at line 1166 of file parser.c.

References cb_statement::attr_ptr, and cb_attr_struct::dispattrs.

Referenced by yyparse().

1167 {
1168  /* Remove attribute from current_statement */
1169  if (!current_statement->attr_ptr) {
1170  return;
1171  }
1172  current_statement->attr_ptr->dispattrs ^= attrib;
1173 }
struct cb_attr_struct * attr_ptr
Definition: tree.h:1147
struct cb_statement * current_statement
Definition: parser.c:169
int dispattrs
Definition: tree.h:1130

Here is the caller graph for this function:

static void remove_program_name ( struct cb_list l,
struct cb_list prev 
)
static

Definition at line 725 of file parser.c.

References cb_list::chain, cobc_parse_free(), and NULL.

Referenced by end_scope_of_program_name().

726 {
727  if (prev == NULL) {
729  } else {
730  prev->chain = l->chain;
731  }
732  cobc_parse_free (l);
733 }
cb_tree defined_prog_list
Definition: parser.c:172
void cobc_parse_free(void *prevptr)
Definition: cobc.c:885
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
cb_tree chain
Definition: tree.h:1183

Here is the call graph for this function:

Here is the caller graph for this function:

static void set_up_func_prototype ( cb_tree  prototype_name,
cb_tree  ext_name,
const int  is_current_func 
)
static

Definition at line 943 of file parser.c.

References cb_build_func_prototype(), cb_build_reference(), cb_define(), cb_list_add(), CB_LITERAL, CB_REFERENCE_P, check_for_duplicate_prototype(), check_prototype_redefines_current_func(), and cb_program::user_spec_list.

Referenced by yyparse().

944 {
945  cb_tree func_prototype;
946 
947  if (!is_current_func
948  && check_prototype_redefines_current_func (prototype_name)) {
949  return;
950  }
951 
952  func_prototype = cb_build_func_prototype (prototype_name, ext_name);
953 
954  if (!is_current_func
955  && check_for_duplicate_prototype (prototype_name, func_prototype)) {
956  return;
957  }
958 
959  if (CB_REFERENCE_P (prototype_name)) {
960  cb_define (prototype_name, func_prototype);
961  } else { /* CB_LITERAL_P (prototype_name) */
962  cb_define (cb_build_reference ((const char *) CB_LITERAL (prototype_name)->data),
963  func_prototype);
964  }
966  cb_list_add (current_program->user_spec_list, func_prototype);
967 }
#define CB_REFERENCE_P(x)
Definition: tree.h:902
#define CB_LITERAL(x)
Definition: tree.h:601
static int check_prototype_redefines_current_func(const cb_tree prototype_name)
Definition: parser.c:898
struct cb_program * current_program
Definition: parser.c:168
static int check_for_duplicate_prototype(const cb_tree prototype_name, const cb_tree func_prototype)
Definition: parser.c:912
cb_tree cb_build_func_prototype(const cb_tree prototype_name, const cb_tree ext_name)
Definition: tree.c:3265
cb_tree cb_build_reference(const char *name)
Definition: tree.c:2572
cb_tree user_spec_list
Definition: tree.h:1272
const char * cb_define(cb_tree name, cb_tree val)
Definition: tree.c:1367
cb_tree cb_list_add(cb_tree l, cb_tree x)
Definition: tree.c:1315

Here is the call graph for this function:

Here is the caller graph for this function:

static int set_up_program ( cb_tree  id,
cb_tree  as_literal,
const unsigned char  type 
)
static

Definition at line 777 of file parser.c.

References begin_scope_of_program_name(), build_nested_special(), cb_build_program(), cb_build_program_id(), cb_build_registers(), cb_define(), CB_FUNCTION_TYPE, CB_LITERAL, CB_LITERAL_P, CB_NAME, CB_PROGRAM_TYPE, CB_REFERENCE_P, CB_TREE, cb_validate_program_body(), check_headers_present(), clear_initial_values(), cobc_flag_main, COBC_HD_PROCEDURE_DIVISION, depth, first_nested_program, cb_program::flag_main, cb_program::flag_recursive, cb_program::flag_validated, increment_depth(), main_flag_set, NULL, prog_end, cb_program::prog_type, cb_program::program_id, and stack_progid.

Referenced by yyparse().

778 {
781 
782  if (CB_LITERAL_P (id)) {
783  stack_progid[depth] = (char *)(CB_LITERAL (id)->data);
784  } else {
785  stack_progid[depth] = (char *)(CB_NAME (id));
786  }
787 
788  if (depth > 0 && first_nested_program) {
790  }
792 
793  if (prog_end) {
797  }
798 
803  } else {
804  prog_end = 1;
805  }
806 
807  if (increment_depth ()) {
808  return 1;
809  }
810 
811  current_program->program_id = cb_build_program_id (id, as_literal, type == CB_FUNCTION_TYPE);
812  current_program->prog_type = type;
813 
814  if (type == CB_PROGRAM_TYPE) {
815  if (!main_flag_set) {
816  main_flag_set = 1;
818  }
819  } else { /* CB_FUNCTION_TYPE */
821  }
822 
823  if (CB_REFERENCE_P (id)) {
825  }
826 
828 
829  return 0;
830 }
#define CB_TREE(x)
Definition: tree.h:440
#define CB_REFERENCE_P(x)
Definition: tree.h:902
struct cb_label * current_section
Definition: parser.c:170
#define COBC_HD_PROCEDURE_DIVISION
Definition: parser.c:265
void cb_validate_program_body(struct cb_program *)
Definition: typeck.c:2554
static int first_nested_program
Definition: parser.c:223
static char * stack_progid[16]
Definition: parser.c:198
#define CB_LITERAL(x)
Definition: tree.h:601
unsigned int flag_main
Definition: tree.h:1305
struct cb_program * current_program
Definition: parser.c:168
#define CB_LITERAL_P(x)
Definition: tree.h:602
static void begin_scope_of_program_name(struct cb_program *program)
Definition: parser.c:695
static size_t increment_depth(void)
Definition: parser.c:423
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
static void build_nested_special(const int ndepth)
Definition: parser.c:620
unsigned char prog_type
Definition: tree.h:1303
#define CB_NAME(x)
Definition: tree.h:904
static unsigned int main_flag_set
Definition: parser.c:217
#define CB_PROGRAM_TYPE
Definition: tree.h:41
static void clear_initial_values(void)
Definition: parser.c:641
const char * program_id
Definition: tree.h:1244
unsigned int flag_recursive
Definition: tree.h:1308
#define CB_FUNCTION_TYPE
Definition: tree.h:42
static int depth
Definition: parser.c:222
char * cb_build_program_id(cb_tree, cb_tree, const cob_u32_t)
Definition: typeck.c:1190
static unsigned int prog_end
Definition: parser.c:213
unsigned int flag_validated
Definition: tree.h:1310
static void check_headers_present(const unsigned int lev1, const unsigned int lev2, const unsigned int lev3, const unsigned int lev4)
Definition: parser.c:590
struct cb_program * cb_build_program(struct cb_program *last_program, const int nest_level)
Definition: tree.c:1400
void cb_build_registers(void)
Definition: typeck.c:1051
struct cb_label * current_paragraph
Definition: parser.c:171
int cobc_flag_main
Definition: cobc.c:167
const char * cb_define(cb_tree name, cb_tree val)
Definition: tree.c:1367

Here is the call graph for this function:

Here is the caller graph for this function:

static void set_up_use_file ( struct cb_file fileptr)
static

Definition at line 498 of file parser.c.

References _, cb_error(), cb_list_add(), CB_TREE, COB_ORG_SORT, cobc_parse_malloc(), current_program, current_section, cb_file::flag_global, cb_program::global_file_list, cb_file::handler, cb_file::handler_prog, cb_program::local_file_list, cb_file::organization, and use_global_ind.

Referenced by yyparse().

499 {
500  struct cb_file *newptr;
501 
502  if (fileptr->organization == COB_ORG_SORT) {
503  cb_error (_("USE statement invalid for SORT file"));
504  }
505  if (fileptr->flag_global) {
506  newptr = cobc_parse_malloc (sizeof(struct cb_file));
507  *newptr = *fileptr;
508  newptr->handler = current_section;
509  newptr->handler_prog = current_program;
510  if (!use_global_ind) {
513  CB_TREE (newptr));
514  } else {
517  CB_TREE (newptr));
518  }
519  } else {
520  fileptr->handler = current_section;
521  }
522 }
#define CB_TREE(x)
Definition: tree.h:440
struct cb_label * current_section
Definition: parser.c:170
void * cobc_parse_malloc(const size_t size)
Definition: cobc.c:809
unsigned int flag_global
Definition: tree.h:853
cb_tree global_file_list
Definition: tree.h:1282
cb_tree local_file_list
Definition: tree.h:1281
struct cb_program * current_program
Definition: parser.c:168
struct cb_program * handler_prog
Definition: tree.h:838
#define _(s)
Definition: cobcrun.c:59
struct cb_label * handler
Definition: tree.h:837
Definition: tree.h:818
static unsigned int use_global_ind
Definition: parser.c:214
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
int organization
Definition: tree.h:844
#define COB_ORG_SORT
Definition: common.h:746
cb_tree cb_list_add(cb_tree l, cb_tree x)
Definition: tree.c:1315

Here is the call graph for this function:

Here is the caller graph for this function:

static void terminator_clear ( cb_tree  stmt,
const unsigned int  termid 
)
static

Definition at line 465 of file parser.c.

References check_unreached, cobc_parse_free(), and term_array.

466 {
467  check_unreached = 0;
468  if (term_array[termid]) {
469  term_array[termid]--;
470  }
471  /* Free tree assocated with terminator */
472  cobc_parse_free (stmt);
473 }
static int term_array[22U]
Definition: parser.c:246
static unsigned int check_unreached
Definition: parser.c:208
void cobc_parse_free(void *prevptr)
Definition: cobc.c:885

Here is the call graph for this function:

static void terminator_error ( cb_tree  stmt,
const unsigned int  termid,
const char *  name 
)
static

Definition at line 451 of file parser.c.

References _, cb_error_x(), CB_TREE, check_unreached, cobc_parse_free(), and term_array.

452 {
453  check_unreached = 0;
455  _("%s statement not terminated by END-%s"),
456  name, name);
457  if (term_array[termid]) {
458  term_array[termid]--;
459  }
460  /* Free tree assocated with terminator */
461  cobc_parse_free (stmt);
462 }
static int term_array[22U]
Definition: parser.c:246
#define CB_TREE(x)
Definition: tree.h:440
void cb_error_x(cb_tree x, const char *fmt,...)
Definition: error.c:233
const char * name
Definition: tree.h:820
static unsigned int check_unreached
Definition: parser.c:208
void cobc_parse_free(void *prevptr)
Definition: cobc.c:885
#define _(s)
Definition: cobcrun.c:59
struct cb_statement * current_statement
Definition: parser.c:169

Here is the call graph for this function:

static void terminator_warning ( cb_tree  stmt,
const unsigned int  termid,
const char *  name 
)
static

Definition at line 434 of file parser.c.

References _, cb_warning_x(), check_unreached, cobc_parse_free(), and term_array.

436 {
437  check_unreached = 0;
438  if (term_array[termid]) {
439  term_array[termid]--;
440  if (cb_warn_terminator) {
441  cb_warning_x (stmt,
442  _("%s statement not terminated by END-%s"),
443  name, name);
444  }
445  }
446  /* Free tree assocated with terminator */
447  cobc_parse_free (stmt);
448 }
static int term_array[22U]
Definition: parser.c:246
const char * name
Definition: tree.h:820
void cb_warning_x(cb_tree x, const char *fmt,...)
Definition: error.c:222
static unsigned int check_unreached
Definition: parser.c:208
void cobc_parse_free(void *prevptr)
Definition: cobc.c:885
#define _(s)
Definition: cobcrun.c:59

Here is the call graph for this function:

static void yy_reduce_print ( yytype_int16 yyssp,
cb_tree yyvsp,
int  yyrule 
)
static

Definition at line 6256 of file parser.c.

References yy_symbol_print(), and YYFPRINTF.

6257 {
6258  unsigned long int yylno = yyrline[yyrule];
6259  int yynrhs = yyr2[yyrule];
6260  int yyi;
6261  YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
6262  yyrule - 1, yylno);
6263  /* The symbols being reduced. */
6264  for (yyi = 0; yyi < yynrhs; yyi++)
6265  {
6266  YYFPRINTF (stderr, " $%d = ", yyi + 1);
6267  yy_symbol_print (stderr,
6268  yystos[yyssp[yyi + 1 - yynrhs]],
6269  &(yyvsp[(yyi + 1) - (yynrhs)])
6270  );
6271  YYFPRINTF (stderr, "\n");
6272  }
6273 }
static const yytype_uint16 yyrline[]
Definition: parser.c:2227
static void yy_symbol_print(FILE *yyoutput, int yytype, cb_tree const *const yyvaluep)
Definition: parser.c:6218
static const yytype_uint16 yystos[]
Definition: parser.c:5425
#define YYFPRINTF
Definition: parser.c:6167
static const yytype_uint8 yyr2[]
Definition: parser.c:5906

Here is the call graph for this function:

static void yy_stack_print ( yytype_int16 yybottom,
yytype_int16 yytop 
)
static

Definition at line 6233 of file parser.c.

References YYFPRINTF.

6234 {
6235  YYFPRINTF (stderr, "Stack now");
6236  for (; yybottom <= yytop; yybottom++)
6237  {
6238  int yybot = *yybottom;
6239  YYFPRINTF (stderr, " %d", yybot);
6240  }
6241  YYFPRINTF (stderr, "\n");
6242 }
#define YYFPRINTF
Definition: parser.c:6167
static void yy_symbol_print ( FILE *  yyoutput,
int  yytype,
cb_tree const *const  yyvaluep 
)
static

Definition at line 6218 of file parser.c.

References yy_symbol_value_print(), YYFPRINTF, and YYNTOKENS.

Referenced by yy_reduce_print().

6219 {
6220  YYFPRINTF (yyoutput, "%s %s (",
6221  yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
6222 
6223  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
6224  YYFPRINTF (yyoutput, ")");
6225 }
#define YYNTOKENS
Definition: parser.c:2125
static const char *const yytname[]
Definition: parser.c:2429
static void yy_symbol_value_print(FILE *yyoutput, int yytype, cb_tree const *const yyvaluep)
Definition: parser.c:6199
#define YYFPRINTF
Definition: parser.c:6167

Here is the call graph for this function:

Here is the caller graph for this function:

static void yy_symbol_value_print ( FILE *  yyoutput,
int  yytype,
cb_tree const *const  yyvaluep 
)
static

Definition at line 6199 of file parser.c.

References YYNTOKENS, and YYUSE.

Referenced by yy_symbol_print().

6200 {
6201  FILE *yyo = yyoutput;
6202  YYUSE (yyo);
6203  if (!yyvaluep)
6204  return;
6205 # ifdef YYPRINT
6206  if (yytype < YYNTOKENS)
6207  YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
6208 # endif
6209  YYUSE (yytype);
6210 }
#define YYNTOKENS
Definition: parser.c:2125
#define YYUSE(E)
Definition: parser.c:1966

Here is the caller graph for this function:

static void yydestruct ( const char *  yymsg,
int  yytype,
cb_tree yyvaluep 
)
static

Definition at line 6536 of file parser.c.

References YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN, YY_IGNORE_MAYBE_UNINITIALIZED_END, YY_SYMBOL_PRINT, and YYUSE.

Referenced by yyparse().

6537 {
6538  YYUSE (yyvaluep);
6539  if (!yymsg)
6540  yymsg = "Deleting";
6541  YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
6542 
6544  YYUSE (yytype);
6546 }
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: parser.c:1983
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Definition: parser.c:6182
#define YYUSE(E)
Definition: parser.c:1966
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: parser.c:1984

Here is the caller graph for this function:

int yyparse ( void  )

Definition at line 6565 of file parser.c.

References _, ACCEPT, cb_file::access_mode, ADD, cb_literal::all, cb_program::all_procedure, cb_program::alphabet_name_list, cb_alphabet_name::alphabet_type, cb_file::alt_key_list, cb_file::assign, cb_statement::attr_ptr, begin_implicit_statement(), begin_statement(), bit_set_attr(), build_file(), build_report(), CALL, call_mode, call_nothing, cb_add_common_prog(), CB_ADD_TO_CHAIN, CB_AFTER, CB_ALPHABET_ASCII, CB_ALPHABET_CUSTOM, CB_ALPHABET_EBCDIC, CB_ALPHABET_NAME, CB_ALPHABET_NAME_P, CB_ALPHABET_NATIVE, cb_any, CB_BEFORE, cb_build_add(), cb_build_address(), cb_build_alphabet_name(), cb_build_alphanumeric_literal(), cb_build_assignment_name(), cb_build_binary_list(), cb_build_binary_op(), CB_BUILD_CHAIN, cb_build_class_name(), cb_build_comment(), cb_build_cond(), cb_build_const_length(), cb_build_constant(), cb_build_converting(), cb_build_debug(), cb_build_debug_item(), cb_build_display_mnemonic(), cb_build_display_name(), cb_build_expr(), cb_build_field_tree(), cb_build_filler(), CB_BUILD_FUNCALL_1, cb_build_goto(), cb_build_identifier(), cb_build_if_check_break(), cb_build_index(), cb_build_inspect_region_start(), cb_build_intrinsic(), cb_build_label(), cb_build_length(), cb_build_list(), cb_build_locale_name(), cb_build_numeric_literal(), CB_BUILD_PAIR, cb_build_perform_exit(), cb_build_perform_forever(), cb_build_perform_once(), cb_build_perform_times(), cb_build_perform_until(), cb_build_perform_varying(), cb_build_ppointer(), cb_build_program(), cb_build_program_id(), cb_build_reference(), cb_build_registers(), cb_build_replacing_all(), cb_build_replacing_characters(), cb_build_replacing_first(), cb_build_replacing_leading(), cb_build_replacing_trailing(), cb_build_section_name(), cb_build_sub(), cb_build_tallying_all(), cb_build_tallying_characters(), cb_build_tallying_data(), cb_build_tallying_leading(), cb_build_tallying_trailing(), cb_build_tallying_value(), cb_build_unstring_delimited(), cb_build_unstring_into(), cb_build_write_advancing_lines(), cb_build_write_advancing_mnemonic(), cb_build_write_advancing_page(), CB_CALL_BY_CONTENT, CB_CALL_BY_REFERENCE, CB_CALL_BY_VALUE, CB_CATEGORY_ALPHABETIC, CB_CATEGORY_ALPHANUMERIC, CB_CATEGORY_ALPHANUMERIC_EDITED, cb_category_is_alpha(), CB_CATEGORY_NATIONAL, CB_CATEGORY_NATIONAL_EDITED, CB_CATEGORY_NUMERIC, CB_CATEGORY_NUMERIC_EDITED, CB_CHAIN, CB_CHAIN_PAIR, cb_check_field_debug(), CB_CLASS_NAME_P, CB_CLASS_NUMERIC, cb_clear_real_field(), cb_concat_literals(), CB_CONV_NO_RET_UPD, CB_CONV_STATIC_LINK, CB_CONV_STDCALL, CB_CS_ASSIGN, CB_CS_CALL, CB_CS_DISPLAY, CB_CS_EXIT, CB_CS_SET, cb_debug_contents, cb_define(), cb_define_switch_name(), CB_DEVICE_CONSOLE, cb_emit_accept(), cb_emit_accept_arg_number(), cb_emit_accept_arg_value(), cb_emit_accept_command_line(), cb_emit_accept_date(), cb_emit_accept_date_yyyymmdd(), cb_emit_accept_day(), cb_emit_accept_day_of_week(), cb_emit_accept_day_yyyyddd(), cb_emit_accept_environment(), cb_emit_accept_escape_key(), cb_emit_accept_exception_status(), cb_emit_accept_line_or_col(), cb_emit_accept_mnemonic(), cb_emit_accept_name(), cb_emit_accept_time(), cb_emit_accept_user_name(), cb_emit_allocate(), cb_emit_alter(), cb_emit_arg_number(), cb_emit_arithmetic(), cb_emit_call(), cb_emit_cancel(), cb_emit_close(), cb_emit_command_line(), cb_emit_commit(), cb_emit_continue(), cb_emit_corresponding(), cb_emit_delete(), cb_emit_delete_file(), cb_emit_display(), cb_emit_display_omitted(), cb_emit_divide(), cb_emit_env_name(), cb_emit_env_value(), cb_emit_evaluate(), cb_emit_exit(), cb_emit_free(), cb_emit_get_environment(), cb_emit_goto(), cb_emit_if(), cb_emit_initialize(), cb_emit_inspect(), cb_emit_move(), cb_emit_move_corresponding(), cb_emit_open(), cb_emit_perform(), cb_emit_read(), cb_emit_ready_trace(), cb_emit_release(), cb_emit_reset_trace(), cb_emit_return(), cb_emit_rewrite(), cb_emit_rollback(), cb_emit_search(), cb_emit_search_all(), cb_emit_set_attribute(), cb_emit_set_false(), cb_emit_set_last_exception_to_off(), cb_emit_set_on_off(), cb_emit_set_to(), cb_emit_set_true(), cb_emit_set_up_down(), cb_emit_setenv(), cb_emit_sort_finish(), cb_emit_sort_giving(), cb_emit_sort_init(), cb_emit_sort_input(), cb_emit_sort_output(), cb_emit_sort_using(), cb_emit_start(), cb_emit_stop_run(), cb_emit_string(), cb_emit_unlock(), cb_emit_unstring(), cb_emit_write(), cb_error(), cb_error_node, cb_error_x(), CB_EXCEPTION_ENABLE, cb_exp_line, cb_false, CB_FEATURE_CONVENTION, CB_FIELD, CB_FIELD_ADD, CB_FIELD_P, CB_FIELD_PTR, CB_FILE, CB_FILE_P, CB_FUNCTION_TYPE, cb_get_int(), cb_get_level(), cb_get_real_field(), cb_high, cb_id, cb_init_tallying(), cb_int(), cb_int0, cb_int1, cb_int2, cb_int3, cb_int4, CB_INTEGER, CB_INTEGER_P, CB_INVALID_TREE, CB_LABEL, cb_list_add(), cb_list_append(), CB_LIST_INIT, cb_list_length(), cb_list_reverse(), CB_LITERAL, CB_LITERAL_P, cb_low, cb_name(), CB_NAME, cb_needs_01, cb_norm_high, cb_norm_low, cb_null, CB_OBSOLETE, cb_one, CB_PAIR_X, CB_PAIR_Y, CB_PERFORM, CB_PICTURE, CB_PROGRAM_TYPE, CB_PURPOSE, CB_PURPOSE_INT, cb_quote, cb_ref(), CB_REFERENCE, CB_REFERENCE_P, CB_REPORT, CB_REPORT_P, cb_resolve_redefines(), cb_program::cb_return_code, cb_set_system_names(), CB_SIZE_1, CB_SIZE_2, CB_SIZE_4, CB_SIZE_8, CB_SIZE_AUTO, CB_SIZE_UNSIGNED, CB_SIZES, cb_source_file, cb_source_line, cb_space, CB_STATEMENT, CB_STORAGE_FILE, CB_STORAGE_LINKAGE, CB_STORAGE_LOCAL, CB_STORAGE_REPORT, CB_STORAGE_SCREEN, CB_STORAGE_WORKING, CB_SWITCH_NAME, CB_SYSTEM_NAME, CB_TAG_FIELD, CB_TAG_FILE, cb_to_cname(), CB_TREE, cb_tree_category(), CB_TREE_CLASS, CB_TREE_TAG, cb_true, cb_unput_dot(), CB_USAGE_BINARY, CB_USAGE_COMP_5, CB_USAGE_COMP_6, CB_USAGE_COMP_X, CB_USAGE_DISPLAY, CB_USAGE_DOUBLE, CB_USAGE_FLOAT, CB_USAGE_FP_BIN128, CB_USAGE_FP_BIN32, CB_USAGE_FP_BIN64, CB_USAGE_FP_DEC128, CB_USAGE_FP_DEC64, CB_USAGE_INDEX, CB_USAGE_PACKED, CB_USAGE_POINTER, CB_USAGE_PROGRAM_POINTER, CB_USAGE_SIGNED_CHAR, CB_USAGE_SIGNED_INT, CB_USAGE_SIGNED_LONG, CB_USAGE_SIGNED_SHORT, CB_USAGE_UNSIGNED_CHAR, CB_USAGE_UNSIGNED_INT, CB_USAGE_UNSIGNED_LONG, CB_USAGE_UNSIGNED_SHORT, CB_VALID_TREE, cb_validate_78_item(), cb_validate_88_item(), cb_validate_field(), cb_validate_program_body(), cb_validate_program_data(), cb_validate_program_environment(), CB_VALUE, cb_verify(), cb_warning(), cb_warning_x(), CB_WORD_COUNT, CB_WORD_ITEMS, cb_zero, check_attr_with_conflict(), check_attribs(), check_attribs_with_conflict(), check_comp_duplicate, check_duplicate, check_headers_present(), check_line_col_duplicate, check_not_88_level(), check_not_highlight_and_lowlight(), check_on_off_duplicate, check_pic_duplicate, check_relaxed_syntax(), check_repeated(), check_screen_attr(), check_screen_attr_with_conflict(), check_set_usage(), check_unreached, cb_program::class_name_list, cb_program::classification, clean_up_program(), clear_initial_values(), COB_ACCESS_DYNAMIC, COB_ACCESS_RANDOM, COB_ACCESS_SEQUENTIAL, COB_ASCENDING, COB_CLOSE_LOCK, COB_CLOSE_NO_REWIND, COB_CLOSE_NORMAL, COB_CLOSE_UNIT, COB_CLOSE_UNIT_REMOVAL, COB_DESCENDING, COB_EC_I_O, COB_EC_I_O_AT_END, COB_EC_I_O_EOP, COB_EC_I_O_INVALID_KEY, COB_EC_IMP_ACCEPT, COB_EC_IMP_DISPLAY, COB_EC_OVERFLOW, COB_EC_SIZE, COB_EQ, COB_FI, COB_GE, COB_GT, COB_LA, COB_LE, COB_LOCK_AUTOMATIC, COB_LOCK_EXCLUSIVE, COB_LOCK_MANUAL, COB_LOCK_MULTIPLE, COB_LOCK_OPEN_EXCLUSIVE, COB_LT, COB_MAX_FIELD_PARAMS, COB_MAX_SUBSCRIPTS, COB_NE, COB_OPEN_EXTEND, COB_OPEN_I_O, COB_OPEN_INPUT, COB_OPEN_OUTPUT, COB_ORG_INDEXED, COB_ORG_LINE_SEQUENTIAL, COB_ORG_RELATIVE, COB_ORG_SEQUENTIAL, COB_ORG_SORT, COB_SCREEN_AUTO, COB_SCREEN_BELL, COB_SCREEN_BLANK_LINE, COB_SCREEN_BLANK_SCREEN, COB_SCREEN_BLINK, COB_SCREEN_COLUMN_MINUS, COB_SCREEN_COLUMN_PLUS, COB_SCREEN_ERASE_EOL, COB_SCREEN_ERASE_EOS, COB_SCREEN_FULL, COB_SCREEN_GRID, COB_SCREEN_HIGHLIGHT, COB_SCREEN_INITIAL, COB_SCREEN_INPUT, COB_SCREEN_LEFTLINE, COB_SCREEN_LINE_MINUS, COB_SCREEN_LINE_PLUS, COB_SCREEN_LOWER, COB_SCREEN_LOWLIGHT, COB_SCREEN_NO_ECHO, COB_SCREEN_OVERLINE, COB_SCREEN_PROMPT, COB_SCREEN_REQUIRED, COB_SCREEN_REVERSE, COB_SCREEN_SCROLL_DOWN, COB_SCREEN_SECURE, COB_SCREEN_UNDERLINE, COB_SCREEN_UPDATE, COB_SCREEN_UPPER, COB_SELECT_STDIN, COB_SELECT_STDOUT, COB_STORE_AWAY_FROM_ZERO, COB_STORE_NEAR_AWAY_FROM_ZERO, COB_STORE_NEAR_EVEN, COB_STORE_NEAR_TOWARD_ZERO, COB_STORE_PROHIBITED, COB_STORE_ROUND, COB_STORE_TOWARD_GREATER, COB_STORE_TOWARD_LESSER, COB_STORE_TRUNCATION, cobc_check_valid_name(), cobc_cs_check, cobc_flag_main, COBC_HD_CONFIGURATION_SECTION, COBC_HD_DATA_DIVISION, COBC_HD_ENVIRONMENT_DIVISION, COBC_HD_FILE_CONTROL, COBC_HD_FILE_SECTION, COBC_HD_I_O_CONTROL, COBC_HD_INPUT_OUTPUT_SECTION, COBC_HD_LINKAGE_SECTION, COBC_HD_LOCAL_STORAGE_SECTION, COBC_HD_PROCEDURE_DIVISION, COBC_HD_PROGRAM_ID, COBC_HD_SPECIAL_NAMES, COBC_HD_WORKING_STORAGE_SECTION, cobc_in_procedure, cobc_in_repository, cobc_parse_free(), cobc_parse_malloc(), cb_file::code_set, cb_program::collating_sequence, cb_report::columns, COMPUTE, contains_only_screen_field(), cb_program::crt_status, cb_program::currency_symbol, current_field, current_file, current_linage, current_paragraph, current_program, current_report, current_section, current_storage, cb_program::cursor_pos, cb_perform::cycle_label, cb_program::debug_list, cb_program::decimal_point, DELETE, demangle_name, cb_field::depending, depth, description_field, cb_key::dir, cb_attr_struct::dispattrs, DISPLAY, DIVIDE, cb_alt_key::duplicates, emit_default_displays_for_x_list(), emit_entry(), emit_statement, cb_field::ename, cb_program::entry_list, error_if_no_advancing_in_screen_display(), errorcount, EVAL_DEPTH, eval_inc, eval_inc2, eval_level, EVALUATE, cb_program::exec_list, cb_label::exit_label, cb_perform::exit_label, cb_field::false_88, cb_report::file, cb_program::file_list, cb_file::file_status, finalize_file(), cb_report::first_detail, first_nested_program, cb_field::flag_any_length, cb_field::flag_any_numeric, cb_label::flag_begin, cb_field::flag_blank_zero, cb_program::flag_chained, cb_program::flag_common, cb_program::flag_console_is_crt, cb_program::flag_debugging, cb_label::flag_declarative_exit, cb_label::flag_declaratives, cb_label::flag_dummy_paragraph, cb_label::flag_dummy_section, cb_file::flag_ext_assign, cb_field::flag_external, cb_file::flag_external, cb_label::flag_fatal_check, cb_program::flag_file_global, cb_file::flag_fileid, cb_field::flag_filler, cb_label::flag_first_is_goto, cb_program::flag_gen_debug, cb_label::flag_global, cb_file::flag_global, cb_program::flag_global_use, cb_program::flag_has_external, cb_program::flag_initial, cb_field::flag_invalid, cb_label::flag_is_debug_sect, cb_field::flag_is_global, cb_field::flag_is_pdiv_opt, cb_field::flag_is_pointer, cb_field::flag_is_returning, cb_field::flag_is_verified, cb_field::flag_item_78, cb_field::flag_item_based, cb_field::flag_justified, cb_file::flag_line_adv, cb_program::flag_main, cb_statement::flag_merge, cb_statement::flag_no_based, cb_field::flag_occurs, cb_label::flag_real_label, cb_program::flag_recursive, cb_label::flag_return, cb_program::flag_screen, cb_label::flag_section, cb_program::flag_segments, cb_field::flag_sign_leading, cb_field::flag_sign_separate, cb_label::flag_skip_label, cb_label::flag_statement, cb_field::flag_synchronized, cb_program::flag_trailing_separate, cb_program::flag_validated, cb_program::flag_void, cb_report::footing, cb_program::function_spec_list, functions_are_all, get_default_display_device(), cb_program::global_handler, cb_program::global_list, cb_statement::handler1, cb_statement::handler2, cb_statement::handler_id, handler_struct::handler_label, handler_struct::handler_prog, has_relative_pos(), header_check, cb_report::heading, IF, in_debugging, in_declaratives, increment_depth(), cb_field::index_list, cb_field::indexes, inspect_keyword, is_screen_field(), cb_key::key, cb_alt_key::key, cb_file::key, cb_field::keys, cb_program::label_list, cb_report::last_control, cb_report::last_detail, cb_file::latbot, cb_file::latfoot, cb_file::lattop, cb_field::level, likely, cb_file::linage, cb_file::linage_ctr, cb_report::line_counter, cb_report::lines, cb_program::linkage_storage, literal_value(), cb_program::local_storage, cb_program::locale_list, cb_file::lock_mode, lookup_system_name(), cb_program::loop_counter, main_flag_set, MAX_FD_RECORD, cb_program::mnemonic_spec_list, MULTIPLY, cb_field::name, cb_file::name, cb_statement::name, needs_debug_item, needs_field_debug, cb_program::nested_level, cb_alt_key::next, next_label_id, cb_field::nkeys, non_const_word, NULL, cb_program::num_proc_params, cb_program::numeric_separator, cb_field::occurs_max, cb_field::occurs_min, cb_file::optional, cb_file::organization, cb_program::orig_program_id, cb_report::page_counter, cb_field::parent, PENDING, PERFORM, cb_field::pic, prog_end, cb_program::prog_type, cb_program::program_id, push_expr, qualifier, READ, cb_file::record_depending, cb_file::record_max, cb_file::record_min, cb_field::redefines, redefinition_error(), cb_program::reference_list, remove_attrib(), cb_field::rename_thru, report_count, cb_program::report_list, cb_file::reports, RETURN, cb_program::returning, REWRITE, samearea, save_debug, cb_field::screen_backg, cb_field::screen_column, screen_display(), cb_field::screen_flag, cb_field::screen_foreg, cb_field::screen_from, cb_field::screen_line, cb_field::screen_prompt, cb_program::screen_storage, cb_field::screen_to, SEARCH, cb_label::segment, set_up_func_prototype(), set_up_program(), set_up_use_file(), setattr_val_off, setattr_val_on, cb_file::sharing, sign, cb_field::sister, size_mode, skip_statements, cb_tree_common::source_file, cb_program::source_name, cb_file::special, START, start_debug, cb_field::step_count, cb_field::storage, STRING, SUBTRACT, cb_program::symbolic_char_list, SYN_CLAUSE_1, SYN_CLAUSE_10, SYN_CLAUSE_11, SYN_CLAUSE_12, SYN_CLAUSE_13, SYN_CLAUSE_14, SYN_CLAUSE_16, SYN_CLAUSE_17, SYN_CLAUSE_18, SYN_CLAUSE_19, SYN_CLAUSE_2, SYN_CLAUSE_20, SYN_CLAUSE_21, SYN_CLAUSE_22, SYN_CLAUSE_23, SYN_CLAUSE_24, SYN_CLAUSE_3, SYN_CLAUSE_4, SYN_CLAUSE_5, SYN_CLAUSE_6, SYN_CLAUSE_7, SYN_CLAUSE_8, SYN_CLAUSE_9, TERM_ACCEPT, TERM_ADD, TERM_CALL, TERM_COMPUTE, TERM_DELETE, TERM_DISPLAY, TERM_DIVIDE, TERM_EVALUATE, TERM_IF, TERM_MULTIPLY, TERM_PERFORM, TERM_READ, TERM_RETURN, TERM_REWRITE, TERM_SEARCH, TERM_START, TERM_STRING, TERM_SUBTRACT, TERM_UNSTRING, TERM_WRITE, TERMINATOR_CLEAR, TERMINATOR_ERROR, TERMINATOR_WARNING, UNSTRING, use_global_ind, validate_file(), value, cb_field::values, cb_perform::varying, warningopt, cb_program::working_storage, WRITE, YY_, YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN, YY_IGNORE_MAYBE_UNINITIALIZED_END, YY_REDUCE_PRINT, YY_STACK_PRINT, YY_SYMBOL_PRINT, YYABORT, YYACCEPT, yyclearin, yydestruct(), YYDPRINTF, YYEMPTY, YYEOF, yyerrok, yyerror, YYERROR, YYFINAL, YYINITDEPTH, YYLAST, yylex, yylval, YYMAXDEPTH, yynerrs, YYNTOKENS, yypact_value_is_default, YYPOPSTACK, YYSIZE_T, yyalloc::yyss_alloc, YYSTACK_ALLOC, YYSTACK_BYTES, YYSTACK_FREE, YYSTACK_RELOCATE, YYSYNTAX_ERROR, yytable_value_is_error, YYTERROR, YYTRANSLATE, yyalloc::yyvs_alloc, and zero_conflicting_flags().

6566 {
6567  int yystate;
6568  /* Number of tokens to shift before error messages enabled. */
6569  int yyerrstatus;
6570 
6571  /* The stacks and their tools:
6572  'yyss': related to states.
6573  'yyvs': related to semantic values.
6574 
6575  Refer to the stacks through separate pointers, to allow yyoverflow
6576  to reallocate them elsewhere. */
6577 
6578  /* The state stack. */
6579  yytype_int16 yyssa[YYINITDEPTH];
6580  yytype_int16 *yyss;
6581  yytype_int16 *yyssp;
6582 
6583  /* The semantic value stack. */
6584  YYSTYPE yyvsa[YYINITDEPTH];
6585  YYSTYPE *yyvs;
6586  YYSTYPE *yyvsp;
6587 
6588  YYSIZE_T yystacksize;
6589 
6590  int yyn;
6591  int yyresult;
6592  /* Lookahead token as an internal (translated) token number. */
6593  int yytoken = 0;
6594  /* The variables used to return semantic value and location from the
6595  action routines. */
6596  YYSTYPE yyval;
6597 
6598 #if YYERROR_VERBOSE
6599  /* Buffer for error messages, and its allocated size. */
6600  char yymsgbuf[128];
6601  char *yymsg = yymsgbuf;
6602  YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
6603 #endif
6604 
6605 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
6606 
6607  /* The number of symbols on the RHS of the reduced rule.
6608  Keep to zero when no symbol should be popped. */
6609  int yylen = 0;
6610 
6611  yyssp = yyss = yyssa;
6612  yyvsp = yyvs = yyvsa;
6613  yystacksize = YYINITDEPTH;
6614 
6615  YYDPRINTF ((stderr, "Starting parse\n"));
6616 
6617  yystate = 0;
6618  yyerrstatus = 0;
6619  yynerrs = 0;
6620  yychar = YYEMPTY; /* Cause a token to be read. */
6621  goto yysetstate;
6622 
6623 /*------------------------------------------------------------.
6624 | yynewstate -- Push a new state, which is found in yystate. |
6625 `------------------------------------------------------------*/
6626  yynewstate:
6627  /* In all cases, when you get here, the value and location stacks
6628  have just been pushed. So pushing a state here evens the stacks. */
6629  yyssp++;
6630 
6631  yysetstate:
6632  *yyssp = yystate;
6633 
6634  if (yyss + yystacksize - 1 <= yyssp)
6635  {
6636  /* Get the current used size of the three stacks, in elements. */
6637  YYSIZE_T yysize = yyssp - yyss + 1;
6638 
6639 #ifdef yyoverflow
6640  {
6641  /* Give user a chance to reallocate the stack. Use copies of
6642  these so that the &'s don't force the real ones into
6643  memory. */
6644  YYSTYPE *yyvs1 = yyvs;
6645  yytype_int16 *yyss1 = yyss;
6646 
6647  /* Each stack pointer address is followed by the size of the
6648  data in use in that stack, in bytes. This used to be a
6649  conditional around just the two extra args, but that might
6650  be undefined if yyoverflow is a macro. */
6651  yyoverflow (YY_("memory exhausted"),
6652  &yyss1, yysize * sizeof (*yyssp),
6653  &yyvs1, yysize * sizeof (*yyvsp),
6654  &yystacksize);
6655 
6656  yyss = yyss1;
6657  yyvs = yyvs1;
6658  }
6659 #else /* no yyoverflow */
6660 # ifndef YYSTACK_RELOCATE
6661  goto yyexhaustedlab;
6662 # else
6663  /* Extend the stack our own way. */
6664  if (YYMAXDEPTH <= yystacksize)
6665  goto yyexhaustedlab;
6666  yystacksize *= 2;
6667  if (YYMAXDEPTH < yystacksize)
6668  yystacksize = YYMAXDEPTH;
6669 
6670  {
6671  yytype_int16 *yyss1 = yyss;
6672  union yyalloc *yyptr =
6673  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
6674  if (! yyptr)
6675  goto yyexhaustedlab;
6676  YYSTACK_RELOCATE (yyss_alloc, yyss);
6677  YYSTACK_RELOCATE (yyvs_alloc, yyvs);
6678 # undef YYSTACK_RELOCATE
6679  if (yyss1 != yyssa)
6680  YYSTACK_FREE (yyss1);
6681  }
6682 # endif
6683 #endif /* no yyoverflow */
6684 
6685  yyssp = yyss + yysize - 1;
6686  yyvsp = yyvs + yysize - 1;
6687 
6688  YYDPRINTF ((stderr, "Stack size increased to %lu\n",
6689  (unsigned long int) yystacksize));
6690 
6691  if (yyss + yystacksize - 1 <= yyssp)
6692  YYABORT;
6693  }
6694 
6695  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
6696 
6697  if (yystate == YYFINAL)
6698  YYACCEPT;
6699 
6700  goto yybackup;
6701 
6702 /*-----------.
6703 | yybackup. |
6704 `-----------*/
6705 yybackup:
6706 
6707  /* Do appropriate processing given the current state. Read a
6708  lookahead token if we need one and don't already have one. */
6709 
6710  /* First try to decide what to do without reference to lookahead token. */
6711  yyn = yypact[yystate];
6712  if (yypact_value_is_default (yyn))
6713  goto yydefault;
6714 
6715  /* Not known => get a lookahead token if don't already have one. */
6716 
6717  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
6718  if (yychar == YYEMPTY)
6719  {
6720  YYDPRINTF ((stderr, "Reading a token: "));
6721  yychar = yylex ();
6722  }
6723 
6724  if (yychar <= YYEOF)
6725  {
6726  yychar = yytoken = YYEOF;
6727  YYDPRINTF ((stderr, "Now at end of input.\n"));
6728  }
6729  else
6730  {
6731  yytoken = YYTRANSLATE (yychar);
6732  YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
6733  }
6734 
6735  /* If the proper action on seeing token YYTOKEN is to reduce or to
6736  detect an error, take that action. */
6737  yyn += yytoken;
6738  if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
6739  goto yydefault;
6740  yyn = yytable[yyn];
6741  if (yyn <= 0)
6742  {
6743  if (yytable_value_is_error (yyn))
6744  goto yyerrlab;
6745  yyn = -yyn;
6746  goto yyreduce;
6747  }
6748 
6749  /* Count tokens shifted since error; after three, turn off error
6750  status. */
6751  if (yyerrstatus)
6752  yyerrstatus--;
6753 
6754  /* Shift the lookahead token. */
6755  YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
6756 
6757  /* Discard the shifted token. */
6758  yychar = YYEMPTY;
6759 
6760  yystate = yyn;
6762  *++yyvsp = yylval;
6764 
6765  goto yynewstate;
6766 
6767 
6768 /*-----------------------------------------------------------.
6769 | yydefault -- do the default action for the current state. |
6770 `-----------------------------------------------------------*/
6771 yydefault:
6772  yyn = yydefact[yystate];
6773  if (yyn == 0)
6774  goto yyerrlab;
6775  goto yyreduce;
6776 
6777 
6778 /*-----------------------------.
6779 | yyreduce -- Do a reduction. |
6780 `-----------------------------*/
6781 yyreduce:
6782  /* yyn is the number of a rule to reduce with. */
6783  yylen = yyr2[yyn];
6784 
6785  /* If YYLEN is nonzero, implement the default value of the action:
6786  '$$ = $1'.
6787 
6788  Otherwise, the following line sets YYVAL to garbage.
6789  This behavior is undocumented and Bison
6790  users should not rely upon it. Assigning to YYVAL
6791  unconditionally makes the parser a bit smaller, and it avoids a
6792  GCC warning that YYVAL may be used uninitialized. */
6793  yyval = yyvsp[1-yylen];
6794 
6795 
6796  YY_REDUCE_PRINT (yyn);
6797  switch (yyn)
6798  {
6799  case 2:
6800 #line 1893 "parser.y" /* yacc.c:1646 */
6801  {
6805  cobc_cs_check = 0;
6806  prog_end = 0;
6807  depth = 0;
6808  main_flag_set = 0;
6810  cb_build_registers ();
6811  }
6812 #line 6742 "parser.c" /* yacc.c:1646 */
6813  break;
6814 
6815  case 3:
6816 #line 1905 "parser.y" /* yacc.c:1646 */
6817  {
6821  }
6822  if (depth > 1) {
6823  cb_error (_("Multiple PROGRAM-ID's without matching END PROGRAM"));
6824  }
6825  if (cobc_flag_main && !main_flag_set) {
6826  cb_error (_("Executable requested but no program found"));
6827  }
6828  if (errorcount > 0) {
6829  YYABORT;
6830  }
6831  if (!current_program->entry_list) {
6833  }
6834  }
6835 #line 6765 "parser.c" /* yacc.c:1646 */
6836  break;
6837 
6838  case 10:
6839 #line 1941 "parser.y" /* yacc.c:1646 */
6840  {
6841  cb_tree l;
6842 
6845  prog_end = 1;
6846  if (increment_depth ()) {
6847  YYABORT;
6848  }
6850  strlen (demangle_name));
6853  if (!main_flag_set) {
6854  main_flag_set = 1;
6856  }
6858  }
6859 #line 6789 "parser.c" /* yacc.c:1646 */
6860  break;
6861 
6862  case 18:
6863 #line 1992 "parser.y" /* yacc.c:1646 */
6864  {
6866  clean_up_program ((yyvsp[-1]), CB_PROGRAM_TYPE);
6867  }
6868 #line 6798 "parser.c" /* yacc.c:1646 */
6869  break;
6870 
6871  case 19:
6872 #line 2000 "parser.y" /* yacc.c:1646 */
6873  {
6874  clean_up_program ((yyvsp[-1]), CB_FUNCTION_TYPE);
6875  }
6876 #line 6806 "parser.c" /* yacc.c:1646 */
6877  break;
6878 
6879  case 23:
6880 #line 2022 "parser.y" /* yacc.c:1646 */
6881  {
6882  if (set_up_program ((yyvsp[-1]), (yyvsp[0]), CB_PROGRAM_TYPE)) {
6883  YYABORT;
6884  }
6885  }
6886 #line 6816 "parser.c" /* yacc.c:1646 */
6887  break;
6888 
6889  case 24:
6890 #line 2028 "parser.y" /* yacc.c:1646 */
6891  {
6892  cobc_cs_check = 0;
6893  }
6894 #line 6824 "parser.c" /* yacc.c:1646 */
6895  break;
6896 
6897  case 25:
6898 #line 2035 "parser.y" /* yacc.c:1646 */
6899  {
6900  if (set_up_program ((yyvsp[-2]), (yyvsp[-1]), CB_FUNCTION_TYPE)) {
6901  YYABORT;
6902  }
6903  set_up_func_prototype ((yyvsp[-2]), (yyvsp[-1]), 1);
6904  cobc_cs_check = 0;
6905  }
6906 #line 6836 "parser.c" /* yacc.c:1646 */
6907  break;
6908 
6909  case 26:
6910 #line 2046 "parser.y" /* yacc.c:1646 */
6911  {
6912  if (CB_REFERENCE_P ((yyvsp[0])) && CB_WORD_COUNT ((yyvsp[0])) > 0) {
6913  redefinition_error ((yyvsp[0]));
6914  }
6915  /*
6916  The program name is a key part of defining the current_program, so we
6917  mustn't lose it (unlike in undefined_word).
6918  */
6919  (yyval) = (yyvsp[0]);
6920  }
6921 #line 6851 "parser.c" /* yacc.c:1646 */
6922  break;
6923 
6924  case 30:
6925 #line 2065 "parser.y" /* yacc.c:1646 */
6926  { (yyval) = NULL; }
6927 #line 6857 "parser.c" /* yacc.c:1646 */
6928  break;
6929 
6930  case 31:
6931 #line 2066 "parser.y" /* yacc.c:1646 */
6932  { (yyval) = (yyvsp[0]); }
6933 #line 6863 "parser.c" /* yacc.c:1646 */
6934  break;
6935 
6936  case 34:
6937 #line 2075 "parser.y" /* yacc.c:1646 */
6938  {
6939  if (!current_program->nested_level) {
6940  cb_error (_("COMMON may only be used in a contained program"));
6941  } else {
6944  }
6945  }
6946 #line 6876 "parser.c" /* yacc.c:1646 */
6947  break;
6948 
6949  case 35:
6950 #line 2084 "parser.y" /* yacc.c:1646 */
6951  {
6952  if (!current_program->nested_level) {
6953  cb_error (_("COMMON may only be used in a contained program"));
6954  } else {
6957  }
6958  }
6959 #line 6889 "parser.c" /* yacc.c:1646 */
6960  break;
6961 
6962  case 38:
6963 #line 2098 "parser.y" /* yacc.c:1646 */
6964  {
6966  }
6967 #line 6897 "parser.c" /* yacc.c:1646 */
6968  break;
6969 
6970  case 39:
6971 #line 2102 "parser.y" /* yacc.c:1646 */
6972  {
6974  }
6975 #line 6905 "parser.c" /* yacc.c:1646 */
6976  break;
6977 
6978  case 42:
6979 #line 2118 "parser.y" /* yacc.c:1646 */
6980  {
6982  }
6983 #line 6913 "parser.c" /* yacc.c:1646 */
6984  break;
6985 
6986  case 45:
6987 #line 2135 "parser.y" /* yacc.c:1646 */
6988  {
6992  cb_error (_("%s not allowed in nested programs"), "CONFIGURATION SECTION");
6993  }
6994  }
6995 #line 6925 "parser.c" /* yacc.c:1646 */
6996  break;
6997 
6998  case 50:
6999 #line 2149 "parser.y" /* yacc.c:1646 */
7000  {
7002  cb_warning (_("Phrases in non-standard order"));
7003  }
7004  }
7005 #line 6935 "parser.c" /* yacc.c:1646 */
7006  break;
7007 
7008  case 51:
7009 #line 2161 "parser.y" /* yacc.c:1646 */
7010  {
7013  check_repeated ("SOURCE-COMPUTER", SYN_CLAUSE_1, &check_comp_duplicate);
7014  }
7015 #line 6945 "parser.c" /* yacc.c:1646 */
7016  break;
7017 
7018  case 56:
7019 #line 2176 "parser.y" /* yacc.c:1646 */
7020  {
7021  cb_verify (cb_debugging_line, "DEBUGGING MODE");
7023  needs_debug_item = 1;
7024  cobc_cs_check = 0;
7026  }
7027 #line 6957 "parser.c" /* yacc.c:1646 */
7028  break;
7029 
7030  case 57:
7031 #line 2189 "parser.y" /* yacc.c:1646 */
7032  {
7035  check_repeated ("OBJECT-COMPUTER", SYN_CLAUSE_2, &check_comp_duplicate);
7036  }
7037 #line 6967 "parser.c" /* yacc.c:1646 */
7038  break;
7039 
7040  case 69:
7041 #line 2218 "parser.y" /* yacc.c:1646 */
7042  {
7043  cb_verify (cb_memory_size_clause, "MEMORY SIZE");
7044  }
7045 #line 6975 "parser.c" /* yacc.c:1646 */
7046  break;
7047 
7048  case 70:
7049 #line 2226 "parser.y" /* yacc.c:1646 */
7050  {
7051  current_program->collating_sequence = (yyvsp[0]);
7052  }
7053 #line 6983 "parser.c" /* yacc.c:1646 */
7054  break;
7055 
7056  case 71:
7057 #line 2233 "parser.y" /* yacc.c:1646 */
7058  {
7059  /* Ignore */
7060  }
7061 #line 6991 "parser.c" /* yacc.c:1646 */
7062  break;
7063 
7064  case 72:
7065 #line 2240 "parser.y" /* yacc.c:1646 */
7066  {
7068  cb_error (_("Duplicate CLASSIFICATION clause"));
7069  } else {
7070  current_program->classification = (yyvsp[0]);
7071  }
7072  }
7073 #line 7003 "parser.c" /* yacc.c:1646 */
7074  break;
7075 
7076  case 73:
7077 #line 2251 "parser.y" /* yacc.c:1646 */
7078  {
7079  (yyval) = (yyvsp[0]);
7080  }
7081 #line 7011 "parser.c" /* yacc.c:1646 */
7082  break;
7083 
7084  case 74:
7085 #line 2255 "parser.y" /* yacc.c:1646 */
7086  {
7087  (yyval) = NULL;
7088  }
7089 #line 7019 "parser.c" /* yacc.c:1646 */
7090  break;
7091 
7092  case 75:
7093 #line 2259 "parser.y" /* yacc.c:1646 */
7094  {
7095  (yyval) = cb_int1;
7096  }
7097 #line 7027 "parser.c" /* yacc.c:1646 */
7098  break;
7099 
7100  case 76:
7101 #line 2263 "parser.y" /* yacc.c:1646 */
7102  {
7103  (yyval) = cb_int1;
7104  }
7105 #line 7035 "parser.c" /* yacc.c:1646 */
7106  break;
7107 
7108  case 80:
7109 #line 2277 "parser.y" /* yacc.c:1646 */
7110  {
7113  }
7114 #line 7044 "parser.c" /* yacc.c:1646 */
7115  break;
7116 
7117  case 81:
7118 #line 2282 "parser.y" /* yacc.c:1646 */
7119  {
7120  cobc_in_repository = 0;
7121  }
7122 #line 7052 "parser.c" /* yacc.c:1646 */
7123  break;
7124 
7125  case 84:
7126 #line 2290 "parser.y" /* yacc.c:1646 */
7127  {
7128  yyerrok;
7129  }
7130 #line 7060 "parser.c" /* yacc.c:1646 */
7131  break;
7132 
7133  case 87:
7134 #line 2302 "parser.y" /* yacc.c:1646 */
7135  {
7136  functions_are_all = 1;
7137  }
7138 #line 7068 "parser.c" /* yacc.c:1646 */
7139  break;
7140 
7141  case 88:
7142 #line 2306 "parser.y" /* yacc.c:1646 */
7143  {
7144  if ((yyvsp[-1]) != cb_error_node) {
7145  set_up_func_prototype ((yyvsp[-1]), (yyvsp[0]), 0);
7146  }
7147  }
7148 #line 7078 "parser.c" /* yacc.c:1646 */
7149  break;
7150 
7151  case 90:
7152 #line 2316 "parser.y" /* yacc.c:1646 */
7153  {
7154  (yyval) = NULL;
7155  }
7156 #line 7086 "parser.c" /* yacc.c:1646 */
7157  break;
7158 
7159  case 91:
7160 #line 2320 "parser.y" /* yacc.c:1646 */
7161  {
7162  (yyval) = (yyvsp[0]);
7163  }
7164 #line 7094 "parser.c" /* yacc.c:1646 */
7165  break;
7166 
7167  case 92:
7168 #line 2327 "parser.y" /* yacc.c:1646 */
7169  {
7172  }
7173 #line 7103 "parser.c" /* yacc.c:1646 */
7174  break;
7175 
7176  case 93:
7177 #line 2332 "parser.y" /* yacc.c:1646 */
7178  {
7181  }
7182 #line 7112 "parser.c" /* yacc.c:1646 */
7183  break;
7184 
7185  case 95:
7186 #line 2343 "parser.y" /* yacc.c:1646 */
7187  {
7188  check_duplicate = 0;
7193  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7194  }
7195  }
7196 #line 7126 "parser.c" /* yacc.c:1646 */
7197  break;
7198 
7199  case 114:
7200 #line 2388 "parser.y" /* yacc.c:1646 */
7201  {
7202  char system_name[16];
7206  check_duplicate = 0;
7208  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7209  save_tree = NULL;
7210  } else {
7211  /* get system name and revert word-combination of scanner.l,
7212  if necessary (e.g. SWITCH A <--> SWITCH_A) */
7213  strncpy(system_name, CB_NAME ((yyvsp[0])), 15);
7214  if (system_name [6] == '_') {
7215  system_name [6] = ' ';
7216  }
7217  /* lookup system name */
7218  save_tree = lookup_system_name (system_name);
7219  if (!save_tree) {
7220  cb_error_x ((yyvsp[0]), _("Invalid system-name '%s'"), system_name);
7221  }
7222  }
7223  }
7224 #line 7154 "parser.c" /* yacc.c:1646 */
7225  break;
7226 
7227  case 116:
7228 #line 2416 "parser.y" /* yacc.c:1646 */
7229  {
7230  if (save_tree) {
7231  if (CB_SYSTEM_NAME(save_tree)->token != CB_DEVICE_CONSOLE) {
7232  cb_error_x (save_tree, _("Invalid CRT clause"));
7233  } else {
7235  }
7236  }
7237  }
7238 #line 7168 "parser.c" /* yacc.c:1646 */
7239  break;
7240 
7241  case 117:
7242 #line 2426 "parser.y" /* yacc.c:1646 */
7243  {
7244  if (save_tree) {
7246  cb_error_x (save_tree, _("Invalid special names clause"));
7247  } else if (CB_VALID_TREE ((yyvsp[0]))) {
7248  CB_SYSTEM_NAME(save_tree)->value = (yyvsp[-2]);
7249  cb_define ((yyvsp[0]), save_tree);
7251  (yyvsp[0]), save_tree);
7252  }
7253  }
7254  }
7255 #line 7185 "parser.c" /* yacc.c:1646 */
7256  break;
7257 
7258  case 118:
7259 #line 2439 "parser.y" /* yacc.c:1646 */
7260  {
7261  if (save_tree && CB_VALID_TREE ((yyvsp[-1]))) {
7262  cb_define ((yyvsp[-1]), save_tree);
7264  (yyvsp[-1]), save_tree);
7265  }
7266  }
7267 #line 7197 "parser.c" /* yacc.c:1646 */
7268  break;
7269 
7270  case 122:
7271 #line 2455 "parser.y" /* yacc.c:1646 */
7272  {
7274  }
7275 #line 7205 "parser.c" /* yacc.c:1646 */
7276  break;
7277 
7278  case 123:
7279 #line 2462 "parser.y" /* yacc.c:1646 */
7280  {
7281  cb_tree x;
7282 
7283  /* cb_define_switch_name checks param validity */
7284  x = cb_define_switch_name ((yyvsp[0]), save_tree, (yyvsp[-2]) == cb_int1);
7285  if (x) {
7286  if ((yyvsp[-2]) == cb_int1) {
7288  } else {
7289  check_repeated ("OFF", SYN_CLAUSE_2, &check_on_off_duplicate);
7290  }
7292  }
7293  }
7294 #line 7224 "parser.c" /* yacc.c:1646 */
7295  break;
7296 
7297  case 124:
7298 #line 2477 "parser.y" /* yacc.c:1646 */
7299  {
7300  cb_tree x;
7301 
7302  /* cb_define_switch_name checks param validity */
7303  x = cb_define_switch_name ((yyvsp[0]), save_tree, (yyvsp[-2]) == cb_int1);
7304  if (x) {
7305  if ((yyvsp[-2]) == cb_int1) {
7307  } else {
7308  check_repeated ("OFF", SYN_CLAUSE_2, &check_on_off_duplicate);
7309  }
7311  }
7312  }
7313 #line 7243 "parser.c" /* yacc.c:1646 */
7314  break;
7315 
7316  case 125:
7317 #line 2497 "parser.y" /* yacc.c:1646 */
7318  {
7323  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7324  (yyval) = NULL;
7325  } else {
7326  /* Returns null on error */
7327  (yyval) = cb_build_alphabet_name ((yyvsp[0]));
7328  }
7329  }
7330 #line 7260 "parser.c" /* yacc.c:1646 */
7331  break;
7332 
7333  case 126:
7334 #line 2510 "parser.y" /* yacc.c:1646 */
7335  {
7336  if ((yyvsp[-2])) {
7339  }
7340  cobc_cs_check = 0;
7341  }
7342 #line 7272 "parser.c" /* yacc.c:1646 */
7343  break;
7344 
7345  case 127:
7346 #line 2521 "parser.y" /* yacc.c:1646 */
7347  {
7348  if ((yyvsp[(-1) - (1)])) {
7349  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->alphabet_type = CB_ALPHABET_NATIVE;
7350  }
7351  }
7352 #line 7282 "parser.c" /* yacc.c:1646 */
7353  break;
7354 
7355  case 128:
7356 #line 2527 "parser.y" /* yacc.c:1646 */
7357  {
7358  if ((yyvsp[(-1) - (1)])) {
7359  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->alphabet_type = CB_ALPHABET_ASCII;
7360  }
7361  }
7362 #line 7292 "parser.c" /* yacc.c:1646 */
7363  break;
7364 
7365  case 129:
7366 #line 2533 "parser.y" /* yacc.c:1646 */
7367  {
7368  if ((yyvsp[(-1) - (1)])) {
7369  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->alphabet_type = CB_ALPHABET_ASCII;
7370  }
7371  }
7372 #line 7302 "parser.c" /* yacc.c:1646 */
7373  break;
7374 
7375  case 130:
7376 #line 2539 "parser.y" /* yacc.c:1646 */
7377  {
7378  if ((yyvsp[(-1) - (1)])) {
7379  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->alphabet_type = CB_ALPHABET_EBCDIC;
7380  }
7381  }
7382 #line 7312 "parser.c" /* yacc.c:1646 */
7383  break;
7384 
7385  case 131:
7386 #line 2545 "parser.y" /* yacc.c:1646 */
7387  {
7388  if ((yyvsp[(-1) - (1)])) {
7389  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->alphabet_type = CB_ALPHABET_ASCII;
7390  }
7391  }
7392 #line 7322 "parser.c" /* yacc.c:1646 */
7393  break;
7394 
7395  case 132:
7396 #line 2551 "parser.y" /* yacc.c:1646 */
7397  {
7398  if ((yyvsp[(-1) - (1)])) {
7399  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->alphabet_type = CB_ALPHABET_CUSTOM;
7400  CB_ALPHABET_NAME ((yyvsp[(-1) - (1)]))->custom_list = (yyvsp[0]);
7401  }
7402  }
7403 #line 7333 "parser.c" /* yacc.c:1646 */
7404  break;
7405 
7406  case 133:
7407 #line 2561 "parser.y" /* yacc.c:1646 */
7408  {
7409  (yyval) = CB_LIST_INIT ((yyvsp[0]));
7410  }
7411 #line 7341 "parser.c" /* yacc.c:1646 */
7412  break;
7413 
7414  case 134:
7415 #line 2565 "parser.y" /* yacc.c:1646 */
7416  {
7417  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
7418  }
7419 #line 7349 "parser.c" /* yacc.c:1646 */
7420  break;
7421 
7422  case 135:
7423 #line 2572 "parser.y" /* yacc.c:1646 */
7424  {
7425  (yyval) = (yyvsp[0]);
7426  }
7427 #line 7357 "parser.c" /* yacc.c:1646 */
7428  break;
7429 
7430  case 136:
7431 #line 2576 "parser.y" /* yacc.c:1646 */
7432  {
7433  (yyval) = CB_BUILD_PAIR ((yyvsp[-2]), (yyvsp[0]));
7434  }
7435 #line 7365 "parser.c" /* yacc.c:1646 */
7436  break;
7437 
7438  case 137:
7439 #line 2580 "parser.y" /* yacc.c:1646 */
7440  {
7441  (yyval) = CB_LIST_INIT ((yyvsp[-1]));
7442  }
7443 #line 7373 "parser.c" /* yacc.c:1646 */
7444  break;
7445 
7446  case 138:
7447 #line 2584 "parser.y" /* yacc.c:1646 */
7448  {
7449  (yyval) = (yyvsp[-1]);
7450  }
7451 #line 7381 "parser.c" /* yacc.c:1646 */
7452  break;
7453 
7454  case 139:
7455 #line 2591 "parser.y" /* yacc.c:1646 */
7456  {
7457  cb_list_add ((yyvsp[-1]), (yyvsp[0]));
7458  }
7459 #line 7389 "parser.c" /* yacc.c:1646 */
7460  break;
7461 
7462  case 140:
7463 #line 2595 "parser.y" /* yacc.c:1646 */
7464  {
7465  cb_list_add ((yyvsp[-3]), (yyvsp[0]));
7466  }
7467 #line 7397 "parser.c" /* yacc.c:1646 */
7468  break;
7469 
7470  case 141:
7471 #line 2601 "parser.y" /* yacc.c:1646 */
7472  { (yyval) = (yyvsp[0]); }
7473 #line 7403 "parser.c" /* yacc.c:1646 */
7474  break;
7475 
7476  case 142:
7477 #line 2602 "parser.y" /* yacc.c:1646 */
7478  { (yyval) = cb_space; }
7479 #line 7409 "parser.c" /* yacc.c:1646 */
7480  break;
7481 
7482  case 143:
7483 #line 2603 "parser.y" /* yacc.c:1646 */
7484  { (yyval) = cb_zero; }
7485 #line 7415 "parser.c" /* yacc.c:1646 */
7486  break;
7487 
7488  case 144:
7489 #line 2604 "parser.y" /* yacc.c:1646 */
7490  { (yyval) = cb_quote; }
7491 #line 7421 "parser.c" /* yacc.c:1646 */
7492  break;
7493 
7494  case 145:
7495 #line 2605 "parser.y" /* yacc.c:1646 */
7496  { (yyval) = cb_norm_high; }
7497 #line 7427 "parser.c" /* yacc.c:1646 */
7498  break;
7499 
7500  case 146:
7501 #line 2606 "parser.y" /* yacc.c:1646 */
7502  { (yyval) = cb_norm_low; }
7503 #line 7433 "parser.c" /* yacc.c:1646 */
7504  break;
7505 
7506  case 147:
7507 #line 2610 "parser.y" /* yacc.c:1646 */
7508  { (yyval) = cb_space; }
7509 #line 7439 "parser.c" /* yacc.c:1646 */
7510  break;
7511 
7512  case 148:
7513 #line 2611 "parser.y" /* yacc.c:1646 */
7514  { (yyval) = cb_zero; }
7515 #line 7445 "parser.c" /* yacc.c:1646 */
7516  break;
7517 
7518  case 149:
7519 #line 2619 "parser.y" /* yacc.c:1646 */
7520  {
7525  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7526  } else if ((yyvsp[-1])) {
7527  CB_CHAIN_PAIR (current_program->symbolic_char_list, (yyvsp[-1]), (yyvsp[0]));
7528  }
7529  }
7530 #line 7460 "parser.c" /* yacc.c:1646 */
7531  break;
7532 
7533  case 150:
7534 #line 2633 "parser.y" /* yacc.c:1646 */
7535  {
7536  (yyval) = NULL;
7537  }
7538 #line 7468 "parser.c" /* yacc.c:1646 */
7539  break;
7540 
7541  case 151:
7542 #line 2637 "parser.y" /* yacc.c:1646 */
7543  {
7544  (yyval) = (yyvsp[0]);
7545  }
7546 #line 7476 "parser.c" /* yacc.c:1646 */
7547  break;
7548 
7549  case 152:
7550 #line 2645 "parser.y" /* yacc.c:1646 */
7551  {
7552  (yyval) = (yyvsp[0]);
7553  }
7554 #line 7484 "parser.c" /* yacc.c:1646 */
7555  break;
7556 
7557  case 153:
7558 #line 2652 "parser.y" /* yacc.c:1646 */
7559  {
7560  (yyval) = (yyvsp[0]);
7561  }
7562 #line 7492 "parser.c" /* yacc.c:1646 */
7563  break;
7564 
7565  case 154:
7566 #line 2656 "parser.y" /* yacc.c:1646 */
7567  {
7568  if ((yyvsp[0])) {
7569  (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0]));
7570  } else {
7571  (yyval) = (yyvsp[-1]);
7572  }
7573  }
7574 #line 7504 "parser.c" /* yacc.c:1646 */
7575  break;
7576 
7577  case 155:
7578 #line 2667 "parser.y" /* yacc.c:1646 */
7579  {
7580  cb_tree l1;
7581  cb_tree l2;
7582 
7583  if (cb_list_length ((yyvsp[-2])) != cb_list_length ((yyvsp[0]))) {
7584  cb_error (_("Invalid SYMBOLIC clause"));
7585  (yyval) = NULL;
7586  } else {
7587  l1 = (yyvsp[-2]);
7588  l2 = (yyvsp[0]);
7589  for (; l1; l1 = CB_CHAIN (l1), l2 = CB_CHAIN (l2)) {
7590  CB_PURPOSE (l1) = CB_VALUE (l2);
7591  }
7592  (yyval) = (yyvsp[-2]);
7593  }
7594  }
7595 #line 7525 "parser.c" /* yacc.c:1646 */
7596  break;
7597 
7598  case 156:
7599 #line 2687 "parser.y" /* yacc.c:1646 */
7600  {
7601  if ((yyvsp[0]) == NULL) {
7602  (yyval) = NULL;
7603  } else {
7604  (yyval) = CB_LIST_INIT ((yyvsp[0]));
7605  }
7606  }
7607 #line 7537 "parser.c" /* yacc.c:1646 */
7608  break;
7609 
7610  case 157:
7611 #line 2695 "parser.y" /* yacc.c:1646 */
7612  {
7613  if ((yyvsp[0]) == NULL) {
7614  (yyval) = (yyvsp[-1]);
7615  } else {
7616  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
7617  }
7618  }
7619 #line 7549 "parser.c" /* yacc.c:1646 */
7620  break;
7621 
7622  case 158:
7623 #line 2705 "parser.y" /* yacc.c:1646 */
7624  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
7625 #line 7555 "parser.c" /* yacc.c:1646 */
7626  break;
7627 
7628  case 159:
7629 #line 2706 "parser.y" /* yacc.c:1646 */
7630  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
7631 #line 7561 "parser.c" /* yacc.c:1646 */
7632  break;
7633 
7634  case 160:
7635 #line 2713 "parser.y" /* yacc.c:1646 */
7636  {
7637  cb_tree x;
7638 
7643  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7644  } else {
7645  /* Returns null on error */
7646  x = cb_build_class_name ((yyvsp[-2]), (yyvsp[0]));
7647  if (x) {
7650  }
7651  }
7652  }
7653 #line 7583 "parser.c" /* yacc.c:1646 */
7654  break;
7655 
7656  case 161:
7657 #line 2733 "parser.y" /* yacc.c:1646 */
7658  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
7659 #line 7589 "parser.c" /* yacc.c:1646 */
7660  break;
7661 
7662  case 162:
7663 #line 2734 "parser.y" /* yacc.c:1646 */
7664  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
7665 #line 7595 "parser.c" /* yacc.c:1646 */
7666  break;
7667 
7668  case 163:
7669 #line 2739 "parser.y" /* yacc.c:1646 */
7670  {
7671  (yyval) = (yyvsp[0]);
7672  }
7673 #line 7603 "parser.c" /* yacc.c:1646 */
7674  break;
7675 
7676  case 164:
7677 #line 2743 "parser.y" /* yacc.c:1646 */
7678  {
7679  if (CB_TREE_CLASS ((yyvsp[-2])) != CB_CLASS_NUMERIC &&
7680  CB_LITERAL_P ((yyvsp[-2])) && CB_LITERAL ((yyvsp[-2]))->size != 1) {
7681  cb_error (_("CLASS literal with THRU must have size 1"));
7682  }
7683  if (CB_TREE_CLASS ((yyvsp[0])) != CB_CLASS_NUMERIC &&
7684  CB_LITERAL_P ((yyvsp[0])) && CB_LITERAL ((yyvsp[0]))->size != 1) {
7685  cb_error (_("CLASS literal with THRU must have size 1"));
7686  }
7687  if (literal_value ((yyvsp[-2])) <= literal_value ((yyvsp[0]))) {
7688  (yyval) = CB_BUILD_PAIR ((yyvsp[-2]), (yyvsp[0]));
7689  } else {
7690  (yyval) = CB_BUILD_PAIR ((yyvsp[0]), (yyvsp[-2]));
7691  }
7692  }
7693 #line 7623 "parser.c" /* yacc.c:1646 */
7694  break;
7695 
7696  case 165:
7697 #line 2764 "parser.y" /* yacc.c:1646 */
7698  {
7699  cb_tree l;
7700 
7705  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7706  } else {
7707  /* Returns null on error */
7708  l = cb_build_locale_name ((yyvsp[-2]), (yyvsp[0]));
7709  if (l) {
7712  }
7713  }
7714  }
7715 #line 7645 "parser.c" /* yacc.c:1646 */
7716  break;
7717 
7718  case 166:
7719 #line 2787 "parser.y" /* yacc.c:1646 */
7720  {
7721  unsigned char *s = CB_LITERAL ((yyvsp[-1]))->data;
7722  unsigned int error_ind = 0;
7723 
7728  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7729  error_ind = 1;
7730  }
7732  if ((yyvsp[0])) {
7733  PENDING ("PICTURE SYMBOL");
7734  }
7735  if (CB_LITERAL ((yyvsp[-1]))->size != 1) {
7736  cb_error_x ((yyvsp[-1]), _("Invalid currency sign '%s'"), (char *)s);
7737  error_ind = 1;
7738  }
7739  switch (*s) {
7740  case '0':
7741  case '1':
7742  case '2':
7743  case '3':
7744  case '4':
7745  case '5':
7746  case '6':
7747  case '7':
7748  case '8':
7749  case '9':
7750  case 'A':
7751  case 'B':
7752  case 'C':
7753  case 'D':
7754  case 'E':
7755  case 'N':
7756  case 'P':
7757  case 'R':
7758  case 'S':
7759  case 'V':
7760  case 'X':
7761  case 'Z':
7762  case 'a':
7763  case 'b':
7764  case 'c':
7765  case 'd':
7766  case 'e':
7767  case 'n':
7768  case 'p':
7769  case 'r':
7770  case 's':
7771  case 'v':
7772  case 'x':
7773  case 'z':
7774  case '+':
7775  case '-':
7776  case ',':
7777  case '.':
7778  case '*':
7779  case '/':
7780  case ';':
7781  case '(':
7782  case ')':
7783  case '=':
7784  case '\'':
7785  case '"':
7786  case ' ':
7787  cb_error_x ((yyvsp[-1]), _("Invalid currency sign '%s'"), (char *)s);
7788  break;
7789  default:
7790  if (!error_ind) {
7792  }
7793  break;
7794  }
7795  }
7796 #line 7726 "parser.c" /* yacc.c:1646 */
7797  break;
7798 
7799  case 167:
7800 #line 2868 "parser.y" /* yacc.c:1646 */
7801  {
7802  (yyval) = NULL;
7803  }
7804 #line 7734 "parser.c" /* yacc.c:1646 */
7805  break;
7806 
7807  case 168:
7808 #line 2872 "parser.y" /* yacc.c:1646 */
7809  {
7810  (yyval) = (yyvsp[0]);
7811  }
7812 #line 7742 "parser.c" /* yacc.c:1646 */
7813  break;
7814 
7815  case 169:
7816 #line 2881 "parser.y" /* yacc.c:1646 */
7817  {
7822  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7823  } else {
7824  check_repeated ("DECIMAL-POINT", SYN_CLAUSE_2, &check_duplicate);
7827  }
7828  }
7829 #line 7759 "parser.c" /* yacc.c:1646 */
7830  break;
7831 
7832  case 170:
7833 #line 2900 "parser.y" /* yacc.c:1646 */
7834  {
7839  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7840  } else {
7842  }
7843  }
7844 #line 7774 "parser.c" /* yacc.c:1646 */
7845  break;
7846 
7847  case 171:
7848 #line 2916 "parser.y" /* yacc.c:1646 */
7849  {
7854  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7855  } else {
7857  current_program->cursor_pos = (yyvsp[0]);
7858  }
7859  }
7860 #line 7790 "parser.c" /* yacc.c:1646 */
7861  break;
7862 
7863  case 172:
7864 #line 2934 "parser.y" /* yacc.c:1646 */
7865  {
7870  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7871  } else {
7872  check_repeated ("CRT STATUS", SYN_CLAUSE_4, &check_duplicate);
7873  current_program->crt_status = (yyvsp[0]);
7874  }
7875  }
7876 #line 7806 "parser.c" /* yacc.c:1646 */
7877  break;
7878 
7879  case 173:
7880 #line 2952 "parser.y" /* yacc.c:1646 */
7881  {
7886  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7887  } else {
7888  check_repeated ("SCREEN CONTROL", SYN_CLAUSE_5, &check_duplicate);
7889  PENDING ("SCREEN CONTROL");
7890  }
7891  }
7892 #line 7822 "parser.c" /* yacc.c:1646 */
7893  break;
7894 
7895  case 174:
7896 #line 2969 "parser.y" /* yacc.c:1646 */
7897  {
7902  cb_error (_("%s not allowed in nested programs"), "SPECIAL-NAMES");
7903  } else {
7904  check_repeated ("EVENT STATUS", SYN_CLAUSE_6, &check_duplicate);
7905  PENDING ("EVENT STATUS");
7906  }
7907  }
7908 #line 7838 "parser.c" /* yacc.c:1646 */
7909  break;
7910 
7911  case 175:
7912 #line 2990 "parser.y" /* yacc.c:1646 */
7913  {
7915  }
7916 #line 7846 "parser.c" /* yacc.c:1646 */
7917  break;
7918 
7919  case 177:
7920 #line 2997 "parser.y" /* yacc.c:1646 */
7921  {
7924  }
7925 #line 7855 "parser.c" /* yacc.c:1646 */
7926  break;
7927 
7928  case 179:
7929 #line 3005 "parser.y" /* yacc.c:1646 */
7930  {
7934  }
7935 #line 7865 "parser.c" /* yacc.c:1646 */
7936  break;
7937 
7938  case 181:
7939 #line 3014 "parser.y" /* yacc.c:1646 */
7940  {
7944  }
7945 #line 7875 "parser.c" /* yacc.c:1646 */
7946  break;
7947 
7948  case 184:
7949 #line 3029 "parser.y" /* yacc.c:1646 */
7950  {
7954  check_duplicate = 0;
7955  if (CB_VALID_TREE ((yyvsp[0]))) {
7956  /* Build new file */
7957  current_file = build_file ((yyvsp[0]));
7958  current_file->optional = CB_INTEGER ((yyvsp[-1]))->val;
7959 
7960  /* Add file to current program list */
7963  } else {
7964  current_file = NULL;
7965  if (current_program->file_list) {
7968  }
7969  }
7970  }
7971 #line 7901 "parser.c" /* yacc.c:1646 */
7972  break;
7973 
7974  case 185:
7975 #line 3051 "parser.y" /* yacc.c:1646 */
7976  {
7977  if (CB_VALID_TREE ((yyvsp[-3]))) {
7978  validate_file (current_file, (yyvsp[-3]));
7979  }
7980  }
7981 #line 7911 "parser.c" /* yacc.c:1646 */
7982  break;
7983 
7984  case 201:
7985 #line 3083 "parser.y" /* yacc.c:1646 */
7986  {
7988  cobc_cs_check = 0;
7990  }
7991 #line 7921 "parser.c" /* yacc.c:1646 */
7992  break;
7993 
7994  case 202:
7995 #line 3089 "parser.y" /* yacc.c:1646 */
7996  {
7998  cobc_cs_check = 0;
7999  if ((yyvsp[0])) {
8001  } else {
8003  }
8004  }
8005 #line 7935 "parser.c" /* yacc.c:1646 */
8006  break;
8007 
8008  case 203:
8009 #line 3099 "parser.y" /* yacc.c:1646 */
8010  {
8012  cobc_cs_check = 0;
8013  if ((yyvsp[0])) {
8015  } else {
8017  current_file->assign =
8018  cb_build_alphanumeric_literal ("stdout", (size_t)6);
8020  }
8021  }
8022 #line 7952 "parser.c" /* yacc.c:1646 */
8023  break;
8024 
8025  case 204:
8026 #line 3112 "parser.y" /* yacc.c:1646 */
8027  {
8029  cobc_cs_check = 0;
8030  if ((yyvsp[0])) {
8032  } else {
8034  current_file->assign =
8035  cb_build_alphanumeric_literal ("stdin", (size_t)5);
8037  }
8038  }
8039 #line 7969 "parser.c" /* yacc.c:1646 */
8040  break;
8041 
8042  case 205:
8043 #line 3125 "parser.y" /* yacc.c:1646 */
8044  {
8046  cobc_cs_check = 0;
8048  if ((yyvsp[0])) {
8050  } else {
8051  /* RM/COBOL always expects an assignment name here - we ignore this
8052  for PRINTER + PRINTER-1 as ACUCOBOL allows this for using as alias */
8054  if ((yyvsp[-1]) == cb_int0) {
8055  current_file->assign =
8056  cb_build_alphanumeric_literal ("PRINTER", (size_t)7);
8057  } else if ((yyvsp[-1]) == cb_int1) {
8058  current_file->assign =
8059  cb_build_alphanumeric_literal ("PRINTER-1", (size_t)9);
8060  } else {
8061  current_file->assign =
8062  cb_build_alphanumeric_literal ("LPT1", (size_t)4);
8063  }
8064 
8065  }
8066  }
8067 #line 7997 "parser.c" /* yacc.c:1646 */
8068  break;
8069 
8070  case 206:
8071 #line 3151 "parser.y" /* yacc.c:1646 */
8072  { (yyval) = cb_int0; }
8073 #line 8003 "parser.c" /* yacc.c:1646 */
8074  break;
8075 
8076  case 207:
8077 #line 3152 "parser.y" /* yacc.c:1646 */
8078  { (yyval) = cb_int1; }
8079 #line 8009 "parser.c" /* yacc.c:1646 */
8080  break;
8081 
8082  case 208:
8083 #line 3153 "parser.y" /* yacc.c:1646 */
8084  { (yyval) = cb_int4; }
8085 #line 8015 "parser.c" /* yacc.c:1646 */
8086  break;
8087 
8088  case 214:
8089 #line 3165 "parser.y" /* yacc.c:1646 */
8090  {
8092  }
8093 #line 8023 "parser.c" /* yacc.c:1646 */
8094  break;
8095 
8096  case 216:
8097 #line 3172 "parser.y" /* yacc.c:1646 */
8098  {
8100  }
8101 #line 8031 "parser.c" /* yacc.c:1646 */
8102  break;
8103 
8104  case 220:
8105 #line 3185 "parser.y" /* yacc.c:1646 */
8106  {
8107  (yyval) = NULL;
8108  }
8109 #line 8039 "parser.c" /* yacc.c:1646 */
8110  break;
8111 
8112  case 223:
8113 #line 3197 "parser.y" /* yacc.c:1646 */
8114  {
8115  cobc_cs_check = 0;
8116  check_repeated ("ACCESS", SYN_CLAUSE_2, &check_duplicate);
8117  }
8118 #line 8048 "parser.c" /* yacc.c:1646 */
8119  break;
8120 
8121  case 224:
8122 #line 3204 "parser.y" /* yacc.c:1646 */
8124 #line 8054 "parser.c" /* yacc.c:1646 */
8125  break;
8126 
8127  case 225:
8128 #line 3205 "parser.y" /* yacc.c:1646 */
8130 #line 8060 "parser.c" /* yacc.c:1646 */
8131  break;
8132 
8133  case 226:
8134 #line 3206 "parser.y" /* yacc.c:1646 */
8136 #line 8066 "parser.c" /* yacc.c:1646 */
8137  break;
8138 
8139  case 227:
8140 #line 3214 "parser.y" /* yacc.c:1646 */
8141  {
8142  struct cb_alt_key *p;
8143  struct cb_alt_key *l;
8144 
8145  p = cobc_parse_malloc (sizeof (struct cb_alt_key));
8146  p->key = (yyvsp[-2]);
8147  p->duplicates = CB_INTEGER ((yyvsp[-1]))->val;
8148  p->next = NULL;
8149 
8150  /* Add to the end of list */
8151  if (current_file->alt_key_list == NULL) {
8153  } else {
8155  for (; l->next; l = l->next) {
8156  ;
8157  }
8158  l->next = p;
8159  }
8160  }
8161 #line 8091 "parser.c" /* yacc.c:1646 */
8162  break;
8163 
8164  case 228:
8165 #line 3237 "parser.y" /* yacc.c:1646 */
8166  { }
8167 #line 8097 "parser.c" /* yacc.c:1646 */
8168  break;
8169 
8170  case 229:
8171 #line 3240 "parser.y" /* yacc.c:1646 */
8172  {
8173  PENDING ("SUPPRESS WHEN ALL");
8174  }
8175 #line 8105 "parser.c" /* yacc.c:1646 */
8176  break;
8177 
8178  case 230:
8179 #line 3245 "parser.y" /* yacc.c:1646 */
8180  {
8181  PENDING ("SUPPRESS WHEN SPACE/ZERO");
8182  }
8183 #line 8113 "parser.c" /* yacc.c:1646 */
8184  break;
8185 
8186  case 231:
8187 #line 3255 "parser.y" /* yacc.c:1646 */
8188  {
8189  check_repeated ("COLLATING", SYN_CLAUSE_3, &check_duplicate);
8190  PENDING ("COLLATING SEQUENCE");
8191  }
8192 #line 8122 "parser.c" /* yacc.c:1646 */
8193  break;
8194 
8195  case 232:
8196 #line 3266 "parser.y" /* yacc.c:1646 */
8197  {
8199  current_file->file_status = (yyvsp[0]);
8200  }
8201 #line 8131 "parser.c" /* yacc.c:1646 */
8202  break;
8203 
8204  case 236:
8205 #line 3281 "parser.y" /* yacc.c:1646 */
8206  {
8208  }
8209 #line 8139 "parser.c" /* yacc.c:1646 */
8210  break;
8211 
8212  case 238:
8213 #line 3289 "parser.y" /* yacc.c:1646 */
8214  {
8216  cobc_cs_check = 0;
8217  }
8218 #line 8148 "parser.c" /* yacc.c:1646 */
8219  break;
8220 
8221  case 239:
8222 #line 3294 "parser.y" /* yacc.c:1646 */
8223  {
8225  cobc_cs_check = 0;
8226  }
8227 #line 8157 "parser.c" /* yacc.c:1646 */
8228  break;
8229 
8230  case 240:
8231 #line 3299 "parser.y" /* yacc.c:1646 */
8232  {
8234  cobc_cs_check = 0;
8235  }
8236 #line 8166 "parser.c" /* yacc.c:1646 */
8237  break;
8238 
8239  case 243:
8240 #line 3308 "parser.y" /* yacc.c:1646 */
8241  {
8243  }
8244 #line 8174 "parser.c" /* yacc.c:1646 */
8245  break;
8246 
8247  case 244:
8248 #line 3312 "parser.y" /* yacc.c:1646 */
8249  {
8251  PENDING ("WITH ROLLBACK");
8252  }
8253 #line 8183 "parser.c" /* yacc.c:1646 */
8254  break;
8255 
8256  case 247:
8257 #line 3328 "parser.y" /* yacc.c:1646 */
8258  {
8259  check_repeated ("ORGANIZATION", SYN_CLAUSE_6, &check_duplicate);
8261  }
8262 #line 8192 "parser.c" /* yacc.c:1646 */
8263  break;
8264 
8265  case 248:
8266 #line 3333 "parser.y" /* yacc.c:1646 */
8267  {
8268  check_repeated ("ORGANIZATION", SYN_CLAUSE_6, &check_duplicate);
8270  }
8271 #line 8201 "parser.c" /* yacc.c:1646 */
8272  break;
8273 
8274  case 249:
8275 #line 3338 "parser.y" /* yacc.c:1646 */
8276  {
8277  check_repeated ("ORGANIZATION", SYN_CLAUSE_6, &check_duplicate);
8279  }
8280 #line 8210 "parser.c" /* yacc.c:1646 */
8281  break;
8282 
8283  case 250:
8284 #line 3343 "parser.y" /* yacc.c:1646 */
8285  {
8286  check_repeated ("ORGANIZATION", SYN_CLAUSE_6, &check_duplicate);
8288  }
8289 #line 8219 "parser.c" /* yacc.c:1646 */
8290  break;
8291 
8292  case 251:
8293 #line 3354 "parser.y" /* yacc.c:1646 */
8294  {
8296  cb_verify (cb_padding_character_clause, "PADDING CHARACTER");
8297  }
8298 #line 8228 "parser.c" /* yacc.c:1646 */
8299  break;
8300 
8301  case 252:
8302 #line 3365 "parser.y" /* yacc.c:1646 */
8303  {
8304  check_repeated ("RECORD DELIMITER", SYN_CLAUSE_8, &check_duplicate);
8305  }
8306 #line 8236 "parser.c" /* yacc.c:1646 */
8307  break;
8308 
8309  case 253:
8310 #line 3375 "parser.y" /* yacc.c:1646 */
8311  {
8312  check_repeated ("RECORD KEY", SYN_CLAUSE_9, &check_duplicate);
8313  current_file->key = (yyvsp[0]);
8314  }
8315 #line 8245 "parser.c" /* yacc.c:1646 */
8316  break;
8317 
8318  case 254:
8319 #line 3382 "parser.y" /* yacc.c:1646 */
8320  { (yyval) = (yyvsp[0]); }
8321 #line 8251 "parser.c" /* yacc.c:1646 */
8322  break;
8323 
8324  case 255:
8325 #line 3383 "parser.y" /* yacc.c:1646 */
8326  { PENDING ("SPLIT KEYS"); }
8327 #line 8257 "parser.c" /* yacc.c:1646 */
8328  break;
8329 
8330  case 256:
8331 #line 3384 "parser.y" /* yacc.c:1646 */
8332  { PENDING ("SPLIT KEYS"); }
8333 #line 8263 "parser.c" /* yacc.c:1646 */
8334  break;
8335 
8336  case 257:
8337 #line 3391 "parser.y" /* yacc.c:1646 */
8338  {
8339  check_repeated ("RELATIVE KEY", SYN_CLAUSE_10, &check_duplicate);
8340  current_file->key = (yyvsp[0]);
8341  }
8342 #line 8272 "parser.c" /* yacc.c:1646 */
8343  break;
8344 
8345  case 258:
8346 #line 3402 "parser.y" /* yacc.c:1646 */
8347  {
8349  }
8350 #line 8280 "parser.c" /* yacc.c:1646 */
8351  break;
8352 
8353  case 261:
8354 #line 3416 "parser.y" /* yacc.c:1646 */
8355  {
8357  current_file->sharing = (yyvsp[0]);
8358  }
8359 #line 8289 "parser.c" /* yacc.c:1646 */
8360  break;
8361 
8362  case 262:
8363 #line 3423 "parser.y" /* yacc.c:1646 */
8364  { (yyval) = NULL; }
8365 #line 8295 "parser.c" /* yacc.c:1646 */
8366  break;
8367 
8368  case 263:
8369 #line 3424 "parser.y" /* yacc.c:1646 */
8370  { (yyval) = cb_int (COB_LOCK_OPEN_EXCLUSIVE); }
8371 #line 8301 "parser.c" /* yacc.c:1646 */
8372  break;
8373 
8374  case 264:
8375 #line 3425 "parser.y" /* yacc.c:1646 */
8376  { (yyval) = NULL; }
8377 #line 8307 "parser.c" /* yacc.c:1646 */
8378  break;
8379 
8380  case 267:
8381 #line 3434 "parser.y" /* yacc.c:1646 */
8382  {
8383  yyerrok;
8384  }
8385 #line 8315 "parser.c" /* yacc.c:1646 */
8386  break;
8387 
8388  case 272:
8389 #line 3453 "parser.y" /* yacc.c:1646 */
8390  {
8391  cb_tree l;
8392 
8395  COBC_HD_I_O_CONTROL, 0);
8396  switch (CB_INTEGER ((yyvsp[-3]))->val) {
8397  case 0:
8398  /* SAME AREA */
8399  break;
8400  case 1:
8401  /* SAME RECORD */
8402  for (l = (yyvsp[0]); l; l = CB_CHAIN (l)) {
8403  if (CB_VALID_TREE (CB_VALUE (l))) {
8404  CB_FILE (cb_ref (CB_VALUE (l)))->same_clause = samearea;
8405  }
8406  }
8407  samearea++;
8408  break;
8409  case 2:
8410  /* SAME SORT-MERGE */
8411  break;
8412  }
8413  }
8414 #line 8344 "parser.c" /* yacc.c:1646 */
8415  break;
8416 
8417  case 273:
8418 #line 3480 "parser.y" /* yacc.c:1646 */
8419  { (yyval) = cb_int0; }
8420 #line 8350 "parser.c" /* yacc.c:1646 */
8421  break;
8422 
8423  case 274:
8424 #line 3481 "parser.y" /* yacc.c:1646 */
8425  { (yyval) = cb_int1; }
8426 #line 8356 "parser.c" /* yacc.c:1646 */
8427  break;
8428 
8429  case 275:
8430 #line 3482 "parser.y" /* yacc.c:1646 */
8431  { (yyval) = cb_int2; }
8432 #line 8362 "parser.c" /* yacc.c:1646 */
8433  break;
8434 
8435  case 276:
8436 #line 3483 "parser.y" /* yacc.c:1646 */
8437  { (yyval) = cb_int2; }
8438 #line 8368 "parser.c" /* yacc.c:1646 */
8439  break;
8440 
8441  case 277:
8442 #line 3490 "parser.y" /* yacc.c:1646 */
8443  {
8444  /* Fake for TAPE */
8446  }
8447 #line 8377 "parser.c" /* yacc.c:1646 */
8448  break;
8449 
8450  case 278:
8451 #line 3495 "parser.y" /* yacc.c:1646 */
8452  {
8455  COBC_HD_I_O_CONTROL, 0);
8456  cb_verify (cb_multiple_file_tape_clause, "MULTIPLE FILE TAPE");
8457  cobc_cs_check = 0;
8458  }
8459 #line 8389 "parser.c" /* yacc.c:1646 */
8460  break;
8461 
8462  case 284:
8463 #line 3524 "parser.y" /* yacc.c:1646 */
8464  {
8466  }
8467 #line 8397 "parser.c" /* yacc.c:1646 */
8468  break;
8469 
8470  case 285:
8471 #line 3532 "parser.y" /* yacc.c:1646 */
8472  {
8474  }
8475 #line 8405 "parser.c" /* yacc.c:1646 */
8476  break;
8477 
8478  case 287:
8479 #line 3539 "parser.y" /* yacc.c:1646 */
8480  {
8482  }
8483 #line 8413 "parser.c" /* yacc.c:1646 */
8484  break;
8485 
8486  case 289:
8487 #line 3548 "parser.y" /* yacc.c:1646 */
8488  {
8490  }
8491 #line 8365 "parser.c" /* yacc.c:1646 */
8492  break;
8493 
8494  case 290:
8495 #line 3552 "parser.y" /* yacc.c:1646 */
8496  {
8500  }
8501 #line 8423 "parser.c" /* yacc.c:1646 */
8502  break;
8503 
8504  case 292:
8505 #line 3562 "parser.y" /* yacc.c:1646 */
8506  {
8507  if (CB_VALID_TREE (current_file)) {
8508  if (CB_VALID_TREE ((yyvsp[0]))) {
8509  if (current_file->reports) {
8510  cb_error (_("RECORD description invalid with REPORT"));
8511  } else {
8512  finalize_file (current_file, CB_FIELD ((yyvsp[0])));
8513  }
8514  } else if (!current_file->reports) {
8515  cb_error (_("RECORD description missing or invalid"));
8516  }
8517  }
8518  }
8519 #line 8441 "parser.c" /* yacc.c:1646 */
8520  break;
8521 
8522  case 293:
8523 #line 3581 "parser.y" /* yacc.c:1646 */
8524  {
8527  COBC_HD_FILE_SECTION, 0, 0);
8528  check_duplicate = 0;
8529  if (CB_INVALID_TREE ((yyvsp[0])) || cb_ref ((yyvsp[0])) == cb_error_node) {
8530  YYERROR;
8531  }
8532  current_file = CB_FILE (cb_ref ((yyvsp[0])));
8533  if (CB_VALID_TREE (current_file)) {
8534  if ((yyvsp[-1])) {
8536  }
8537  }
8538  }
8539 #line 8461 "parser.c" /* yacc.c:1646 */
8540  break;
8541 
8542  case 295:
8543 #line 3598 "parser.y" /* yacc.c:1646 */
8544  {
8545  yyerrok;
8546  }
8547 #line 8469 "parser.c" /* yacc.c:1646 */
8548  break;
8549 
8550  case 296:
8551 #line 3605 "parser.y" /* yacc.c:1646 */
8552  {
8553  (yyval) = NULL;
8554  }
8555 #line 8477 "parser.c" /* yacc.c:1646 */
8556  break;
8557 
8558  case 297:
8559 #line 3609 "parser.y" /* yacc.c:1646 */
8560  {
8561  (yyval) = cb_int1;
8562  }
8563 #line 8485 "parser.c" /* yacc.c:1646 */
8564  break;
8565 
8566  case 300:
8567 #line 3620 "parser.y" /* yacc.c:1646 */
8568  {
8570 #if 0 /* RXWRXW - Global/External */
8571  if (current_file->flag_global) {
8572  cb_error (_("File cannot have both EXTERNAL and GLOBAL clauses"));
8573  }
8574 #endif
8576  }
8577 #line 8499 "parser.c" /* yacc.c:1646 */
8578  break;
8579 
8580  case 301:
8581 #line 3630 "parser.y" /* yacc.c:1646 */
8582  {
8583  check_repeated ("GLOBAL", SYN_CLAUSE_2, &check_duplicate);
8584 #if 0 /* RXWRXW - Global/External */
8585  if (current_file->flag_external) {
8586  cb_error (_("File cannot have both EXTERNAL and GLOBAL clauses"));
8587  }
8588 #endif
8590  cb_error (_("%s is invalid in a user FUNCTION"), "GLOBAL");
8591  } else {
8594  }
8595  }
8596 #line 8518 "parser.c" /* yacc.c:1646 */
8597  break;
8598 
8599  case 311:
8600 #line 3660 "parser.y" /* yacc.c:1646 */
8601  {
8603  /* ignore */
8604  }
8605 #line 8527 "parser.c" /* yacc.c:1646 */
8606  break;
8607 
8608  case 315:
8609 #line 3673 "parser.y" /* yacc.c:1646 */
8610  {
8613  if (warningopt) {
8614  cb_warning (_("RECORD clause ignored for LINE SEQUENTIAL"));
8615  }
8616  } else {
8617  current_file->record_max = cb_get_int ((yyvsp[-1]));
8618  if (current_file->record_max < 1) {
8619  current_file->record_max = 1;
8620  cb_error (_("RECORD clause invalid"));
8621  }
8624  cb_error (_("RECORD size exceeds maximum allowed (%d)"),
8625  MAX_FD_RECORD);
8626  }
8627  }
8628  }
8629 #line 8551 "parser.c" /* yacc.c:1646 */
8630  break;
8631 
8632  case 316:
8633 #line 3693 "parser.y" /* yacc.c:1646 */
8634  {
8635  int error_ind = 0;
8636 
8639  if (warningopt) {
8640  cb_warning (_("RECORD clause ignored for LINE SEQUENTIAL"));
8641  }
8642  } else {
8643  current_file->record_min = cb_get_int ((yyvsp[-3]));
8644  current_file->record_max = cb_get_int ((yyvsp[-1]));
8645  if (current_file->record_min < 0) {
8646  current_file->record_min = 0;
8647  error_ind = 1;
8648  }
8649  if (current_file->record_max < 1) {
8650  current_file->record_max = 1;
8651  error_ind = 1;
8652  }
8655  cb_error (_("RECORD size exceeds maximum allowed (%d)"),
8656  MAX_FD_RECORD);
8657  error_ind = 1;
8658  }
8660  error_ind = 1;
8661  }
8662  if (error_ind) {
8663  cb_error (_("RECORD clause invalid"));
8664  }
8665  }
8666  }
8667 #line 8589 "parser.c" /* yacc.c:1646 */
8668  break;
8669 
8670  case 317:
8671 #line 3728 "parser.y" /* yacc.c:1646 */
8672  {
8673  int error_ind = 0;
8674 
8676  current_file->record_min = (yyvsp[-3]) ? cb_get_int ((yyvsp[-3])) : 0;
8677  current_file->record_max = (yyvsp[-2]) ? cb_get_int ((yyvsp[-2])) : 0;
8678  if ((yyvsp[-3]) && current_file->record_min < 0) {
8679  current_file->record_min = 0;
8680  error_ind = 1;
8681  }
8682  if ((yyvsp[-2]) && current_file->record_max < 1) {
8683  current_file->record_max = 1;
8684  error_ind = 1;
8685  }
8686  if ((yyvsp[-2]) && current_file->record_max > MAX_FD_RECORD) {
8688  cb_error (_("RECORD size exceeds maximum allowed (%d)"),
8689  MAX_FD_RECORD);
8690  error_ind = 1;
8691  }
8692  if (((yyvsp[-3]) || (yyvsp[-2])) && current_file->record_max <= current_file->record_min) {
8693  error_ind = 1;
8694  }
8695  if (error_ind) {
8696  cb_error (_("RECORD clause invalid"));
8697  }
8698  }
8699 #line 8621 "parser.c" /* yacc.c:1646 */
8700  break;
8701 
8702  case 319:
8703 #line 3759 "parser.y" /* yacc.c:1646 */
8704  {
8705  current_file->record_depending = (yyvsp[0]);
8706  }
8707 #line 8629 "parser.c" /* yacc.c:1646 */
8708  break;
8709 
8710  case 320:
8711 #line 3765 "parser.y" /* yacc.c:1646 */
8712  { (yyval) = NULL; }
8713 #line 8635 "parser.c" /* yacc.c:1646 */
8714  break;
8715 
8716  case 321:
8717 #line 3766 "parser.y" /* yacc.c:1646 */
8718  { (yyval) = (yyvsp[0]); }
8719 #line 8641 "parser.c" /* yacc.c:1646 */
8720  break;
8721 
8722  case 322:
8723 #line 3770 "parser.y" /* yacc.c:1646 */
8724  { (yyval) = NULL; }
8725 #line 8647 "parser.c" /* yacc.c:1646 */
8726  break;
8727 
8728  case 323:
8729 #line 3771 "parser.y" /* yacc.c:1646 */
8730  { (yyval) = (yyvsp[0]); }
8731 #line 8653 "parser.c" /* yacc.c:1646 */
8732  break;
8733 
8734  case 324:
8735 #line 3779 "parser.y" /* yacc.c:1646 */
8736  {
8738  cb_verify (cb_label_records_clause, "LABEL RECORDS");
8739  }
8740 #line 8662 "parser.c" /* yacc.c:1646 */
8741  break;
8742 
8743  case 325:
8744 #line 3790 "parser.y" /* yacc.c:1646 */
8745  {
8747  cb_verify (cb_value_of_clause, "VALUE OF");
8748  }
8749 #line 8671 "parser.c" /* yacc.c:1646 */
8750  break;
8751 
8752  case 326:
8753 #line 3795 "parser.y" /* yacc.c:1646 */
8754  {
8756  cb_verify (cb_value_of_clause, "VALUE OF");
8757  if (!current_file->assign) {
8759  }
8760  }
8761 #line 8683 "parser.c" /* yacc.c:1646 */
8762  break;
8763 
8764  case 331:
8765 #line 3818 "parser.y" /* yacc.c:1646 */
8766  {
8768  cb_verify (cb_data_records_clause, "DATA RECORDS");
8769  }
8770 #line 8692 "parser.c" /* yacc.c:1646 */
8771  break;
8772 
8773  case 332:
8774 #line 3830 "parser.y" /* yacc.c:1646 */
8775  {
8779  cb_error (_("LINAGE clause with wrong file type"));
8780  } else {
8781  current_file->linage = (yyvsp[-2]);
8783  if (current_linage == 0) {
8785  }
8786  current_linage++;
8787  }
8788  }
8789 #line 8711 "parser.c" /* yacc.c:1646 */
8790  break;
8791 
8792  case 338:
8793 #line 3858 "parser.y" /* yacc.c:1646 */
8794  {
8795  current_file->latfoot = (yyvsp[0]);
8796  }
8797 #line 8719 "parser.c" /* yacc.c:1646 */
8798  break;
8799 
8800  case 339:
8801 #line 3865 "parser.y" /* yacc.c:1646 */
8802  {
8803  current_file->lattop = (yyvsp[0]);
8804  }
8805 #line 8727 "parser.c" /* yacc.c:1646 */
8806  break;
8807 
8808  case 340:
8809 #line 3872 "parser.y" /* yacc.c:1646 */
8810  {
8811  current_file->latbot = (yyvsp[0]);
8812  }
8813 #line 8735 "parser.c" /* yacc.c:1646 */
8814  break;
8815 
8816  case 341:
8817 #line 3881 "parser.y" /* yacc.c:1646 */
8818  {
8819  cobc_cs_check = 0;
8820  check_repeated ("RECORDING", SYN_CLAUSE_9, &check_duplicate);
8821  /* ignore */
8822  }
8823 #line 8745 "parser.c" /* yacc.c:1646 */
8824  break;
8825 
8826  case 342:
8827 #line 3893 "parser.y" /* yacc.c:1646 */
8828  {
8830  if (CB_VALID_TREE ((yyvsp[0]))) {
8831  cb_tree x;
8832  struct cb_alphabet_name *al;
8833 
8834  x = cb_ref ((yyvsp[0]));
8837  cb_error (_("CODE-SET clause invalid for file type"));
8838  }
8839  if (!CB_ALPHABET_NAME_P (x)) {
8840  cb_error_x ((yyvsp[0]), _("Alphabet-name is expected '%s'"), cb_name ((yyvsp[0])));
8841  } else {
8842  al = CB_ALPHABET_NAME (x);
8843  switch (al->alphabet_type) {
8844 #ifdef COB_EBCDIC_MACHINE
8845  case CB_ALPHABET_ASCII:
8846  case CB_ALPHABET_CUSTOM:
8847  current_file->code_set = al;
8848  break;
8849  default:
8850  if (warningopt) {
8851  cb_warning_x ((yyvsp[0]), _("Ignoring CODE-SET '%s'"),
8852  cb_name ((yyvsp[0])));
8853  }
8854  break;
8855 #else
8856  case CB_ALPHABET_EBCDIC:
8857  case CB_ALPHABET_CUSTOM:
8858  current_file->code_set = al;
8859  break;
8860  default:
8861  if (warningopt) {
8862  cb_warning_x ((yyvsp[0]), _("Ignoring CODE-SET '%s'"),
8863  cb_name ((yyvsp[0])));
8864  }
8865  break;
8866 #endif
8867  }
8868  if (warningopt) {
8869  PENDING ("CODE-SET");
8870  }
8871  }
8872  }
8873  }
8874 #line 8796 "parser.c" /* yacc.c:1646 */
8875  break;
8876 
8877  case 343:
8878 #line 3945 "parser.y" /* yacc.c:1646 */
8879  {
8881  PENDING("REPORT WRITER");
8884  cb_error (_("REPORT clause with wrong file type"));
8885  } else {
8886  current_file->reports = (yyvsp[0]);
8888  }
8889  }
8890 #line 8812 "parser.c" /* yacc.c:1646 */
8891  break;
8892 
8893  case 346:
8894 #line 3965 "parser.y" /* yacc.c:1646 */
8895  {
8896  current_report = build_report ((yyvsp[0]));
8899  if (report_count == 0) {
8901  }
8902  report_count++;
8903  }
8904 #line 8826 "parser.c" /* yacc.c:1646 */
8905  break;
8906 
8907  case 347:
8908 #line 3975 "parser.y" /* yacc.c:1646 */
8909  {
8910  current_report = build_report ((yyvsp[0]));
8912  if (report_count == 0) {
8914  }
8915  report_count++;
8916  }
8917 #line 8839 "parser.c" /* yacc.c:1646 */
8918  break;
8919 
8920  case 349:
8921 #line 3990 "parser.y" /* yacc.c:1646 */
8922  {
8926  }
8927 #line 8849 "parser.c" /* yacc.c:1646 */
8928  break;
8929 
8930  case 350:
8931 #line 3996 "parser.y" /* yacc.c:1646 */
8932  {
8933  if ((yyvsp[0])) {
8935  }
8936  }
8937 #line 8859 "parser.c" /* yacc.c:1646 */
8938  break;
8939 
8940  case 351:
8941 #line 4005 "parser.y" /* yacc.c:1646 */
8942  {
8943  (yyval) = NULL;
8944  }
8945 #line 8867 "parser.c" /* yacc.c:1646 */
8946  break;
8947 
8948  case 352:
8949 #line 4008 "parser.y" /* yacc.c:1646 */
8950  {
8951  current_field = NULL;
8954  }
8955 #line 8877 "parser.c" /* yacc.c:1646 */
8956  break;
8957 
8958  case 353:
8959 #line 4014 "parser.y" /* yacc.c:1646 */
8960  {
8961  struct cb_field *p;
8962 
8963  for (p = description_field; p; p = p->sister) {
8964  cb_validate_field (p);
8965  }
8966  (yyval) = CB_TREE (description_field);
8967  }
8968 #line 8890 "parser.c" /* yacc.c:1646 */
8969  break;
8970 
8971  case 358:
8972 #line 4034 "parser.y" /* yacc.c:1646 */
8973  {
8974  cb_tree x;
8975 
8976  x = cb_build_field_tree ((yyvsp[-1]), (yyvsp[0]), current_field, current_storage,
8977  current_file, 0);
8978  /* Free tree associated with level number */
8979  cobc_parse_free ((yyvsp[-1]));
8980  if (CB_INVALID_TREE (x)) {
8981  YYERROR;
8982  } else {
8983  current_field = CB_FIELD (x);
8984  check_pic_duplicate = 0;
8985  }
8986  }
8987 #line 8909 "parser.c" /* yacc.c:1646 */
8988  break;
8989 
8990  case 359:
8991 #line 4049 "parser.y" /* yacc.c:1646 */
8992  {
8993  if (!qualifier && (current_field->level == 88 ||
8995  cb_error (_("Item requires a data name"));
8996  }
8997  if (!qualifier) {
8999  }
9000  if (current_field->level == 88) {
9002  }
9003  if (current_field->flag_item_78) {
9004  /* Reset to last non-78 item */
9006  }
9007  if (!description_field) {
9009  }
9010  }
9011 #line 8933 "parser.c" /* yacc.c:1646 */
9012  break;
9013 
9014  case 360:
9015 #line 4069 "parser.y" /* yacc.c:1646 */
9016  {
9017  /* Free tree assocated with level number */
9018  cobc_parse_free ((yyvsp[-2]));
9019  yyerrok;
9020  cb_unput_dot ();
9021  check_pic_duplicate = 0;
9022  check_duplicate = 0;
9024  }
9025 #line 8947 "parser.c" /* yacc.c:1646 */
9026  break;
9027 
9028  case 361:
9029 #line 4082 "parser.y" /* yacc.c:1646 */
9030  {
9031  (yyval) = (yyvsp[0]);
9032  }
9033 #line 8955 "parser.c" /* yacc.c:1646 */
9034  break;
9035 
9036  case 362:
9037 #line 4089 "parser.y" /* yacc.c:1646 */
9038  {
9039  (yyval) = cb_build_filler ();
9040  qualifier = NULL;
9041  non_const_word = 0;
9042  }
9043 #line 8965 "parser.c" /* yacc.c:1646 */
9044  break;
9045 
9046  case 363:
9047 #line 4095 "parser.y" /* yacc.c:1646 */
9048  {
9049  (yyval) = cb_build_filler ();
9050  qualifier = NULL;
9051  non_const_word = 0;
9052  }
9053 #line 8975 "parser.c" /* yacc.c:1646 */
9054  break;
9055 
9056  case 364:
9057 #line 4101 "parser.y" /* yacc.c:1646 */
9058  {
9059  (yyval) = (yyvsp[0]);
9060  qualifier = (yyvsp[0]);
9061  non_const_word = 0;
9062  }
9063 #line 8985 "parser.c" /* yacc.c:1646 */
9064  break;
9065 
9066  case 365:
9067 #line 4110 "parser.y" /* yacc.c:1646 */
9068  {
9069  (yyval) = (yyvsp[0]);
9070  qualifier = (yyvsp[0]);
9071  non_const_word = 0;
9072  }
9073 #line 8995 "parser.c" /* yacc.c:1646 */
9074  break;
9075 
9076  case 366:
9077 #line 4119 "parser.y" /* yacc.c:1646 */
9078  {
9079  (yyval)= NULL;
9080  }
9081 #line 9003 "parser.c" /* yacc.c:1646 */
9082  break;
9083 
9084  case 367:
9085 #line 4123 "parser.y" /* yacc.c:1646 */
9086  {
9088  cb_error (_("%s is invalid in a user FUNCTION"), "GLOBAL");
9089  (yyval)= NULL;
9090  } else {
9091  (yyval) = cb_null;
9092  }
9093  }
9094 #line 9016 "parser.c" /* yacc.c:1646 */
9095  break;
9096 
9097  case 368:
9098 #line 4134 "parser.y" /* yacc.c:1646 */
9099  { (yyval) = (yyvsp[0]); }
9100 #line 9022 "parser.c" /* yacc.c:1646 */
9101  break;
9102 
9103  case 369:
9104 #line 4135 "parser.y" /* yacc.c:1646 */
9105  { (yyval) = cb_build_const_length ((yyvsp[0])); }
9106 #line 9028 "parser.c" /* yacc.c:1646 */
9107  break;
9108 
9109  case 370:
9110 #line 4136 "parser.y" /* yacc.c:1646 */
9111  { (yyval) = cb_build_const_length ((yyvsp[0])); }
9112 #line 9034 "parser.c" /* yacc.c:1646 */
9113  break;
9114 
9115  case 371:
9116 #line 4137 "parser.y" /* yacc.c:1646 */
9117  { (yyval) = cb_build_const_length ((yyvsp[0])); }
9118 #line 9040 "parser.c" /* yacc.c:1646 */
9119  break;
9120 
9121  case 372:
9122 #line 4142 "parser.y" /* yacc.c:1646 */
9123  {
9124  (yyval) = (yyvsp[0]);
9125  }
9126 #line 9048 "parser.c" /* yacc.c:1646 */
9127  break;
9128 
9129  case 373:
9130 #line 4146 "parser.y" /* yacc.c:1646 */
9131  {
9132  (yyval) = cb_int1;
9133  }
9134 #line 9056 "parser.c" /* yacc.c:1646 */
9135  break;
9136 
9137  case 374:
9138 #line 4150 "parser.y" /* yacc.c:1646 */
9139  {
9140  (yyval) = cb_int2;
9141  }
9142 #line 9064 "parser.c" /* yacc.c:1646 */
9143  break;
9144 
9145  case 375:
9146 #line 4154 "parser.y" /* yacc.c:1646 */
9147  {
9148  (yyval) = cb_int4;
9149  }
9150 #line 9072 "parser.c" /* yacc.c:1646 */
9151  break;
9152 
9153  case 376:
9154 #line 4158 "parser.y" /* yacc.c:1646 */
9155  {
9156  (yyval) = cb_int (8);
9157  }
9158 #line 9080 "parser.c" /* yacc.c:1646 */
9159  break;
9160 
9161  case 377:
9162 #line 4162 "parser.y" /* yacc.c:1646 */
9163  {
9164  (yyval) = cb_int ((int)sizeof(long));
9165  }
9166 #line 9088 "parser.c" /* yacc.c:1646 */
9167  break;
9168 
9169  case 378:
9170 #line 4166 "parser.y" /* yacc.c:1646 */
9171  {
9172  (yyval) = cb_int ((int)sizeof(void *));
9173  }
9174 #line 9096 "parser.c" /* yacc.c:1646 */
9175  break;
9176 
9177  case 379:
9178 #line 4170 "parser.y" /* yacc.c:1646 */
9179  {
9180  (yyval) = cb_int ((int)sizeof(float));
9181  }
9182 #line 9104 "parser.c" /* yacc.c:1646 */
9183  break;
9184 
9185  case 380:
9186 #line 4174 "parser.y" /* yacc.c:1646 */
9187  {
9188  (yyval) = cb_int ((int)sizeof(double));
9189  }
9190 #line 9112 "parser.c" /* yacc.c:1646 */
9191  break;
9192 
9193  case 381:
9194 #line 4178 "parser.y" /* yacc.c:1646 */
9195  {
9196  (yyval) = cb_int (4);
9197  }
9198 #line 9120 "parser.c" /* yacc.c:1646 */
9199  break;
9200 
9201  case 382:
9202 #line 4182 "parser.y" /* yacc.c:1646 */
9203  {
9204  (yyval) = cb_int (8);
9205  }
9206 #line 9128 "parser.c" /* yacc.c:1646 */
9207  break;
9208 
9209  case 383:
9210 #line 4186 "parser.y" /* yacc.c:1646 */
9211  {
9212  (yyval) = cb_int (16);
9213  }
9214 #line 9136 "parser.c" /* yacc.c:1646 */
9215  break;
9216 
9217  case 384:
9218 #line 4190 "parser.y" /* yacc.c:1646 */
9219  {
9220  yyerrok;
9221  cb_unput_dot ();
9222  check_pic_duplicate = 0;
9223  check_duplicate = 0;
9225  }
9226 #line 9148 "parser.c" /* yacc.c:1646 */
9227  break;
9228 
9229  case 394:
9230 #line 4222 "parser.y" /* yacc.c:1646 */
9231  {
9232  cb_tree x;
9233  int level;
9234 
9235  cobc_cs_check = 0;
9236  level = cb_get_level ((yyvsp[-4]));
9237  /* Free tree assocated with level number */
9238  cobc_parse_free ((yyvsp[-4]));
9239  if (level != 1) {
9240  cb_error (_("CONSTANT item not at 01 level"));
9241  } else if ((yyvsp[0])) {
9242  x = cb_build_constant ((yyvsp[-3]), (yyvsp[0]));
9243  CB_FIELD (x)->flag_item_78 = 1;
9244  CB_FIELD (x)->level = 1;
9245  cb_needs_01 = 1;
9246  if ((yyvsp[-1])) {
9247  CB_FIELD (x)->flag_is_global = 1;
9248  }
9249  /* Ignore return value */
9250  (void)cb_validate_78_item (CB_FIELD (x), 0);
9251  }
9252  }
9253 #line 9175 "parser.c" /* yacc.c:1646 */
9254  break;
9255 
9256  case 395:
9257 #line 4248 "parser.y" /* yacc.c:1646 */
9258  {
9259  (yyval) = (yyvsp[0]);
9260  }
9261 #line 9183 "parser.c" /* yacc.c:1646 */
9262  break;
9263 
9264  case 396:
9265 #line 4252 "parser.y" /* yacc.c:1646 */
9266  {
9267  PENDING ("CONSTANT FROM clause");
9268  (yyval) = NULL;
9269  }
9270 #line 9192 "parser.c" /* yacc.c:1646 */
9271  break;
9272 
9273  case 397:
9274 #line 4260 "parser.y" /* yacc.c:1646 */
9275  {
9276  /* Required to check redefines */
9277  (yyval) = NULL;
9278  }
9279 #line 9201 "parser.c" /* yacc.c:1646 */
9280  break;
9281 
9282  case 398:
9283 #line 4266 "parser.y" /* yacc.c:1646 */
9284  {
9285  /* Required to check redefines */
9286  (yyval) = cb_true;
9287  }
9288 #line 9210 "parser.c" /* yacc.c:1646 */
9289  break;
9290 
9291  case 413:
9292 #line 4294 "parser.y" /* yacc.c:1646 */
9293  {
9295  if ((yyvsp[-2]) != NULL) {
9296  if (cb_relaxed_syntax_check) {
9297  cb_warning_x ((yyvsp[0]), _("REDEFINES clause should follow entry-name"));
9298  } else {
9299  cb_error_x ((yyvsp[0]), _("REDEFINES clause must follow entry-name"));
9300  }
9301  }
9302 
9304  if (current_field->redefines == NULL) {
9307  YYERROR;
9308  }
9309  }
9310 #line 9232 "parser.c" /* yacc.c:1646 */
9311  break;
9312 
9313  case 414:
9314 #line 4318 "parser.y" /* yacc.c:1646 */
9315  {
9316  check_repeated ("EXTERNAL", SYN_CLAUSE_2, &check_pic_duplicate);
9318  cb_error (_("%s not allowed here"), "EXTERNAL");
9319  } else if (current_field->level != 1 && current_field->level != 77) {
9320  cb_error (_("%s only allowed at 01/77 level"), "EXTERNAL");
9321  } else if (!qualifier) {
9322  cb_error (_("%s requires a data name"), "EXTERNAL");
9323 #if 0 /* RXWRXW - Global/External */
9324  } else if (current_field->flag_is_global) {
9325  cb_error (_("%s and %s are mutually exclusive"), "GLOBAL", "EXTERNAL");
9326 #endif
9327  } else if (current_field->flag_item_based) {
9328  cb_error (_("%s and %s are mutually exclusive"), "BASED", "EXTERNAL");
9329  } else if (current_field->redefines) {
9330  cb_error (_("%s and %s are mutually exclusive"), "EXTERNAL", "REDEFINES");
9331  } else if (current_field->flag_occurs) {
9332  cb_error (_("%s and %s are mutually exclusive"), "EXTERNAL", "OCCURS");
9333  } else {
9336  }
9337  }
9338 #line 9260 "parser.c" /* yacc.c:1646 */
9339  break;
9340 
9341  case 415:
9342 #line 4345 "parser.y" /* yacc.c:1646 */
9343  {
9345  }
9346 #line 9268 "parser.c" /* yacc.c:1646 */
9347  break;
9348 
9349  case 416:
9350 #line 4349 "parser.y" /* yacc.c:1646 */
9351  {
9352  current_field->ename = cb_to_cname ((const char *)CB_LITERAL ((yyvsp[0]))->data);
9353  }
9354 #line 9276 "parser.c" /* yacc.c:1646 */
9355  break;
9356 
9357  case 417:
9358 #line 4358 "parser.y" /* yacc.c:1646 */
9359  {
9361  if (current_field->level != 1 && current_field->level != 77) {
9362  cb_error (_("%s only allowed at 01/77 level"), "GLOBAL");
9363  } else if (!qualifier) {
9364  cb_error (_("%s requires a data name"), "GLOBAL");
9365 #if 0 /* RXWRXW - Global/External */
9366  } else if (current_field->flag_external) {
9367  cb_error (_("%s and %s are mutually exclusive"), "GLOBAL", "EXTERNAL");
9368 #endif
9369  } else if (current_program->prog_type == CB_FUNCTION_TYPE) {
9370  cb_error (_("%s is invalid in a user FUNCTION"), "GLOBAL");
9371  } else if (current_storage == CB_STORAGE_LOCAL) {
9372  cb_error (_("%s not allowed here"), "GLOBAL");
9373  } else {
9375  }
9376  }
9377 #line 9299 "parser.c" /* yacc.c:1646 */
9378  break;
9379 
9380  case 418:
9381 #line 4383 "parser.y" /* yacc.c:1646 */
9382  {
9384  current_field->pic = CB_PICTURE ((yyvsp[0]));
9385  }
9386 #line 9308 "parser.c" /* yacc.c:1646 */
9387  break;
9388 
9389  case 421:
9390 #line 4399 "parser.y" /* yacc.c:1646 */
9391  {
9393  }
9394 #line 9316 "parser.c" /* yacc.c:1646 */
9395  break;
9396 
9397  case 422:
9398 #line 4403 "parser.y" /* yacc.c:1646 */
9399  {
9401  }
9402 #line 9324 "parser.c" /* yacc.c:1646 */
9403  break;
9404 
9405  case 423:
9406 #line 4407 "parser.y" /* yacc.c:1646 */
9407  {
9409  }
9410 #line 9332 "parser.c" /* yacc.c:1646 */
9411  break;
9412 
9413  case 424:
9414 #line 4411 "parser.y" /* yacc.c:1646 */
9415  {
9417  }
9418 #line 9340 "parser.c" /* yacc.c:1646 */
9419  break;
9420 
9421  case 425:
9422 #line 4415 "parser.y" /* yacc.c:1646 */
9423  {
9425  }
9426 #line 9348 "parser.c" /* yacc.c:1646 */
9427  break;
9428 
9429  case 426:
9430 #line 4419 "parser.y" /* yacc.c:1646 */
9431  {
9433  }
9434 #line 9356 "parser.c" /* yacc.c:1646 */
9435  break;
9436 
9437  case 427:
9438 #line 4423 "parser.y" /* yacc.c:1646 */
9439  {
9441  }
9442 #line 9364 "parser.c" /* yacc.c:1646 */
9443  break;
9444 
9445  case 428:
9446 #line 4427 "parser.y" /* yacc.c:1646 */
9447  {
9449  }
9450 #line 9372 "parser.c" /* yacc.c:1646 */
9451  break;
9452 
9453  case 429:
9454 #line 4431 "parser.y" /* yacc.c:1646 */
9455  {
9457  }
9458 #line 9380 "parser.c" /* yacc.c:1646 */
9459  break;
9460 
9461  case 430:
9462 #line 4435 "parser.y" /* yacc.c:1646 */
9463  {
9465  }
9466 #line 9388 "parser.c" /* yacc.c:1646 */
9467  break;
9468 
9469  case 431:
9470 #line 4439 "parser.y" /* yacc.c:1646 */
9471  {
9473  }
9474 #line 9396 "parser.c" /* yacc.c:1646 */
9475  break;
9476 
9477  case 432:
9478 #line 4443 "parser.y" /* yacc.c:1646 */
9479  {
9481  }
9482 #line 9404 "parser.c" /* yacc.c:1646 */
9483  break;
9484 
9485  case 433:
9486 #line 4447 "parser.y" /* yacc.c:1646 */
9487  {
9490  }
9491 #line 9413 "parser.c" /* yacc.c:1646 */
9492  break;
9493 
9494  case 434:
9495 #line 4452 "parser.y" /* yacc.c:1646 */
9496  {
9499  }
9500 #line 9422 "parser.c" /* yacc.c:1646 */
9501  break;
9502 
9503  case 435:
9504 #line 4457 "parser.y" /* yacc.c:1646 */
9505  {
9507  }
9508 #line 9430 "parser.c" /* yacc.c:1646 */
9509  break;
9510 
9511  case 436:
9512 #line 4461 "parser.y" /* yacc.c:1646 */
9513  {
9515  }
9516 #line 9438 "parser.c" /* yacc.c:1646 */
9517  break;
9518 
9519  case 437:
9520 #line 4465 "parser.y" /* yacc.c:1646 */
9521  {
9522  if (sizeof(long) == 4) {
9524  } else {
9526  }
9527  }
9528 #line 9450 "parser.c" /* yacc.c:1646 */
9529  break;
9530 
9531  case 438:
9532 #line 4473 "parser.y" /* yacc.c:1646 */
9533  {
9535  }
9536 #line 9458 "parser.c" /* yacc.c:1646 */
9537  break;
9538 
9539  case 439:
9540 #line 4477 "parser.y" /* yacc.c:1646 */
9541  {
9543  }
9544 #line 9466 "parser.c" /* yacc.c:1646 */
9545  break;
9546 
9547  case 440:
9548 #line 4481 "parser.y" /* yacc.c:1646 */
9549  {
9550  if (sizeof(long) == 4) {
9552  } else {
9554  }
9555  }
9556 #line 9478 "parser.c" /* yacc.c:1646 */
9557  break;
9558 
9559  case 441:
9560 #line 4489 "parser.y" /* yacc.c:1646 */
9561  {
9563  }
9564 #line 9486 "parser.c" /* yacc.c:1646 */
9565  break;
9566 
9567  case 442:
9568 #line 4493 "parser.y" /* yacc.c:1646 */
9569  {
9571  }
9572 #line 9494 "parser.c" /* yacc.c:1646 */
9573  break;
9574 
9575  case 443:
9576 #line 4497 "parser.y" /* yacc.c:1646 */
9577  {
9579  }
9580 #line 9502 "parser.c" /* yacc.c:1646 */
9581  break;
9582 
9583  case 444:
9584 #line 4501 "parser.y" /* yacc.c:1646 */
9585  {
9587  }
9588 #line 9510 "parser.c" /* yacc.c:1646 */
9589  break;
9590 
9591  case 445:
9592 #line 4505 "parser.y" /* yacc.c:1646 */
9593  {
9595  }
9596 #line 9518 "parser.c" /* yacc.c:1646 */
9597  break;
9598 
9599  case 446:
9600 #line 4509 "parser.y" /* yacc.c:1646 */
9601  {
9603  }
9604 #line 9526 "parser.c" /* yacc.c:1646 */
9605  break;
9606 
9607  case 447:
9608 #line 4513 "parser.y" /* yacc.c:1646 */
9609  {
9611  }
9612 #line 9534 "parser.c" /* yacc.c:1646 */
9613  break;
9614 
9615  case 448:
9616 #line 4517 "parser.y" /* yacc.c:1646 */
9617  {
9619  }
9620 #line 9542 "parser.c" /* yacc.c:1646 */
9621  break;
9622 
9623  case 449:
9624 #line 4521 "parser.y" /* yacc.c:1646 */
9625  {
9626  if (sizeof(long) == 4) {
9628  } else {
9630  }
9631  }
9632 #line 9554 "parser.c" /* yacc.c:1646 */
9633  break;
9634 
9635  case 450:
9636 #line 4529 "parser.y" /* yacc.c:1646 */
9637  {
9638  if (sizeof(long) == 4) {
9640  } else {
9642  }
9643  }
9644 #line 9566 "parser.c" /* yacc.c:1646 */
9645  break;
9646 
9647  case 451:
9648 #line 4537 "parser.y" /* yacc.c:1646 */
9649  {
9651  }
9652 #line 9574 "parser.c" /* yacc.c:1646 */
9653  break;
9654 
9655  case 452:
9656 #line 4541 "parser.y" /* yacc.c:1646 */
9657  {
9659  }
9660 #line 9582 "parser.c" /* yacc.c:1646 */
9661  break;
9662 
9663  case 453:
9664 #line 4545 "parser.y" /* yacc.c:1646 */
9665  {
9667  }
9668 #line 9590 "parser.c" /* yacc.c:1646 */
9669  break;
9670 
9671  case 454:
9672 #line 4549 "parser.y" /* yacc.c:1646 */
9673  {
9675  }
9676 #line 9598 "parser.c" /* yacc.c:1646 */
9677  break;
9678 
9679  case 455:
9680 #line 4553 "parser.y" /* yacc.c:1646 */
9681  {
9683  }
9684 #line 9606 "parser.c" /* yacc.c:1646 */
9685  break;
9686 
9687  case 456:
9688 #line 4557 "parser.y" /* yacc.c:1646 */
9689  {
9691  PENDING ("USAGE NATIONAL");
9692  }
9693 #line 9615 "parser.c" /* yacc.c:1646 */
9694  break;
9695 
9696  case 461:
9697 #line 4577 "parser.y" /* yacc.c:1646 */
9698  {
9700  current_field->flag_sign_separate = ((yyvsp[0]) ? 1 : 0);
9702  }
9703 #line 9625 "parser.c" /* yacc.c:1646 */
9704  break;
9705 
9706  case 462:
9707 #line 4583 "parser.y" /* yacc.c:1646 */
9708  {
9710  current_field->flag_sign_separate = ((yyvsp[0]) ? 1 : 0);
9712  }
9713 #line 9635 "parser.c" /* yacc.c:1646 */
9714  break;
9715 
9716  case 463:
9717 #line 4596 "parser.y" /* yacc.c:1646 */
9718  {
9720  if (current_field->depending && !((yyvsp[-3]))) {
9721  cb_verify (cb_odo_without_to, _("ODO without TO clause"));
9722  }
9723  current_field->occurs_min = (yyvsp[-3]) ? cb_get_int ((yyvsp[-4])) : 1;
9724  current_field->occurs_max = (yyvsp[-3]) ? cb_get_int ((yyvsp[-3])) : cb_get_int ((yyvsp[-4]));
9727  cb_error (_("Maximum OCCURS depth exceeded (%d)"),
9729  }
9731  }
9732 #line 9654 "parser.c" /* yacc.c:1646 */
9733  break;
9734 
9735  case 465:
9736 #line 4614 "parser.y" /* yacc.c:1646 */
9737  {
9738  current_field->step_count = cb_get_int ((yyvsp[0]));
9739  }
9740 #line 9662 "parser.c" /* yacc.c:1646 */
9741  break;
9742 
9743  case 466:
9744 #line 4624 "parser.y" /* yacc.c:1646 */
9745  {
9748  cb_error (_("Maximum OCCURS depth exceeded (%d)"),
9750  } else {
9752  }
9754  cb_error (_("%s and %s are mutually exclusive"), "BASED", "OCCURS");
9755  } else if (current_field->flag_external) {
9756  cb_error (_("%s and %s are mutually exclusive"), "EXTERNAL", "OCCURS");
9757  }
9758  if ((yyvsp[-4])) {
9759  current_field->occurs_min = cb_get_int ((yyvsp[-5]));
9760  current_field->occurs_max = cb_get_int ((yyvsp[-4]));
9761  if (current_field->depending &&
9762  current_field->occurs_max > 0 &&
9764  cb_error (_("OCCURS max. must be greater than OCCURS min."));
9765  }
9766  } else {
9768  current_field->occurs_max = cb_get_int ((yyvsp[-5]));
9769  if (current_field->depending) {
9770  cb_verify (cb_odo_without_to, "ODO without TO clause");
9771  }
9772  }
9774  }
9775 #line 9697 "parser.c" /* yacc.c:1646 */
9776  break;
9777 
9778  case 467:
9779 #line 4656 "parser.y" /* yacc.c:1646 */
9780  {
9783  cb_error (_("Maximum OCCURS depth exceeded (%d)"),
9785  } else {
9787  }
9789  cb_error (_("%s and %s are mutually exclusive"), "BASED", "OCCURS");
9790  } else if (current_field->flag_external) {
9791  cb_error (_("%s and %s are mutually exclusive"), "EXTERNAL", "OCCURS");
9792  }
9793  current_field->occurs_min = (yyvsp[-4]) ? cb_get_int ((yyvsp[-4])) : 0;
9794  if ((yyvsp[-3])) {
9795  current_field->occurs_max = cb_get_int ((yyvsp[-3]));
9797  cb_error (_("OCCURS max. must be greater than OCCURS min."));
9798  }
9799  } else {
9801  }
9802  PENDING("OCCURS with DYNAMIC capacity");
9804  }
9805 #line 9727 "parser.c" /* yacc.c:1646 */
9806  break;
9807 
9808  case 468:
9809 #line 4684 "parser.y" /* yacc.c:1646 */
9810  { (yyval) = NULL; }
9811 #line 9733 "parser.c" /* yacc.c:1646 */
9812  break;
9813 
9814  case 469:
9815 #line 4685 "parser.y" /* yacc.c:1646 */
9816  { (yyval) = (yyvsp[0]); }
9817 #line 9739 "parser.c" /* yacc.c:1646 */
9818  break;
9819 
9820  case 470:
9821 #line 4689 "parser.y" /* yacc.c:1646 */
9822  { (yyval) = NULL; }
9823 #line 9745 "parser.c" /* yacc.c:1646 */
9824  break;
9825 
9826  case 471:
9827 #line 4690 "parser.y" /* yacc.c:1646 */
9828  { (yyval) = (yyvsp[0]); }
9829 #line 9751 "parser.c" /* yacc.c:1646 */
9830  break;
9831 
9832  case 473:
9833 #line 4695 "parser.y" /* yacc.c:1646 */
9834  {
9835  current_field->depending = (yyvsp[0]);
9836  }
9837 #line 9759 "parser.c" /* yacc.c:1646 */
9838  break;
9839 
9840  case 475:
9841 #line 4702 "parser.y" /* yacc.c:1646 */
9842  {
9843  (yyval) = cb_build_index ((yyvsp[0]), cb_zero, 0, current_field);
9844  CB_FIELD_PTR ((yyval))->special_index = 1;
9845  }
9846 #line 9768 "parser.c" /* yacc.c:1646 */
9847  break;
9848 
9849  case 477:
9850 #line 4710 "parser.y" /* yacc.c:1646 */
9851  {
9852  /* current_field->initialized = 1; */
9853  }
9854 #line 9776 "parser.c" /* yacc.c:1646 */
9855  break;
9856 
9857  case 478:
9858 #line 4717 "parser.y" /* yacc.c:1646 */
9859  {
9860  if ((yyvsp[0])) {
9861  cb_tree l;
9862  struct cb_key *keys;
9863  int i;
9864  int nkeys;
9865 
9866  l = (yyvsp[0]);
9867  nkeys = cb_list_length ((yyvsp[0]));
9868  keys = cobc_parse_malloc (sizeof (struct cb_key) * nkeys);
9869 
9870  for (i = 0; i < nkeys; i++) {
9871  keys[i].dir = CB_PURPOSE_INT (l);
9872  keys[i].key = CB_VALUE (l);
9873  l = CB_CHAIN (l);
9874  }
9875  current_field->keys = keys;
9876  current_field->nkeys = nkeys;
9877  }
9878  }
9879 #line 9801 "parser.c" /* yacc.c:1646 */
9880  break;
9881 
9882  case 479:
9883 #line 4740 "parser.y" /* yacc.c:1646 */
9884  { (yyval) = NULL; }
9885 #line 9807 "parser.c" /* yacc.c:1646 */
9886  break;
9887 
9888  case 480:
9889 #line 4743 "parser.y" /* yacc.c:1646 */
9890  {
9891  cb_tree l;
9892 
9893  for (l = (yyvsp[0]); l; l = CB_CHAIN (l)) {
9894  CB_PURPOSE (l) = (yyvsp[-3]);
9895  if (qualifier && !CB_REFERENCE(CB_VALUE(l))->chain &&
9896  strcasecmp (CB_NAME(CB_VALUE(l)), CB_NAME(qualifier))) {
9897  CB_REFERENCE(CB_VALUE(l))->chain = qualifier;
9898  }
9899  }
9900  (yyval) = cb_list_append ((yyvsp[-4]), (yyvsp[0]));
9901  }
9902 #line 9824 "parser.c" /* yacc.c:1646 */
9903  break;
9904 
9905  case 481:
9906 #line 4758 "parser.y" /* yacc.c:1646 */
9907  { (yyval) = cb_int (COB_ASCENDING); }
9908 #line 9830 "parser.c" /* yacc.c:1646 */
9909  break;
9910 
9911  case 482:
9912 #line 4759 "parser.y" /* yacc.c:1646 */
9913  { (yyval) = cb_int (COB_DESCENDING); }
9914 #line 9836 "parser.c" /* yacc.c:1646 */
9915  break;
9916 
9917  case 484:
9918 #line 4764 "parser.y" /* yacc.c:1646 */
9919  {
9920  current_field->index_list = (yyvsp[0]);
9921  }
9922 #line 9844 "parser.c" /* yacc.c:1646 */
9923  break;
9924 
9925  case 485:
9926 #line 4770 "parser.y" /* yacc.c:1646 */
9927  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
9928 #line 9850 "parser.c" /* yacc.c:1646 */
9929  break;
9930 
9931  case 486:
9932 #line 4772 "parser.y" /* yacc.c:1646 */
9933  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
9934 #line 9856 "parser.c" /* yacc.c:1646 */
9935  break;
9936 
9937  case 487:
9938 #line 4777 "parser.y" /* yacc.c:1646 */
9939  {
9940  (yyval) = cb_build_index ((yyvsp[0]), cb_int1, 1U, current_field);
9941  CB_FIELD_PTR ((yyval))->special_index = 1;
9942  }
9943 #line 9865 "parser.c" /* yacc.c:1646 */
9944  break;
9945 
9946  case 488:
9947 #line 4788 "parser.y" /* yacc.c:1646 */
9948  {
9951  }
9952 #line 9874 "parser.c" /* yacc.c:1646 */
9953  break;
9954 
9955  case 489:
9956 #line 4799 "parser.y" /* yacc.c:1646 */
9957  {
9958  check_repeated ("SYNCHRONIZED", SYN_CLAUSE_9, &check_pic_duplicate);
9960  }
9961 #line 9883 "parser.c" /* yacc.c:1646 */
9962  break;
9963 
9964  case 490:
9965 #line 4810 "parser.y" /* yacc.c:1646 */
9966  {
9969  }
9970 #line 9892 "parser.c" /* yacc.c:1646 */
9971  break;
9972 
9973  case 491:
9974 #line 4821 "parser.y" /* yacc.c:1646 */
9975  {
9980  cb_error (_("%s not allowed here"), "BASED");
9981  } else if (current_field->level != 1 && current_field->level != 77) {
9982  cb_error (_("%s only allowed at 01/77 level"), "BASED");
9983  } else if (!qualifier) {
9984  cb_error (_("%s requires a data name"), "BASED");
9985  } else if (current_field->flag_external) {
9986  cb_error (_("%s and %s are mutually exclusive"), "BASED", "EXTERNAL");
9987  } else if (current_field->redefines) {
9988  cb_error (_("%s and %s are mutually exclusive"), "BASED", "REDEFINES");
9989  } else if (current_field->flag_any_length) {
9990  cb_error (_("%s and %s are mutually exclusive"), "BASED", "ANY LENGTH");
9991  } else if (current_field->flag_occurs) {
9992  cb_error (_("%s and %s are mutually exclusive"), "BASED", "OCCURS");
9993  } else {
9995  }
9996  }
9997 #line 9919 "parser.c" /* yacc.c:1646 */
9998  break;
9999 
10000  case 492:
10001 #line 4849 "parser.y" /* yacc.c:1646 */
10002  {
10004  current_field->values = (yyvsp[0]);
10005  }
10006 #line 9928 "parser.c" /* yacc.c:1646 */
10007  break;
10008 
10009  case 494:
10010 #line 4857 "parser.y" /* yacc.c:1646 */
10011  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
10012 #line 9934 "parser.c" /* yacc.c:1646 */
10013  break;
10014 
10015  case 495:
10016 #line 4858 "parser.y" /* yacc.c:1646 */
10017  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
10018 #line 9940 "parser.c" /* yacc.c:1646 */
10019  break;
10020 
10021  case 496:
10022 #line 4862 "parser.y" /* yacc.c:1646 */
10023  { (yyval) = (yyvsp[0]); }
10024 #line 9946 "parser.c" /* yacc.c:1646 */
10025  break;
10026 
10027  case 497:
10028 #line 4863 "parser.y" /* yacc.c:1646 */
10029  { (yyval) = CB_BUILD_PAIR ((yyvsp[-2]), (yyvsp[0])); }
10030 #line 9952 "parser.c" /* yacc.c:1646 */
10031  break;
10032 
10033  case 499:
10034 #line 4868 "parser.y" /* yacc.c:1646 */
10035  {
10036  if (current_field->level != 88) {
10037  cb_error (_("FALSE clause only allowed for 88 level"));
10038  }
10039  current_field->false_88 = CB_LIST_INIT ((yyvsp[0]));
10040  }
10041 #line 9963 "parser.c" /* yacc.c:1646 */
10042  break;
10043 
10044  case 500:
10045 #line 4881 "parser.y" /* yacc.c:1646 */
10046  {
10048  if (cb_ref ((yyvsp[0])) != cb_error_node) {
10049  if (CB_FIELD (cb_ref ((yyvsp[0])))->level == 01 ||
10050  CB_FIELD (cb_ref ((yyvsp[0])))->level > 50) {
10051  cb_error (_("RENAMES may not reference a level 01 or > 50"));
10052  } else {
10053  current_field->redefines = CB_FIELD (cb_ref ((yyvsp[0])));
10055  }
10056  }
10057  }
10058 #line 9980 "parser.c" /* yacc.c:1646 */
10059  break;
10060 
10061  case 501:
10062 #line 4894 "parser.y" /* yacc.c:1646 */
10063  {
10065  if (cb_ref ((yyvsp[-2])) != cb_error_node && cb_ref ((yyvsp[0])) != cb_error_node) {
10066  if (CB_FIELD (cb_ref ((yyvsp[-2])))->level == 01 ||
10067  CB_FIELD (cb_ref ((yyvsp[-2])))->level > 50) {
10068  cb_error (_("RENAMES may not reference a level 01 or > 50"));
10069  } else if (CB_FIELD (cb_ref ((yyvsp[0])))->level == 01 ||
10070  CB_FIELD (cb_ref ((yyvsp[0])))->level > 50) {
10071  cb_error (_("RENAMES may not reference a level 01 or > 50"));
10072  } else {
10073  current_field->redefines = CB_FIELD (cb_ref ((yyvsp[-2])));
10074  current_field->rename_thru = CB_FIELD (cb_ref ((yyvsp[0])));
10075  }
10076  }
10077  }
10078 #line 10000 "parser.c" /* yacc.c:1646 */
10079  break;
10080 
10081  case 502:
10082 #line 4915 "parser.y" /* yacc.c:1646 */
10083  {
10086  cb_error (_("%s and %s are mutually exclusive"), "BASED", "ANY clause");
10087  } else {
10089  }
10090  }
10091 #line 10013 "parser.c" /* yacc.c:1646 */
10092  break;
10093 
10094  case 503:
10095 #line 4924 "parser.y" /* yacc.c:1646 */
10096  {
10099  cb_error (_("%s and %s are mutually exclusive"), "BASED", "ANY clause");
10100  } else {
10103  }
10104  }
10105 #line 10027 "parser.c" /* yacc.c:1646 */
10106  break;
10107 
10108  case 505:
10109 #line 4939 "parser.y" /* yacc.c:1646 */
10110  {
10115  cb_error (_("%s not allowed in nested programs"), "LOCAL-STORAGE");
10116  }
10117  }
10118 #line 10040 "parser.c" /* yacc.c:1646 */
10119  break;
10120 
10121  case 506:
10122 #line 4948 "parser.y" /* yacc.c:1646 */
10123  {
10124  if ((yyvsp[0])) {
10125  current_program->local_storage = CB_FIELD ((yyvsp[0]));
10126  }
10127  }
10128 #line 10050 "parser.c" /* yacc.c:1646 */
10129  break;
10130 
10131  case 508:
10132 #line 4960 "parser.y" /* yacc.c:1646 */
10133  {
10137  }
10138 #line 10060 "parser.c" /* yacc.c:1646 */
10139  break;
10140 
10141  case 509:
10142 #line 4966 "parser.y" /* yacc.c:1646 */
10143  {
10144  if ((yyvsp[0])) {
10145  current_program->linkage_storage = CB_FIELD ((yyvsp[0]));
10146  }
10147  }
10148 #line 10070 "parser.c" /* yacc.c:1646 */
10149  break;
10150 
10151  case 511:
10152 #line 4977 "parser.y" /* yacc.c:1646 */
10153  {
10154  PENDING("REPORT SECTION");
10157  }
10158 #line 10080 "parser.c" /* yacc.c:1646 */
10159  break;
10160 
10161  case 515:
10162 #line 4993 "parser.y" /* yacc.c:1646 */
10163  {
10164  if (CB_INVALID_TREE ((yyvsp[0]))) {
10165  YYERROR;
10166  } else {
10167  current_report = CB_REPORT (cb_ref ((yyvsp[0])));
10168  }
10169  check_duplicate = 0;
10170  }
10171 #line 10093 "parser.c" /* yacc.c:1646 */
10172  break;
10173 
10174  case 519:
10175 #line 5008 "parser.y" /* yacc.c:1646 */
10176  {
10177  yyerrok;
10178  }
10179 #line 10101 "parser.c" /* yacc.c:1646 */
10180  break;
10181 
10182  case 520:
10183 #line 5015 "parser.y" /* yacc.c:1646 */
10184  {
10186  cb_error (_("GLOBAL is not allowed with RD"));
10187  }
10188 #line 10110 "parser.c" /* yacc.c:1646 */
10189  break;
10190 
10191  case 521:
10192 #line 5020 "parser.y" /* yacc.c:1646 */
10193  {
10194  check_repeated ("CODE", SYN_CLAUSE_2, &check_duplicate);
10195  }
10196 #line 10118 "parser.c" /* yacc.c:1646 */
10197  break;
10198 
10199  case 524:
10200 #line 5031 "parser.y" /* yacc.c:1646 */
10201  {
10203  }
10204 #line 10126 "parser.c" /* yacc.c:1646 */
10205  break;
10206 
10207  case 528:
10208 #line 5050 "parser.y" /* yacc.c:1646 */
10209  {
10211  if (!current_report->heading) {
10212  current_report->heading = 1;
10213  }
10214  if (!current_report->first_detail) {
10216  }
10217  if (!current_report->last_control) {
10218  if (current_report->last_detail) {
10220  } else if (current_report->footing) {
10222  } else {
10224  }
10225  }
10229  } else if (!current_report->last_detail) {
10231  } else if (!current_report->footing) {
10233  }
10238  cb_error (_("Invalid PAGE clause"));
10239  }
10240  }
10241 #line 10163 "parser.c" /* yacc.c:1646 */
10242  break;
10243 
10244  case 529:
10245 #line 5086 "parser.y" /* yacc.c:1646 */
10246  {
10247  current_report->lines = cb_get_int ((yyvsp[0]));
10248  }
10249 #line 10171 "parser.c" /* yacc.c:1646 */
10250  break;
10251 
10252  case 530:
10253 #line 5090 "parser.y" /* yacc.c:1646 */
10254  {
10255  current_report->lines = cb_get_int ((yyvsp[-3]));
10256  current_report->columns = cb_get_int ((yyvsp[-1]));
10257  }
10258 #line 10180 "parser.c" /* yacc.c:1646 */
10259  break;
10260 
10261  case 531:
10262 #line 5095 "parser.y" /* yacc.c:1646 */
10263  {
10264  current_report->lines = cb_get_int ((yyvsp[-1]));
10265  }
10266 #line 10188 "parser.c" /* yacc.c:1646 */
10267  break;
10268 
10269  case 539:
10270 #line 5115 "parser.y" /* yacc.c:1646 */
10271  {
10272  current_report->heading = cb_get_int ((yyvsp[0]));
10273  }
10274 #line 10196 "parser.c" /* yacc.c:1646 */
10275  break;
10276 
10277  case 540:
10278 #line 5122 "parser.y" /* yacc.c:1646 */
10279  {
10280  current_report->first_detail = cb_get_int ((yyvsp[0]));
10281  }
10282 #line 10204 "parser.c" /* yacc.c:1646 */
10283  break;
10284 
10285  case 541:
10286 #line 5129 "parser.y" /* yacc.c:1646 */
10287  {
10288  current_report->last_control = cb_get_int ((yyvsp[0]));
10289  }
10290 #line 10212 "parser.c" /* yacc.c:1646 */
10291  break;
10292 
10293  case 542:
10294 #line 5136 "parser.y" /* yacc.c:1646 */
10295  {
10296  current_report->last_detail = cb_get_int ((yyvsp[0]));
10297  }
10298 #line 10220 "parser.c" /* yacc.c:1646 */
10299  break;
10300 
10301  case 543:
10302 #line 5143 "parser.y" /* yacc.c:1646 */
10303  {
10304  current_report->footing = cb_get_int ((yyvsp[0]));
10305  }
10306 #line 10228 "parser.c" /* yacc.c:1646 */
10307  break;
10308 
10309  case 546:
10310 #line 5154 "parser.y" /* yacc.c:1646 */
10311  {
10312  check_pic_duplicate = 0;
10313  }
10314 #line 10236 "parser.c" /* yacc.c:1646 */
10315  break;
10316 
10317  case 566:
10318 #line 5185 "parser.y" /* yacc.c:1646 */
10319  {
10321  }
10322 #line 10244 "parser.c" /* yacc.c:1646 */
10323  break;
10324 
10325  case 579:
10326 #line 5211 "parser.y" /* yacc.c:1646 */
10327  {
10329  }
10330 #line 10252 "parser.c" /* yacc.c:1646 */
10331  break;
10332 
10333  case 580:
10334 #line 5218 "parser.y" /* yacc.c:1646 */
10335  {
10337  }
10338 #line 10260 "parser.c" /* yacc.c:1646 */
10339  break;
10340 
10341  case 585:
10342 #line 5234 "parser.y" /* yacc.c:1646 */
10343  {
10345  }
10346 #line 10268 "parser.c" /* yacc.c:1646 */
10347  break;
10348 
10349  case 587:
10350 #line 5245 "parser.y" /* yacc.c:1646 */
10351  {
10353  }
10354 #line 10276 "parser.c" /* yacc.c:1646 */
10355  break;
10356 
10357  case 590:
10358 #line 5257 "parser.y" /* yacc.c:1646 */
10359  {
10361  }
10362 #line 10284 "parser.c" /* yacc.c:1646 */
10363  break;
10364 
10365  case 602:
10366 #line 5290 "parser.y" /* yacc.c:1646 */
10367  {
10369  }
10370 #line 10292 "parser.c" /* yacc.c:1646 */
10371  break;
10372 
10373  case 603:
10374 #line 5297 "parser.y" /* yacc.c:1646 */
10375  {
10377  }
10378 #line 10300 "parser.c" /* yacc.c:1646 */
10379  break;
10380 
10381  case 604:
10382 #line 5304 "parser.y" /* yacc.c:1646 */
10383  {
10385  }
10386 #line 10308 "parser.c" /* yacc.c:1646 */
10387  break;
10388 
10389  case 606:
10390 #line 5313 "parser.y" /* yacc.c:1646 */
10391  {
10393  current_field = NULL;
10396  }
10397 #line 10319 "parser.c" /* yacc.c:1646 */
10398  break;
10399 
10400  case 607:
10401 #line 5320 "parser.y" /* yacc.c:1646 */
10402  {
10403  struct cb_field *p;
10404 
10405  if (description_field) {
10406  for (p = description_field; p; p = p->sister) {
10407  cb_validate_field (p);
10408  }
10411  }
10412  }
10413 #line 10335 "parser.c" /* yacc.c:1646 */
10414  break;
10415 
10416  case 613:
10417 #line 5345 "parser.y" /* yacc.c:1646 */
10418  {
10419  cb_tree x;
10420 
10421  x = cb_build_field_tree ((yyvsp[-1]), (yyvsp[0]), current_field, current_storage,
10422  current_file, 0);
10423  /* Free tree assocated with level number */
10424  cobc_parse_free ((yyvsp[-1]));
10425  check_pic_duplicate = 0;
10426  if (CB_INVALID_TREE (x)) {
10427  YYERROR;
10428  }
10429 
10430  current_field = CB_FIELD (x);
10431  if (current_field->parent) {
10435  }
10436  }
10437 #line 10359 "parser.c" /* yacc.c:1646 */
10438  break;
10439 
10440  case 614:
10441 #line 5365 "parser.y" /* yacc.c:1646 */
10442  {
10443  int flags;
10444 
10445  if (current_field->parent) {
10446  flags = current_field->parent->screen_flag;
10447  flags &= ~COB_SCREEN_BLANK_LINE;
10448  flags &= ~COB_SCREEN_BLANK_SCREEN;
10449  flags &= ~COB_SCREEN_ERASE_EOL;
10450  flags &= ~COB_SCREEN_ERASE_EOS;
10451  flags &= ~COB_SCREEN_LINE_PLUS;
10452  flags &= ~COB_SCREEN_LINE_MINUS;
10453  flags &= ~COB_SCREEN_COLUMN_PLUS;
10454  flags &= ~COB_SCREEN_COLUMN_MINUS;
10455 
10457  flags);
10458 
10459  current_field->screen_flag |= flags;
10460  }
10461 
10462  if (!qualifier && (current_field->level == 88 ||
10463  current_field->level == 66 ||
10465  cb_error (_("Item requires a data name"));
10466  }
10469  cb_error (_("INITIAL specified on non-input field"));
10470  }
10471  }
10472  if (!qualifier) {
10474  }
10475  if (current_field->level == 88) {
10477  }
10478  if (current_field->flag_item_78) {
10479  /* Reset to last non-78 item - may set current_field to NULL */
10481  }
10482  if (likely (current_field)) {
10483  if (!description_field) {
10485  }
10488  cb_error (_("Relative LINE/COLUMN clause required with OCCURS"));
10489  }
10490  }
10491  }
10492 #line 10414 "parser.c" /* yacc.c:1646 */
10493  break;
10494 
10495  case 615:
10496 #line 5416 "parser.y" /* yacc.c:1646 */
10497  {
10498  /* Free tree associated with level number */
10499  cobc_parse_free ((yyvsp[-2]));
10500  yyerrok;
10501  cb_unput_dot ();
10502  check_pic_duplicate = 0;
10503  check_duplicate = 0;
10504 #if 1 /* RXWRXW Screen field */
10505  if (current_field) {
10508  }
10509 #endif
10511  }
10512 #line 10434 "parser.c" /* yacc.c:1646 */
10513  break;
10514 
10515  case 618:
10516 #line 5439 "parser.y" /* yacc.c:1646 */
10517  {
10519  "BLANK SCREEN", COB_SCREEN_BLANK_SCREEN);
10520  }
10521 #line 10443 "parser.c" /* yacc.c:1646 */
10522  break;
10523 
10524  case 619:
10525 #line 5444 "parser.y" /* yacc.c:1646 */
10526  {
10528  "BLANK LINE", COB_SCREEN_BLANK_LINE);
10529  }
10530 #line 10452 "parser.c" /* yacc.c:1646 */
10531  break;
10532 
10533  case 620:
10534 #line 5449 "parser.y" /* yacc.c:1646 */
10535  {
10537  }
10538 #line 10460 "parser.c" /* yacc.c:1646 */
10539  break;
10540 
10541  case 621:
10542 #line 5453 "parser.y" /* yacc.c:1646 */
10543  {
10545  }
10546 #line 10468 "parser.c" /* yacc.c:1646 */
10547  break;
10548 
10549  case 622:
10550 #line 5457 "parser.y" /* yacc.c:1646 */
10551  {
10553  "ERASE EOS", COB_SCREEN_ERASE_EOS);
10554  }
10555 #line 10477 "parser.c" /* yacc.c:1646 */
10556  break;
10557 
10558  case 623:
10559 #line 5462 "parser.y" /* yacc.c:1646 */
10560  {
10562  "ERASE EOL", COB_SCREEN_ERASE_EOL);
10563  }
10564 #line 10486 "parser.c" /* yacc.c:1646 */
10565  break;
10566 
10567  case 624:
10568 #line 5467 "parser.y" /* yacc.c:1646 */
10569  {
10571  "LOWLIGHT", COB_SCREEN_LOWLIGHT);
10572  }
10573 #line 10495 "parser.c" /* yacc.c:1646 */
10574  break;
10575 
10576  case 625:
10577 #line 5472 "parser.y" /* yacc.c:1646 */
10578  {
10580  "HIGHLIGHT", COB_SCREEN_HIGHLIGHT);
10581  }
10582 #line 10504 "parser.c" /* yacc.c:1646 */
10583  break;
10584 
10585  case 626:
10586 #line 5477 "parser.y" /* yacc.c:1646 */
10587  {
10588  check_screen_attr ("REVERSE-VIDEO", COB_SCREEN_REVERSE);
10589  }
10590 #line 10512 "parser.c" /* yacc.c:1646 */
10591  break;
10592 
10593  case 627:
10594 #line 5481 "parser.y" /* yacc.c:1646 */
10595  {
10596  check_screen_attr ("UNDERLINE", COB_SCREEN_UNDERLINE);
10597  }
10598 #line 10520 "parser.c" /* yacc.c:1646 */
10599  break;
10600 
10601  case 628:
10602 #line 5485 "parser.y" /* yacc.c:1646 */
10603  {
10604  check_screen_attr ("OVERLINE", COB_SCREEN_OVERLINE);
10605  PENDING ("OVERLINE");
10606  }
10607 #line 10529 "parser.c" /* yacc.c:1646 */
10608  break;
10609 
10610  case 629:
10611 #line 5490 "parser.y" /* yacc.c:1646 */
10612  {
10614  PENDING ("GRID");
10615  }
10616 #line 10538 "parser.c" /* yacc.c:1646 */
10617  break;
10618 
10619  case 630:
10620 #line 5495 "parser.y" /* yacc.c:1646 */
10621  {
10622  check_screen_attr ("LEFTLINE", COB_SCREEN_LEFTLINE);
10623  PENDING ("LEFTLINE");
10624  }
10625 #line 10547 "parser.c" /* yacc.c:1646 */
10626  break;
10627 
10628  case 631:
10629 #line 5500 "parser.y" /* yacc.c:1646 */
10630  {
10632  }
10633 #line 10555 "parser.c" /* yacc.c:1646 */
10634  break;
10635 
10636  case 632:
10637 #line 5504 "parser.y" /* yacc.c:1646 */
10638  {
10640  }
10641 #line 10563 "parser.c" /* yacc.c:1646 */
10642  break;
10643 
10644  case 633:
10645 #line 5508 "parser.y" /* yacc.c:1646 */
10646  {
10647  check_screen_attr ("REQUIRED", COB_SCREEN_REQUIRED);
10648  }
10649 #line 10571 "parser.c" /* yacc.c:1646 */
10650  break;
10651 
10652  case 634:
10653 #line 5512 "parser.y" /* yacc.c:1646 */
10654  {
10656  }
10657 #line 10579 "parser.c" /* yacc.c:1646 */
10658  break;
10659 
10660  case 635:
10661 #line 5516 "parser.y" /* yacc.c:1646 */
10662  {
10664  current_field->screen_prompt = (yyvsp[0]);
10665  }
10666 #line 10588 "parser.c" /* yacc.c:1646 */
10667  break;
10668 
10669  case 636:
10670 #line 5521 "parser.y" /* yacc.c:1646 */
10671  {
10673  }
10674 #line 10596 "parser.c" /* yacc.c:1646 */
10675  break;
10676 
10677  case 637:
10678 #line 5525 "parser.y" /* yacc.c:1646 */
10679  {
10681  }
10682 #line 10604 "parser.c" /* yacc.c:1646 */
10683  break;
10684 
10685  case 638:
10686 #line 5529 "parser.y" /* yacc.c:1646 */
10687  {
10689  current_field->screen_line = (yyvsp[0]);
10690  }
10691 #line 10613 "parser.c" /* yacc.c:1646 */
10692  break;
10693 
10694  case 639:
10695 #line 5534 "parser.y" /* yacc.c:1646 */
10696  {
10698  current_field->screen_column = (yyvsp[0]);
10699  }
10700 #line 10622 "parser.c" /* yacc.c:1646 */
10701  break;
10702 
10703  case 640:
10704 #line 5539 "parser.y" /* yacc.c:1646 */
10705  {
10706  check_repeated ("FOREGROUND-COLOR", SYN_CLAUSE_18, &check_pic_duplicate);
10707  current_field->screen_foreg = (yyvsp[0]);
10708  }
10709 #line 10631 "parser.c" /* yacc.c:1646 */
10710  break;
10711 
10712  case 641:
10713 #line 5544 "parser.y" /* yacc.c:1646 */
10714  {
10715  check_repeated ("BACKGROUND-COLOR", SYN_CLAUSE_19, &check_pic_duplicate);
10716  current_field->screen_backg = (yyvsp[0]);
10717  }
10718 #line 10640 "parser.c" /* yacc.c:1646 */
10719  break;
10720 
10721  case 650:
10722 #line 5557 "parser.y" /* yacc.c:1646 */
10723  {
10724  check_not_88_level ((yyvsp[0]));
10725 
10727  current_field->screen_from = (yyvsp[0]);
10728  current_field->screen_to = (yyvsp[0]);
10730  }
10731 #line 10653 "parser.c" /* yacc.c:1646 */
10732  break;
10733 
10734  case 651:
10735 #line 5566 "parser.y" /* yacc.c:1646 */
10736  {
10738  current_field->screen_from = (yyvsp[0]);
10739  }
10740 #line 10662 "parser.c" /* yacc.c:1646 */
10741  break;
10742 
10743  case 652:
10744 #line 5571 "parser.y" /* yacc.c:1646 */
10745  {
10746  check_not_88_level ((yyvsp[0]));
10747 
10749  current_field->screen_to = (yyvsp[0]);
10751  }
10752 #line 10674 "parser.c" /* yacc.c:1646 */
10753  break;
10754 
10755  case 661:
10756 #line 5602 "parser.y" /* yacc.c:1646 */
10757  {
10758  /* Nothing */
10759  }
10760 #line 10682 "parser.c" /* yacc.c:1646 */
10761  break;
10762 
10763  case 662:
10764 #line 5606 "parser.y" /* yacc.c:1646 */
10765  {
10767  }
10768 #line 10690 "parser.c" /* yacc.c:1646 */
10769  break;
10770 
10771  case 663:
10772 #line 5610 "parser.y" /* yacc.c:1646 */
10773  {
10775  }
10776 #line 10698 "parser.c" /* yacc.c:1646 */
10777  break;
10778 
10779  case 664:
10780 #line 5617 "parser.y" /* yacc.c:1646 */
10781  {
10782  /* Nothing */
10783  }
10784 #line 10706 "parser.c" /* yacc.c:1646 */
10785  break;
10786 
10787  case 665:
10788 #line 5621 "parser.y" /* yacc.c:1646 */
10789  {
10791  }
10792 #line 10714 "parser.c" /* yacc.c:1646 */
10793  break;
10794 
10795  case 666:
10796 #line 5625 "parser.y" /* yacc.c:1646 */
10797  {
10799  }
10800 #line 10722 "parser.c" /* yacc.c:1646 */
10801  break;
10802 
10803  case 667:
10804 #line 5633 "parser.y" /* yacc.c:1646 */
10805  {
10807  current_field->occurs_max = cb_get_int ((yyvsp[-1]));
10811  }
10812 #line 10734 "parser.c" /* yacc.c:1646 */
10813  break;
10814 
10815  case 668:
10816 #line 5644 "parser.y" /* yacc.c:1646 */
10817  {
10818  cb_error (_("GLOBAL is not allowed with screen items"));
10819  }
10820 #line 10742 "parser.c" /* yacc.c:1646 */
10821  break;
10822 
10823  case 670:
10824 #line 5653 "parser.y" /* yacc.c:1646 */
10825  {
10828  check_pic_duplicate = 0;
10829  check_duplicate = 0;
10830  cobc_in_procedure = 1U;
10833  }
10834 #line 10756 "parser.c" /* yacc.c:1646 */
10835  break;
10836 
10837  case 671:
10838 #line 5663 "parser.y" /* yacc.c:1646 */
10839  {
10840  if (current_program->flag_main && !current_program->flag_chained && (yyvsp[-4])) {
10841  cb_error (_("Executable program requested but PROCEDURE/ENTRY has USING clause"));
10842  }
10843  /* Main entry point */
10844  emit_entry (current_program->program_id, 0, (yyvsp[-4]));
10847  emit_entry (current_program->source_name, 1, (yyvsp[-4]));
10848  }
10849  }
10850 #line 10772 "parser.c" /* yacc.c:1646 */
10851  break;
10852 
10853  case 672:
10854 #line 5675 "parser.y" /* yacc.c:1646 */
10855  {
10856  if (current_paragraph) {
10859  }
10861  }
10862  if (current_section) {
10863  if (current_section->exit_label) {
10865  }
10867  }
10868  }
10869 #line 10791 "parser.c" /* yacc.c:1646 */
10870  break;
10871 
10872  case 673:
10873 #line 5690 "parser.y" /* yacc.c:1646 */
10874  {
10875  cb_tree label;
10876 
10877  /* No PROCEDURE DIVISION header ! */
10878  /* Only a statement is allowed as first element */
10879  /* Thereafter, sections/paragraphs may be used */
10880  check_pic_duplicate = 0;
10881  check_duplicate = 0;
10882  cobc_in_procedure = 1U;
10883  label = cb_build_reference ("MAIN SECTION");
10889  CB_TREE (current_section)->source_file = cb_source_file;
10890  CB_TREE (current_section)->source_line = cb_source_line;
10892  label = cb_build_reference ("MAIN PARAGRAPH");
10897  CB_TREE (current_paragraph)->source_file = cb_source_file;
10898  CB_TREE (current_paragraph)->source_line = cb_source_line;
10901  }
10902 #line 10824 "parser.c" /* yacc.c:1646 */
10903  break;
10904 
10905  case 675:
10906 #line 5723 "parser.y" /* yacc.c:1646 */
10907  {
10908  (yyval) = NULL;
10909  }
10910 #line 10832 "parser.c" /* yacc.c:1646 */
10911  break;
10912 
10913  case 676:
10914 #line 5727 "parser.y" /* yacc.c:1646 */
10915  {
10917  size_mode = CB_SIZE_4;
10918  }
10919 #line 10841 "parser.c" /* yacc.c:1646 */
10920  break;
10921 
10922  case 677:
10923 #line 5732 "parser.y" /* yacc.c:1646 */
10924  {
10925  if (cb_list_length ((yyvsp[0])) > COB_MAX_FIELD_PARAMS) {
10926  cb_error (_("Number of parameters exceeds maximum %d"),
10928  }
10929  (yyval) = (yyvsp[0]);
10930  }
10931 #line 10853 "parser.c" /* yacc.c:1646 */
10932  break;
10933 
10934  case 678:
10935 #line 5740 "parser.y" /* yacc.c:1646 */
10936  {
10939  cb_error (_("CHAINING invalid in user FUNCTION"));
10940  } else {
10942  }
10943  }
10944 #line 10866 "parser.c" /* yacc.c:1646 */
10945  break;
10946 
10947  case 679:
10948 #line 5749 "parser.y" /* yacc.c:1646 */
10949  {
10950  if (cb_list_length ((yyvsp[0])) > COB_MAX_FIELD_PARAMS) {
10951  cb_error (_("Number of parameters exceeds maximum %d"),
10953  }
10954  (yyval) = (yyvsp[0]);
10955  }
10956 #line 10878 "parser.c" /* yacc.c:1646 */
10957  break;
10958 
10959  case 680:
10960 #line 5759 "parser.y" /* yacc.c:1646 */
10961  { (yyval) = (yyvsp[0]); }
10962 #line 10884 "parser.c" /* yacc.c:1646 */
10963  break;
10964 
10965  case 681:
10966 #line 5761 "parser.y" /* yacc.c:1646 */
10967  { (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0])); }
10968 #line 10890 "parser.c" /* yacc.c:1646 */
10969  break;
10970 
10971  case 682:
10972 #line 5766 "parser.y" /* yacc.c:1646 */
10973  {
10974  cb_tree x;
10975  struct cb_field *f;
10976 
10977  x = cb_build_identifier ((yyvsp[0]), 0);
10978  if ((yyvsp[-1]) == cb_int1 && CB_VALID_TREE (x) && cb_ref (x) != cb_error_node) {
10979  f = CB_FIELD (cb_ref (x));
10980  f->flag_is_pdiv_opt = 1;
10981  }
10982 
10984  && CB_REFERENCE_P ((yyvsp[0]))
10985  && CB_FIELD (cb_ref ((yyvsp[0])))->flag_any_length) {
10986  cb_error_x ((yyvsp[0]), _("ANY LENGTH items may only be BY REFERENCE formal parameters"));
10987  }
10988 
10989  (yyval) = CB_BUILD_PAIR (cb_int (call_mode), x);
10990  CB_SIZES ((yyval)) = size_mode;
10991  }
10992 #line 10914 "parser.c" /* yacc.c:1646 */
10993  break;
10994 
10995  case 684:
10996 #line 5790 "parser.y" /* yacc.c:1646 */
10997  {
10999  }
11000 #line 10922 "parser.c" /* yacc.c:1646 */
11001  break;
11002 
11003  case 685:
11004 #line 5794 "parser.y" /* yacc.c:1646 */
11005  {
11007  cb_error (_("%s not allowed in CHAINED programs"), "BY VALUE");
11008  } else {
11009  PENDING (_("BY VALUE parameters"));
11011  }
11012  }
11013 #line 10935 "parser.c" /* yacc.c:1646 */
11014  break;
11015 
11016  case 687:
11017 #line 5807 "parser.y" /* yacc.c:1646 */
11018  {
11019  if (call_mode != CB_CALL_BY_VALUE) {
11020  cb_error (_("SIZE only allowed for BY VALUE items"));
11021  } else {
11023  }
11024  }
11025 #line 10947 "parser.c" /* yacc.c:1646 */
11026  break;
11027 
11028  case 688:
11029 #line 5815 "parser.y" /* yacc.c:1646 */
11030  {
11031  if (call_mode != CB_CALL_BY_VALUE) {
11032  cb_error (_("SIZE only allowed for BY VALUE items"));
11033  } else {
11034  size_mode = CB_SIZE_4;
11035  }
11036  }
11037 #line 10959 "parser.c" /* yacc.c:1646 */
11038  break;
11039 
11040  case 689:
11041 #line 5823 "parser.y" /* yacc.c:1646 */
11042  {
11043  if (call_mode != CB_CALL_BY_VALUE) {
11044  cb_error (_("SIZE only allowed for BY VALUE items"));
11045  } else {
11047  }
11048  }
11049 #line 10971 "parser.c" /* yacc.c:1646 */
11050  break;
11051 
11052  case 690:
11053 #line 5831 "parser.y" /* yacc.c:1646 */
11054  {
11055  unsigned char *s = CB_LITERAL ((yyvsp[0]))->data;
11056 
11057  if (call_mode != CB_CALL_BY_VALUE) {
11058  cb_error (_("SIZE only allowed for BY VALUE items"));
11059  } else if (CB_LITERAL ((yyvsp[0]))->size != 1) {
11060  cb_error_x ((yyvsp[0]), _("Invalid value for SIZE"));
11061  } else {
11063  switch (*s) {
11064  case '1':
11065  size_mode |= CB_SIZE_1;
11066  break;
11067  case '2':
11068  size_mode |= CB_SIZE_2;
11069  break;
11070  case '4':
11071  size_mode |= CB_SIZE_4;
11072  break;
11073  case '8':
11074  size_mode |= CB_SIZE_8;
11075  break;
11076  default:
11077  cb_error_x ((yyvsp[0]), _("Invalid value for SIZE"));
11078  break;
11079  }
11080  }
11081  }
11082 #line 11004 "parser.c" /* yacc.c:1646 */
11083  break;
11084 
11085  case 691:
11086 #line 5860 "parser.y" /* yacc.c:1646 */
11087  {
11088  unsigned char *s = CB_LITERAL ((yyvsp[0]))->data;
11089 
11090  if (call_mode != CB_CALL_BY_VALUE) {
11091  cb_error (_("SIZE only allowed for BY VALUE items"));
11092  } else if (CB_LITERAL ((yyvsp[0]))->size != 1) {
11093  cb_error_x ((yyvsp[0]), _("Invalid value for SIZE"));
11094  } else {
11095  size_mode = 0;
11096  switch (*s) {
11097  case '1':
11098  size_mode = CB_SIZE_1;
11099  break;
11100  case '2':
11101  size_mode = CB_SIZE_2;
11102  break;
11103  case '4':
11104  size_mode = CB_SIZE_4;
11105  break;
11106  case '8':
11107  size_mode = CB_SIZE_8;
11108  break;
11109  default:
11110  cb_error_x ((yyvsp[0]), _("Invalid value for SIZE"));
11111  break;
11112  }
11113  }
11114  }
11115 #line 11037 "parser.c" /* yacc.c:1646 */
11116  break;
11117 
11118  case 692:
11119 #line 5892 "parser.y" /* yacc.c:1646 */
11120  {
11121  (yyval) = cb_int0;
11122  }
11123 #line 11045 "parser.c" /* yacc.c:1646 */
11124  break;
11125 
11126  case 693:
11127 #line 5896 "parser.y" /* yacc.c:1646 */
11128  {
11130  cb_error (_("OPTIONAL only allowed for BY REFERENCE items"));
11131  (yyval) = cb_int0;
11132  } else {
11133  (yyval) = cb_int1;
11134  }
11135  }
11136 #line 11058 "parser.c" /* yacc.c:1646 */
11137  break;
11138 
11139  case 694:
11140 #line 5908 "parser.y" /* yacc.c:1646 */
11141  {
11143  cb_error (_("RETURNING clause is required for a FUNCTION"));
11144  }
11145  }
11146 #line 11068 "parser.c" /* yacc.c:1646 */
11147  break;
11148 
11149  case 695:
11150 #line 5914 "parser.y" /* yacc.c:1646 */
11151  {
11152  if (current_program->flag_main) {
11153  cb_error (_("RETURNING clause cannot be OMITTED for main program"));
11154  }
11156  cb_error (_("RETURNING clause cannot be OMITTED for a FUNCTION"));
11157  }
11159  }
11160 #line 11082 "parser.c" /* yacc.c:1646 */
11161  break;
11162 
11163  case 696:
11164 #line 5924 "parser.y" /* yacc.c:1646 */
11165  {
11166  struct cb_field *f;
11167 
11168  if (cb_ref ((yyvsp[0])) != cb_error_node) {
11169  f = CB_FIELD_PTR ((yyvsp[0]));
11170 /* RXWRXW
11171  if (f->storage != CB_STORAGE_LINKAGE) {
11172  cb_error (_("RETURNING item is not defined in LINKAGE SECTION"));
11173  } else if (f->level != 1 && f->level != 77) {
11174 */
11175  if (f->level != 1 && f->level != 77) {
11176  cb_error (_("RETURNING item must have level 01"));
11177  } else if(f->flag_occurs) {
11178  cb_error(_("RETURNING item should not have OCCURS"));
11179  } else if(f->storage == CB_STORAGE_LOCAL) {
11180  cb_error (_("RETURNING item should not be in LOCAL-STORAGE"));
11181  } else {
11183  if (f->flag_any_length) {
11184  cb_error (_("Function RETURNING item may not be ANY LENGTH"));
11185  }
11186 
11187  f->flag_is_returning = 1;
11188  }
11189  current_program->returning = (yyvsp[0]);
11190  }
11191  }
11192  }
11193 #line 11115 "parser.c" /* yacc.c:1646 */
11194  break;
11195 
11196  case 698:
11197 #line 5956 "parser.y" /* yacc.c:1646 */
11198  {
11199  in_declaratives = 1;
11200  emit_statement (cb_build_comment ("DECLARATIVES"));
11201  }
11202 #line 11124 "parser.c" /* yacc.c:1646 */
11203  break;
11204 
11205  case 699:
11206 #line 5962 "parser.y" /* yacc.c:1646 */
11207  {
11208  if (needs_field_debug) {
11209  start_debug = 1;
11210  }
11211  in_declaratives = 0;
11212  in_debugging = 0;
11213  if (current_paragraph) {
11216  }
11219  }
11220  if (current_section) {
11221  if (current_section->exit_label) {
11223  }
11227  }
11228  skip_statements = 0;
11229  emit_statement (cb_build_comment ("END DECLARATIVES"));
11230  check_unreached = 0;
11231  }
11232 #line 11154 "parser.c" /* yacc.c:1646 */
11233  break;
11234 
11235  case 704:
11236 #line 6000 "parser.y" /* yacc.c:1646 */
11237  {
11238  if (next_label_list) {
11239  cb_tree plabel;
11240  char name[32];
11241 
11242  snprintf (name, sizeof(name), "L$%d", next_label_id);
11243  plabel = cb_build_label (cb_build_reference (name), NULL);
11244  CB_LABEL (plabel)->flag_next_sentence = 1;
11245  emit_statement (plabel);
11249  next_label_id++;
11250  }
11251  /* check_unreached = 0; */
11252  }
11253 #line 11175 "parser.c" /* yacc.c:1646 */
11254  break;
11255 
11256  case 706:
11257 #line 6018 "parser.y" /* yacc.c:1646 */
11258  {
11259  /* check_unreached = 0; */
11260  }
11261 #line 11183 "parser.c" /* yacc.c:1646 */
11262  break;
11263 
11264  case 707:
11265 #line 6028 "parser.y" /* yacc.c:1646 */
11266  {
11267  non_const_word = 0;
11268  check_unreached = 0;
11269  if (cb_build_section_name ((yyvsp[-3]), 0) == cb_error_node) {
11270  YYERROR;
11271  }
11272 
11273  /* Exit the last paragraph/section */
11274  if (current_paragraph) {
11277  }
11279  }
11280  if (current_section) {
11281  if (current_section->exit_label) {
11283  }
11285  }
11289  "DEBUGGING - Fall through"));
11291  "FALL THROUGH", NULL));
11292  }
11293  }
11294 
11295  /* Begin a new section */
11296  current_section = CB_LABEL (cb_build_label ((yyvsp[-3]), NULL));
11297  if ((yyvsp[-1])) {
11298  current_section->segment = cb_get_int ((yyvsp[-1]));
11299  }
11301  /* Careful here, one negation */
11305  CB_TREE (current_section)->source_file = cb_source_file;
11306  CB_TREE (current_section)->source_line = cb_source_line;
11308  }
11309 #line 11231 "parser.c" /* yacc.c:1646 */
11310  break;
11311 
11312  case 708:
11313 #line 6072 "parser.y" /* yacc.c:1646 */
11314  {
11316  }
11317 #line 11239 "parser.c" /* yacc.c:1646 */
11318  break;
11319 
11320  case 711:
11321 #line 6083 "parser.y" /* yacc.c:1646 */
11322  {
11323  cb_tree label;
11324 
11325  non_const_word = 0;
11326  check_unreached = 0;
11327  if (cb_build_section_name ((yyvsp[-1]), 1) == cb_error_node) {
11328  YYERROR;
11329  }
11330 
11331  /* Exit the last paragraph */
11332  if (current_paragraph) {
11335  }
11339  "DEBUGGING - Fall through"));
11341  "FALL THROUGH", NULL));
11342  }
11343  }
11344 
11345  /* Begin a new paragraph */
11346  if (!current_section) {
11347  label = cb_build_reference ("MAIN SECTION");
11353  CB_TREE (current_section)->source_file = cb_source_file;
11354  CB_TREE (current_section)->source_line = cb_source_line;
11356  }
11362  CB_TREE (current_paragraph)->source_file = cb_source_file;
11363  CB_TREE (current_paragraph)->source_line = cb_source_line;
11365  }
11366 #line 11288 "parser.c" /* yacc.c:1646 */
11367  break;
11368 
11369  case 712:
11370 #line 6131 "parser.y" /* yacc.c:1646 */
11371  {
11372  non_const_word = 0;
11373  check_unreached = 0;
11374  if (cb_build_section_name ((yyvsp[0]), 0) != cb_error_node) {
11375  cb_error_x ((yyvsp[0]), _("Unknown statement '%s'"), CB_NAME ((yyvsp[0])));
11376  }
11377  YYERROR;
11378  }
11379 #line 11301 "parser.c" /* yacc.c:1646 */
11380  break;
11381 
11382  case 713:
11383 #line 6143 "parser.y" /* yacc.c:1646 */
11384  {
11385  (yyval) = NULL;
11386  }
11387 #line 11309 "parser.c" /* yacc.c:1646 */
11388  break;
11389 
11390  case 714:
11391 #line 6147 "parser.y" /* yacc.c:1646 */
11392  {
11393  if (in_declaratives) {
11394  cb_error (_("SECTION segment invalid within DECLARATIVE"));
11395  }
11396  if (cb_verify (cb_section_segments, "SECTION segment")) {
11398  (yyval) = (yyvsp[0]);
11399  } else {
11400  (yyval) = NULL;
11401  }
11402  }
11403 #line 11325 "parser.c" /* yacc.c:1646 */
11404  break;
11405 
11406  case 715:
11407 #line 6165 "parser.y" /* yacc.c:1646 */
11408  {
11409  (yyval) = current_program->exec_list;
11411  check_unreached = 0;
11412  }
11413 #line 11335 "parser.c" /* yacc.c:1646 */
11414  break;
11415 
11416  case 716:
11417 #line 6170 "parser.y" /* yacc.c:1646 */
11418  {
11419  (yyval) = CB_TREE (current_statement);
11421  }
11422 #line 11344 "parser.c" /* yacc.c:1646 */
11423  break;
11424 
11425  case 717:
11426 #line 6175 "parser.y" /* yacc.c:1646 */
11427  {
11429  current_program->exec_list = (yyvsp[-2]);
11430  current_statement = CB_STATEMENT ((yyvsp[-1]));
11431  }
11432 #line 11354 "parser.c" /* yacc.c:1646 */
11433  break;
11434 
11435  case 718:
11436 #line 6183 "parser.y" /* yacc.c:1646 */
11437  {
11438  cb_tree label;
11439 
11440  if (!current_section) {
11441  label = cb_build_reference ("MAIN SECTION");
11447  CB_TREE (current_section)->source_file = cb_source_file;
11448  CB_TREE (current_section)->source_line = cb_source_line;
11450  }
11451  if (!current_paragraph) {
11452  label = cb_build_reference ("MAIN PARAGRAPH");
11457  CB_TREE (current_paragraph)->source_file = cb_source_file;
11458  CB_TREE (current_paragraph)->source_line = cb_source_line;
11460  }
11462  }
11463 #line 11385 "parser.c" /* yacc.c:1646 */
11464  break;
11465 
11466  case 719:
11467 #line 6210 "parser.y" /* yacc.c:1646 */
11468  {
11469  cobc_cs_check = 0;
11470  }
11471 #line 11393 "parser.c" /* yacc.c:1646 */
11472  break;
11473 
11474  case 720:
11475 #line 6214 "parser.y" /* yacc.c:1646 */
11476  {
11477  cobc_cs_check = 0;
11478  }
11479 #line 11401 "parser.c" /* yacc.c:1646 */
11480  break;
11481 
11482  case 770:
11483 #line 6270 "parser.y" /* yacc.c:1646 */
11484  {
11485  if (cb_verify (cb_next_sentence_phrase, "NEXT SENTENCE")) {
11486  cb_tree label;
11487  char name[32];
11488 
11489  begin_statement ("NEXT SENTENCE", 0);
11490  sprintf (name, "L$%d", next_label_id);
11491  label = cb_build_reference (name);
11493  emit_statement (cb_build_goto (label, NULL));
11494  }
11495  check_unreached = 0;
11496  }
11497 #line 11419 "parser.c" /* yacc.c:1646 */
11498  break;
11499 
11500  case 771:
11501 #line 6284 "parser.y" /* yacc.c:1646 */
11502  {
11503  yyerrok;
11504  cobc_cs_check = 0;
11505  }
11506 #line 11428 "parser.c" /* yacc.c:1646 */
11507  break;
11508 
11509  case 772:
11510 #line 6295 "parser.y" /* yacc.c:1646 */
11511  {
11512  begin_statement ("ACCEPT", TERM_ACCEPT);
11513  if (cb_accept_update) {
11515  }
11516  if (cb_accept_auto) {
11518  }
11519  }
11520 #line 11442 "parser.c" /* yacc.c:1646 */
11521  break;
11522 
11523  case 774:
11524 #line 6310 "parser.y" /* yacc.c:1646 */
11525  {
11526  check_duplicate = 0;
11528  line_column = NULL;
11529  }
11530 #line 11452 "parser.c" /* yacc.c:1646 */
11531  break;
11532 
11533  case 775:
11534 #line 6316 "parser.y" /* yacc.c:1646 */
11535  {
11536  cobc_cs_check = 0;
11538  }
11539 #line 11461 "parser.c" /* yacc.c:1646 */
11540  break;
11541 
11542  case 776:
11543 #line 6321 "parser.y" /* yacc.c:1646 */
11544  {
11545  cb_emit_accept_line_or_col ((yyvsp[-2]), 0);
11546  }
11547 #line 11469 "parser.c" /* yacc.c:1646 */
11548  break;
11549 
11550  case 777:
11551 #line 6325 "parser.y" /* yacc.c:1646 */
11552  {
11553  cb_emit_accept_line_or_col ((yyvsp[-2]), 1);
11554  }
11555 #line 11477 "parser.c" /* yacc.c:1646 */
11556  break;
11557 
11558  case 778:
11559 #line 6329 "parser.y" /* yacc.c:1646 */
11560  {
11561  cobc_cs_check = 0;
11562  cb_emit_accept_date_yyyymmdd ((yyvsp[-3]));
11563  }
11564 #line 11486 "parser.c" /* yacc.c:1646 */
11565  break;
11566 
11567  case 779:
11568 #line 6334 "parser.y" /* yacc.c:1646 */
11569  {
11570  cobc_cs_check = 0;
11571  cb_emit_accept_date ((yyvsp[-2]));
11572  }
11573 #line 11495 "parser.c" /* yacc.c:1646 */
11574  break;
11575 
11576  case 780:
11577 #line 6339 "parser.y" /* yacc.c:1646 */
11578  {
11579  cobc_cs_check = 0;
11580  cb_emit_accept_day_yyyyddd ((yyvsp[-3]));
11581  }
11582 #line 11504 "parser.c" /* yacc.c:1646 */
11583  break;
11584 
11585  case 781:
11586 #line 6344 "parser.y" /* yacc.c:1646 */
11587  {
11588  cobc_cs_check = 0;
11589  cb_emit_accept_day ((yyvsp[-2]));
11590  }
11591 #line 11513 "parser.c" /* yacc.c:1646 */
11592  break;
11593 
11594  case 782:
11595 #line 6349 "parser.y" /* yacc.c:1646 */
11596  {
11597  cb_emit_accept_day_of_week ((yyvsp[-2]));
11598  }
11599 #line 11521 "parser.c" /* yacc.c:1646 */
11600  break;
11601 
11602  case 783:
11603 #line 6353 "parser.y" /* yacc.c:1646 */
11604  {
11605  cb_emit_accept_escape_key ((yyvsp[-3]));
11606  }
11607 #line 11529 "parser.c" /* yacc.c:1646 */
11608  break;
11609 
11610  case 784:
11611 #line 6357 "parser.y" /* yacc.c:1646 */
11612  {
11613  cb_emit_accept_exception_status ((yyvsp[-3]));
11614  }
11615 #line 11537 "parser.c" /* yacc.c:1646 */
11616  break;
11617 
11618  case 785:
11619 #line 6361 "parser.y" /* yacc.c:1646 */
11620  {
11621  cb_emit_accept_time ((yyvsp[-2]));
11622  }
11623 #line 11545 "parser.c" /* yacc.c:1646 */
11624  break;
11625 
11626  case 786:
11627 #line 6365 "parser.y" /* yacc.c:1646 */
11628  {
11629  cobc_cs_check = 0;
11630  cb_emit_accept_user_name ((yyvsp[-3]));
11631  }
11632 #line 11554 "parser.c" /* yacc.c:1646 */
11633  break;
11634 
11635  case 787:
11636 #line 6370 "parser.y" /* yacc.c:1646 */
11637  {
11638  cb_emit_accept_command_line ((yyvsp[-2]));
11639  }
11640 #line 11562 "parser.c" /* yacc.c:1646 */
11641  break;
11642 
11643  case 788:
11644 #line 6374 "parser.y" /* yacc.c:1646 */
11645  {
11646  cb_emit_accept_environment ((yyvsp[-3]));
11647  }
11648 #line 11570 "parser.c" /* yacc.c:1646 */
11649  break;
11650 
11651  case 789:
11652 #line 6378 "parser.y" /* yacc.c:1646 */
11653  {
11654  cb_emit_get_environment ((yyvsp[-1]), (yyvsp[-4]));
11655  }
11656 #line 11578 "parser.c" /* yacc.c:1646 */
11657  break;
11658 
11659  case 790:
11660 #line 6382 "parser.y" /* yacc.c:1646 */
11661  {
11662  cb_emit_accept_arg_number ((yyvsp[-2]));
11663  }
11664 #line 11586 "parser.c" /* yacc.c:1646 */
11665  break;
11666 
11667  case 791:
11668 #line 6386 "parser.y" /* yacc.c:1646 */
11669  {
11670  cb_emit_accept_arg_value ((yyvsp[-3]));
11671  }
11672 #line 11594 "parser.c" /* yacc.c:1646 */
11673  break;
11674 
11675  case 792:
11676 #line 6390 "parser.y" /* yacc.c:1646 */
11677  {
11678  cb_emit_accept_mnemonic ((yyvsp[-2]), (yyvsp[0]));
11679  }
11680 #line 11602 "parser.c" /* yacc.c:1646 */
11681  break;
11682 
11683  case 793:
11684 #line 6394 "parser.y" /* yacc.c:1646 */
11685  {
11686  cb_emit_accept_name ((yyvsp[-2]), (yyvsp[0]));
11687  }
11688 #line 11610 "parser.c" /* yacc.c:1646 */
11689  break;
11690 
11691  case 795:
11692 #line 6402 "parser.y" /* yacc.c:1646 */
11693  {
11694  (yyval) = cb_null;
11695  }
11696 #line 11618 "parser.c" /* yacc.c:1646 */
11697  break;
11698 
11699  case 801:
11700 #line 6420 "parser.y" /* yacc.c:1646 */
11701  {
11703  }
11704 #line 11626 "parser.c" /* yacc.c:1646 */
11705  break;
11706 
11707  case 802:
11708 #line 6424 "parser.y" /* yacc.c:1646 */
11709  {
11710  check_repeated ("MODE IS BLOCK", SYN_CLAUSE_2, &check_duplicate);
11711  }
11712 #line 11634 "parser.c" /* yacc.c:1646 */
11713  break;
11714 
11715  case 806:
11716 #line 6437 "parser.y" /* yacc.c:1646 */
11717  {
11719  _("AT screen-location"), SYN_CLAUSE_3,
11721 
11722  if (!line_column) {
11723  line_column = CB_BUILD_PAIR ((yyvsp[0]), cb_int0);
11724  } else {
11725  CB_PAIR_X (line_column) = (yyvsp[0]);
11726  }
11727  }
11728 #line 11650 "parser.c" /* yacc.c:1646 */
11729  break;
11730 
11731  case 807:
11732 #line 6449 "parser.y" /* yacc.c:1646 */
11733  {
11734  check_attr_with_conflict ("COLUMN", SYN_CLAUSE_2,
11735  _("AT screen-location"), SYN_CLAUSE_3,
11737 
11738  if(!line_column) {
11739  line_column = CB_BUILD_PAIR (cb_int0, (yyvsp[0]));
11740  } else {
11741  CB_PAIR_Y (line_column) = (yyvsp[0]);
11742  }
11743  }
11744 #line 11666 "parser.c" /* yacc.c:1646 */
11745  break;
11746 
11747  case 808:
11748 #line 6461 "parser.y" /* yacc.c:1646 */
11749  {
11750  check_attr_with_conflict (_("AT screen-location"), SYN_CLAUSE_3,
11751  _("LINE or COLUMN"), SYN_CLAUSE_1 | SYN_CLAUSE_2,
11753 
11754  line_column = (yyvsp[0]);
11755  }
11756 #line 11678 "parser.c" /* yacc.c:1646 */
11757  break;
11758 
11759  case 809:
11760 #line 6471 "parser.y" /* yacc.c:1646 */
11761  { (yyval) = (yyvsp[0]); }
11762 #line 11684 "parser.c" /* yacc.c:1646 */
11763  break;
11764 
11765  case 810:
11766 #line 6475 "parser.y" /* yacc.c:1646 */
11767  { (yyval) = (yyvsp[0]); }
11768 #line 11690 "parser.c" /* yacc.c:1646 */
11769  break;
11770 
11771  case 811:
11772 #line 6476 "parser.y" /* yacc.c:1646 */
11773  { (yyval) = (yyvsp[0]); }
11774 #line 11696 "parser.c" /* yacc.c:1646 */
11775  break;
11776 
11777  case 812:
11778 #line 6481 "parser.y" /* yacc.c:1646 */
11779  {
11780  cobc_cs_check = 0;
11781  }
11782 #line 11704 "parser.c" /* yacc.c:1646 */
11783  break;
11784 
11785  case 813:
11786 #line 6488 "parser.y" /* yacc.c:1646 */
11787  {
11789  }
11790 #line 11712 "parser.c" /* yacc.c:1646 */
11791  break;
11792 
11793  case 814:
11794 #line 6492 "parser.y" /* yacc.c:1646 */
11795  {
11796  if (cb_accept_auto) {
11798  }
11799  }
11800 #line 11722 "parser.c" /* yacc.c:1646 */
11801  break;
11802 
11803  case 815:
11804 #line 6498 "parser.y" /* yacc.c:1646 */
11805  {
11807  }
11808 #line 11730 "parser.c" /* yacc.c:1646 */
11809  break;
11810 
11811  case 816:
11812 #line 6502 "parser.y" /* yacc.c:1646 */
11813  {
11815  }
11816 #line 11738 "parser.c" /* yacc.c:1646 */
11817  break;
11818 
11819  case 817:
11820 #line 6506 "parser.y" /* yacc.c:1646 */
11821  {
11822  cb_warning (_("Ignoring CONVERSION"));
11823  }
11824 #line 11746 "parser.c" /* yacc.c:1646 */
11825  break;
11826 
11827  case 818:
11828 #line 6510 "parser.y" /* yacc.c:1646 */
11829  {
11831  }
11832 #line 11754 "parser.c" /* yacc.c:1646 */
11833  break;
11834 
11835  case 819:
11836 #line 6514 "parser.y" /* yacc.c:1646 */
11837  {
11839  "HIGHLIGHT", COB_SCREEN_HIGHLIGHT,
11840  "LOWLIGHT", COB_SCREEN_LOWLIGHT);
11841  }
11842 #line 11764 "parser.c" /* yacc.c:1646 */
11843  break;
11844 
11845  case 820:
11846 #line 6520 "parser.y" /* yacc.c:1646 */
11847  {
11849  }
11850 #line 11772 "parser.c" /* yacc.c:1646 */
11851  break;
11852 
11853  case 821:
11854 #line 6524 "parser.y" /* yacc.c:1646 */
11855  {
11857  }
11858 #line 11780 "parser.c" /* yacc.c:1646 */
11859  break;
11860 
11861  case 822:
11862 #line 6528 "parser.y" /* yacc.c:1646 */
11863  {
11865  "LOWLIGHT", COB_SCREEN_LOWLIGHT,
11866  "HIGHLIGHT", COB_SCREEN_HIGHLIGHT);
11867  }
11868 #line 11790 "parser.c" /* yacc.c:1646 */
11869  break;
11870 
11871  case 823:
11872 #line 6534 "parser.y" /* yacc.c:1646 */
11873  {
11875  }
11876 #line 11798 "parser.c" /* yacc.c:1646 */
11877  break;
11878 
11879  case 824:
11880 #line 6538 "parser.y" /* yacc.c:1646 */
11881  {
11883  }
11884 #line 11806 "parser.c" /* yacc.c:1646 */
11885  break;
11886 
11887  case 825:
11888 #line 6542 "parser.y" /* yacc.c:1646 */
11889  {
11890  check_attribs (NULL, NULL, NULL, NULL, (yyvsp[0]), NULL, COB_SCREEN_PROMPT);
11891  }
11892 #line 11814 "parser.c" /* yacc.c:1646 */
11893  break;
11894 
11895  case 826:
11896 #line 6546 "parser.y" /* yacc.c:1646 */
11897  {
11899  }
11900 #line 11822 "parser.c" /* yacc.c:1646 */
11901  break;
11902 
11903  case 827:
11904 #line 6550 "parser.y" /* yacc.c:1646 */
11905  {
11907  }
11908 #line 11830 "parser.c" /* yacc.c:1646 */
11909  break;
11910 
11911  case 828:
11912 #line 6554 "parser.y" /* yacc.c:1646 */
11913  {
11915  }
11916 #line 11838 "parser.c" /* yacc.c:1646 */
11917  break;
11918 
11919  case 829:
11920 #line 6558 "parser.y" /* yacc.c:1646 */
11921  {
11923  }
11924 #line 11846 "parser.c" /* yacc.c:1646 */
11925  break;
11926 
11927  case 830:
11928 #line 6562 "parser.y" /* yacc.c:1646 */
11929  {
11930  check_attribs (NULL, NULL, NULL, NULL, NULL, (yyvsp[0]), 0);
11931  }
11932 #line 11854 "parser.c" /* yacc.c:1646 */
11933  break;
11934 
11935  case 831:
11936 #line 6566 "parser.y" /* yacc.c:1646 */
11937  {
11938  check_attribs (NULL, NULL, NULL, NULL, NULL, (yyvsp[0]), 0);
11939  }
11940 #line 11862 "parser.c" /* yacc.c:1646 */
11941  break;
11942 
11943  case 832:
11944 #line 6570 "parser.y" /* yacc.c:1646 */
11945  {
11947  }
11948 #line 11870 "parser.c" /* yacc.c:1646 */
11949  break;
11950 
11951  case 833:
11952 #line 6574 "parser.y" /* yacc.c:1646 */
11953  {
11954  if (cb_accept_update) {
11956  }
11957  }
11958 #line 11880 "parser.c" /* yacc.c:1646 */
11959  break;
11960 
11961  case 834:
11962 #line 6580 "parser.y" /* yacc.c:1646 */
11963  {
11965  }
11966 #line 11888 "parser.c" /* yacc.c:1646 */
11967  break;
11968 
11969  case 835:
11970 #line 6584 "parser.y" /* yacc.c:1646 */
11971  {
11973  }
11974 #line 11896 "parser.c" /* yacc.c:1646 */
11975  break;
11976 
11977  case 836:
11978 #line 6588 "parser.y" /* yacc.c:1646 */
11979  {
11980  check_attribs ((yyvsp[0]), NULL, NULL, NULL, NULL, NULL, 0);
11981  }
11982 #line 11904 "parser.c" /* yacc.c:1646 */
11983  break;
11984 
11985  case 837:
11986 #line 6592 "parser.y" /* yacc.c:1646 */
11987  {
11988  check_attribs (NULL, (yyvsp[0]), NULL, NULL, NULL, NULL, 0);
11989  }
11990 #line 11912 "parser.c" /* yacc.c:1646 */
11991  break;
11992 
11993  case 838:
11994 #line 6596 "parser.y" /* yacc.c:1646 */
11995  {
11996  check_attribs (NULL, NULL, (yyvsp[0]), NULL, NULL, NULL, 0);
11997  }
11998 #line 11920 "parser.c" /* yacc.c:1646 */
11999  break;
12000 
12001  case 839:
12002 #line 6600 "parser.y" /* yacc.c:1646 */
12003  {
12005  }
12006 #line 11928 "parser.c" /* yacc.c:1646 */
12007  break;
12008 
12009  case 840:
12010 #line 6604 "parser.y" /* yacc.c:1646 */
12011  {
12012  check_attribs (NULL, NULL, NULL, (yyvsp[0]), NULL, NULL, 0);
12013  }
12014 #line 11936 "parser.c" /* yacc.c:1646 */
12015  break;
12016 
12017  case 843:
12018 #line 6616 "parser.y" /* yacc.c:1646 */
12019  {
12020  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), ACCEPT);
12021  }
12022 #line 11944 "parser.c" /* yacc.c:1646 */
12023  break;
12024 
12025  case 844:
12026 #line 6620 "parser.y" /* yacc.c:1646 */
12027  {
12028  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), ACCEPT);
12029 # if 0 /* activate only for debugging purposes for attribs */
12030  if (current_statement->attr_ptr) {
12031  printBits (current_statement->attr_ptr->dispattrs);
12032  } else {
12033  fprintf(stderr, "No Attribs\n");
12034  }
12035 #endif
12036  }
12037 #line 11959 "parser.c" /* yacc.c:1646 */
12038  break;
12039 
12040  case 845:
12041 #line 6637 "parser.y" /* yacc.c:1646 */
12042  {
12043  begin_statement ("ADD", TERM_ADD);
12044  }
12045 #line 11967 "parser.c" /* yacc.c:1646 */
12046  break;
12047 
12048  case 847:
12049 #line 6646 "parser.y" /* yacc.c:1646 */
12050  {
12051  cb_emit_arithmetic ((yyvsp[-1]), '+', cb_build_binary_list ((yyvsp[-3]), '+'));
12052  }
12053 #line 11975 "parser.c" /* yacc.c:1646 */
12054  break;
12055 
12056  case 848:
12057 #line 6650 "parser.y" /* yacc.c:1646 */
12058  {
12059  cb_emit_arithmetic ((yyvsp[-1]), 0, cb_build_binary_list ((yyvsp[-4]), '+'));
12060  }
12061 #line 11983 "parser.c" /* yacc.c:1646 */
12062  break;
12063 
12064  case 849:
12065 #line 6654 "parser.y" /* yacc.c:1646 */
12066  {
12067  cb_emit_corresponding (cb_build_add, (yyvsp[-2]), (yyvsp[-4]), (yyvsp[-1]));
12068  }
12069 #line 11991 "parser.c" /* yacc.c:1646 */
12070  break;
12071 
12072  case 851:
12073 #line 6661 "parser.y" /* yacc.c:1646 */
12074  {
12075  cb_list_add ((yyvsp[-2]), (yyvsp[0]));
12076  }
12077 #line 11999 "parser.c" /* yacc.c:1646 */
12078  break;
12079 
12080  case 852:
12081 #line 6668 "parser.y" /* yacc.c:1646 */
12082  {
12083  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), ADD);
12084  }
12085 #line 12007 "parser.c" /* yacc.c:1646 */
12086  break;
12087 
12088  case 853:
12089 #line 6672 "parser.y" /* yacc.c:1646 */
12090  {
12091  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), ADD);
12092  }
12093 #line 12015 "parser.c" /* yacc.c:1646 */
12094  break;
12095 
12096  case 854:
12097 #line 6682 "parser.y" /* yacc.c:1646 */
12098  {
12099  begin_statement ("ALLOCATE", 0);
12101  }
12102 #line 12024 "parser.c" /* yacc.c:1646 */
12103  break;
12104 
12105  case 856:
12106 #line 6691 "parser.y" /* yacc.c:1646 */
12107  {
12108  cb_emit_allocate ((yyvsp[-2]), (yyvsp[0]), NULL, (yyvsp[-1]));
12109  }
12110 #line 12032 "parser.c" /* yacc.c:1646 */
12111  break;
12112 
12113  case 857:
12114 #line 6695 "parser.y" /* yacc.c:1646 */
12115  {
12116  if ((yyvsp[0]) == NULL) {
12118  _("ALLOCATE CHARACTERS requires RETURNING clause"));
12119  } else {
12120  cb_emit_allocate (NULL, (yyvsp[0]), (yyvsp[-3]), (yyvsp[-1]));
12121  }
12122  }
12123 #line 12045 "parser.c" /* yacc.c:1646 */
12124  break;
12125 
12126  case 858:
12127 #line 6706 "parser.y" /* yacc.c:1646 */
12128  { (yyval) = NULL; }
12129 #line 12051 "parser.c" /* yacc.c:1646 */
12130  break;
12131 
12132  case 859:
12133 #line 6707 "parser.y" /* yacc.c:1646 */
12134  { (yyval) = (yyvsp[0]); }
12135 #line 12057 "parser.c" /* yacc.c:1646 */
12136  break;
12137 
12138  case 860:
12139 #line 6715 "parser.y" /* yacc.c:1646 */
12140  {
12141  begin_statement ("ALTER", 0);
12142  cb_verify (cb_alter_statement, "ALTER statement");
12143  }
12144 #line 12066 "parser.c" /* yacc.c:1646 */
12145  break;
12146 
12147  case 864:
12148 #line 6729 "parser.y" /* yacc.c:1646 */
12149  {
12150  cb_emit_alter ((yyvsp[-3]), (yyvsp[0]));
12151  }
12152 #line 12074 "parser.c" /* yacc.c:1646 */
12153  break;
12154 
12155  case 867:
12156 #line 6741 "parser.y" /* yacc.c:1646 */
12157  {
12158  begin_statement ("CALL", TERM_CALL);
12160  call_nothing = 0;
12161  }
12162 #line 12084 "parser.c" /* yacc.c:1646 */
12163  break;
12164 
12165  case 869:
12166 #line 6757 "parser.y" /* yacc.c:1646 */
12167  {
12168  if (CB_LITERAL_P ((yyvsp[-4])) &&
12171  !strcmp ((const char *)(CB_LITERAL((yyvsp[-4]))->data), current_program->orig_program_id)) {
12172  cb_warning_x ((yyvsp[-4]), _("Recursive program call - assuming RECURSIVE attribute"));
12174  }
12175  /* For CALL ... RETURNING NOTHING, set the call convention bit */
12176  if (call_nothing) {
12177  if ((yyvsp[-5]) && CB_INTEGER_P ((yyvsp[-5]))) {
12178  (yyvsp[-5]) = cb_int ((CB_INTEGER ((yyvsp[-5]))->val) | CB_CONV_NO_RET_UPD);
12179  } else {
12180  (yyvsp[-5]) = cb_int (CB_CONV_NO_RET_UPD);
12181  }
12182  }
12183  cb_emit_call ((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), (yyvsp[-5]));
12184  }
12185 #line 12107 "parser.c" /* yacc.c:1646 */
12186  break;
12187 
12188  case 870:
12189 #line 6779 "parser.y" /* yacc.c:1646 */
12190  {
12191  (yyval) = NULL;
12192  cobc_cs_check = 0;
12193  }
12194 #line 12116 "parser.c" /* yacc.c:1646 */
12195  break;
12196 
12197  case 871:
12198 #line 6784 "parser.y" /* yacc.c:1646 */
12199  {
12200  (yyval) = cb_int (CB_CONV_STATIC_LINK);
12201  cobc_cs_check = 0;
12202  }
12203 #line 12125 "parser.c" /* yacc.c:1646 */
12204  break;
12205 
12206  case 872:
12207 #line 6789 "parser.y" /* yacc.c:1646 */
12208  {
12209  (yyval) = cb_int (CB_CONV_STDCALL);
12210  cobc_cs_check = 0;
12211  }
12212 #line 12134 "parser.c" /* yacc.c:1646 */
12213  break;
12214 
12215  case 873:
12216 #line 6794 "parser.y" /* yacc.c:1646 */
12217  {
12218  cb_tree x;
12219 
12220  x = cb_ref ((yyvsp[0]));
12221  if (CB_VALID_TREE (x)) {
12222  if (CB_SYSTEM_NAME(x)->token != CB_FEATURE_CONVENTION) {
12223  cb_error_x ((yyvsp[0]), _("Invalid mnemonic name"));
12224  (yyval) = NULL;
12225  } else {
12226  (yyval) = CB_SYSTEM_NAME(x)->value;
12227  }
12228  } else {
12229  (yyval) = NULL;
12230  }
12231  cobc_cs_check = 0;
12232  }
12233 #line 12155 "parser.c" /* yacc.c:1646 */
12234  break;
12235 
12236  case 874:
12237 #line 6814 "parser.y" /* yacc.c:1646 */
12238  {
12239  (yyval) = NULL;
12240  }
12241 #line 12163 "parser.c" /* yacc.c:1646 */
12242  break;
12243 
12244  case 875:
12245 #line 6818 "parser.y" /* yacc.c:1646 */
12246  {
12248  size_mode = CB_SIZE_4;
12249  }
12250 #line 12172 "parser.c" /* yacc.c:1646 */
12251  break;
12252 
12253  case 876:
12254 #line 6823 "parser.y" /* yacc.c:1646 */
12255  {
12256  if (cb_list_length ((yyvsp[0])) > COB_MAX_FIELD_PARAMS) {
12258  _("Number of parameters exceeds maximum %d"),
12260  }
12261  (yyval) = (yyvsp[0]);
12262  }
12263 #line 12185 "parser.c" /* yacc.c:1646 */
12264  break;
12265 
12266  case 877:
12267 #line 6834 "parser.y" /* yacc.c:1646 */
12268  { (yyval) = (yyvsp[0]); }
12269 #line 12191 "parser.c" /* yacc.c:1646 */
12270  break;
12271 
12272  case 878:
12273 #line 6836 "parser.y" /* yacc.c:1646 */
12274  { (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0])); }
12275 #line 12197 "parser.c" /* yacc.c:1646 */
12276  break;
12277 
12278  case 879:
12279 #line 6841 "parser.y" /* yacc.c:1646 */
12280  {
12283  _("OMITTED only allowed with BY REFERENCE"));
12284  }
12285  (yyval) = CB_BUILD_PAIR (cb_int (call_mode), cb_null);
12286  }
12287 #line 12209 "parser.c" /* yacc.c:1646 */
12288  break;
12289 
12290  case 880:
12291 #line 6849 "parser.y" /* yacc.c:1646 */
12292  {
12293  int save_mode;
12294 
12295  save_mode = call_mode;
12297  if (CB_FILE_P ((yyvsp[0])) || (CB_REFERENCE_P ((yyvsp[0])) &&
12298  CB_FILE_P (CB_REFERENCE ((yyvsp[0]))->value))) {
12300  _("Invalid file name reference"));
12301  } else if (call_mode == CB_CALL_BY_VALUE) {
12302  if (cb_category_is_alpha ((yyvsp[0]))) {
12303  cb_warning_x ((yyvsp[0]),
12304  _("BY CONTENT assumed for alphanumeric item"));
12305  save_mode = CB_CALL_BY_CONTENT;
12306  }
12307  }
12308  }
12309  (yyval) = CB_BUILD_PAIR (cb_int (save_mode), (yyvsp[0]));
12310  CB_SIZES ((yyval)) = size_mode;
12311  call_mode = save_mode;
12312  }
12313 #line 12235 "parser.c" /* yacc.c:1646 */
12314  break;
12315 
12316  case 882:
12317 #line 6875 "parser.y" /* yacc.c:1646 */
12318  {
12320  }
12321 #line 12243 "parser.c" /* yacc.c:1646 */
12322  break;
12323 
12324  case 883:
12325 #line 6879 "parser.y" /* yacc.c:1646 */
12326  {
12329  _("%s not allowed in CHAINED programs"), "BY CONTENT");
12330  } else {
12332  }
12333  }
12334 #line 12256 "parser.c" /* yacc.c:1646 */
12335  break;
12336 
12337  case 884:
12338 #line 6888 "parser.y" /* yacc.c:1646 */
12339  {
12342  _("%s not allowed in CHAINED programs"), "BY VALUE");
12343  } else {
12345  }
12346  }
12347 #line 12269 "parser.c" /* yacc.c:1646 */
12348  break;
12349 
12350  case 885:
12351 #line 6900 "parser.y" /* yacc.c:1646 */
12352  {
12353  (yyval) = NULL;
12354  }
12355 #line 12277 "parser.c" /* yacc.c:1646 */
12356  break;
12357 
12358  case 886:
12359 #line 6904 "parser.y" /* yacc.c:1646 */
12360  {
12361  (yyval) = (yyvsp[0]);
12362  }
12363 #line 12285 "parser.c" /* yacc.c:1646 */
12364  break;
12365 
12366  case 887:
12367 #line 6908 "parser.y" /* yacc.c:1646 */
12368  {
12369  (yyval) = cb_null;
12370  }
12371 #line 12293 "parser.c" /* yacc.c:1646 */
12372  break;
12373 
12374  case 888:
12375 #line 6912 "parser.y" /* yacc.c:1646 */
12376  {
12378  (yyval) = cb_null;
12379  }
12380 #line 12302 "parser.c" /* yacc.c:1646 */
12381  break;
12382 
12383  case 889:
12384 #line 6917 "parser.y" /* yacc.c:1646 */
12385  {
12386  struct cb_field *f;
12387 
12388  if (cb_ref ((yyvsp[0])) != cb_error_node) {
12389  f = CB_FIELD_PTR ((yyvsp[0]));
12390  if (f->level != 1 && f->level != 77) {
12391  cb_error (_("RETURNING item must have level 01 or 77"));
12392  (yyval) = NULL;
12393  } else if (f->storage != CB_STORAGE_LINKAGE &&
12394  !f->flag_item_based) {
12395  cb_error (_("RETURNING item is neither in LINKAGE SECTION nor is it BASED"));
12396  (yyval) = NULL;
12397  } else {
12398  (yyval) = cb_build_address ((yyvsp[0]));
12399  }
12400  } else {
12401  (yyval) = NULL;
12402  }
12403  }
12404 #line 12326 "parser.c" /* yacc.c:1646 */
12405  break;
12406 
12407  case 894:
12408 #line 6950 "parser.y" /* yacc.c:1646 */
12409  {
12410  (yyval) = NULL;
12411  }
12412 #line 12334 "parser.c" /* yacc.c:1646 */
12413  break;
12414 
12415  case 895:
12416 #line 6955 "parser.y" /* yacc.c:1646 */
12417  {
12418  (yyval) = (yyvsp[0]);
12419  }
12420 #line 12342 "parser.c" /* yacc.c:1646 */
12421  break;
12422 
12423  case 896:
12424 #line 6960 "parser.y" /* yacc.c:1646 */
12425  {
12426  cb_verify (cb_call_overflow, "ON OVERFLOW clause");
12427  (yyval) = (yyvsp[0]);
12428  }
12429 #line 12351 "parser.c" /* yacc.c:1646 */
12430  break;
12431 
12432  case 897:
12433 #line 6968 "parser.y" /* yacc.c:1646 */
12434  {
12435  (yyval) = NULL;
12436  }
12437 #line 12359 "parser.c" /* yacc.c:1646 */
12438  break;
12439 
12440  case 898:
12441 #line 6973 "parser.y" /* yacc.c:1646 */
12442  {
12443  (yyval) = (yyvsp[0]);
12444  }
12445 #line 12367 "parser.c" /* yacc.c:1646 */
12446  break;
12447 
12448  case 899:
12449 #line 6980 "parser.y" /* yacc.c:1646 */
12450  {
12451  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), CALL);
12452  }
12453 #line 12375 "parser.c" /* yacc.c:1646 */
12454  break;
12455 
12456  case 900:
12457 #line 6984 "parser.y" /* yacc.c:1646 */
12458  {
12459  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), CALL);
12460  }
12461 #line 12383 "parser.c" /* yacc.c:1646 */
12462  break;
12463 
12464  case 901:
12465 #line 6994 "parser.y" /* yacc.c:1646 */
12466  {
12467  begin_statement ("CANCEL", 0);
12468  }
12469 #line 12391 "parser.c" /* yacc.c:1646 */
12470  break;
12471 
12472  case 903:
12473 #line 7002 "parser.y" /* yacc.c:1646 */
12474  {
12475  cb_emit_cancel ((yyvsp[0]));
12476  }
12477 #line 12399 "parser.c" /* yacc.c:1646 */
12478  break;
12479 
12480  case 904:
12481 #line 7006 "parser.y" /* yacc.c:1646 */
12482  {
12483  cb_emit_cancel ((yyvsp[0]));
12484  }
12485 #line 12407 "parser.c" /* yacc.c:1646 */
12486  break;
12487 
12488  case 905:
12489 #line 7016 "parser.y" /* yacc.c:1646 */
12490  {
12491  begin_statement ("CLOSE", 0);
12492  }
12493 #line 12415 "parser.c" /* yacc.c:1646 */
12494  break;
12495 
12496  case 907:
12497 #line 7024 "parser.y" /* yacc.c:1646 */
12498  {
12500  cb_emit_close ((yyvsp[-1]), (yyvsp[0]));
12501  }
12502 #line 12424 "parser.c" /* yacc.c:1646 */
12503  break;
12504 
12505  case 908:
12506 #line 7029 "parser.y" /* yacc.c:1646 */
12507  {
12509  cb_emit_close ((yyvsp[-1]), (yyvsp[0]));
12510  }
12511 #line 12433 "parser.c" /* yacc.c:1646 */
12512  break;
12513 
12514  case 909:
12515 #line 7036 "parser.y" /* yacc.c:1646 */
12516  { (yyval) = cb_int (COB_CLOSE_NORMAL); }
12517 #line 12439 "parser.c" /* yacc.c:1646 */
12518  break;
12519 
12520  case 910:
12521 #line 7037 "parser.y" /* yacc.c:1646 */
12522  { (yyval) = cb_int (COB_CLOSE_UNIT); }
12523 #line 12445 "parser.c" /* yacc.c:1646 */
12524  break;
12525 
12526  case 911:
12527 #line 7038 "parser.y" /* yacc.c:1646 */
12528  { (yyval) = cb_int (COB_CLOSE_UNIT_REMOVAL); }
12529 #line 12451 "parser.c" /* yacc.c:1646 */
12530  break;
12531 
12532  case 912:
12533 #line 7039 "parser.y" /* yacc.c:1646 */
12534  { (yyval) = cb_int (COB_CLOSE_NO_REWIND); }
12535 #line 12457 "parser.c" /* yacc.c:1646 */
12536  break;
12537 
12538  case 913:
12539 #line 7040 "parser.y" /* yacc.c:1646 */
12540  { (yyval) = cb_int (COB_CLOSE_LOCK); }
12541 #line 12463 "parser.c" /* yacc.c:1646 */
12542  break;
12543 
12544  case 914:
12545 #line 7048 "parser.y" /* yacc.c:1646 */
12546  {
12547  begin_statement ("COMPUTE", TERM_COMPUTE);
12548  }
12549 #line 12471 "parser.c" /* yacc.c:1646 */
12550  break;
12551 
12552  case 916:
12553 #line 7057 "parser.y" /* yacc.c:1646 */
12554  {
12555  cb_emit_arithmetic ((yyvsp[-3]), 0, (yyvsp[-1]));
12556  }
12557 #line 12479 "parser.c" /* yacc.c:1646 */
12558  break;
12559 
12560  case 917:
12561 #line 7064 "parser.y" /* yacc.c:1646 */
12562  {
12563  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), COMPUTE);
12564  }
12565 #line 12487 "parser.c" /* yacc.c:1646 */
12566  break;
12567 
12568  case 918:
12569 #line 7068 "parser.y" /* yacc.c:1646 */
12570  {
12571  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), COMPUTE);
12572  }
12573 #line 12495 "parser.c" /* yacc.c:1646 */
12574  break;
12575 
12576  case 919:
12577 #line 7078 "parser.y" /* yacc.c:1646 */
12578  {
12579  begin_statement ("COMMIT", 0);
12580  cb_emit_commit ();
12581  }
12582 #line 12504 "parser.c" /* yacc.c:1646 */
12583  break;
12584 
12585  case 920:
12586 #line 7089 "parser.y" /* yacc.c:1646 */
12587  {
12588  size_t save_unreached;
12589 
12590  /* Do not check unreached for CONTINUE */
12591  save_unreached = check_unreached;
12592  check_unreached = 0;
12593  begin_statement ("CONTINUE", 0);
12594  cb_emit_continue ();
12595  check_unreached = (unsigned int) save_unreached;
12596  }
12597 #line 12519 "parser.c" /* yacc.c:1646 */
12598  break;
12599 
12600  case 921:
12601 #line 7106 "parser.y" /* yacc.c:1646 */
12602  {
12603  begin_statement ("DELETE", TERM_DELETE);
12604  }
12605 #line 12527 "parser.c" /* yacc.c:1646 */
12606  break;
12607 
12608  case 923:
12609 #line 7115 "parser.y" /* yacc.c:1646 */
12610  {
12611  cb_emit_delete ((yyvsp[-2]));
12612  }
12613 #line 12535 "parser.c" /* yacc.c:1646 */
12614  break;
12615 
12616  case 925:
12617 #line 7123 "parser.y" /* yacc.c:1646 */
12618  {
12620  cb_emit_delete_file ((yyvsp[0]));
12621  }
12622 #line 12544 "parser.c" /* yacc.c:1646 */
12623  break;
12624 
12625  case 926:
12626 #line 7128 "parser.y" /* yacc.c:1646 */
12627  {
12629  cb_emit_delete_file ((yyvsp[0]));
12630  }
12631 #line 12553 "parser.c" /* yacc.c:1646 */
12632  break;
12633 
12634  case 927:
12635 #line 7136 "parser.y" /* yacc.c:1646 */
12636  {
12637  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), DELETE);
12638  }
12639 #line 12561 "parser.c" /* yacc.c:1646 */
12640  break;
12641 
12642  case 928:
12643 #line 7140 "parser.y" /* yacc.c:1646 */
12644  {
12645  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), DELETE);
12646  }
12647 #line 12569 "parser.c" /* yacc.c:1646 */
12648  break;
12649 
12650  case 929:
12651 #line 7150 "parser.y" /* yacc.c:1646 */
12652  {
12653  begin_statement ("DISPLAY", TERM_DISPLAY);
12655  }
12656 #line 12578 "parser.c" /* yacc.c:1646 */
12657  break;
12658 
12659  case 931:
12660 #line 7160 "parser.y" /* yacc.c:1646 */
12661  {
12662  cb_emit_env_name ((yyvsp[-2]));
12663  }
12664 #line 12586 "parser.c" /* yacc.c:1646 */
12665  break;
12666 
12667  case 932:
12668 #line 7164 "parser.y" /* yacc.c:1646 */
12669  {
12670  cb_emit_env_value ((yyvsp[-2]));
12671  }
12672 #line 12594 "parser.c" /* yacc.c:1646 */
12673  break;
12674 
12675  case 933:
12676 #line 7168 "parser.y" /* yacc.c:1646 */
12677  {
12678  cb_emit_arg_number ((yyvsp[-2]));
12679  }
12680 #line 12602 "parser.c" /* yacc.c:1646 */
12681  break;
12682 
12683  case 934:
12684 #line 7172 "parser.y" /* yacc.c:1646 */
12685  {
12686  cb_emit_command_line ((yyvsp[-2]));
12687  }
12688 #line 12610 "parser.c" /* yacc.c:1646 */
12689  break;
12690 
12691  case 936:
12692 #line 7181 "parser.y" /* yacc.c:1646 */
12693  {
12694  emit_default_displays_for_x_list ((struct cb_list *) (yyvsp[0]));
12695  }
12696 #line 12618 "parser.c" /* yacc.c:1646 */
12697  break;
12698 
12699  case 937:
12700 #line 7185 "parser.y" /* yacc.c:1646 */
12701  {
12702  emit_default_displays_for_x_list ((struct cb_list *) (yyvsp[0]));
12703  }
12704 #line 12626 "parser.c" /* yacc.c:1646 */
12705  break;
12706 
12707  case 940:
12708 #line 7197 "parser.y" /* yacc.c:1646 */
12709  {
12710  check_duplicate = 0;
12713  upon_value = NULL;
12714  line_column = NULL;
12715  }
12716 #line 12638 "parser.c" /* yacc.c:1646 */
12717  break;
12718 
12719  case 941:
12720 #line 7205 "parser.y" /* yacc.c:1646 */
12721  {
12722  /* What if I want to allow implied LINE/COL? */
12723  int is_screen_field =
12724  contains_only_screen_field ((struct cb_list *) (yyvsp[-2]));
12725  int screen_display =
12726  is_screen_field
12727  || upon_value == cb_null
12728  || line_column
12730 
12731  if ((yyvsp[-2]) == cb_null) {
12733 
12736  } else {
12737  if (cb_list_length ((yyvsp[-2])) > 1 && screen_display) {
12738  cb_error (_("Ambiguous DISPLAY; put clauseless items at end or in separate DISPLAY"));
12739  }
12740 
12741  if (screen_display) {
12742  if (upon_value != NULL) {
12743  if (is_screen_field) {
12744  cb_error (_("Screens cannot be displayed on a device"));
12745  } else { /* line_column || current_statement->attr_ptr */
12746  cb_error (_("Cannot use screen clauses with device DISPLAY"));
12747  }
12748  } else {
12749  upon_value = cb_null;
12750  }
12751 
12753 
12754  if (!line_column && !is_screen_field) {
12755  cb_error (_("Screen DISPLAY does not have a LINE or COL clause"));
12756  }
12757 
12758  cb_emit_display ((yyvsp[-2]), cb_null, cb_int1, line_column,
12760  } else { /* device display */
12761  if (upon_value == NULL) {
12763  }
12765  }
12766  }
12767 
12768  /*
12769  This should be placed after the display_list in the second case
12770  of display_list, but that causes a shift/reduce error.
12771  */
12773  }
12774 #line 12696 "parser.c" /* yacc.c:1646 */
12775  break;
12776 
12777  case 942:
12778 #line 7262 "parser.y" /* yacc.c:1646 */
12779  {
12780  (yyval) = (yyvsp[0]);
12781  }
12782 #line 12704 "parser.c" /* yacc.c:1646 */
12783  break;
12784 
12785  case 943:
12786 #line 7266 "parser.y" /* yacc.c:1646 */
12787  {
12788  PENDING ("DISPLAY OMITTED");
12789  (yyval) = cb_null;
12790  }
12791 #line 12713 "parser.c" /* yacc.c:1646 */
12792  break;
12793 
12794  case 946:
12795 #line 7279 "parser.y" /* yacc.c:1646 */
12796  {
12798  }
12799 #line 12721 "parser.c" /* yacc.c:1646 */
12800  break;
12801 
12802  case 947:
12803 #line 7283 "parser.y" /* yacc.c:1646 */
12804  {
12805  check_repeated ("NO ADVANCING", SYN_CLAUSE_2, &check_duplicate);
12807  }
12808 #line 12730 "parser.c" /* yacc.c:1646 */
12809  break;
12810 
12811  case 948:
12812 #line 7288 "parser.y" /* yacc.c:1646 */
12813  {
12814  check_repeated ("MODE IS BLOCK", SYN_CLAUSE_3, &check_duplicate);
12815  }
12816 #line 12738 "parser.c" /* yacc.c:1646 */
12817  break;
12818 
12819  case 951:
12820 #line 7297 "parser.y" /* yacc.c:1646 */
12821  {
12822  upon_value = cb_build_display_mnemonic ((yyvsp[0]));
12823  }
12824 #line 12746 "parser.c" /* yacc.c:1646 */
12825  break;
12826 
12827  case 952:
12828 #line 7301 "parser.y" /* yacc.c:1646 */
12829  {
12830  upon_value = cb_build_display_name ((yyvsp[0]));
12831  }
12832 #line 12754 "parser.c" /* yacc.c:1646 */
12833  break;
12834 
12835  case 953:
12836 #line 7305 "parser.y" /* yacc.c:1646 */
12837  {
12838  upon_value = cb_int0;
12839  }
12840 #line 12762 "parser.c" /* yacc.c:1646 */
12841  break;
12842 
12843  case 957:
12844 #line 7318 "parser.y" /* yacc.c:1646 */
12845  {
12847  }
12848 #line 12770 "parser.c" /* yacc.c:1646 */
12849  break;
12850 
12851  case 958:
12852 #line 7322 "parser.y" /* yacc.c:1646 */
12853  {
12855  "BLANK LINE", COB_SCREEN_BLANK_LINE,
12856  "BLANK SCREEN", COB_SCREEN_BLANK_SCREEN);
12857  }
12858 #line 12780 "parser.c" /* yacc.c:1646 */
12859  break;
12860 
12861  case 959:
12862 #line 7328 "parser.y" /* yacc.c:1646 */
12863  {
12865  "BLANK SCREEN", COB_SCREEN_BLANK_SCREEN,
12866  "BLANK LINE", COB_SCREEN_BLANK_LINE);
12867  }
12868 #line 12790 "parser.c" /* yacc.c:1646 */
12869  break;
12870 
12871  case 960:
12872 #line 7334 "parser.y" /* yacc.c:1646 */
12873  {
12875  }
12876 #line 12798 "parser.c" /* yacc.c:1646 */
12877  break;
12878 
12879  case 961:
12880 #line 7338 "parser.y" /* yacc.c:1646 */
12881  {
12882  cb_warning (_("Ignoring CONVERSION"));
12883  }
12884 #line 12806 "parser.c" /* yacc.c:1646 */
12885  break;
12886 
12887  case 962:
12888 #line 7342 "parser.y" /* yacc.c:1646 */
12889  {
12891  "ERASE EOL", COB_SCREEN_ERASE_EOL,
12892  "ERASE EOS", COB_SCREEN_ERASE_EOS);
12893  }
12894 #line 12816 "parser.c" /* yacc.c:1646 */
12895  break;
12896 
12897  case 963:
12898 #line 7348 "parser.y" /* yacc.c:1646 */
12899  {
12901  "ERASE EOS", COB_SCREEN_ERASE_EOS,
12902  "ERASE EOL", COB_SCREEN_ERASE_EOL);
12903  }
12904 #line 12826 "parser.c" /* yacc.c:1646 */
12905  break;
12906 
12907  case 964:
12908 #line 7354 "parser.y" /* yacc.c:1646 */
12909  {
12911  "HIGHLIGHT", COB_SCREEN_HIGHLIGHT,
12912  "LOWLIGHT", COB_SCREEN_LOWLIGHT);
12913  }
12914 #line 12836 "parser.c" /* yacc.c:1646 */
12915  break;
12916 
12917  case 965:
12918 #line 7360 "parser.y" /* yacc.c:1646 */
12919  {
12921  "LOWLIGHT", COB_SCREEN_LOWLIGHT,
12922  "HIGHLIGHT", COB_SCREEN_HIGHLIGHT);
12923  }
12924 #line 12846 "parser.c" /* yacc.c:1646 */
12925  break;
12926 
12927  case 966:
12928 #line 7366 "parser.y" /* yacc.c:1646 */
12929  {
12931  }
12932 #line 12854 "parser.c" /* yacc.c:1646 */
12933  break;
12934 
12935  case 967:
12936 #line 7370 "parser.y" /* yacc.c:1646 */
12937  {
12939  }
12940 #line 12862 "parser.c" /* yacc.c:1646 */
12941  break;
12942 
12943  case 968:
12944 #line 7374 "parser.y" /* yacc.c:1646 */
12945  {
12946  check_attribs (NULL, NULL, NULL, NULL, NULL, (yyvsp[0]), 0);
12947  }
12948 #line 12870 "parser.c" /* yacc.c:1646 */
12949  break;
12950 
12951  case 969:
12952 #line 7378 "parser.y" /* yacc.c:1646 */
12953  {
12955  }
12956 #line 12878 "parser.c" /* yacc.c:1646 */
12957  break;
12958 
12959  case 970:
12960 #line 7382 "parser.y" /* yacc.c:1646 */
12961  {
12962  check_attribs ((yyvsp[0]), NULL, NULL, NULL, NULL, NULL, 0);
12963  }
12964 #line 12886 "parser.c" /* yacc.c:1646 */
12965  break;
12966 
12967  case 971:
12968 #line 7386 "parser.y" /* yacc.c:1646 */
12969  {
12970  check_attribs (NULL, (yyvsp[0]), NULL, NULL, NULL, NULL, 0);
12971  }
12972 #line 12894 "parser.c" /* yacc.c:1646 */
12973  break;
12974 
12975  case 972:
12976 #line 7390 "parser.y" /* yacc.c:1646 */
12977  {
12978  check_attribs (NULL, NULL, (yyvsp[0]), NULL, NULL, NULL, 0);
12979  }
12980 #line 12902 "parser.c" /* yacc.c:1646 */
12981  break;
12982 
12983  case 973:
12984 #line 7394 "parser.y" /* yacc.c:1646 */
12985  {
12987  }
12988 #line 12910 "parser.c" /* yacc.c:1646 */
12989  break;
12990 
12991  case 974:
12992 #line 7401 "parser.y" /* yacc.c:1646 */
12993  {
12994  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), DISPLAY);
12995  }
12996 #line 12918 "parser.c" /* yacc.c:1646 */
12997  break;
12998 
12999  case 975:
13000 #line 7405 "parser.y" /* yacc.c:1646 */
13001  {
13002  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), DISPLAY);
13003  }
13004 #line 12926 "parser.c" /* yacc.c:1646 */
13005  break;
13006 
13007  case 976:
13008 #line 7415 "parser.y" /* yacc.c:1646 */
13009  {
13010  begin_statement ("DIVIDE", TERM_DIVIDE);
13011  }
13012 #line 12934 "parser.c" /* yacc.c:1646 */
13013  break;
13014 
13015  case 978:
13016 #line 7424 "parser.y" /* yacc.c:1646 */
13017  {
13018  cb_emit_arithmetic ((yyvsp[-1]), '/', (yyvsp[-3]));
13019  }
13020 #line 12942 "parser.c" /* yacc.c:1646 */
13021  break;
13022 
13023  case 979:
13024 #line 7428 "parser.y" /* yacc.c:1646 */
13025  {
13026  cb_emit_arithmetic ((yyvsp[-1]), 0, cb_build_binary_op ((yyvsp[-3]), '/', (yyvsp[-5])));
13027  }
13028 #line 12950 "parser.c" /* yacc.c:1646 */
13029  break;
13030 
13031  case 980:
13032 #line 7432 "parser.y" /* yacc.c:1646 */
13033  {
13034  cb_emit_arithmetic ((yyvsp[-1]), 0, cb_build_binary_op ((yyvsp[-5]), '/', (yyvsp[-3])));
13035  }
13036 #line 12958 "parser.c" /* yacc.c:1646 */
13037  break;
13038 
13039  case 981:
13040 #line 7436 "parser.y" /* yacc.c:1646 */
13041  {
13042  cb_emit_divide ((yyvsp[-5]), (yyvsp[-7]), (yyvsp[-3]), (yyvsp[-1]));
13043  }
13044 #line 12966 "parser.c" /* yacc.c:1646 */
13045  break;
13046 
13047  case 982:
13048 #line 7440 "parser.y" /* yacc.c:1646 */
13049  {
13050  cb_emit_divide ((yyvsp[-7]), (yyvsp[-5]), (yyvsp[-3]), (yyvsp[-1]));
13051  }
13052 #line 12974 "parser.c" /* yacc.c:1646 */
13053  break;
13054 
13055  case 983:
13056 #line 7447 "parser.y" /* yacc.c:1646 */
13057  {
13058  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), DIVIDE);
13059  }
13060 #line 12982 "parser.c" /* yacc.c:1646 */
13061  break;
13062 
13063  case 984:
13064 #line 7451 "parser.y" /* yacc.c:1646 */
13065  {
13066  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), DIVIDE);
13067  }
13068 #line 12990 "parser.c" /* yacc.c:1646 */
13069  break;
13070 
13071  case 985:
13072 #line 7461 "parser.y" /* yacc.c:1646 */
13073  {
13074  check_unreached = 0;
13075  begin_statement ("ENTRY", 0);
13076  }
13077 #line 12999 "parser.c" /* yacc.c:1646 */
13078  break;
13079 
13080  case 987:
13081 #line 7470 "parser.y" /* yacc.c:1646 */
13082  {
13084  cb_error (_("%s is invalid in nested program"), "ENTRY");
13085  } else if (current_program->prog_type == CB_FUNCTION_TYPE) {
13086  cb_error (_("%s is invalid in a user FUNCTION"), "ENTRY");
13087  } else if (cb_verify (cb_entry_statement, "ENTRY")) {
13088  if (!cobc_check_valid_name ((char *)(CB_LITERAL ((yyvsp[-1]))->data), 1U)) {
13089  emit_entry ((char *)(CB_LITERAL ((yyvsp[-1]))->data), 1, (yyvsp[0]));
13090  }
13091  }
13092  }
13093 #line 13015 "parser.c" /* yacc.c:1646 */
13094  break;
13095 
13096  case 988:
13097 #line 7488 "parser.y" /* yacc.c:1646 */
13098  {
13099  begin_statement ("EVALUATE", TERM_EVALUATE);
13100  eval_level++;
13101  if (eval_level >= EVAL_DEPTH) {
13102  cb_error (_("Maximum evaluate depth exceeded (%d)"),
13103  EVAL_DEPTH);
13104  eval_level = 0;
13105  eval_inc = 0;
13106  eval_inc2 = 0;
13107  YYERROR;
13108  } else {
13109  for (eval_inc = 0; eval_inc < EVAL_DEPTH; ++eval_inc) {
13111  }
13112  eval_inc = 0;
13113  eval_inc2 = 0;
13114  }
13115  }
13116 #line 13038 "parser.c" /* yacc.c:1646 */
13117  break;
13118 
13119  case 990:
13120 #line 7512 "parser.y" /* yacc.c:1646 */
13121  {
13122  cb_emit_evaluate ((yyvsp[-1]), (yyvsp[0]));
13123  eval_level--;
13124  }
13125 #line 13047 "parser.c" /* yacc.c:1646 */
13126  break;
13127 
13128  case 991:
13129 #line 7519 "parser.y" /* yacc.c:1646 */
13130  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
13131 #line 13053 "parser.c" /* yacc.c:1646 */
13132  break;
13133 
13134  case 992:
13135 #line 7521 "parser.y" /* yacc.c:1646 */
13136  { (yyval) = cb_list_add ((yyvsp[-2]), (yyvsp[0])); }
13137 #line 13059 "parser.c" /* yacc.c:1646 */
13138  break;
13139 
13140  case 993:
13141 #line 7526 "parser.y" /* yacc.c:1646 */
13142  {
13143  (yyval) = (yyvsp[0]);
13144  eval_check[eval_level][eval_inc++] = (yyvsp[0]);
13145  if (eval_inc >= EVAL_DEPTH) {
13146  cb_error (_("Maximum evaluate depth exceeded (%d)"),
13147  EVAL_DEPTH);
13148  eval_inc = 0;
13149  YYERROR;
13150  }
13151  }
13152 #line 13074 "parser.c" /* yacc.c:1646 */
13153  break;
13154 
13155  case 994:
13156 #line 7537 "parser.y" /* yacc.c:1646 */
13157  {
13158  (yyval) = cb_true;
13160  if (eval_inc >= EVAL_DEPTH) {
13161  cb_error (_("Maximum evaluate depth exceeded (%d)"),
13162  EVAL_DEPTH);
13163  eval_inc = 0;
13164  YYERROR;
13165  }
13166  }
13167 #line 13089 "parser.c" /* yacc.c:1646 */
13168  break;
13169 
13170  case 995:
13171 #line 7548 "parser.y" /* yacc.c:1646 */
13172  {
13173  (yyval) = cb_false;
13175  if (eval_inc >= EVAL_DEPTH) {
13176  cb_error (_("Maximum evaluate depth exceeded (%d)"),
13177  EVAL_DEPTH);
13178  eval_inc = 0;
13179  YYERROR;
13180  }
13181  }
13182 #line 13104 "parser.c" /* yacc.c:1646 */
13183  break;
13184 
13185  case 996:
13186 #line 7562 "parser.y" /* yacc.c:1646 */
13187  {
13188  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
13189  }
13190 #line 13112 "parser.c" /* yacc.c:1646 */
13191  break;
13192 
13193  case 997:
13194 #line 7566 "parser.y" /* yacc.c:1646 */
13195  {
13196  (yyval) = (yyvsp[0]);
13197  }
13198 #line 13120 "parser.c" /* yacc.c:1646 */
13199  break;
13200 
13201  case 998:
13202 #line 7572 "parser.y" /* yacc.c:1646 */
13203  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
13204 #line 13126 "parser.c" /* yacc.c:1646 */
13205  break;
13206 
13207  case 999:
13208 #line 7574 "parser.y" /* yacc.c:1646 */
13209  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
13210 #line 13132 "parser.c" /* yacc.c:1646 */
13211  break;
13212 
13213  case 1000:
13214 #line 7580 "parser.y" /* yacc.c:1646 */
13215  {
13216  (yyval) = CB_BUILD_CHAIN ((yyvsp[0]), (yyvsp[-1]));
13217  eval_inc2 = 0;
13218  }
13219 #line 13141 "parser.c" /* yacc.c:1646 */
13220  break;
13221 
13222  case 1001:
13223 #line 7589 "parser.y" /* yacc.c:1646 */
13224  {
13225  (yyval) = CB_BUILD_CHAIN ((yyvsp[0]), NULL);
13226  eval_inc2 = 0;
13227  }
13228 #line 13150 "parser.c" /* yacc.c:1646 */
13229  break;
13230 
13231  case 1002:
13232 #line 7597 "parser.y" /* yacc.c:1646 */
13233  {
13234  (yyval) = CB_LIST_INIT ((yyvsp[0]));
13235  eval_inc2 = 0;
13236  }
13237 #line 13159 "parser.c" /* yacc.c:1646 */
13238  break;
13239 
13240  case 1003:
13241 #line 7603 "parser.y" /* yacc.c:1646 */
13242  {
13243  (yyval) = cb_list_add ((yyvsp[-2]), (yyvsp[0]));
13244  eval_inc2 = 0;
13245  }
13246 #line 13168 "parser.c" /* yacc.c:1646 */
13247  break;
13248 
13249  case 1004:
13250 #line 7610 "parser.y" /* yacc.c:1646 */
13251  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
13252 #line 13174 "parser.c" /* yacc.c:1646 */
13253  break;
13254 
13255  case 1005:
13256 #line 7612 "parser.y" /* yacc.c:1646 */
13257  { (yyval) = cb_list_add ((yyvsp[-2]), (yyvsp[0])); }
13258 #line 13180 "parser.c" /* yacc.c:1646 */
13259  break;
13260 
13261  case 1006:
13262 #line 7617 "parser.y" /* yacc.c:1646 */
13263  {
13264  cb_tree not0;
13265  cb_tree e1;
13266  cb_tree e2;
13267  cb_tree x;
13268  cb_tree parm1;
13269 
13270  not0 = cb_int0;
13271  e2 = (yyvsp[0]);
13272  x = NULL;
13273  parm1 = (yyvsp[-1]);
13275  /* Check if the first token is NOT */
13276  /* It may belong to the EVALUATE, however see */
13277  /* below when it may be part of a partial expression */
13278  if (CB_PURPOSE_INT (parm1) == '!') {
13279  /* Pop stack if subject not TRUE / FALSE */
13280  not0 = cb_int1;
13281  x = parm1;
13282  parm1 = CB_CHAIN (parm1);
13283  }
13284  /* Partial expression handling */
13285  switch (CB_PURPOSE_INT (parm1)) {
13286  /* Relational conditions */
13287  case '<':
13288  case '>':
13289  case '[':
13290  case ']':
13291  case '~':
13292  case '=':
13293  /* Class conditions */
13294  case '9':
13295  case 'A':
13296  case 'L':
13297  case 'U':
13298  case 'P':
13299  case 'N':
13300  case 'O':
13301  case 'C':
13302  if (e2) {
13303  cb_error_x (e2, _("Invalid THROUGH usage"));
13304  e2 = NULL;
13305  }
13306  not0 = CB_PURPOSE (parm1);
13307  if (x) {
13308  /* Rebind the NOT to the partial expression */
13309  parm1 = cb_build_list (cb_int ('!'), NULL, parm1);
13310  }
13311  /* Insert subject at head of list */
13312  parm1 = cb_build_list (cb_int ('x'),
13313  eval_check[eval_level][eval_inc2], parm1);
13314  break;
13315  }
13316  }
13317 
13318  /* Build expr now */
13319  e1 = cb_build_expr (parm1);
13320 
13321  eval_inc2++;
13322  (yyval) = CB_BUILD_PAIR (not0, CB_BUILD_PAIR (e1, e2));
13323  }
13324 #line 13246 "parser.c" /* yacc.c:1646 */
13325  break;
13326 
13327  case 1007:
13328 #line 7678 "parser.y" /* yacc.c:1646 */
13329  { (yyval) = cb_any; eval_inc2++; }
13330 #line 13252 "parser.c" /* yacc.c:1646 */
13331  break;
13332 
13333  case 1008:
13334 #line 7679 "parser.y" /* yacc.c:1646 */
13335  { (yyval) = cb_true; eval_inc2++; }
13336 #line 13258 "parser.c" /* yacc.c:1646 */
13337  break;
13338 
13339  case 1009:
13340 #line 7680 "parser.y" /* yacc.c:1646 */
13341  { (yyval) = cb_false; eval_inc2++; }
13342 #line 13264 "parser.c" /* yacc.c:1646 */
13343  break;
13344 
13345  case 1010:
13346 #line 7684 "parser.y" /* yacc.c:1646 */
13347  { (yyval) = NULL; }
13348 #line 13270 "parser.c" /* yacc.c:1646 */
13349  break;
13350 
13351  case 1011:
13352 #line 7685 "parser.y" /* yacc.c:1646 */
13353  { (yyval) = (yyvsp[0]); }
13354 #line 13276 "parser.c" /* yacc.c:1646 */
13355  break;
13356 
13357  case 1012:
13358 #line 7690 "parser.y" /* yacc.c:1646 */
13359  {
13360  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), EVALUATE);
13361  }
13362 #line 13284 "parser.c" /* yacc.c:1646 */
13363  break;
13364 
13365  case 1013:
13366 #line 7694 "parser.y" /* yacc.c:1646 */
13367  {
13368  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), EVALUATE);
13369  }
13370 #line 13292 "parser.c" /* yacc.c:1646 */
13371  break;
13372 
13373  case 1014:
13374 #line 7704 "parser.y" /* yacc.c:1646 */
13375  {
13376  begin_statement ("EXIT", 0);
13378  }
13379 #line 13301 "parser.c" /* yacc.c:1646 */
13380  break;
13381 
13382  case 1015:
13383 #line 7709 "parser.y" /* yacc.c:1646 */
13384  {
13385  cobc_cs_check = 0;
13386  }
13387 #line 13309 "parser.c" /* yacc.c:1646 */
13388  break;
13389 
13390  case 1017:
13391 #line 7717 "parser.y" /* yacc.c:1646 */
13392  {
13395  _("EXIT PROGRAM is not allowed within a USE GLOBAL procedure"));
13396  }
13399  _("EXIT PROGRAM only allowed within a PROGRAM type"));
13400  }
13401  if (current_program->flag_main) {
13402  check_unreached = 0;
13403  } else {
13404  check_unreached = 1;
13405  }
13406  if ((yyvsp[0]) != NULL) {
13408  }
13409  current_statement->name = (const char *)"EXIT PROGRAM";
13410  cb_emit_exit (0);
13411  }
13412 #line 13334 "parser.c" /* yacc.c:1646 */
13413  break;
13414 
13415  case 1018:
13416 #line 7738 "parser.y" /* yacc.c:1646 */
13417  {
13420  _("EXIT FUNCTION is not allowed within a USE GLOBAL procedure"));
13421  }
13424  _("EXIT FUNCTION only allowed within a FUNCTION type"));
13425  }
13426  check_unreached = 1;
13427  current_statement->name = (const char *)"EXIT FUNCTION";
13428  cb_emit_exit (0);
13429  }
13430 #line 13352 "parser.c" /* yacc.c:1646 */
13431  break;
13432 
13433  case 1019:
13434 #line 7752 "parser.y" /* yacc.c:1646 */
13435  {
13436  struct cb_perform *p;
13437  cb_tree plabel;
13438  char name[64];
13439 
13440  if (!perform_stack) {
13442  _("EXIT PERFORM is only valid with inline PERFORM"));
13443  } else if (CB_VALUE (perform_stack) != cb_error_node) {
13445  if (!p->cycle_label) {
13446  sprintf (name, "EXIT PERFORM CYCLE %d", cb_id);
13447  p->cycle_label = cb_build_reference (name);
13448  plabel = cb_build_label (p->cycle_label, NULL);
13449  CB_LABEL (plabel)->flag_begin = 1;
13450  CB_LABEL (plabel)->flag_dummy_exit = 1;
13451  }
13452  current_statement->name = (const char *)"EXIT PERFORM CYCLE";
13454  }
13455  }
13456 #line 13378 "parser.c" /* yacc.c:1646 */
13457  break;
13458 
13459  case 1020:
13460 #line 7774 "parser.y" /* yacc.c:1646 */
13461  {
13462  struct cb_perform *p;
13463  cb_tree plabel;
13464  char name[64];
13465 
13466  if (!perform_stack) {
13468  _("EXIT PERFORM is only valid with inline PERFORM"));
13469  } else if (CB_VALUE (perform_stack) != cb_error_node) {
13471  if (!p->exit_label) {
13472  sprintf (name, "EXIT PERFORM %d", cb_id);
13473  p->exit_label = cb_build_reference (name);
13474  plabel = cb_build_label (p->exit_label, NULL);
13475  CB_LABEL (plabel)->flag_begin = 1;
13476  CB_LABEL (plabel)->flag_dummy_exit = 1;
13477  }
13478  current_statement->name = (const char *)"EXIT PERFORM";
13480  }
13481  }
13482 #line 13404 "parser.c" /* yacc.c:1646 */
13483  break;
13484 
13485  case 1021:
13486 #line 7796 "parser.y" /* yacc.c:1646 */
13487  {
13488  cb_tree plabel;
13489  char name[64];
13490 
13491  if (!current_section) {
13493  _("EXIT SECTION is only valid with an active SECTION"));
13494  } else {
13495  if (!current_section->exit_label) {
13496  sprintf (name, "EXIT SECTION %d", cb_id);
13499  CB_LABEL (plabel)->flag_begin = 1;
13500  CB_LABEL (plabel)->flag_dummy_exit = 1;
13501  }
13502  current_statement->name = (const char *)"EXIT SECTION";
13504  }
13505  }
13506 #line 13428 "parser.c" /* yacc.c:1646 */
13507  break;
13508 
13509  case 1022:
13510 #line 7816 "parser.y" /* yacc.c:1646 */
13511  {
13512  cb_tree plabel;
13513  char name[64];
13514 
13515  if (!current_paragraph) {
13517  _("EXIT PARAGRAPH is only valid with an active PARAGRAPH"));
13518  } else {
13519  if (!current_paragraph->exit_label) {
13520  sprintf (name, "EXIT PARAGRAPH %d", cb_id);
13523  CB_LABEL (plabel)->flag_begin = 1;
13524  CB_LABEL (plabel)->flag_dummy_exit = 1;
13525  }
13526  current_statement->name = (const char *)"EXIT PARAGRAPH";
13528  }
13529  }
13530 #line 13452 "parser.c" /* yacc.c:1646 */
13531  break;
13532 
13533  case 1023:
13534 #line 7838 "parser.y" /* yacc.c:1646 */
13535  { (yyval) = NULL; }
13536 #line 13458 "parser.c" /* yacc.c:1646 */
13537  break;
13538 
13539  case 1024:
13540 #line 7839 "parser.y" /* yacc.c:1646 */
13541  { (yyval) = (yyvsp[0]); }
13542 #line 13464 "parser.c" /* yacc.c:1646 */
13543  break;
13544 
13545  case 1025:
13546 #line 7847 "parser.y" /* yacc.c:1646 */
13547  {
13548  begin_statement ("FREE", 0);
13550  }
13551 #line 13473 "parser.c" /* yacc.c:1646 */
13552  break;
13553 
13554  case 1027:
13555 #line 7856 "parser.y" /* yacc.c:1646 */
13556  {
13557  cb_emit_free ((yyvsp[0]));
13558  }
13559 #line 13481 "parser.c" /* yacc.c:1646 */
13560  break;
13561 
13562  case 1028:
13563 #line 7866 "parser.y" /* yacc.c:1646 */
13564  {
13565  begin_statement ("GENERATE", 0);
13566  PENDING("GENERATE");
13567  }
13568 #line 13490 "parser.c" /* yacc.c:1646 */
13569  break;
13570 
13571  case 1031:
13572 #line 7882 "parser.y" /* yacc.c:1646 */
13573  {
13576  }
13577  begin_statement ("GO TO", 0);
13579  start_debug = 0;
13580  }
13581 #line 13503 "parser.c" /* yacc.c:1646 */
13582  break;
13583 
13584  case 1033:
13585 #line 7895 "parser.y" /* yacc.c:1646 */
13586  {
13587  cb_emit_goto ((yyvsp[-1]), (yyvsp[0]));
13589  }
13590 #line 13512 "parser.c" /* yacc.c:1646 */
13591  break;
13592 
13593  case 1034:
13594 #line 7903 "parser.y" /* yacc.c:1646 */
13595  {
13596  check_unreached = 1;
13597  (yyval) = NULL;
13598  }
13599 #line 13521 "parser.c" /* yacc.c:1646 */
13600  break;
13601 
13602  case 1035:
13603 #line 7908 "parser.y" /* yacc.c:1646 */
13604  {
13605  check_unreached = 0;
13606  (yyval) = (yyvsp[0]);
13607  }
13608 #line 13530 "parser.c" /* yacc.c:1646 */
13609  break;
13610 
13611  case 1036:
13612 #line 7919 "parser.y" /* yacc.c:1646 */
13613  {
13614  begin_statement ("GOBACK", 0);
13615  check_unreached = 1;
13616  if ((yyvsp[0]) != NULL) {
13618  }
13619  cb_emit_exit (1U);
13620  }
13621 #line 13543 "parser.c" /* yacc.c:1646 */
13622  break;
13623 
13624  case 1037:
13625 #line 7934 "parser.y" /* yacc.c:1646 */
13626  {
13627  begin_statement ("IF", TERM_IF);
13628  }
13629 #line 13551 "parser.c" /* yacc.c:1646 */
13630  break;
13631 
13632  case 1039:
13633 #line 7943 "parser.y" /* yacc.c:1646 */
13634  {
13635  cb_emit_if ((yyvsp[(-1) - (3)]), (yyvsp[-2]), (yyvsp[0]));
13636  }
13637 #line 13559 "parser.c" /* yacc.c:1646 */
13638  break;
13639 
13640  case 1040:
13641 #line 7947 "parser.y" /* yacc.c:1646 */
13642  {
13643  cb_emit_if ((yyvsp[(-1) - (2)]), NULL, (yyvsp[0]));
13644  }
13645 #line 13567 "parser.c" /* yacc.c:1646 */
13646  break;
13647 
13648  case 1041:
13649 #line 7951 "parser.y" /* yacc.c:1646 */
13650  {
13651  cb_emit_if ((yyvsp[(-1) - (1)]), (yyvsp[0]), NULL);
13652  }
13653 #line 13575 "parser.c" /* yacc.c:1646 */
13654  break;
13655 
13656  case 1042:
13657 #line 7958 "parser.y" /* yacc.c:1646 */
13658  {
13659  TERMINATOR_WARNING ((yyvsp[(-4) - (0)]), IF);
13660  }
13661 #line 13583 "parser.c" /* yacc.c:1646 */
13662  break;
13663 
13664  case 1043:
13665 #line 7962 "parser.y" /* yacc.c:1646 */
13666  {
13667  TERMINATOR_CLEAR ((yyvsp[(-4) - (1)]), IF);
13668  }
13669 #line 13591 "parser.c" /* yacc.c:1646 */
13670  break;
13671 
13672  case 1044:
13673 #line 7972 "parser.y" /* yacc.c:1646 */
13674  {
13675  begin_statement ("INITIALIZE", 0);
13676  }
13677 #line 13599 "parser.c" /* yacc.c:1646 */
13678  break;
13679 
13680  case 1046:
13681 #line 7981 "parser.y" /* yacc.c:1646 */
13682  {
13683  cb_emit_initialize ((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]));
13684  }
13685 #line 13607 "parser.c" /* yacc.c:1646 */
13686  break;
13687 
13688  case 1047:
13689 #line 7987 "parser.y" /* yacc.c:1646 */
13690  { (yyval) = NULL; }
13691 #line 13613 "parser.c" /* yacc.c:1646 */
13692  break;
13693 
13694  case 1048:
13695 #line 7988 "parser.y" /* yacc.c:1646 */
13696  { (yyval) = cb_true; }
13697 #line 13619 "parser.c" /* yacc.c:1646 */
13698  break;
13699 
13700  case 1049:
13701 #line 7992 "parser.y" /* yacc.c:1646 */
13702  { (yyval) = NULL; }
13703 #line 13625 "parser.c" /* yacc.c:1646 */
13704  break;
13705 
13706  case 1050:
13707 #line 7993 "parser.y" /* yacc.c:1646 */
13708  { (yyval) = cb_true; }
13709 #line 13631 "parser.c" /* yacc.c:1646 */
13710  break;
13711 
13712  case 1051:
13713 #line 7994 "parser.y" /* yacc.c:1646 */
13714  { (yyval) = (yyvsp[-2]); }
13715 #line 13637 "parser.c" /* yacc.c:1646 */
13716  break;
13717 
13718  case 1052:
13719 #line 7999 "parser.y" /* yacc.c:1646 */
13720  {
13721  (yyval) = NULL;
13722  }
13723 #line 13645 "parser.c" /* yacc.c:1646 */
13724  break;
13725 
13726  case 1053:
13727 #line 8003 "parser.y" /* yacc.c:1646 */
13728  {
13729  (yyval) = (yyvsp[0]);
13730  }
13731 #line 13653 "parser.c" /* yacc.c:1646 */
13732  break;
13733 
13734  case 1054:
13735 #line 8010 "parser.y" /* yacc.c:1646 */
13736  {
13737  (yyval) = (yyvsp[0]);
13738  }
13739 #line 13661 "parser.c" /* yacc.c:1646 */
13740  break;
13741 
13742  case 1055:
13743 #line 8015 "parser.y" /* yacc.c:1646 */
13744  {
13745  (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0]));
13746  }
13747 #line 13669 "parser.c" /* yacc.c:1646 */
13748  break;
13749 
13750  case 1056:
13751 #line 8022 "parser.y" /* yacc.c:1646 */
13752  {
13753  (yyval) = CB_BUILD_PAIR ((yyvsp[-3]), (yyvsp[0]));
13754  }
13755 #line 13677 "parser.c" /* yacc.c:1646 */
13756  break;
13757 
13758  case 1057:
13759 #line 8028 "parser.y" /* yacc.c:1646 */
13760  { (yyval) = cb_int (CB_CATEGORY_ALPHABETIC); }
13761 #line 13683 "parser.c" /* yacc.c:1646 */
13762  break;
13763 
13764  case 1058:
13765 #line 8029 "parser.y" /* yacc.c:1646 */
13766  { (yyval) = cb_int (CB_CATEGORY_ALPHANUMERIC); }
13767 #line 13689 "parser.c" /* yacc.c:1646 */
13768  break;
13769 
13770  case 1059:
13771 #line 8030 "parser.y" /* yacc.c:1646 */
13772  { (yyval) = cb_int (CB_CATEGORY_NUMERIC); }
13773 #line 13695 "parser.c" /* yacc.c:1646 */
13774  break;
13775 
13776  case 1060:
13777 #line 8031 "parser.y" /* yacc.c:1646 */
13778  { (yyval) = cb_int (CB_CATEGORY_ALPHANUMERIC_EDITED); }
13779 #line 13701 "parser.c" /* yacc.c:1646 */
13780  break;
13781 
13782  case 1061:
13783 #line 8032 "parser.y" /* yacc.c:1646 */
13784  { (yyval) = cb_int (CB_CATEGORY_NUMERIC_EDITED); }
13785 #line 13707 "parser.c" /* yacc.c:1646 */
13786  break;
13787 
13788  case 1062:
13789 #line 8033 "parser.y" /* yacc.c:1646 */
13790  { (yyval) = cb_int (CB_CATEGORY_NATIONAL); }
13791 #line 13713 "parser.c" /* yacc.c:1646 */
13792  break;
13793 
13794  case 1063:
13795 #line 8034 "parser.y" /* yacc.c:1646 */
13796  { (yyval) = cb_int (CB_CATEGORY_NATIONAL_EDITED); }
13797 #line 13719 "parser.c" /* yacc.c:1646 */
13798  break;
13799 
13800  case 1064:
13801 #line 8039 "parser.y" /* yacc.c:1646 */
13802  {
13803  (yyval) = NULL;
13804  }
13805 #line 13727 "parser.c" /* yacc.c:1646 */
13806  break;
13807 
13808  case 1065:
13809 #line 8043 "parser.y" /* yacc.c:1646 */
13810  {
13811  (yyval) = cb_true;
13812  }
13813 #line 13735 "parser.c" /* yacc.c:1646 */
13814  break;
13815 
13816  case 1066:
13817 #line 8052 "parser.y" /* yacc.c:1646 */
13818  {
13819  begin_statement ("INITIATE", 0);
13820  PENDING("INITIATE");
13821  }
13822 #line 13744 "parser.c" /* yacc.c:1646 */
13823  break;
13824 
13825  case 1068:
13826 #line 8061 "parser.y" /* yacc.c:1646 */
13827  {
13829  if ((yyvsp[0]) != cb_error_node) {
13830  }
13831  }
13832 #line 13754 "parser.c" /* yacc.c:1646 */
13833  break;
13834 
13835  case 1069:
13836 #line 8067 "parser.y" /* yacc.c:1646 */
13837  {
13839  if ((yyvsp[0]) != cb_error_node) {
13840  }
13841  }
13842 #line 13764 "parser.c" /* yacc.c:1646 */
13843  break;
13844 
13845  case 1070:
13846 #line 8078 "parser.y" /* yacc.c:1646 */
13847  {
13848  begin_statement ("INSPECT", 0);
13849  inspect_keyword = 0;
13850  }
13851 #line 13773 "parser.c" /* yacc.c:1646 */
13852  break;
13853 
13854  case 1073:
13855 #line 8091 "parser.y" /* yacc.c:1646 */
13856  {
13857  (yyval) = (yyvsp[0]);
13858  }
13859 #line 13781 "parser.c" /* yacc.c:1646 */
13860  break;
13861 
13862  case 1074:
13863 #line 8095 "parser.y" /* yacc.c:1646 */
13864  {
13865  (yyval) = (yyvsp[0]);
13866  }
13867 #line 13789 "parser.c" /* yacc.c:1646 */
13868  break;
13869 
13870  case 1075:
13871 #line 8099 "parser.y" /* yacc.c:1646 */
13872  {
13873  (yyval) = (yyvsp[0]);
13874  }
13875 #line 13797 "parser.c" /* yacc.c:1646 */
13876  break;
13877 
13878  case 1080:
13879 #line 8115 "parser.y" /* yacc.c:1646 */
13880  {
13881  cb_init_tallying ();
13882  }
13883 #line 13805 "parser.c" /* yacc.c:1646 */
13884  break;
13885 
13886  case 1081:
13887 #line 8119 "parser.y" /* yacc.c:1646 */
13888  {
13889  cb_emit_inspect ((yyvsp[-3]), (yyvsp[0]), cb_int0, 0);
13890  (yyval) = (yyvsp[-3]);
13891  }
13892 #line 13814 "parser.c" /* yacc.c:1646 */
13893  break;
13894 
13895  case 1082:
13896 #line 8129 "parser.y" /* yacc.c:1646 */
13897  {
13898  cb_emit_inspect ((yyvsp[-2]), (yyvsp[0]), cb_int1, 1);
13899  inspect_keyword = 0;
13900  }
13901 #line 13823 "parser.c" /* yacc.c:1646 */
13902  break;
13903 
13904  case 1083:
13905 #line 8139 "parser.y" /* yacc.c:1646 */
13906  {
13907  cb_tree x;
13908  x = cb_build_converting ((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
13909  cb_emit_inspect ((yyvsp[-5]), x, cb_int0, 2);
13910  }
13911 #line 13833 "parser.c" /* yacc.c:1646 */
13912  break;
13913 
13914  case 1084:
13915 #line 8147 "parser.y" /* yacc.c:1646 */
13916  { (yyval) = (yyvsp[0]); }
13917 #line 13839 "parser.c" /* yacc.c:1646 */
13918  break;
13919 
13920  case 1085:
13921 #line 8148 "parser.y" /* yacc.c:1646 */
13922  { (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0])); }
13923 #line 13845 "parser.c" /* yacc.c:1646 */
13924  break;
13925 
13926  case 1086:
13927 #line 8152 "parser.y" /* yacc.c:1646 */
13928  { (yyval) = cb_build_tallying_data ((yyvsp[-1])); }
13929 #line 13851 "parser.c" /* yacc.c:1646 */
13930  break;
13931 
13932  case 1087:
13933 #line 8153 "parser.y" /* yacc.c:1646 */
13934  { (yyval) = cb_build_tallying_characters ((yyvsp[0])); }
13935 #line 13857 "parser.c" /* yacc.c:1646 */
13936  break;
13937 
13938  case 1088:
13939 #line 8154 "parser.y" /* yacc.c:1646 */
13940  { (yyval) = cb_build_tallying_all (); }
13941 #line 13863 "parser.c" /* yacc.c:1646 */
13942  break;
13943 
13944  case 1089:
13945 #line 8155 "parser.y" /* yacc.c:1646 */
13946  { (yyval) = cb_build_tallying_leading (); }
13947 #line 13869 "parser.c" /* yacc.c:1646 */
13948  break;
13949 
13950  case 1090:
13951 #line 8156 "parser.y" /* yacc.c:1646 */
13952  { (yyval) = cb_build_tallying_trailing (); }
13953 #line 13875 "parser.c" /* yacc.c:1646 */
13954  break;
13955 
13956  case 1091:
13957 #line 8157 "parser.y" /* yacc.c:1646 */
13958  { (yyval) = cb_build_tallying_value ((yyvsp[-1]), (yyvsp[0])); }
13959 #line 13881 "parser.c" /* yacc.c:1646 */
13960  break;
13961 
13962  case 1092:
13963 #line 8161 "parser.y" /* yacc.c:1646 */
13964  { (yyval) = (yyvsp[0]); }
13965 #line 13887 "parser.c" /* yacc.c:1646 */
13966  break;
13967 
13968  case 1093:
13969 #line 8162 "parser.y" /* yacc.c:1646 */
13970  { (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0])); }
13971 #line 13893 "parser.c" /* yacc.c:1646 */
13972  break;
13973 
13974  case 1094:
13975 #line 8167 "parser.y" /* yacc.c:1646 */
13976  {
13977  (yyval) = cb_build_replacing_characters ((yyvsp[-1]), (yyvsp[0]));
13978  inspect_keyword = 0;
13979  }
13980 #line 13902 "parser.c" /* yacc.c:1646 */
13981  break;
13982 
13983  case 1095:
13984 #line 8172 "parser.y" /* yacc.c:1646 */
13985  {
13986  (yyval) = (yyvsp[0]);
13987  }
13988 #line 13910 "parser.c" /* yacc.c:1646 */
13989  break;
13990 
13991  case 1096:
13992 #line 8178 "parser.y" /* yacc.c:1646 */
13993  { /* Nothing */ }
13994 #line 13916 "parser.c" /* yacc.c:1646 */
13995  break;
13996 
13997  case 1097:
13998 #line 8179 "parser.y" /* yacc.c:1646 */
13999  { inspect_keyword = 1; }
14000 #line 13922 "parser.c" /* yacc.c:1646 */
14001  break;
14002 
14003  case 1098:
14004 #line 8180 "parser.y" /* yacc.c:1646 */
14005  { inspect_keyword = 2; }
14006 #line 13928 "parser.c" /* yacc.c:1646 */
14007  break;
14008 
14009  case 1099:
14010 #line 8181 "parser.y" /* yacc.c:1646 */
14011  { inspect_keyword = 3; }
14012 #line 13934 "parser.c" /* yacc.c:1646 */
14013  break;
14014 
14015  case 1100:
14016 #line 8182 "parser.y" /* yacc.c:1646 */
14017  { inspect_keyword = 4; }
14018 #line 13940 "parser.c" /* yacc.c:1646 */
14019  break;
14020 
14021  case 1101:
14022 #line 8187 "parser.y" /* yacc.c:1646 */
14023  {
14024  switch (inspect_keyword) {
14025  case 1:
14026  (yyval) = cb_build_replacing_all ((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
14027  break;
14028  case 2:
14029  (yyval) = cb_build_replacing_leading ((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
14030  break;
14031  case 3:
14032  (yyval) = cb_build_replacing_first ((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
14033  break;
14034  case 4:
14035  (yyval) = cb_build_replacing_trailing ((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
14036  break;
14037  default:
14039  _("INSPECT missing a keyword"));
14040  (yyval) = cb_build_replacing_all ((yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
14041  break;
14042  }
14043  }
14044 #line 13966 "parser.c" /* yacc.c:1646 */
14045  break;
14046 
14047  case 1102:
14048 #line 8214 "parser.y" /* yacc.c:1646 */
14049  {
14050  (yyval) = cb_build_inspect_region_start ();
14051  }
14052 #line 13974 "parser.c" /* yacc.c:1646 */
14053  break;
14054 
14055  case 1103:
14056 #line 8218 "parser.y" /* yacc.c:1646 */
14057  {
14058  (yyval) = (yyvsp[0]);
14059  }
14060 #line 13982 "parser.c" /* yacc.c:1646 */
14061  break;
14062 
14063  case 1104:
14064 #line 8225 "parser.y" /* yacc.c:1646 */
14065  {
14066  (yyval) = cb_list_add ((yyvsp[-3]), CB_BUILD_FUNCALL_1 ("cob_inspect_before", (yyvsp[0])));
14067  }
14068 #line 13990 "parser.c" /* yacc.c:1646 */
14069  break;
14070 
14071  case 1105:
14072 #line 8229 "parser.y" /* yacc.c:1646 */
14073  {
14074  (yyval) = cb_list_add ((yyvsp[-3]), CB_BUILD_FUNCALL_1 ("cob_inspect_after", (yyvsp[0])));
14075  }
14076 #line 13998 "parser.c" /* yacc.c:1646 */
14077  break;
14078 
14079  case 1106:
14080 #line 8238 "parser.y" /* yacc.c:1646 */
14081  {
14082  begin_statement ("MERGE", 0);
14084  }
14085 #line 14007 "parser.c" /* yacc.c:1646 */
14086  break;
14087 
14088  case 1108:
14089 #line 8250 "parser.y" /* yacc.c:1646 */
14090  {
14091  begin_statement ("MOVE", 0);
14092  }
14093 #line 14015 "parser.c" /* yacc.c:1646 */
14094  break;
14095 
14096  case 1110:
14097 #line 8258 "parser.y" /* yacc.c:1646 */
14098  {
14099  cb_emit_move ((yyvsp[-2]), (yyvsp[0]));
14100  }
14101 #line 14023 "parser.c" /* yacc.c:1646 */
14102  break;
14103 
14104  case 1111:
14105 #line 8262 "parser.y" /* yacc.c:1646 */
14106  {
14107  cb_emit_move_corresponding ((yyvsp[-2]), (yyvsp[0]));
14108  }
14109 #line 14031 "parser.c" /* yacc.c:1646 */
14110  break;
14111 
14112  case 1112:
14113 #line 8272 "parser.y" /* yacc.c:1646 */
14114  {
14115  begin_statement ("MULTIPLY", TERM_MULTIPLY);
14116  }
14117 #line 14039 "parser.c" /* yacc.c:1646 */
14118  break;
14119 
14120  case 1114:
14121 #line 8281 "parser.y" /* yacc.c:1646 */
14122  {
14123  cb_emit_arithmetic ((yyvsp[-1]), '*', (yyvsp[-3]));
14124  }
14125 #line 14047 "parser.c" /* yacc.c:1646 */
14126  break;
14127 
14128  case 1115:
14129 #line 8285 "parser.y" /* yacc.c:1646 */
14130  {
14131  cb_emit_arithmetic ((yyvsp[-1]), 0, cb_build_binary_op ((yyvsp[-5]), '*', (yyvsp[-3])));
14132  }
14133 #line 14055 "parser.c" /* yacc.c:1646 */
14134  break;
14135 
14136  case 1116:
14137 #line 8292 "parser.y" /* yacc.c:1646 */
14138  {
14139  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), MULTIPLY);
14140  }
14141 #line 14063 "parser.c" /* yacc.c:1646 */
14142  break;
14143 
14144  case 1117:
14145 #line 8296 "parser.y" /* yacc.c:1646 */
14146  {
14147  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), MULTIPLY);
14148  }
14149 #line 14071 "parser.c" /* yacc.c:1646 */
14150  break;
14151 
14152  case 1118:
14153 #line 8306 "parser.y" /* yacc.c:1646 */
14154  {
14155  begin_statement ("OPEN", 0);
14156  }
14157 #line 14079 "parser.c" /* yacc.c:1646 */
14158  break;
14159 
14160  case 1120:
14161 #line 8314 "parser.y" /* yacc.c:1646 */
14162  {
14163  cb_tree l;
14164  cb_tree x;
14165 
14166  if ((yyvsp[-2]) && (yyvsp[0])) {
14168  _("%s and %s are mutually exclusive"), "SHARING", "LOCK clauses");
14169  }
14170  if ((yyvsp[0])) {
14171  x = (yyvsp[0]);
14172  } else {
14173  x = (yyvsp[-2]);
14174  }
14175  for (l = (yyvsp[-1]); l; l = CB_CHAIN (l)) {
14176  if (CB_VALID_TREE (CB_VALUE (l))) {
14178  cb_emit_open (CB_VALUE (l), (yyvsp[-3]), x);
14179  }
14180  }
14181  }
14182 #line 14104 "parser.c" /* yacc.c:1646 */
14183  break;
14184 
14185  case 1121:
14186 #line 8335 "parser.y" /* yacc.c:1646 */
14187  {
14188  cb_tree l;
14189  cb_tree x;
14190 
14191  if ((yyvsp[-2]) && (yyvsp[0])) {
14193  _("%s and %s are mutually exclusive"), "SHARING", "LOCK clauses");
14194  }
14195  if ((yyvsp[0])) {
14196  x = (yyvsp[0]);
14197  } else {
14198  x = (yyvsp[-2]);
14199  }
14200  for (l = (yyvsp[-1]); l; l = CB_CHAIN (l)) {
14201  if (CB_VALID_TREE (CB_VALUE (l))) {
14203  cb_emit_open (CB_VALUE (l), (yyvsp[-3]), x);
14204  }
14205  }
14206  }
14207 #line 14129 "parser.c" /* yacc.c:1646 */
14208  break;
14209 
14210  case 1122:
14211 #line 8358 "parser.y" /* yacc.c:1646 */
14212  { (yyval) = cb_int (COB_OPEN_INPUT); }
14213 #line 14135 "parser.c" /* yacc.c:1646 */
14214  break;
14215 
14216  case 1123:
14217 #line 8359 "parser.y" /* yacc.c:1646 */
14218  { (yyval) = cb_int (COB_OPEN_OUTPUT); }
14219 #line 14141 "parser.c" /* yacc.c:1646 */
14220  break;
14221 
14222  case 1124:
14223 #line 8360 "parser.y" /* yacc.c:1646 */
14224  { (yyval) = cb_int (COB_OPEN_I_O); }
14225 #line 14147 "parser.c" /* yacc.c:1646 */
14226  break;
14227 
14228  case 1125:
14229 #line 8361 "parser.y" /* yacc.c:1646 */
14230  { (yyval) = cb_int (COB_OPEN_EXTEND); }
14231 #line 14153 "parser.c" /* yacc.c:1646 */
14232  break;
14233 
14234  case 1126:
14235 #line 8365 "parser.y" /* yacc.c:1646 */
14236  { (yyval) = NULL; }
14237 #line 14159 "parser.c" /* yacc.c:1646 */
14238  break;
14239 
14240  case 1127:
14241 #line 8366 "parser.y" /* yacc.c:1646 */
14242  { (yyval) = (yyvsp[0]); }
14243 #line 14165 "parser.c" /* yacc.c:1646 */
14244  break;
14245 
14246  case 1128:
14247 #line 8370 "parser.y" /* yacc.c:1646 */
14248  { (yyval) = NULL; }
14249 #line 14171 "parser.c" /* yacc.c:1646 */
14250  break;
14251 
14252  case 1129:
14253 #line 8371 "parser.y" /* yacc.c:1646 */
14254  { (yyval) = NULL; }
14255 #line 14177 "parser.c" /* yacc.c:1646 */
14256  break;
14257 
14258  case 1130:
14259 #line 8372 "parser.y" /* yacc.c:1646 */
14260  { (yyval) = cb_int (COB_LOCK_OPEN_EXCLUSIVE); }
14261 #line 14183 "parser.c" /* yacc.c:1646 */
14262  break;
14263 
14264  case 1131:
14265 #line 8374 "parser.y" /* yacc.c:1646 */
14266  {
14267  (void)cb_verify (CB_OBSOLETE, "REVERSED");
14268  (yyval) = NULL;
14269  }
14270 #line 14192 "parser.c" /* yacc.c:1646 */
14271  break;
14272 
14273  case 1132:
14274 #line 8385 "parser.y" /* yacc.c:1646 */
14275  {
14276  begin_statement ("PERFORM", TERM_PERFORM);
14277  /* Turn off field debug - PERFORM is special */
14279  start_debug = 0;
14280  }
14281 #line 14203 "parser.c" /* yacc.c:1646 */
14282  break;
14283 
14284  case 1134:
14285 #line 8396 "parser.y" /* yacc.c:1646 */
14286  {
14287  cb_emit_perform ((yyvsp[0]), (yyvsp[-1]));
14289  }
14290 #line 14212 "parser.c" /* yacc.c:1646 */
14291  break;
14292 
14293  case 1135:
14294 #line 8401 "parser.y" /* yacc.c:1646 */
14295  {
14296  CB_ADD_TO_CHAIN ((yyvsp[0]), perform_stack);
14297  /* Restore field debug before inline statements */
14299  }
14300 #line 14222 "parser.c" /* yacc.c:1646 */
14301  break;
14302 
14303  case 1136:
14304 #line 8407 "parser.y" /* yacc.c:1646 */
14305  {
14307  cb_emit_perform ((yyvsp[-3]), (yyvsp[-1]));
14308  }
14309 #line 14231 "parser.c" /* yacc.c:1646 */
14310  break;
14311 
14312  case 1137:
14313 #line 8412 "parser.y" /* yacc.c:1646 */
14314  {
14315  cb_emit_perform ((yyvsp[-1]), NULL);
14317  }
14318 #line 14240 "parser.c" /* yacc.c:1646 */
14319  break;
14320 
14321  case 1138:
14322 #line 8420 "parser.y" /* yacc.c:1646 */
14323  {
14324  if (cb_relaxed_syntax_check) {
14325  TERMINATOR_WARNING ((yyvsp[(-4) - (0)]), PERFORM);
14326  } else {
14327  TERMINATOR_ERROR ((yyvsp[(-4) - (0)]), PERFORM);
14328  }
14329  }
14330 #line 14252 "parser.c" /* yacc.c:1646 */
14331  break;
14332 
14333  case 1139:
14334 #line 8428 "parser.y" /* yacc.c:1646 */
14335  {
14336  TERMINATOR_CLEAR ((yyvsp[(-4) - (1)]), PERFORM);
14337  }
14338 #line 14260 "parser.c" /* yacc.c:1646 */
14339  break;
14340 
14341  case 1140:
14342 #line 8435 "parser.y" /* yacc.c:1646 */
14343  {
14344  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), PERFORM);
14345  }
14346 #line 14268 "parser.c" /* yacc.c:1646 */
14347  break;
14348 
14349  case 1141:
14350 #line 8439 "parser.y" /* yacc.c:1646 */
14351  {
14352  if (cb_relaxed_syntax_check) {
14353  TERMINATOR_WARNING ((yyvsp[(-2) - (1)]), PERFORM);
14354  } else {
14355  TERMINATOR_ERROR ((yyvsp[(-2) - (1)]), PERFORM);
14356  }
14357  /* Put the dot token back into the stack for reparse */
14358  cb_unput_dot ();
14359  }
14360 #line 14282 "parser.c" /* yacc.c:1646 */
14361  break;
14362 
14363  case 1142:
14364 #line 8452 "parser.y" /* yacc.c:1646 */
14365  {
14366  /* Return from $1 */
14367  CB_REFERENCE ((yyvsp[0]))->length = cb_true;
14368  CB_REFERENCE ((yyvsp[0]))->flag_decl_ok = 1;
14369  (yyval) = CB_BUILD_PAIR ((yyvsp[0]), (yyvsp[0]));
14370  }
14371 #line 14293 "parser.c" /* yacc.c:1646 */
14372  break;
14373 
14374  case 1143:
14375 #line 8459 "parser.y" /* yacc.c:1646 */
14376  {
14377  /* Return from $3 */
14378  CB_REFERENCE ((yyvsp[0]))->length = cb_true;
14379  CB_REFERENCE ((yyvsp[-2]))->flag_decl_ok = 1;
14380  CB_REFERENCE ((yyvsp[0]))->flag_decl_ok = 1;
14381  (yyval) = CB_BUILD_PAIR ((yyvsp[-2]), (yyvsp[0]));
14382  }
14383 #line 14305 "parser.c" /* yacc.c:1646 */
14384  break;
14385 
14386  case 1144:
14387 #line 8470 "parser.y" /* yacc.c:1646 */
14388  {
14389  (yyval) = cb_build_perform_once (NULL);
14390  }
14391 #line 14313 "parser.c" /* yacc.c:1646 */
14392  break;
14393 
14394  case 1145:
14395 #line 8474 "parser.y" /* yacc.c:1646 */
14396  {
14397  (yyval) = cb_build_perform_times ((yyvsp[-1]));
14399  }
14400 #line 14322 "parser.c" /* yacc.c:1646 */
14401  break;
14402 
14403  case 1146:
14404 #line 8479 "parser.y" /* yacc.c:1646 */
14405  {
14406  (yyval) = cb_build_perform_forever (NULL);
14407  }
14408 #line 14330 "parser.c" /* yacc.c:1646 */
14409  break;
14410 
14411  case 1147:
14412 #line 8483 "parser.y" /* yacc.c:1646 */
14413  {
14414  cb_tree varying;
14415 
14416  if (!(yyvsp[0])) {
14417  (yyval) = cb_build_perform_forever (NULL);
14418  } else {
14419  varying = CB_LIST_INIT (cb_build_perform_varying (NULL, NULL, NULL, (yyvsp[0])));
14420  (yyval) = cb_build_perform_until ((yyvsp[-2]), varying);
14421  }
14422  }
14423 #line 14345 "parser.c" /* yacc.c:1646 */
14424  break;
14425 
14426  case 1148:
14427 #line 8494 "parser.y" /* yacc.c:1646 */
14428  {
14429  (yyval) = cb_build_perform_until ((yyvsp[-2]), (yyvsp[0]));
14430  }
14431 #line 14353 "parser.c" /* yacc.c:1646 */
14432  break;
14433 
14434  case 1149:
14435 #line 8500 "parser.y" /* yacc.c:1646 */
14436  { (yyval) = CB_BEFORE; }
14437 #line 14359 "parser.c" /* yacc.c:1646 */
14438  break;
14439 
14440  case 1150:
14441 #line 8501 "parser.y" /* yacc.c:1646 */
14442  { (yyval) = (yyvsp[0]); }
14443 #line 14365 "parser.c" /* yacc.c:1646 */
14444  break;
14445 
14446  case 1151:
14447 #line 8505 "parser.y" /* yacc.c:1646 */
14448  { (yyval) = NULL; }
14449 #line 14371 "parser.c" /* yacc.c:1646 */
14450  break;
14451 
14452  case 1152:
14453 #line 8506 "parser.y" /* yacc.c:1646 */
14454  { (yyval) = (yyvsp[0]); }
14455 #line 14377 "parser.c" /* yacc.c:1646 */
14456  break;
14457 
14458  case 1153:
14459 #line 8509 "parser.y" /* yacc.c:1646 */
14460  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
14461 #line 14383 "parser.c" /* yacc.c:1646 */
14462  break;
14463 
14464  case 1154:
14465 #line 8511 "parser.y" /* yacc.c:1646 */
14466  { (yyval) = cb_list_add ((yyvsp[-2]), (yyvsp[0])); }
14467 #line 14389 "parser.c" /* yacc.c:1646 */
14468  break;
14469 
14470  case 1155:
14471 #line 8516 "parser.y" /* yacc.c:1646 */
14472  {
14473  (yyval) = cb_build_perform_varying ((yyvsp[-6]), (yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]));
14474  }
14475 #line 14397 "parser.c" /* yacc.c:1646 */
14476  break;
14477 
14478  case 1156:
14479 #line 8526 "parser.y" /* yacc.c:1646 */
14480  {
14481  begin_statement ("READ", TERM_READ);
14482  }
14483 #line 14405 "parser.c" /* yacc.c:1646 */
14484  break;
14485 
14486  case 1158:
14487 #line 8535 "parser.y" /* yacc.c:1646 */
14488  {
14489  if (CB_VALID_TREE ((yyvsp[-6]))) {
14490  struct cb_file *cf;
14491 
14492  cf = CB_FILE(cb_ref ((yyvsp[-6])));
14493  if ((yyvsp[-2]) && (cf->lock_mode & COB_LOCK_AUTOMATIC)) {
14495  _("LOCK clause invalid with file LOCK AUTOMATIC"));
14496  } else if ((yyvsp[-1]) &&
14497  (cf->organization != COB_ORG_RELATIVE &&
14498  cf->organization != COB_ORG_INDEXED)) {
14500  _("KEY clause invalid with this file type"));
14502  (cf->organization != COB_ORG_RELATIVE &&
14503  cf->organization != COB_ORG_INDEXED)) {
14505  _("INVALID KEY clause invalid with this file type"));
14506  } else {
14507  cb_emit_read ((yyvsp[-6]), (yyvsp[-5]), (yyvsp[-3]), (yyvsp[-1]), (yyvsp[-2]));
14508  }
14509  }
14510  }
14511 #line 14433 "parser.c" /* yacc.c:1646 */
14512  break;
14513 
14514  case 1159:
14515 #line 8561 "parser.y" /* yacc.c:1646 */
14516  { (yyval) = NULL; }
14517 #line 14439 "parser.c" /* yacc.c:1646 */
14518  break;
14519 
14520  case 1160:
14521 #line 8562 "parser.y" /* yacc.c:1646 */
14522  { (yyval) = (yyvsp[0]); }
14523 #line 14445 "parser.c" /* yacc.c:1646 */
14524  break;
14525 
14526  case 1161:
14527 #line 8567 "parser.y" /* yacc.c:1646 */
14528  {
14529  (yyval) = NULL;
14530  }
14531 #line 14453 "parser.c" /* yacc.c:1646 */
14532  break;
14533 
14534  case 1162:
14535 #line 8571 "parser.y" /* yacc.c:1646 */
14536  {
14537  (yyval) = cb_int3;
14538  }
14539 #line 14461 "parser.c" /* yacc.c:1646 */
14540  break;
14541 
14542  case 1163:
14543 #line 8575 "parser.y" /* yacc.c:1646 */
14544  {
14545  (yyval) = cb_int1;
14546  }
14547 #line 14469 "parser.c" /* yacc.c:1646 */
14548  break;
14549 
14550  case 1164:
14551 #line 8579 "parser.y" /* yacc.c:1646 */
14552  {
14553  (yyval) = cb_int1;
14554  }
14555 #line 14477 "parser.c" /* yacc.c:1646 */
14556  break;
14557 
14558  case 1165:
14559 #line 8583 "parser.y" /* yacc.c:1646 */
14560  {
14561  (yyval) = cb_int2;
14562  }
14563 #line 14485 "parser.c" /* yacc.c:1646 */
14564  break;
14565 
14566  case 1166:
14567 #line 8587 "parser.y" /* yacc.c:1646 */
14568  {
14569  (yyval) = cb_int3;
14570  }
14571 #line 14493 "parser.c" /* yacc.c:1646 */
14572  break;
14573 
14574  case 1167:
14575 #line 8591 "parser.y" /* yacc.c:1646 */
14576  {
14577  (yyval) = cb_int4;
14578  }
14579 #line 14501 "parser.c" /* yacc.c:1646 */
14580  break;
14581 
14582  case 1168:
14583 #line 8597 "parser.y" /* yacc.c:1646 */
14584  { (yyval) = NULL; }
14585 #line 14507 "parser.c" /* yacc.c:1646 */
14586  break;
14587 
14588  case 1169:
14589 #line 8598 "parser.y" /* yacc.c:1646 */
14590  { (yyval) = (yyvsp[0]); }
14591 #line 14513 "parser.c" /* yacc.c:1646 */
14592  break;
14593 
14594  case 1172:
14595 #line 8608 "parser.y" /* yacc.c:1646 */
14596  {
14597  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), READ);
14598  }
14599 #line 14521 "parser.c" /* yacc.c:1646 */
14600  break;
14601 
14602  case 1173:
14603 #line 8612 "parser.y" /* yacc.c:1646 */
14604  {
14605  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), READ);
14606  }
14607 #line 14529 "parser.c" /* yacc.c:1646 */
14608  break;
14609 
14610  case 1174:
14611 #line 8622 "parser.y" /* yacc.c:1646 */
14612  {
14613  begin_statement ("READY TRACE", 0);
14615  }
14616 #line 14538 "parser.c" /* yacc.c:1646 */
14617  break;
14618 
14619  case 1175:
14620 #line 8632 "parser.y" /* yacc.c:1646 */
14621  {
14622  begin_statement ("RELEASE", 0);
14623  }
14624 #line 14546 "parser.c" /* yacc.c:1646 */
14625  break;
14626 
14627  case 1177:
14628 #line 8640 "parser.y" /* yacc.c:1646 */
14629  {
14630  cb_emit_release ((yyvsp[-1]), (yyvsp[0]));
14631  }
14632 #line 14554 "parser.c" /* yacc.c:1646 */
14633  break;
14634 
14635  case 1178:
14636 #line 8650 "parser.y" /* yacc.c:1646 */
14637  {
14638  begin_statement ("RESET TRACE", 0);
14640  }
14641 #line 14563 "parser.c" /* yacc.c:1646 */
14642  break;
14643 
14644  case 1179:
14645 #line 8660 "parser.y" /* yacc.c:1646 */
14646  {
14647  begin_statement ("RETURN", TERM_RETURN);
14648  }
14649 #line 14571 "parser.c" /* yacc.c:1646 */
14650  break;
14651 
14652  case 1181:
14653 #line 8669 "parser.y" /* yacc.c:1646 */
14654  {
14655  cb_emit_return ((yyvsp[-3]), (yyvsp[-1]));
14656  }
14657 #line 14579 "parser.c" /* yacc.c:1646 */
14658  break;
14659 
14660  case 1182:
14661 #line 8676 "parser.y" /* yacc.c:1646 */
14662  {
14663  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), RETURN);
14664  }
14665 #line 14587 "parser.c" /* yacc.c:1646 */
14666  break;
14667 
14668  case 1183:
14669 #line 8680 "parser.y" /* yacc.c:1646 */
14670  {
14671  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), RETURN);
14672  }
14673 #line 14595 "parser.c" /* yacc.c:1646 */
14674  break;
14675 
14676  case 1184:
14677 #line 8690 "parser.y" /* yacc.c:1646 */
14678  {
14679  begin_statement ("REWRITE", TERM_REWRITE);
14680  /* Special in debugging mode */
14682  start_debug = 0;
14683  }
14684 #line 14606 "parser.c" /* yacc.c:1646 */
14685  break;
14686 
14687  case 1186:
14688 #line 8702 "parser.y" /* yacc.c:1646 */
14689  {
14690  cb_emit_rewrite ((yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]));
14692  }
14693 #line 14615 "parser.c" /* yacc.c:1646 */
14694  break;
14695 
14696  case 1187:
14697 #line 8710 "parser.y" /* yacc.c:1646 */
14698  {
14699  (yyval) = NULL;
14700  }
14701 #line 14623 "parser.c" /* yacc.c:1646 */
14702  break;
14703 
14704  case 1188:
14705 #line 8714 "parser.y" /* yacc.c:1646 */
14706  {
14707  (yyval) = cb_int1;
14708  }
14709 #line 14631 "parser.c" /* yacc.c:1646 */
14710  break;
14711 
14712  case 1189:
14713 #line 8718 "parser.y" /* yacc.c:1646 */
14714  {
14715  (yyval) = cb_int2;
14716  }
14717 #line 14639 "parser.c" /* yacc.c:1646 */
14718  break;
14719 
14720  case 1190:
14721 #line 8725 "parser.y" /* yacc.c:1646 */
14722  {
14723  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), REWRITE);
14724  }
14725 #line 14647 "parser.c" /* yacc.c:1646 */
14726  break;
14727 
14728  case 1191:
14729 #line 8729 "parser.y" /* yacc.c:1646 */
14730  {
14731  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), REWRITE);
14732  }
14733 #line 14655 "parser.c" /* yacc.c:1646 */
14734  break;
14735 
14736  case 1192:
14737 #line 8739 "parser.y" /* yacc.c:1646 */
14738  {
14739  begin_statement ("ROLLBACK", 0);
14740  cb_emit_rollback ();
14741  }
14742 #line 14664 "parser.c" /* yacc.c:1646 */
14743  break;
14744 
14745  case 1193:
14746 #line 8750 "parser.y" /* yacc.c:1646 */
14747  {
14748  begin_statement ("SEARCH", TERM_SEARCH);
14749  }
14750 #line 14672 "parser.c" /* yacc.c:1646 */
14751  break;
14752 
14753  case 1195:
14754 #line 8759 "parser.y" /* yacc.c:1646 */
14755  {
14756  cb_emit_search ((yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]));
14757  }
14758 #line 14680 "parser.c" /* yacc.c:1646 */
14759  break;
14760 
14761  case 1196:
14762 #line 8764 "parser.y" /* yacc.c:1646 */
14763  {
14764  current_statement->name = (const char *)"SEARCH ALL";
14765  cb_emit_search_all ((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-1]), (yyvsp[0]));
14766  }
14767 #line 14689 "parser.c" /* yacc.c:1646 */
14768  break;
14769 
14770  case 1197:
14771 #line 8771 "parser.y" /* yacc.c:1646 */
14772  { (yyval) = NULL; }
14773 #line 14695 "parser.c" /* yacc.c:1646 */
14774  break;
14775 
14776  case 1198:
14777 #line 8772 "parser.y" /* yacc.c:1646 */
14778  { (yyval) = (yyvsp[0]); }
14779 #line 14701 "parser.c" /* yacc.c:1646 */
14780  break;
14781 
14782  case 1199:
14783 #line 8777 "parser.y" /* yacc.c:1646 */
14784  {
14785  (yyval) = NULL;
14786  }
14787 #line 14709 "parser.c" /* yacc.c:1646 */
14788  break;
14789 
14790  case 1200:
14791 #line 8782 "parser.y" /* yacc.c:1646 */
14792  {
14793  (yyval) = (yyvsp[0]);
14794  }
14795 #line 14717 "parser.c" /* yacc.c:1646 */
14796  break;
14797 
14798  case 1201:
14799 #line 8789 "parser.y" /* yacc.c:1646 */
14800  {
14801  (yyval) = CB_LIST_INIT ((yyvsp[0]));
14802  }
14803 #line 14725 "parser.c" /* yacc.c:1646 */
14804  break;
14805 
14806  case 1202:
14807 #line 8793 "parser.y" /* yacc.c:1646 */
14808  {
14809  (yyval) = cb_list_add ((yyvsp[0]), (yyvsp[-1]));
14810  }
14811 #line 14733 "parser.c" /* yacc.c:1646 */
14812  break;
14813 
14814  case 1203:
14815 #line 8801 "parser.y" /* yacc.c:1646 */
14816  {
14817  (yyval) = cb_build_if_check_break ((yyvsp[-1]), (yyvsp[0]));
14818  }
14819 #line 14741 "parser.c" /* yacc.c:1646 */
14820  break;
14821 
14822  case 1204:
14823 #line 8808 "parser.y" /* yacc.c:1646 */
14824  {
14825  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), SEARCH);
14826  }
14827 #line 14749 "parser.c" /* yacc.c:1646 */
14828  break;
14829 
14830  case 1205:
14831 #line 8812 "parser.y" /* yacc.c:1646 */
14832  {
14833  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), SEARCH);
14834  }
14835 #line 14757 "parser.c" /* yacc.c:1646 */
14836  break;
14837 
14838  case 1206:
14839 #line 8822 "parser.y" /* yacc.c:1646 */
14840  {
14841  begin_statement ("SET", 0);
14842  setattr_val_on = 0;
14843  setattr_val_off = 0;
14845  }
14846 #line 14768 "parser.c" /* yacc.c:1646 */
14847  break;
14848 
14849  case 1207:
14850 #line 8829 "parser.y" /* yacc.c:1646 */
14851  {
14852  cobc_cs_check = 0;
14853  }
14854 #line 14776 "parser.c" /* yacc.c:1646 */
14855  break;
14856 
14857  case 1215:
14858 #line 8845 "parser.y" /* yacc.c:1646 */
14859  { (yyval) = cb_int1; }
14860 #line 14782 "parser.c" /* yacc.c:1646 */
14861  break;
14862 
14863  case 1216:
14864 #line 8846 "parser.y" /* yacc.c:1646 */
14865  { (yyval) = cb_int0; }
14866 #line 14788 "parser.c" /* yacc.c:1646 */
14867  break;
14868 
14869  case 1217:
14870 #line 8850 "parser.y" /* yacc.c:1646 */
14871  { (yyval) = cb_int0; }
14872 #line 14794 "parser.c" /* yacc.c:1646 */
14873  break;
14874 
14875  case 1218:
14876 #line 8851 "parser.y" /* yacc.c:1646 */
14877  { (yyval) = cb_int1; }
14878 #line 14800 "parser.c" /* yacc.c:1646 */
14879  break;
14880 
14881  case 1219:
14882 #line 8858 "parser.y" /* yacc.c:1646 */
14883  {
14884  cb_emit_setenv ((yyvsp[-2]), (yyvsp[0]));
14885  }
14886 #line 14808 "parser.c" /* yacc.c:1646 */
14887  break;
14888 
14889  case 1220:
14890 #line 8867 "parser.y" /* yacc.c:1646 */
14891  {
14893  }
14894 #line 14816 "parser.c" /* yacc.c:1646 */
14895  break;
14896 
14897  case 1223:
14898 #line 8879 "parser.y" /* yacc.c:1646 */
14899  {
14900  bit_set_attr ((yyvsp[0]), COB_SCREEN_BELL);
14901  }
14902 #line 14824 "parser.c" /* yacc.c:1646 */
14903  break;
14904 
14905  case 1224:
14906 #line 8883 "parser.y" /* yacc.c:1646 */
14907  {
14908  bit_set_attr ((yyvsp[0]), COB_SCREEN_BLINK);
14909  }
14910 #line 14832 "parser.c" /* yacc.c:1646 */
14911  break;
14912 
14913  case 1225:
14914 #line 8887 "parser.y" /* yacc.c:1646 */
14915  {
14916  bit_set_attr ((yyvsp[0]), COB_SCREEN_HIGHLIGHT);
14919  }
14920 #line 14842 "parser.c" /* yacc.c:1646 */
14921  break;
14922 
14923  case 1226:
14924 #line 8893 "parser.y" /* yacc.c:1646 */
14925  {
14926  bit_set_attr ((yyvsp[0]), COB_SCREEN_LOWLIGHT);
14929  }
14930 #line 14852 "parser.c" /* yacc.c:1646 */
14931  break;
14932 
14933  case 1227:
14934 #line 8899 "parser.y" /* yacc.c:1646 */
14935  {
14936  bit_set_attr ((yyvsp[0]), COB_SCREEN_REVERSE);
14937  }
14938 #line 14860 "parser.c" /* yacc.c:1646 */
14939  break;
14940 
14941  case 1228:
14942 #line 8903 "parser.y" /* yacc.c:1646 */
14943  {
14944  bit_set_attr ((yyvsp[0]), COB_SCREEN_UNDERLINE);
14945  }
14946 #line 14868 "parser.c" /* yacc.c:1646 */
14947  break;
14948 
14949  case 1229:
14950 #line 8907 "parser.y" /* yacc.c:1646 */
14951  {
14952  bit_set_attr ((yyvsp[0]), COB_SCREEN_LEFTLINE);
14953  }
14954 #line 14876 "parser.c" /* yacc.c:1646 */
14955  break;
14956 
14957  case 1230:
14958 #line 8911 "parser.y" /* yacc.c:1646 */
14959  {
14960  bit_set_attr ((yyvsp[0]), COB_SCREEN_OVERLINE);
14961  }
14962 #line 14884 "parser.c" /* yacc.c:1646 */
14963  break;
14964 
14965  case 1231:
14966 #line 8920 "parser.y" /* yacc.c:1646 */
14967  {
14968  cb_emit_set_to ((yyvsp[-3]), cb_build_ppointer ((yyvsp[0])));
14969  }
14970 #line 14892 "parser.c" /* yacc.c:1646 */
14971  break;
14972 
14973  case 1232:
14974 #line 8924 "parser.y" /* yacc.c:1646 */
14975  {
14976  cb_emit_set_to ((yyvsp[-2]), (yyvsp[0]));
14977  }
14978 #line 14900 "parser.c" /* yacc.c:1646 */
14979  break;
14980 
14981  case 1233:
14982 #line 8933 "parser.y" /* yacc.c:1646 */
14983  {
14984  cb_emit_set_up_down ((yyvsp[-3]), (yyvsp[-2]), (yyvsp[0]));
14985  }
14986 #line 14908 "parser.c" /* yacc.c:1646 */
14987  break;
14988 
14989  case 1236:
14990 #line 8947 "parser.y" /* yacc.c:1646 */
14991  {
14992  cb_emit_set_on_off ((yyvsp[-2]), (yyvsp[0]));
14993  }
14994 #line 14916 "parser.c" /* yacc.c:1646 */
14995  break;
14996 
14997  case 1239:
14998 #line 8961 "parser.y" /* yacc.c:1646 */
14999  {
15000  cb_emit_set_true ((yyvsp[-2]));
15001  }
15002 #line 14924 "parser.c" /* yacc.c:1646 */
15003  break;
15004 
15005  case 1240:
15006 #line 8965 "parser.y" /* yacc.c:1646 */
15007  {
15008  cb_emit_set_false ((yyvsp[-2]));
15009  }
15010 #line 14932 "parser.c" /* yacc.c:1646 */
15011  break;
15012 
15013  case 1241:
15014 #line 8974 "parser.y" /* yacc.c:1646 */
15015  {
15017  }
15018 #line 14940 "parser.c" /* yacc.c:1646 */
15019  break;
15020 
15021  case 1242:
15022 #line 8983 "parser.y" /* yacc.c:1646 */
15023  {
15024  begin_statement ("SORT", 0);
15025  }
15026 #line 14948 "parser.c" /* yacc.c:1646 */
15027  break;
15028 
15029  case 1244:
15030 #line 8991 "parser.y" /* yacc.c:1646 */
15031  {
15032  cb_tree x;
15033 
15034  x = cb_ref ((yyvsp[-3]));
15035  if (CB_VALID_TREE (x)) {
15036  if (CB_INVALID_TREE ((yyvsp[-2]))) {
15037  if (CB_FILE_P (x)) {
15038  cb_error (_("File sort requires KEY phrase"));
15039  } else {
15040  cb_error (_("Table sort without keys not implemented yet"));
15041  }
15042  (yyval) = NULL;
15043  } else {
15044  cb_emit_sort_init ((yyvsp[-3]), (yyvsp[-2]), (yyvsp[0]));
15045  (yyval)= (yyvsp[-3]);
15046  }
15047  } else {
15048  (yyval) = NULL;
15049  }
15050  }
15051 #line 14973 "parser.c" /* yacc.c:1646 */
15052  break;
15053 
15054  case 1245:
15055 #line 9012 "parser.y" /* yacc.c:1646 */
15056  {
15057  if ((yyvsp[-2]) && CB_VALID_TREE ((yyvsp[-6]))) {
15058  cb_emit_sort_finish ((yyvsp[-6]));
15059  }
15060  }
15061 #line 14983 "parser.c" /* yacc.c:1646 */
15062  break;
15063 
15064  case 1246:
15065 #line 9021 "parser.y" /* yacc.c:1646 */
15066  {
15067  (yyval) = NULL;
15068  }
15069 #line 14991 "parser.c" /* yacc.c:1646 */
15070  break;
15071 
15072  case 1247:
15073 #line 9026 "parser.y" /* yacc.c:1646 */
15074  {
15075  cb_tree l;
15076  cb_tree lparm;
15077 
15078  if ((yyvsp[0]) == NULL) {
15079  l = CB_LIST_INIT (NULL);
15080  } else {
15081  l = (yyvsp[0]);
15082  }
15083  lparm = l;
15084  for (; l; l = CB_CHAIN (l)) {
15085  CB_PURPOSE (l) = (yyvsp[-2]);
15086  }
15087  (yyval) = cb_list_append ((yyvsp[-4]), lparm);
15088  }
15089 #line 15011 "parser.c" /* yacc.c:1646 */
15090  break;
15091 
15092  case 1248:
15093 #line 9044 "parser.y" /* yacc.c:1646 */
15094  { (yyval) = NULL; }
15095 #line 15017 "parser.c" /* yacc.c:1646 */
15096  break;
15097 
15098  case 1249:
15099 #line 9045 "parser.y" /* yacc.c:1646 */
15100  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
15101 #line 15023 "parser.c" /* yacc.c:1646 */
15102  break;
15103 
15104  case 1251:
15105 #line 9050 "parser.y" /* yacc.c:1646 */
15106  {
15107  /* The OC sort is a stable sort. ie. Dups are per default in order */
15108  /* Therefore nothing to do here */
15109  }
15110 #line 15032 "parser.c" /* yacc.c:1646 */
15111  break;
15112 
15113  case 1252:
15114 #line 9057 "parser.y" /* yacc.c:1646 */
15115  { (yyval) = cb_null; }
15116 #line 15038 "parser.c" /* yacc.c:1646 */
15117  break;
15118 
15119  case 1253:
15120 #line 9058 "parser.y" /* yacc.c:1646 */
15121  { (yyval) = cb_ref ((yyvsp[0])); }
15122 #line 15044 "parser.c" /* yacc.c:1646 */
15123  break;
15124 
15125  case 1254:
15126 #line 9063 "parser.y" /* yacc.c:1646 */
15127  {
15128  if ((yyvsp[0]) && CB_FILE_P (cb_ref ((yyvsp[0])))) {
15129  cb_error (_("File sort requires USING or INPUT PROCEDURE"));
15130  }
15131  }
15132 #line 15054 "parser.c" /* yacc.c:1646 */
15133  break;
15134 
15135  case 1255:
15136 #line 9069 "parser.y" /* yacc.c:1646 */
15137  {
15138  if ((yyvsp[-2])) {
15139  if (!CB_FILE_P (cb_ref ((yyvsp[-2])))) {
15140  cb_error (_("USING invalid with table SORT"));
15141  } else {
15142  cb_emit_sort_using ((yyvsp[-2]), (yyvsp[0]));
15143  }
15144  }
15145  }
15146 #line 15068 "parser.c" /* yacc.c:1646 */
15147  break;
15148 
15149  case 1256:
15150 #line 9079 "parser.y" /* yacc.c:1646 */
15151  {
15152  if ((yyvsp[-4])) {
15153  if (!CB_FILE_P (cb_ref ((yyvsp[-4])))) {
15154  cb_error (_("INPUT PROCEDURE invalid with table SORT"));
15155  } else if (current_statement->flag_merge) {
15156  cb_error (_("INPUT PROCEDURE invalid with MERGE"));
15157  } else {
15158  cb_emit_sort_input ((yyvsp[0]));
15159  }
15160  }
15161  }
15162 #line 15084 "parser.c" /* yacc.c:1646 */
15163  break;
15164 
15165  case 1257:
15166 #line 9094 "parser.y" /* yacc.c:1646 */
15167  {
15168  if ((yyvsp[(-1) - (0)]) && CB_FILE_P (cb_ref ((yyvsp[(-1) - (0)])))) {
15169  cb_error (_("File sort requires GIVING or OUTPUT PROCEDURE"));
15170  }
15171  }
15172 #line 15094 "parser.c" /* yacc.c:1646 */
15173  break;
15174 
15175  case 1258:
15176 #line 9100 "parser.y" /* yacc.c:1646 */
15177  {
15178  if ((yyvsp[(-1) - (2)])) {
15179  if (!CB_FILE_P (cb_ref ((yyvsp[(-1) - (2)])))) {
15180  cb_error (_("GIVING invalid with table SORT"));
15181  } else {
15182  cb_emit_sort_giving ((yyvsp[(-1) - (2)]), (yyvsp[0]));
15183  }
15184  }
15185  }
15186 #line 15108 "parser.c" /* yacc.c:1646 */
15187  break;
15188 
15189  case 1259:
15190 #line 9110 "parser.y" /* yacc.c:1646 */
15191  {
15192  if ((yyvsp[(-1) - (4)])) {
15193  if (!CB_FILE_P (cb_ref ((yyvsp[(-1) - (4)])))) {
15194  cb_error (_("OUTPUT PROCEDURE invalid with table SORT"));
15195  } else {
15196  cb_emit_sort_output ((yyvsp[0]));
15197  }
15198  }
15199  }
15200 #line 15122 "parser.c" /* yacc.c:1646 */
15201  break;
15202 
15203  case 1260:
15204 #line 9126 "parser.y" /* yacc.c:1646 */
15205  {
15206  begin_statement ("START", TERM_START);
15207  start_tree = cb_int (COB_EQ);
15208  }
15209 #line 15131 "parser.c" /* yacc.c:1646 */
15210  break;
15211 
15212  case 1262:
15213 #line 9136 "parser.y" /* yacc.c:1646 */
15214  {
15215  if ((yyvsp[-1]) && !(yyvsp[-2])) {
15217  _("SIZE/LENGTH invalid here"));
15218  } else {
15219  cb_emit_start ((yyvsp[-3]), start_tree, (yyvsp[-2]), (yyvsp[-1]));
15220  }
15221  }
15222 #line 15144 "parser.c" /* yacc.c:1646 */
15223  break;
15224 
15225  case 1263:
15226 #line 9148 "parser.y" /* yacc.c:1646 */
15227  {
15228  (yyval) = NULL;
15229  }
15230 #line 15152 "parser.c" /* yacc.c:1646 */
15231  break;
15232 
15233  case 1264:
15234 #line 9152 "parser.y" /* yacc.c:1646 */
15235  {
15236  (yyval) = (yyvsp[0]);
15237  }
15238 #line 15160 "parser.c" /* yacc.c:1646 */
15239  break;
15240 
15241  case 1265:
15242 #line 9159 "parser.y" /* yacc.c:1646 */
15243  {
15244  (yyval) = NULL;
15245  }
15246 #line 15168 "parser.c" /* yacc.c:1646 */
15247  break;
15248 
15249  case 1266:
15250 #line 9163 "parser.y" /* yacc.c:1646 */
15251  {
15252  start_tree = (yyvsp[-1]);
15253  (yyval) = (yyvsp[0]);
15254  }
15255 #line 15177 "parser.c" /* yacc.c:1646 */
15256  break;
15257 
15258  case 1267:
15259 #line 9168 "parser.y" /* yacc.c:1646 */
15260  {
15261  start_tree = cb_int (COB_FI);
15262  (yyval) = NULL;
15263  }
15264 #line 15186 "parser.c" /* yacc.c:1646 */
15265  break;
15266 
15267  case 1268:
15268 #line 9173 "parser.y" /* yacc.c:1646 */
15269  {
15270  start_tree = cb_int (COB_LA);
15271  (yyval) = NULL;
15272  }
15273 #line 15195 "parser.c" /* yacc.c:1646 */
15274  break;
15275 
15276  case 1269:
15277 #line 9180 "parser.y" /* yacc.c:1646 */
15278  { (yyval) = cb_int (COB_EQ); }
15279 #line 15201 "parser.c" /* yacc.c:1646 */
15280  break;
15281 
15282  case 1270:
15283 #line 9181 "parser.y" /* yacc.c:1646 */
15284  { (yyval) = cb_int ((yyvsp[-1]) ? COB_LE : COB_GT); }
15285 #line 15207 "parser.c" /* yacc.c:1646 */
15286  break;
15287 
15288  case 1271:
15289 #line 9182 "parser.y" /* yacc.c:1646 */
15290  { (yyval) = cb_int ((yyvsp[-1]) ? COB_GE : COB_LT); }
15291 #line 15213 "parser.c" /* yacc.c:1646 */
15292  break;
15293 
15294  case 1272:
15295 #line 9183 "parser.y" /* yacc.c:1646 */
15296  { (yyval) = cb_int ((yyvsp[-1]) ? COB_LT : COB_GE); }
15297 #line 15219 "parser.c" /* yacc.c:1646 */
15298  break;
15299 
15300  case 1273:
15301 #line 9184 "parser.y" /* yacc.c:1646 */
15302  { (yyval) = cb_int ((yyvsp[-1]) ? COB_GT : COB_LE); }
15303 #line 15225 "parser.c" /* yacc.c:1646 */
15304  break;
15305 
15306  case 1274:
15307 #line 9185 "parser.y" /* yacc.c:1646 */
15308  { (yyval) = cb_int (COB_NE); }
15309 #line 15231 "parser.c" /* yacc.c:1646 */
15310  break;
15311 
15312  case 1275:
15313 #line 9190 "parser.y" /* yacc.c:1646 */
15314  {
15316  _("NOT EQUAL condition disallowed on START statement"));
15317  }
15318 #line 15240 "parser.c" /* yacc.c:1646 */
15319  break;
15320 
15321  case 1278:
15322 #line 9203 "parser.y" /* yacc.c:1646 */
15323  {
15324  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), START);
15325  }
15326 #line 15248 "parser.c" /* yacc.c:1646 */
15327  break;
15328 
15329  case 1279:
15330 #line 9207 "parser.y" /* yacc.c:1646 */
15331  {
15332  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), START);
15333  }
15334 #line 15256 "parser.c" /* yacc.c:1646 */
15335  break;
15336 
15337  case 1280:
15338 #line 9217 "parser.y" /* yacc.c:1646 */
15339  {
15340  begin_statement ("STOP RUN", 0);
15341  }
15342 #line 15264 "parser.c" /* yacc.c:1646 */
15343  break;
15344 
15345  case 1281:
15346 #line 9221 "parser.y" /* yacc.c:1646 */
15347  {
15348  cb_emit_stop_run ((yyvsp[0]));
15349  check_unreached = 1;
15350  cobc_cs_check = 0;
15351  }
15352 #line 15274 "parser.c" /* yacc.c:1646 */
15353  break;
15354 
15355  case 1282:
15356 #line 9227 "parser.y" /* yacc.c:1646 */
15357  {
15358  begin_statement ("STOP", 0);
15359  cb_verify (cb_stop_literal_statement, "STOP literal");
15360  cb_emit_display (CB_LIST_INIT ((yyvsp[0])), cb_int0, cb_int1, NULL,
15361  NULL);
15363  cobc_cs_check = 0;
15364  }
15365 #line 15287 "parser.c" /* yacc.c:1646 */
15366  break;
15367 
15368  case 1283:
15369 #line 9239 "parser.y" /* yacc.c:1646 */
15370  {
15371  (yyval) = current_program->cb_return_code;
15372  }
15373 #line 15295 "parser.c" /* yacc.c:1646 */
15374  break;
15375 
15376  case 1284:
15377 #line 9243 "parser.y" /* yacc.c:1646 */
15378  {
15379  (yyval) = (yyvsp[0]);
15380  }
15381 #line 15303 "parser.c" /* yacc.c:1646 */
15382  break;
15383 
15384  case 1285:
15385 #line 9247 "parser.y" /* yacc.c:1646 */
15386  {
15387  if ((yyvsp[0])) {
15388  (yyval) = (yyvsp[0]);
15389  } else {
15390  (yyval) = cb_int1;
15391  }
15392  }
15393 #line 15315 "parser.c" /* yacc.c:1646 */
15394  break;
15395 
15396  case 1286:
15397 #line 9255 "parser.y" /* yacc.c:1646 */
15398  {
15399  if ((yyvsp[0])) {
15400  (yyval) = (yyvsp[0]);
15401  } else {
15402  (yyval) = cb_int0;
15403  }
15404  }
15405 #line 15327 "parser.c" /* yacc.c:1646 */
15406  break;
15407 
15408  case 1287:
15409 #line 9266 "parser.y" /* yacc.c:1646 */
15410  {
15411  (yyval) = NULL;
15412  }
15413 #line 15335 "parser.c" /* yacc.c:1646 */
15414  break;
15415 
15416  case 1288:
15417 #line 9270 "parser.y" /* yacc.c:1646 */
15418  {
15419  (yyval) = (yyvsp[0]);
15420  }
15421 #line 15343 "parser.c" /* yacc.c:1646 */
15422  break;
15423 
15424  case 1289:
15425 #line 9276 "parser.y" /* yacc.c:1646 */
15426  { (yyval) = (yyvsp[0]); }
15427 #line 15349 "parser.c" /* yacc.c:1646 */
15428  break;
15429 
15430  case 1290:
15431 #line 9277 "parser.y" /* yacc.c:1646 */
15432  { (yyval) = cb_space; }
15433 #line 15355 "parser.c" /* yacc.c:1646 */
15434  break;
15435 
15436  case 1291:
15437 #line 9278 "parser.y" /* yacc.c:1646 */
15438  { (yyval) = cb_zero; }
15439 #line 15361 "parser.c" /* yacc.c:1646 */
15440  break;
15441 
15442  case 1292:
15443 #line 9279 "parser.y" /* yacc.c:1646 */
15444  { (yyval) = cb_quote; }
15445 #line 15367 "parser.c" /* yacc.c:1646 */
15446  break;
15447 
15448  case 1293:
15449 #line 9286 "parser.y" /* yacc.c:1646 */
15450  {
15451  begin_statement ("STRING", TERM_STRING);
15452  }
15453 #line 15375 "parser.c" /* yacc.c:1646 */
15454  break;
15455 
15456  case 1295:
15457 #line 9295 "parser.y" /* yacc.c:1646 */
15458  {
15459  cb_emit_string ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[-1]));
15460  }
15461 #line 15383 "parser.c" /* yacc.c:1646 */
15462  break;
15463 
15464  case 1296:
15465 #line 9301 "parser.y" /* yacc.c:1646 */
15466  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
15467 #line 15389 "parser.c" /* yacc.c:1646 */
15468  break;
15469 
15470  case 1297:
15471 #line 9302 "parser.y" /* yacc.c:1646 */
15472  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
15473 #line 15395 "parser.c" /* yacc.c:1646 */
15474  break;
15475 
15476  case 1298:
15477 #line 9306 "parser.y" /* yacc.c:1646 */
15478  { (yyval) = (yyvsp[0]); }
15479 #line 15401 "parser.c" /* yacc.c:1646 */
15480  break;
15481 
15482  case 1299:
15483 #line 9307 "parser.y" /* yacc.c:1646 */
15484  { (yyval) = CB_BUILD_PAIR (cb_int0, NULL); }
15485 #line 15407 "parser.c" /* yacc.c:1646 */
15486  break;
15487 
15488  case 1300:
15489 #line 9308 "parser.y" /* yacc.c:1646 */
15490  { (yyval) = CB_BUILD_PAIR ((yyvsp[0]), NULL); }
15491 #line 15413 "parser.c" /* yacc.c:1646 */
15492  break;
15493 
15494  case 1301:
15495 #line 9312 "parser.y" /* yacc.c:1646 */
15496  { (yyval) = NULL; }
15497 #line 15419 "parser.c" /* yacc.c:1646 */
15498  break;
15499 
15500  case 1302:
15501 #line 9313 "parser.y" /* yacc.c:1646 */
15502  { (yyval) = (yyvsp[0]); }
15503 #line 15425 "parser.c" /* yacc.c:1646 */
15504  break;
15505 
15506  case 1303:
15507 #line 9318 "parser.y" /* yacc.c:1646 */
15508  {
15509  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), STRING);
15510  }
15511 #line 15433 "parser.c" /* yacc.c:1646 */
15512  break;
15513 
15514  case 1304:
15515 #line 9322 "parser.y" /* yacc.c:1646 */
15516  {
15517  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), STRING);
15518  }
15519 #line 15441 "parser.c" /* yacc.c:1646 */
15520  break;
15521 
15522  case 1305:
15523 #line 9332 "parser.y" /* yacc.c:1646 */
15524  {
15525  begin_statement ("SUBTRACT", TERM_SUBTRACT);
15526  }
15527 #line 15449 "parser.c" /* yacc.c:1646 */
15528  break;
15529 
15530  case 1307:
15531 #line 9341 "parser.y" /* yacc.c:1646 */
15532  {
15533  cb_emit_arithmetic ((yyvsp[-1]), '-', cb_build_binary_list ((yyvsp[-3]), '+'));
15534  }
15535 #line 15457 "parser.c" /* yacc.c:1646 */
15536  break;
15537 
15538  case 1308:
15539 #line 9345 "parser.y" /* yacc.c:1646 */
15540  {
15541  cb_emit_arithmetic ((yyvsp[-1]), 0, cb_build_binary_list (CB_BUILD_CHAIN ((yyvsp[-3]), (yyvsp[-5])), '-'));
15542  }
15543 #line 15465 "parser.c" /* yacc.c:1646 */
15544  break;
15545 
15546  case 1309:
15547 #line 9349 "parser.y" /* yacc.c:1646 */
15548  {
15549  cb_emit_corresponding (cb_build_sub, (yyvsp[-2]), (yyvsp[-4]), (yyvsp[-1]));
15550  }
15551 #line 15473 "parser.c" /* yacc.c:1646 */
15552  break;
15553 
15554  case 1310:
15555 #line 9356 "parser.y" /* yacc.c:1646 */
15556  {
15557  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), SUBTRACT);
15558  }
15559 #line 15481 "parser.c" /* yacc.c:1646 */
15560  break;
15561 
15562  case 1311:
15563 #line 9360 "parser.y" /* yacc.c:1646 */
15564  {
15565  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), SUBTRACT);
15566  }
15567 #line 15489 "parser.c" /* yacc.c:1646 */
15568  break;
15569 
15570  case 1312:
15571 #line 9370 "parser.y" /* yacc.c:1646 */
15572  {
15573  begin_statement ("SUPPRESS", 0);
15574  if (!in_declaratives) {
15576  _("SUPPRESS statement must be within DECLARATIVES"));
15577  }
15578  PENDING("SUPPRESS");
15579  }
15580 #line 15502 "parser.c" /* yacc.c:1646 */
15581  break;
15582 
15583  case 1315:
15584 #line 9388 "parser.y" /* yacc.c:1646 */
15585  {
15586  begin_statement ("TERMINATE", 0);
15587  PENDING("TERMINATE");
15588  }
15589 #line 15511 "parser.c" /* yacc.c:1646 */
15590  break;
15591 
15592  case 1317:
15593 #line 9397 "parser.y" /* yacc.c:1646 */
15594  {
15596  if ((yyvsp[0]) != cb_error_node) {
15597  }
15598  }
15599 #line 15521 "parser.c" /* yacc.c:1646 */
15600  break;
15601 
15602  case 1318:
15603 #line 9403 "parser.y" /* yacc.c:1646 */
15604  {
15606  if ((yyvsp[0]) != cb_error_node) {
15607  }
15608  }
15609 #line 15531 "parser.c" /* yacc.c:1646 */
15610  break;
15611 
15612  case 1319:
15613 #line 9414 "parser.y" /* yacc.c:1646 */
15614  {
15615  begin_statement ("TRANSFORM", 0);
15616  }
15617 #line 15539 "parser.c" /* yacc.c:1646 */
15618  break;
15619 
15620  case 1321:
15621 #line 9422 "parser.y" /* yacc.c:1646 */
15622  {
15623  cb_tree x;
15624 
15625  x = cb_build_converting ((yyvsp[-2]), (yyvsp[0]), cb_build_inspect_region_start ());
15626  cb_emit_inspect ((yyvsp[-4]), x, cb_int0, 2);
15627  }
15628 #line 15550 "parser.c" /* yacc.c:1646 */
15629  break;
15630 
15631  case 1322:
15632 #line 9435 "parser.y" /* yacc.c:1646 */
15633  {
15634  begin_statement ("UNLOCK", 0);
15635  }
15636 #line 15558 "parser.c" /* yacc.c:1646 */
15637  break;
15638 
15639  case 1324:
15640 #line 9443 "parser.y" /* yacc.c:1646 */
15641  {
15642  if (CB_VALID_TREE ((yyvsp[-1]))) {
15643  if (CB_FILE (cb_ref ((yyvsp[-1])))->organization == COB_ORG_SORT) {
15645  _("UNLOCK invalid for SORT files"));
15646  } else {
15647  cb_emit_unlock ((yyvsp[-1]));
15648  }
15649  }
15650  }
15651 #line 15573 "parser.c" /* yacc.c:1646 */
15652  break;
15653 
15654  case 1325:
15655 #line 9459 "parser.y" /* yacc.c:1646 */
15656  {
15657  begin_statement ("UNSTRING", TERM_UNSTRING);
15658  }
15659 #line 15581 "parser.c" /* yacc.c:1646 */
15660  break;
15661 
15662  case 1327:
15663 #line 9469 "parser.y" /* yacc.c:1646 */
15664  {
15665  cb_emit_unstring ((yyvsp[-5]), (yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]));
15666  }
15667 #line 15589 "parser.c" /* yacc.c:1646 */
15668  break;
15669 
15670  case 1328:
15671 #line 9475 "parser.y" /* yacc.c:1646 */
15672  { (yyval) = NULL; }
15673 #line 15595 "parser.c" /* yacc.c:1646 */
15674  break;
15675 
15676  case 1329:
15677 #line 9477 "parser.y" /* yacc.c:1646 */
15678  { (yyval) = (yyvsp[0]); }
15679 #line 15601 "parser.c" /* yacc.c:1646 */
15680  break;
15681 
15682  case 1330:
15683 #line 9481 "parser.y" /* yacc.c:1646 */
15684  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
15685 #line 15607 "parser.c" /* yacc.c:1646 */
15686  break;
15687 
15688  case 1331:
15689 #line 9483 "parser.y" /* yacc.c:1646 */
15690  { (yyval) = cb_list_add ((yyvsp[-2]), (yyvsp[0])); }
15691 #line 15613 "parser.c" /* yacc.c:1646 */
15692  break;
15693 
15694  case 1332:
15695 #line 9488 "parser.y" /* yacc.c:1646 */
15696  {
15697  (yyval) = cb_build_unstring_delimited ((yyvsp[-1]), (yyvsp[0]));
15698  }
15699 #line 15621 "parser.c" /* yacc.c:1646 */
15700  break;
15701 
15702  case 1333:
15703 #line 9494 "parser.y" /* yacc.c:1646 */
15704  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
15705 #line 15627 "parser.c" /* yacc.c:1646 */
15706  break;
15707 
15708  case 1334:
15709 #line 9496 "parser.y" /* yacc.c:1646 */
15710  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
15711 #line 15633 "parser.c" /* yacc.c:1646 */
15712  break;
15713 
15714  case 1335:
15715 #line 9501 "parser.y" /* yacc.c:1646 */
15716  {
15717  (yyval) = cb_build_unstring_into ((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]));
15718  }
15719 #line 15641 "parser.c" /* yacc.c:1646 */
15720  break;
15721 
15722  case 1336:
15723 #line 9507 "parser.y" /* yacc.c:1646 */
15724  { (yyval) = NULL; }
15725 #line 15647 "parser.c" /* yacc.c:1646 */
15726  break;
15727 
15728  case 1337:
15729 #line 9508 "parser.y" /* yacc.c:1646 */
15730  { (yyval) = (yyvsp[0]); }
15731 #line 15653 "parser.c" /* yacc.c:1646 */
15732  break;
15733 
15734  case 1338:
15735 #line 9512 "parser.y" /* yacc.c:1646 */
15736  { (yyval) = NULL; }
15737 #line 15659 "parser.c" /* yacc.c:1646 */
15738  break;
15739 
15740  case 1339:
15741 #line 9513 "parser.y" /* yacc.c:1646 */
15742  { (yyval) = (yyvsp[0]); }
15743 #line 15665 "parser.c" /* yacc.c:1646 */
15744  break;
15745 
15746  case 1340:
15747 #line 9517 "parser.y" /* yacc.c:1646 */
15748  { (yyval) = NULL; }
15749 #line 15671 "parser.c" /* yacc.c:1646 */
15750  break;
15751 
15752  case 1341:
15753 #line 9518 "parser.y" /* yacc.c:1646 */
15754  { (yyval) = (yyvsp[0]); }
15755 #line 15677 "parser.c" /* yacc.c:1646 */
15756  break;
15757 
15758  case 1342:
15759 #line 9523 "parser.y" /* yacc.c:1646 */
15760  {
15761  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), UNSTRING);
15762  }
15763 #line 15685 "parser.c" /* yacc.c:1646 */
15764  break;
15765 
15766  case 1343:
15767 #line 9527 "parser.y" /* yacc.c:1646 */
15768  {
15769  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), UNSTRING);
15770  }
15771 #line 15693 "parser.c" /* yacc.c:1646 */
15772  break;
15773 
15774  case 1344:
15775 #line 9537 "parser.y" /* yacc.c:1646 */
15776  {
15777  skip_statements = 0;
15778  in_debugging = 0;
15779  }
15780 #line 15702 "parser.c" /* yacc.c:1646 */
15781  break;
15782 
15783  case 1351:
15784 #line 9555 "parser.y" /* yacc.c:1646 */
15785  {
15786  if (!in_declaratives) {
15787  cb_error (_("USE statement must be within DECLARATIVES"));
15788  } else if (!current_section) {
15789  cb_error (_("SECTION header missing before USE statement"));
15790  } else {
15797  if (use_global_ind) {
15802  }
15803  emit_statement (cb_build_comment ("USE AFTER ERROR"));
15804  }
15805  }
15806 #line 15728 "parser.c" /* yacc.c:1646 */
15807  break;
15808 
15809  case 1352:
15810 #line 9580 "parser.y" /* yacc.c:1646 */
15811  {
15812  use_global_ind = 0;
15813  }
15814 #line 15736 "parser.c" /* yacc.c:1646 */
15815  break;
15816 
15817  case 1353:
15818 #line 9584 "parser.y" /* yacc.c:1646 */
15819  {
15821  cb_error (_("%s is invalid in a user FUNCTION"), "GLOBAL");
15822  } else {
15823  use_global_ind = 1;
15825  }
15826  }
15827 #line 15749 "parser.c" /* yacc.c:1646 */
15828  break;
15829 
15830  case 1354:
15831 #line 9596 "parser.y" /* yacc.c:1646 */
15832  {
15833  cb_tree l;
15834 
15835  for (l = (yyvsp[0]); l; l = CB_CHAIN (l)) {
15836  if (CB_VALID_TREE (CB_VALUE (l))) {
15838  }
15839  }
15840  }
15841 #line 15763 "parser.c" /* yacc.c:1646 */
15842  break;
15843 
15844  case 1355:
15845 #line 9606 "parser.y" /* yacc.c:1646 */
15846  {
15849  }
15850 #line 15772 "parser.c" /* yacc.c:1646 */
15851  break;
15852 
15853  case 1356:
15854 #line 9611 "parser.y" /* yacc.c:1646 */
15855  {
15858  }
15859 #line 15781 "parser.c" /* yacc.c:1646 */
15860  break;
15861 
15862  case 1357:
15863 #line 9616 "parser.y" /* yacc.c:1646 */
15864  {
15867  }
15868 #line 15790 "parser.c" /* yacc.c:1646 */
15869  break;
15870 
15871  case 1358:
15872 #line 9621 "parser.y" /* yacc.c:1646 */
15873  {
15876  }
15877 #line 15799 "parser.c" /* yacc.c:1646 */
15878  break;
15879 
15880  case 1359:
15881 #line 9629 "parser.y" /* yacc.c:1646 */
15882  {
15883  cb_tree plabel;
15884  char name[64];
15885 
15886  if (!in_declaratives) {
15887  cb_error (_("USE statement must be within DECLARATIVES"));
15888  } else if (current_program->nested_level) {
15889  cb_error (_("USE DEBUGGING not supported in contained program"));
15890  } else {
15891  in_debugging = 1;
15897  if (!needs_debug_item) {
15898  needs_debug_item = 1;
15900  }
15902  skip_statements = 1;
15904  } else {
15906  sprintf (name, "EXIT SECTION %d", cb_id);
15907  plabel = cb_build_reference (name);
15908  plabel = cb_build_label (plabel, NULL);
15909  CB_LABEL (plabel)->flag_begin = 1;
15910  CB_LABEL (plabel)->flag_dummy_exit = 1;
15911  current_section->exit_label = plabel;
15912  emit_statement (cb_build_comment ("USE FOR DEBUGGING"));
15913  }
15914  }
15915  }
15916 #line 15838 "parser.c" /* yacc.c:1646 */
15917  break;
15918 
15919  case 1362:
15920 #line 9672 "parser.y" /* yacc.c:1646 */
15921  {
15922  cb_tree l;
15923  cb_tree x;
15924  cb_tree z;
15925 
15927  CB_REFERENCE ((yyvsp[0]))->debug_section = current_section;
15928  CB_REFERENCE ((yyvsp[0]))->flag_debug_code = 1;
15929  CB_REFERENCE ((yyvsp[0]))->flag_all_debug = 0;
15930  z = CB_LIST_INIT ((yyvsp[0]));
15933  /* Check backward refs to file/data names */
15934  /* Label refs will be checked later (forward/backward ref) */
15935  if (CB_WORD_COUNT ((yyvsp[0])) > 0) {
15936  l = CB_VALUE(CB_WORD_ITEMS ((yyvsp[0])));
15937  switch (CB_TREE_TAG (l)) {
15938  case CB_TAG_FILE:
15939  CB_FILE (l)->debug_section = current_section;
15940  CB_FILE (l)->flag_fl_debug = 1;
15941  break;
15942  case CB_TAG_FIELD:
15943  {
15944  x = cb_ref((yyvsp[0]));
15945  if(CB_INVALID_TREE(x)) {
15946  break;
15947  }
15948  needs_field_debug = 1;
15949  CB_FIELD(x)->debug_section = current_section;
15950  CB_FIELD(x)->flag_field_debug = 1;
15951  CB_PURPOSE(z) = x;
15952  break;
15953  }
15954  default:
15955  break;
15956  }
15957  }
15958  }
15959  }
15960 #line 15882 "parser.c" /* yacc.c:1646 */
15961  break;
15962 
15963  case 1363:
15964 #line 9712 "parser.y" /* yacc.c:1646 */
15965  {
15968  cb_error (_("Duplicate USE DEBUGGING ON ALL PROCEDURES"));
15969  } else {
15971  }
15972  }
15973  }
15974 #line 15896 "parser.c" /* yacc.c:1646 */
15975  break;
15976 
15977  case 1364:
15978 #line 9722 "parser.y" /* yacc.c:1646 */
15979  {
15980  cb_tree x;
15981 
15983  /* Reference must be a data item */
15984  x = cb_ref ((yyvsp[0]));
15985  if (CB_INVALID_TREE (x) || !CB_FIELD_P (x)) {
15986  cb_error (_("Invalid target for DEBUGGING ALL"));
15987  } else {
15988  needs_field_debug = 1;
15989  CB_FIELD (x)->debug_section = current_section;
15990  CB_FIELD (x)->flag_field_debug = 1;
15991  CB_FIELD (x)->flag_all_debug = 1;
15992  CB_REFERENCE ((yyvsp[0]))->debug_section = current_section;
15993  CB_REFERENCE ((yyvsp[0]))->flag_debug_code = 1;
15994  CB_REFERENCE ((yyvsp[0]))->flag_all_debug = 1;
15995  CB_CHAIN_PAIR (current_program->debug_list, x, (yyvsp[0]));
15996  }
15997  }
15998  }
15999 #line 15921 "parser.c" /* yacc.c:1646 */
16000  break;
16001 
16002  case 1369:
16003 #line 9752 "parser.y" /* yacc.c:1646 */
16004  {
16006  cb_error (_("%s is invalid in nested program"), "USE AT");
16007  }
16008  }
16009 #line 15931 "parser.c" /* yacc.c:1646 */
16010  break;
16011 
16012  case 1370:
16013 #line 9761 "parser.y" /* yacc.c:1646 */
16014  {
16015  emit_statement (cb_build_comment ("USE AT PROGRAM START"));
16016  /* emit_entry ("_START", 0, NULL); */
16017  PENDING ("USE AT PROGRAM START");
16018  }
16019 #line 15941 "parser.c" /* yacc.c:1646 */
16020  break;
16021 
16022  case 1371:
16023 #line 9767 "parser.y" /* yacc.c:1646 */
16024  {
16025  emit_statement (cb_build_comment ("USE AT PROGRAM END"));
16026  /* emit_entry ("_END", 0, NULL); */
16027  PENDING ("USE AT PROGRAM END");
16028  }
16029 #line 15951 "parser.c" /* yacc.c:1646 */
16030  break;
16031 
16032  case 1372:
16033 #line 9777 "parser.y" /* yacc.c:1646 */
16034  {
16036  emit_statement (cb_build_comment ("USE BEFORE REPORTING"));
16037  PENDING ("USE BEFORE REPORTING");
16038  }
16039 #line 15961 "parser.c" /* yacc.c:1646 */
16040  break;
16041 
16042  case 1373:
16043 #line 9786 "parser.y" /* yacc.c:1646 */
16044  {
16046  emit_statement (cb_build_comment ("USE AFTER EXCEPTION CONDITION"));
16047  PENDING ("USE AFTER EXCEPTION CONDITION");
16048  }
16049 #line 15971 "parser.c" /* yacc.c:1646 */
16050  break;
16051 
16052  case 1376:
16053 #line 9802 "parser.y" /* yacc.c:1646 */
16054  {
16055  begin_statement ("WRITE", TERM_WRITE);
16056  /* Special in debugging mode */
16058  start_debug = 0;
16059  }
16060 #line 15982 "parser.c" /* yacc.c:1646 */
16061  break;
16062 
16063  case 1378:
16064 #line 9814 "parser.y" /* yacc.c:1646 */
16065  {
16066  if (CB_VALID_TREE ((yyvsp[-4]))) {
16067  cb_emit_write ((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), (yyvsp[-1]));
16068  }
16070  }
16071 #line 15993 "parser.c" /* yacc.c:1646 */
16072  break;
16073 
16074  case 1379:
16075 #line 9823 "parser.y" /* yacc.c:1646 */
16076  { (yyval) = NULL; }
16077 #line 15999 "parser.c" /* yacc.c:1646 */
16078  break;
16079 
16080  case 1380:
16081 #line 9824 "parser.y" /* yacc.c:1646 */
16082  { (yyval) = (yyvsp[0]); }
16083 #line 16005 "parser.c" /* yacc.c:1646 */
16084  break;
16085 
16086  case 1381:
16087 #line 9829 "parser.y" /* yacc.c:1646 */
16088  {
16089  (yyval) = cb_int0;
16090  }
16091 #line 16013 "parser.c" /* yacc.c:1646 */
16092  break;
16093 
16094  case 1382:
16095 #line 9833 "parser.y" /* yacc.c:1646 */
16096  {
16097  (yyval) = cb_build_write_advancing_lines ((yyvsp[-3]), (yyvsp[-1]));
16098  }
16099 #line 16021 "parser.c" /* yacc.c:1646 */
16100  break;
16101 
16102  case 1383:
16103 #line 9837 "parser.y" /* yacc.c:1646 */
16104  {
16105  (yyval) = cb_build_write_advancing_mnemonic ((yyvsp[-2]), (yyvsp[0]));
16106  }
16107 #line 16029 "parser.c" /* yacc.c:1646 */
16108  break;
16109 
16110  case 1384:
16111 #line 9841 "parser.y" /* yacc.c:1646 */
16112  {
16113  (yyval) = cb_build_write_advancing_page ((yyvsp[-2]));
16114  }
16115 #line 16037 "parser.c" /* yacc.c:1646 */
16116  break;
16117 
16118  case 1385:
16119 #line 9847 "parser.y" /* yacc.c:1646 */
16120  { (yyval) = CB_BEFORE; }
16121 #line 16043 "parser.c" /* yacc.c:1646 */
16122  break;
16123 
16124  case 1386:
16125 #line 9848 "parser.y" /* yacc.c:1646 */
16126  { (yyval) = CB_AFTER; }
16127 #line 16049 "parser.c" /* yacc.c:1646 */
16128  break;
16129 
16130  case 1389:
16131 #line 9858 "parser.y" /* yacc.c:1646 */
16132  {
16133  TERMINATOR_WARNING ((yyvsp[(-2) - (0)]), WRITE);
16134  }
16135 #line 16057 "parser.c" /* yacc.c:1646 */
16136  break;
16137 
16138  case 1390:
16139 #line 9862 "parser.y" /* yacc.c:1646 */
16140  {
16141  TERMINATOR_CLEAR ((yyvsp[(-2) - (1)]), WRITE);
16142  }
16143 #line 16065 "parser.c" /* yacc.c:1646 */
16144  break;
16145 
16146  case 1393:
16147 #line 9879 "parser.y" /* yacc.c:1646 */
16148  {
16150  current_statement->handler1 = (yyvsp[0]);
16151  }
16152 #line 16074 "parser.c" /* yacc.c:1646 */
16153  break;
16154 
16155  case 1397:
16156 #line 9894 "parser.y" /* yacc.c:1646 */
16157  {
16159  current_statement->handler2 = (yyvsp[0]);
16160  }
16161 #line 16083 "parser.c" /* yacc.c:1646 */
16162  break;
16163 
16164  case 1402:
16165 #line 9912 "parser.y" /* yacc.c:1646 */
16166  {
16168  current_statement->handler1 = (yyvsp[0]);
16169  }
16170 #line 16092 "parser.c" /* yacc.c:1646 */
16171  break;
16172 
16173  case 1404:
16174 #line 9922 "parser.y" /* yacc.c:1646 */
16175  {
16177  current_statement->handler2 = (yyvsp[0]);
16178  }
16179 #line 16101 "parser.c" /* yacc.c:1646 */
16180  break;
16181 
16182  case 1407:
16183 #line 9937 "parser.y" /* yacc.c:1646 */
16184  {
16186  current_statement->handler1 = (yyvsp[0]);
16187  }
16188 #line 16110 "parser.c" /* yacc.c:1646 */
16189  break;
16190 
16191  case 1409:
16192 #line 9947 "parser.y" /* yacc.c:1646 */
16193  {
16195  current_statement->handler2 = (yyvsp[0]);
16196  }
16197 #line 16119 "parser.c" /* yacc.c:1646 */
16198  break;
16199 
16200  case 1412:
16201 #line 9964 "parser.y" /* yacc.c:1646 */
16202  {
16204  current_statement->handler1 = (yyvsp[0]);
16205  }
16206 #line 16128 "parser.c" /* yacc.c:1646 */
16207  break;
16208 
16209  case 1414:
16210 #line 9975 "parser.y" /* yacc.c:1646 */
16211  {
16213  current_statement->handler2 = (yyvsp[0]);
16214  }
16215 #line 16137 "parser.c" /* yacc.c:1646 */
16216  break;
16217 
16218  case 1420:
16219 #line 9998 "parser.y" /* yacc.c:1646 */
16220  {
16222  current_statement->handler1 = (yyvsp[0]);
16223  }
16224 #line 16146 "parser.c" /* yacc.c:1646 */
16225  break;
16226 
16227  case 1421:
16228 #line 10007 "parser.y" /* yacc.c:1646 */
16229  {
16231  current_statement->handler2 = (yyvsp[0]);
16232  }
16233 #line 16155 "parser.c" /* yacc.c:1646 */
16234  break;
16235 
16236  case 1425:
16237 #line 10024 "parser.y" /* yacc.c:1646 */
16238  {
16240  current_statement->handler1 = (yyvsp[0]);
16241  }
16242 #line 16164 "parser.c" /* yacc.c:1646 */
16243  break;
16244 
16245  case 1426:
16246 #line 10033 "parser.y" /* yacc.c:1646 */
16247  {
16249  current_statement->handler2 = (yyvsp[0]);
16250  }
16251 #line 16173 "parser.c" /* yacc.c:1646 */
16252  break;
16253 
16254  case 1429:
16255 #line 10050 "parser.y" /* yacc.c:1646 */
16256  {
16258  current_statement->handler1 = (yyvsp[0]);
16259  }
16260 #line 16182 "parser.c" /* yacc.c:1646 */
16261  break;
16262 
16263  case 1431:
16264 #line 10060 "parser.y" /* yacc.c:1646 */
16265  {
16267  current_statement->handler2 = (yyvsp[0]);
16268  }
16269 #line 16191 "parser.c" /* yacc.c:1646 */
16270  break;
16271 
16272  case 1432:
16273 #line 10070 "parser.y" /* yacc.c:1646 */
16274  {
16275  (yyval) = cb_one;
16276  }
16277 #line 16199 "parser.c" /* yacc.c:1646 */
16278  break;
16279 
16280  case 1433:
16281 #line 10074 "parser.y" /* yacc.c:1646 */
16282  {
16283  (yyval) = (yyvsp[-1]);
16284  }
16285 #line 16207 "parser.c" /* yacc.c:1646 */
16286  break;
16287 
16288  case 1434:
16289 #line 10084 "parser.y" /* yacc.c:1646 */
16290  {
16291  (yyval) = cb_build_cond ((yyvsp[0]));
16292  }
16293 #line 16215 "parser.c" /* yacc.c:1646 */
16294  break;
16295 
16296  case 1435:
16297 #line 10091 "parser.y" /* yacc.c:1646 */
16298  {
16299  (yyval) = cb_build_expr ((yyvsp[0]));
16300  }
16301 #line 16223 "parser.c" /* yacc.c:1646 */
16302  break;
16303 
16304  case 1436:
16305 #line 10097 "parser.y" /* yacc.c:1646 */
16306  {
16307  current_expr = NULL;
16309  }
16310 #line 16232 "parser.c" /* yacc.c:1646 */
16311  break;
16312 
16313  case 1437:
16314 #line 10102 "parser.y" /* yacc.c:1646 */
16315  {
16316  (yyval) = cb_list_reverse (current_expr);
16317  }
16318 #line 16240 "parser.c" /* yacc.c:1646 */
16319  break;
16320 
16321  case 1441:
16322 #line 10115 "parser.y" /* yacc.c:1646 */
16323  {
16324  if (CB_REFERENCE_P ((yyvsp[0])) && CB_CLASS_NAME_P (cb_ref ((yyvsp[0])))) {
16325  push_expr ('C', (yyvsp[0]));
16326  } else {
16327  push_expr ('x', (yyvsp[0]));
16328  }
16329  }
16330 #line 16252 "parser.c" /* yacc.c:1646 */
16331  break;
16332 
16333  case 1442:
16334 #line 10123 "parser.y" /* yacc.c:1646 */
16335  { push_expr ('(', NULL); }
16336 #line 16258 "parser.c" /* yacc.c:1646 */
16337  break;
16338 
16339  case 1443:
16340 #line 10124 "parser.y" /* yacc.c:1646 */
16341  { push_expr (')', NULL); }
16342 #line 16264 "parser.c" /* yacc.c:1646 */
16343  break;
16344 
16345  case 1444:
16346 #line 10126 "parser.y" /* yacc.c:1646 */
16347  { push_expr ('+', NULL); }
16348 #line 16270 "parser.c" /* yacc.c:1646 */
16349  break;
16350 
16351  case 1445:
16352 #line 10127 "parser.y" /* yacc.c:1646 */
16353  { push_expr ('-', NULL); }
16354 #line 16276 "parser.c" /* yacc.c:1646 */
16355  break;
16356 
16357  case 1446:
16358 #line 10128 "parser.y" /* yacc.c:1646 */
16359  { push_expr ('*', NULL); }
16360 #line 16282 "parser.c" /* yacc.c:1646 */
16361  break;
16362 
16363  case 1447:
16364 #line 10129 "parser.y" /* yacc.c:1646 */
16365  { push_expr ('/', NULL); }
16366 #line 16288 "parser.c" /* yacc.c:1646 */
16367  break;
16368 
16369  case 1448:
16370 #line 10130 "parser.y" /* yacc.c:1646 */
16371  { push_expr ('^', NULL); }
16372 #line 16294 "parser.c" /* yacc.c:1646 */
16373  break;
16374 
16375  case 1449:
16376 #line 10132 "parser.y" /* yacc.c:1646 */
16377  { push_expr ('=', NULL); }
16378 #line 16300 "parser.c" /* yacc.c:1646 */
16379  break;
16380 
16381  case 1450:
16382 #line 10133 "parser.y" /* yacc.c:1646 */
16383  { push_expr ('>', NULL); }
16384 #line 16306 "parser.c" /* yacc.c:1646 */
16385  break;
16386 
16387  case 1451:
16388 #line 10134 "parser.y" /* yacc.c:1646 */
16389  { push_expr ('<', NULL); }
16390 #line 16312 "parser.c" /* yacc.c:1646 */
16391  break;
16392 
16393  case 1452:
16394 #line 10135 "parser.y" /* yacc.c:1646 */
16395  { push_expr (']', NULL); }
16396 #line 16318 "parser.c" /* yacc.c:1646 */
16397  break;
16398 
16399  case 1453:
16400 #line 10136 "parser.y" /* yacc.c:1646 */
16401  { push_expr ('[', NULL); }
16402 #line 16324 "parser.c" /* yacc.c:1646 */
16403  break;
16404 
16405  case 1454:
16406 #line 10137 "parser.y" /* yacc.c:1646 */
16407  { push_expr ('~', NULL); }
16408 #line 16330 "parser.c" /* yacc.c:1646 */
16409  break;
16410 
16411  case 1455:
16412 #line 10139 "parser.y" /* yacc.c:1646 */
16413  { push_expr ('!', NULL); }
16414 #line 16336 "parser.c" /* yacc.c:1646 */
16415  break;
16416 
16417  case 1456:
16418 #line 10140 "parser.y" /* yacc.c:1646 */
16419  { push_expr ('&', NULL); }
16420 #line 16342 "parser.c" /* yacc.c:1646 */
16421  break;
16422 
16423  case 1457:
16424 #line 10141 "parser.y" /* yacc.c:1646 */
16425  { push_expr ('|', NULL); }
16426 #line 16348 "parser.c" /* yacc.c:1646 */
16427  break;
16428 
16429  case 1458:
16430 #line 10143 "parser.y" /* yacc.c:1646 */
16431  { push_expr ('O', NULL); }
16432 #line 16354 "parser.c" /* yacc.c:1646 */
16433  break;
16434 
16435  case 1459:
16436 #line 10144 "parser.y" /* yacc.c:1646 */
16437  { push_expr ('9', NULL); }
16438 #line 16360 "parser.c" /* yacc.c:1646 */
16439  break;
16440 
16441  case 1460:
16442 #line 10145 "parser.y" /* yacc.c:1646 */
16443  { push_expr ('A', NULL); }
16444 #line 16366 "parser.c" /* yacc.c:1646 */
16445  break;
16446 
16447  case 1461:
16448 #line 10146 "parser.y" /* yacc.c:1646 */
16449  { push_expr ('L', NULL); }
16450 #line 16372 "parser.c" /* yacc.c:1646 */
16451  break;
16452 
16453  case 1462:
16454 #line 10147 "parser.y" /* yacc.c:1646 */
16455  { push_expr ('U', NULL); }
16456 #line 16378 "parser.c" /* yacc.c:1646 */
16457  break;
16458 
16459  case 1463:
16460 #line 10150 "parser.y" /* yacc.c:1646 */
16461  { push_expr ('P', NULL); }
16462 #line 16384 "parser.c" /* yacc.c:1646 */
16463  break;
16464 
16465  case 1464:
16466 #line 10151 "parser.y" /* yacc.c:1646 */
16467  { push_expr ('N', NULL); }
16468 #line 16390 "parser.c" /* yacc.c:1646 */
16469  break;
16470 
16471  case 1473:
16472 #line 10181 "parser.y" /* yacc.c:1646 */
16473  {
16474  (yyval) = CB_LIST_INIT ((yyvsp[0]));
16475  }
16476 #line 16398 "parser.c" /* yacc.c:1646 */
16477  break;
16478 
16479  case 1474:
16480 #line 10185 "parser.y" /* yacc.c:1646 */
16481  {
16482  (yyval) = cb_list_add ((yyvsp[-2]), (yyvsp[0]));
16483  }
16484 #line 16406 "parser.c" /* yacc.c:1646 */
16485  break;
16486 
16487  case 1478:
16488 #line 10196 "parser.y" /* yacc.c:1646 */
16489  { (yyval) = cb_build_binary_op ((yyvsp[-2]), '+', (yyvsp[0])); }
16490 #line 16412 "parser.c" /* yacc.c:1646 */
16491  break;
16492 
16493  case 1479:
16494 #line 10197 "parser.y" /* yacc.c:1646 */
16495  { (yyval) = cb_build_binary_op ((yyvsp[-2]), '-', (yyvsp[0])); }
16496 #line 16418 "parser.c" /* yacc.c:1646 */
16497  break;
16498 
16499  case 1480:
16500 #line 10198 "parser.y" /* yacc.c:1646 */
16501  { (yyval) = (yyvsp[0]); }
16502 #line 16424 "parser.c" /* yacc.c:1646 */
16503  break;
16504 
16505  case 1481:
16506 #line 10202 "parser.y" /* yacc.c:1646 */
16507  { (yyval) = cb_build_binary_op ((yyvsp[-2]), '*', (yyvsp[0])); }
16508 #line 16430 "parser.c" /* yacc.c:1646 */
16509  break;
16510 
16511  case 1482:
16512 #line 10203 "parser.y" /* yacc.c:1646 */
16513  { (yyval) = cb_build_binary_op ((yyvsp[-2]), '/', (yyvsp[0])); }
16514 #line 16436 "parser.c" /* yacc.c:1646 */
16515  break;
16516 
16517  case 1483:
16518 #line 10204 "parser.y" /* yacc.c:1646 */
16519  { (yyval) = (yyvsp[0]); }
16520 #line 16442 "parser.c" /* yacc.c:1646 */
16521  break;
16522 
16523  case 1484:
16524 #line 10209 "parser.y" /* yacc.c:1646 */
16525  {
16526  (yyval) = cb_build_binary_op ((yyvsp[-2]), '^', (yyvsp[0]));
16527  }
16528 #line 16450 "parser.c" /* yacc.c:1646 */
16529  break;
16530 
16531  case 1485:
16532 #line 10212 "parser.y" /* yacc.c:1646 */
16533  { (yyval) = (yyvsp[0]); }
16534 #line 16456 "parser.c" /* yacc.c:1646 */
16535  break;
16536 
16537  case 1486:
16538 #line 10216 "parser.y" /* yacc.c:1646 */
16539  { (yyval) = (yyvsp[0]); }
16540 #line 16462 "parser.c" /* yacc.c:1646 */
16541  break;
16542 
16543  case 1487:
16544 #line 10217 "parser.y" /* yacc.c:1646 */
16545  { (yyval) = cb_build_binary_op (cb_zero, '-', (yyvsp[0])); }
16546 #line 16468 "parser.c" /* yacc.c:1646 */
16547  break;
16548 
16549  case 1488:
16550 #line 10218 "parser.y" /* yacc.c:1646 */
16551  { (yyval) = (yyvsp[0]); }
16552 #line 16474 "parser.c" /* yacc.c:1646 */
16553  break;
16554 
16555  case 1489:
16556 #line 10221 "parser.y" /* yacc.c:1646 */
16557  { (yyval) = (yyvsp[-1]); }
16558 #line 16480 "parser.c" /* yacc.c:1646 */
16559  break;
16560 
16561  case 1490:
16562 #line 10222 "parser.y" /* yacc.c:1646 */
16563  { (yyval) = (yyvsp[0]); }
16564 #line 16486 "parser.c" /* yacc.c:1646 */
16565  break;
16566 
16567  case 1491:
16568 #line 10233 "parser.y" /* yacc.c:1646 */
16569  {
16570  if (current_linage > 1) {
16571  cb_error (_("LINAGE-COUNTER must be qualified here"));
16572  (yyval) = cb_error_node;
16573  } else if (current_linage == 0) {
16574  cb_error (_("Invalid LINAGE-COUNTER usage"));
16575  (yyval) = cb_error_node;
16576  } else {
16577  (yyval) = linage_file->linage_ctr;
16578  }
16579  }
16580 #line 16502 "parser.c" /* yacc.c:1646 */
16581  break;
16582 
16583  case 1492:
16584 #line 10245 "parser.y" /* yacc.c:1646 */
16585  {
16586  if (CB_FILE_P (cb_ref ((yyvsp[0])))) {
16587  (yyval) = CB_FILE (cb_ref ((yyvsp[0])))->linage_ctr;
16588  } else {
16589  cb_error_x ((yyvsp[0]), _("'%s' is not a file name"), CB_NAME ((yyvsp[0])));
16590  (yyval) = cb_error_node;
16591  }
16592  }
16593 #line 16515 "parser.c" /* yacc.c:1646 */
16594  break;
16595 
16596  case 1493:
16597 #line 10254 "parser.y" /* yacc.c:1646 */
16598  {
16599  if (report_count > 1) {
16600  cb_error (_("LINE-COUNTER must be qualified here"));
16601  (yyval) = cb_error_node;
16602  } else if (report_count == 0) {
16603  cb_error (_("Invalid LINE-COUNTER usage"));
16604  (yyval) = cb_error_node;
16605  } else {
16606  (yyval) = report_instance->line_counter;
16607  }
16608  }
16609 #line 16531 "parser.c" /* yacc.c:1646 */
16610  break;
16611 
16612  case 1494:
16613 #line 10266 "parser.y" /* yacc.c:1646 */
16614  {
16615  if (CB_REPORT_P (cb_ref ((yyvsp[0])))) {
16616  (yyval) = CB_REPORT (cb_ref ((yyvsp[0])))->line_counter;
16617  } else {
16618  cb_error_x ((yyvsp[0]), _("'%s' is not a report name"), CB_NAME ((yyvsp[0])));
16619  (yyval) = cb_error_node;
16620  }
16621  }
16622 #line 16544 "parser.c" /* yacc.c:1646 */
16623  break;
16624 
16625  case 1495:
16626 #line 10275 "parser.y" /* yacc.c:1646 */
16627  {
16628  if (report_count > 1) {
16629  cb_error (_("PAGE-COUNTER must be qualified here"));
16630  (yyval) = cb_error_node;
16631  } else if (report_count == 0) {
16632  cb_error (_("Invalid PAGE-COUNTER usage"));
16633  (yyval) = cb_error_node;
16634  } else {
16635  (yyval) = report_instance->page_counter;
16636  }
16637  }
16638 #line 16560 "parser.c" /* yacc.c:1646 */
16639  break;
16640 
16641  case 1496:
16642 #line 10287 "parser.y" /* yacc.c:1646 */
16643  {
16644  if (CB_REPORT_P (cb_ref ((yyvsp[0])))) {
16645  (yyval) = CB_REPORT (cb_ref ((yyvsp[0])))->page_counter;
16646  } else {
16647  cb_error_x ((yyvsp[0]), _("'%s' is not a report name"), CB_NAME ((yyvsp[0])));
16648  (yyval) = cb_error_node;
16649  }
16650  }
16651 #line 16573 "parser.c" /* yacc.c:1646 */
16652  break;
16653 
16654  case 1497:
16655 #line 10301 "parser.y" /* yacc.c:1646 */
16656  { (yyval) = (yyvsp[0]); }
16657 #line 16579 "parser.c" /* yacc.c:1646 */
16658  break;
16659 
16660  case 1498:
16661 #line 10303 "parser.y" /* yacc.c:1646 */
16662  { (yyval) = cb_list_append ((yyvsp[-1]), (yyvsp[0])); }
16663 #line 16585 "parser.c" /* yacc.c:1646 */
16664  break;
16665 
16666  case 1499:
16667 #line 10308 "parser.y" /* yacc.c:1646 */
16668  {
16669  (yyval) = CB_BUILD_PAIR ((yyvsp[0]), (yyvsp[-1]));
16670  }
16671 #line 16593 "parser.c" /* yacc.c:1646 */
16672  break;
16673 
16674  case 1500:
16675 #line 10316 "parser.y" /* yacc.c:1646 */
16676  { cb_build_identifier ((yyvsp[0]), 0); }
16677 #line 16599 "parser.c" /* yacc.c:1646 */
16678  break;
16679 
16680  case 1501:
16681 #line 10323 "parser.y" /* yacc.c:1646 */
16682  {
16683  cb_tree x;
16684 
16685  x = cb_ref ((yyvsp[0]));
16686  if (!CB_FIELD_P (x)) {
16687  (yyval) = cb_error_node;
16688  } else if (!CB_FIELD (x)->index_list) {
16689  cb_error_x ((yyvsp[0]), _("'%s' not indexed"), cb_name ((yyvsp[0])));
16690  cb_error_x (x, _("'%s' defined here"), cb_name (x));
16691  (yyval) = cb_error_node;
16692  } else {
16693  (yyval) = (yyvsp[0]);
16694  }
16695  }
16696 #line 16618 "parser.c" /* yacc.c:1646 */
16697  break;
16698 
16699  case 1502:
16700 #line 10343 "parser.y" /* yacc.c:1646 */
16701  {
16702  (yyval) = CB_LIST_INIT ((yyvsp[0]));
16703  }
16704 #line 16626 "parser.c" /* yacc.c:1646 */
16705  break;
16706 
16707  case 1503:
16708 #line 10347 "parser.y" /* yacc.c:1646 */
16709  {
16710  cb_tree l;
16711 
16712  if (CB_VALID_TREE ((yyvsp[0]))) {
16713  for (l = (yyvsp[-1]); l; l = CB_CHAIN (l)) {
16714  if (CB_VALID_TREE (CB_VALUE (l)) &&
16715  !strcasecmp (CB_NAME ((yyvsp[0])), CB_NAME (CB_VALUE (l)))) {
16716  cb_error_x ((yyvsp[0]), _("Multiple reference to '%s' "),
16717  CB_NAME ((yyvsp[0])));
16718  break;
16719  }
16720  }
16721  if (!l) {
16722  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
16723  }
16724  }
16725  }
16726 #line 16648 "parser.c" /* yacc.c:1646 */
16727  break;
16728 
16729  case 1504:
16730 #line 10368 "parser.y" /* yacc.c:1646 */
16731  {
16732  if (CB_FILE_P (cb_ref ((yyvsp[0])))) {
16733  (yyval) = (yyvsp[0]);
16734  } else {
16735  cb_error_x ((yyvsp[0]), _("'%s' is not a file name"), CB_NAME ((yyvsp[0])));
16736  (yyval) = cb_error_node;
16737  }
16738  }
16739 #line 16661 "parser.c" /* yacc.c:1646 */
16740  break;
16741 
16742  case 1505:
16743 #line 10409 "parser.y" /* yacc.c:1646 */
16744  {
16745  if (CB_REPORT_P (cb_ref ((yyvsp[0])))) {
16746  (yyval) = (yyvsp[0]);
16747  } else {
16748  cb_error_x ((yyvsp[0]), _("'%s' is not a report name"), CB_NAME ((yyvsp[0])));
16749  (yyval) = cb_error_node;
16750  }
16751  }
16752 #line 16674 "parser.c" /* yacc.c:1646 */
16753  break;
16754 
16755  case 1506:
16756 #line 10422 "parser.y" /* yacc.c:1646 */
16757  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
16758 #line 16680 "parser.c" /* yacc.c:1646 */
16759  break;
16760 
16761  case 1507:
16762 #line 10424 "parser.y" /* yacc.c:1646 */
16763  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
16764 #line 16686 "parser.c" /* yacc.c:1646 */
16765  break;
16766 
16767  case 1508:
16768 #line 10428 "parser.y" /* yacc.c:1646 */
16769  { (yyval) = (yyvsp[0]); }
16770 #line 16692 "parser.c" /* yacc.c:1646 */
16771  break;
16772 
16773  case 1509:
16774 #line 10434 "parser.y" /* yacc.c:1646 */
16775  { (yyval) = NULL; }
16776 #line 16698 "parser.c" /* yacc.c:1646 */
16777  break;
16778 
16779  case 1510:
16780 #line 10436 "parser.y" /* yacc.c:1646 */
16781  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
16782 #line 16704 "parser.c" /* yacc.c:1646 */
16783  break;
16784 
16785  case 1511:
16786 #line 10441 "parser.y" /* yacc.c:1646 */
16787  {
16788  (yyval) = (yyvsp[0]);
16789  CB_REFERENCE ((yyval))->offset = CB_TREE (current_section);
16790  CB_REFERENCE ((yyval))->flag_in_decl = !!in_declaratives;
16791  CB_REFERENCE ((yyval))->section = current_section;
16792  CB_REFERENCE ((yyval))->paragraph = current_paragraph;
16794  }
16795 #line 16717 "parser.c" /* yacc.c:1646 */
16796  break;
16797 
16798  case 1514:
16799 #line 10455 "parser.y" /* yacc.c:1646 */
16800  {
16801  CB_REFERENCE ((yyvsp[-2]))->chain = (yyvsp[0]);
16802  }
16803 #line 16725 "parser.c" /* yacc.c:1646 */
16804  break;
16805 
16806  case 1515:
16807 #line 10462 "parser.y" /* yacc.c:1646 */
16808  {
16809  (yyval) = cb_build_reference ((char *)(CB_LITERAL ((yyvsp[0]))->data));
16810  (yyval)->source_file = (yyvsp[0])->source_file;
16811  (yyval)->source_line = (yyvsp[0])->source_line;
16812  }
16813 #line 16735 "parser.c" /* yacc.c:1646 */
16814  break;
16815 
16816  case 1516:
16817 #line 10472 "parser.y" /* yacc.c:1646 */
16818  { (yyval) = CB_LIST_INIT ((yyvsp[0])); }
16819 #line 16741 "parser.c" /* yacc.c:1646 */
16820  break;
16821 
16822  case 1517:
16823 #line 10473 "parser.y" /* yacc.c:1646 */
16824  { (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0])); }
16825 #line 16747 "parser.c" /* yacc.c:1646 */
16826  break;
16827 
16828  case 1518:
16829 #line 10478 "parser.y" /* yacc.c:1646 */
16830  {
16831  (yyval) = (yyvsp[0]);
16833  }
16834 #line 16756 "parser.c" /* yacc.c:1646 */
16835  break;
16836 
16837  case 1519:
16838 #line 10486 "parser.y" /* yacc.c:1646 */
16839  {
16840  (yyval) = (yyvsp[0]);
16842  }
16843 #line 16765 "parser.c" /* yacc.c:1646 */
16844  break;
16845 
16846  case 1520:
16847 #line 10494 "parser.y" /* yacc.c:1646 */
16848  {
16849  (yyval) = CB_LIST_INIT ((yyvsp[0]));
16850  }
16851 #line 16773 "parser.c" /* yacc.c:1646 */
16852  break;
16853 
16854  case 1521:
16855 #line 10498 "parser.y" /* yacc.c:1646 */
16856  {
16857  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
16858  }
16859 #line 16781 "parser.c" /* yacc.c:1646 */
16860  break;
16861 
16862  case 1522:
16863 #line 10505 "parser.y" /* yacc.c:1646 */
16864  {
16865  (yyval) = (yyvsp[0]);
16866  CB_REFERENCE((yyval))->flag_optional = 1;
16868  }
16869 #line 16791 "parser.c" /* yacc.c:1646 */
16870  break;
16871 
16872  case 1525:
16873 #line 10521 "parser.y" /* yacc.c:1646 */
16874  {
16875  if (CB_WORD_COUNT ((yyvsp[0])) > 0) {
16876  redefinition_error ((yyvsp[0]));
16877  (yyval) = cb_error_node;
16878  } else {
16879  (yyval) = (yyvsp[0]);
16880  }
16881  }
16882 #line 16804 "parser.c" /* yacc.c:1646 */
16883  break;
16884 
16885  case 1526:
16886 #line 10530 "parser.y" /* yacc.c:1646 */
16887  {
16888  yyclearin;
16889  yyerrok;
16890  (yyval) = cb_error_node;
16891  }
16892 #line 16814 "parser.c" /* yacc.c:1646 */
16893  break;
16894 
16895  case 1527:
16896 #line 10541 "parser.y" /* yacc.c:1646 */
16897  {
16898  if (CB_REFERENCE ((yyvsp[0]))->flag_duped || CB_WORD_COUNT ((yyvsp[0])) > 0) {
16899  redefinition_error ((yyvsp[0]));
16900  (yyval) = NULL;
16901  } else {
16902  CB_WORD_COUNT ((yyvsp[0]))++;
16903  (yyval) = (yyvsp[0]);
16904  }
16905  }
16906 #line 16828 "parser.c" /* yacc.c:1646 */
16907  break;
16908 
16909  case 1528:
16910 #line 10558 "parser.y" /* yacc.c:1646 */
16911  {
16912  (yyval) = CB_LIST_INIT ((yyvsp[0]));
16913  }
16914 #line 16836 "parser.c" /* yacc.c:1646 */
16915  break;
16916 
16917  case 1529:
16918 #line 10562 "parser.y" /* yacc.c:1646 */
16919  {
16920  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
16921  }
16922 #line 16844 "parser.c" /* yacc.c:1646 */
16923  break;
16924 
16925  case 1532:
16926 #line 10571 "parser.y" /* yacc.c:1646 */
16927  {
16928  (yyval) = cb_build_address ((yyvsp[0]));
16929  }
16930 #line 16852 "parser.c" /* yacc.c:1646 */
16931  break;
16932 
16933  case 1533:
16934 #line 10577 "parser.y" /* yacc.c:1646 */
16935  { (yyval) = NULL; }
16936 #line 16858 "parser.c" /* yacc.c:1646 */
16937  break;
16938 
16939  case 1534:
16940 #line 10578 "parser.y" /* yacc.c:1646 */
16941  { (yyval) = (yyvsp[0]); }
16942 #line 16864 "parser.c" /* yacc.c:1646 */
16943  break;
16944 
16945  case 1535:
16946 #line 10583 "parser.y" /* yacc.c:1646 */
16947  {
16948  (yyval) = CB_LIST_INIT ((yyvsp[0]));
16949  }
16950 #line 16872 "parser.c" /* yacc.c:1646 */
16951  break;
16952 
16953  case 1536:
16954 #line 10587 "parser.y" /* yacc.c:1646 */
16955  {
16956  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
16957  }
16958 #line 16880 "parser.c" /* yacc.c:1646 */
16959  break;
16960 
16961  case 1541:
16962 #line 10598 "parser.y" /* yacc.c:1646 */
16963  {
16964  (yyval) = cb_build_length ((yyvsp[0]));
16965  }
16966 #line 16888 "parser.c" /* yacc.c:1646 */
16967  break;
16968 
16969  case 1542:
16970 #line 10602 "parser.y" /* yacc.c:1646 */
16971  {
16972  (yyval) = cb_build_length ((yyvsp[0]));
16973  }
16974 #line 16896 "parser.c" /* yacc.c:1646 */
16975  break;
16976 
16977  case 1543:
16978 #line 10606 "parser.y" /* yacc.c:1646 */
16979  {
16980  (yyval) = cb_build_length ((yyvsp[0]));
16981  }
16982 #line 16904 "parser.c" /* yacc.c:1646 */
16983  break;
16984 
16985  case 1544:
16986 #line 10610 "parser.y" /* yacc.c:1646 */
16987  {
16988  (yyval) = cb_build_ppointer ((yyvsp[0]));
16989  }
16990 #line 16912 "parser.c" /* yacc.c:1646 */
16991  break;
16992 
16993  case 1545:
16994 #line 10614 "parser.y" /* yacc.c:1646 */
16995  {
16996  (yyval) = cb_build_address ((yyvsp[0]));
16997  }
16998 #line 16920 "parser.c" /* yacc.c:1646 */
16999  break;
17000 
17001  case 1546:
17002 #line 10618 "parser.y" /* yacc.c:1646 */
17003  {
17004  cb_tree x;
17005  cb_tree switch_id;
17006 
17007  x = cb_ref ((yyvsp[0]));
17008  if (CB_VALID_TREE (x)) {
17009  if (CB_SYSTEM_NAME (x)->category != CB_SWITCH_NAME) {
17010  cb_error_x (x, _("Invalid mnemonic identifier"));
17011  (yyval) = cb_error_node;
17012  } else {
17013  switch_id = cb_int (CB_SYSTEM_NAME (x)->token);
17014  (yyval) = CB_BUILD_FUNCALL_1 ("cob_switch_value", switch_id);
17015  }
17016  } else {
17017  (yyval) = cb_error_node;
17018  }
17019  }
17020 #line 16942 "parser.c" /* yacc.c:1646 */
17021  break;
17022 
17023  case 1547:
17024 #line 10639 "parser.y" /* yacc.c:1646 */
17025  {
17026  (yyval) = CB_LIST_INIT ((yyvsp[0]));
17027  }
17028 #line 16950 "parser.c" /* yacc.c:1646 */
17029  break;
17030 
17031  case 1548:
17032 #line 10643 "parser.y" /* yacc.c:1646 */
17033  {
17034  (yyval) = cb_list_add ((yyvsp[-1]), (yyvsp[0]));
17035  }
17036 #line 16958 "parser.c" /* yacc.c:1646 */
17037  break;
17038 
17039  case 1556:
17040 #line 10660 "parser.y" /* yacc.c:1646 */
17041  {
17042  (yyval) = cb_build_length ((yyvsp[0]));
17043  }
17044 #line 16966 "parser.c" /* yacc.c:1646 */
17045  break;
17046 
17047  case 1557:
17048 #line 10664 "parser.y" /* yacc.c:1646 */
17049  {
17050  (yyval) = cb_build_length ((yyvsp[0]));
17051  }
17052 #line 16974 "parser.c" /* yacc.c:1646 */
17053  break;
17054 
17055  case 1558:
17056 #line 10668 "parser.y" /* yacc.c:1646 */
17057  {
17058  (yyval) = cb_build_length ((yyvsp[0]));
17059  }
17060 #line 16982 "parser.c" /* yacc.c:1646 */
17061  break;
17062 
17063  case 1567:
17064 #line 10702 "parser.y" /* yacc.c:1646 */
17065  {
17066  check_not_88_level ((yyvsp[0]));
17067  }
17068 #line 16990 "parser.c" /* yacc.c:1646 */
17069  break;
17070 
17071  case 1569:
17072 #line 10710 "parser.y" /* yacc.c:1646 */
17073  {
17074  check_not_88_level ((yyvsp[0]));
17075  }
17076 #line 16998 "parser.c" /* yacc.c:1646 */
17077  break;
17078 
17079  case 1572:
17080 #line 10719 "parser.y" /* yacc.c:1646 */
17081  {
17082  check_not_88_level ((yyvsp[0]));
17083  }
17084 #line 17006 "parser.c" /* yacc.c:1646 */
17085  break;
17086 
17087  case 1574:
17088 #line 10724 "parser.y" /* yacc.c:1646 */
17089  {
17090  (yyval) = cb_zero;
17091  }
17092 #line 17014 "parser.c" /* yacc.c:1646 */
17093  break;
17094 
17095  case 1575:
17096 #line 10731 "parser.y" /* yacc.c:1646 */
17097  {
17098  check_not_88_level ((yyvsp[0]));
17099  }
17100 #line 17022 "parser.c" /* yacc.c:1646 */
17101  break;
17102 
17103  case 1577:
17104 #line 10739 "parser.y" /* yacc.c:1646 */
17105  {
17106  check_not_88_level ((yyvsp[0]));
17107  }
17108 #line 17030 "parser.c" /* yacc.c:1646 */
17109  break;
17110 
17111  case 1579:
17112 #line 10747 "parser.y" /* yacc.c:1646 */
17113  {
17114  check_not_88_level ((yyvsp[0]));
17115  }
17116 #line 17038 "parser.c" /* yacc.c:1646 */
17117  break;
17118 
17119  case 1582:
17120 #line 10757 "parser.y" /* yacc.c:1646 */
17121  { (yyval) = cb_build_identifier ((yyvsp[0]), 0); }
17122 #line 17044 "parser.c" /* yacc.c:1646 */
17123  break;
17124 
17125  case 1583:
17126 #line 10761 "parser.y" /* yacc.c:1646 */
17127  { (yyval) = cb_build_identifier ((yyvsp[0]), 1); }
17128 #line 17050 "parser.c" /* yacc.c:1646 */
17129  break;
17130 
17131  case 1584:
17132 #line 10765 "parser.y" /* yacc.c:1646 */
17133  { (yyval) = (yyvsp[0]); }
17134 #line 17056 "parser.c" /* yacc.c:1646 */
17135  break;
17136 
17137  case 1585:
17138 #line 10766 "parser.y" /* yacc.c:1646 */
17139  { (yyval) = (yyvsp[-1]); }
17140 #line 17062 "parser.c" /* yacc.c:1646 */
17141  break;
17142 
17143  case 1586:
17144 #line 10770 "parser.y" /* yacc.c:1646 */
17145  { (yyval) = cb_build_identifier ((yyvsp[0]), 0); }
17146 #line 17068 "parser.c" /* yacc.c:1646 */
17147  break;
17148 
17149  case 1587:
17150 #line 10775 "parser.y" /* yacc.c:1646 */
17151  {
17152  (yyval) = (yyvsp[-2]);
17153  if (start_debug) {
17154  cb_check_field_debug ((yyvsp[-2]));
17155  }
17156  }
17157 #line 17079 "parser.c" /* yacc.c:1646 */
17158  break;
17159 
17160  case 1588:
17161 #line 10782 "parser.y" /* yacc.c:1646 */
17162  {
17163  (yyval) = (yyvsp[-1]);
17164  if (start_debug) {
17165  cb_check_field_debug ((yyvsp[-1]));
17166  }
17167  }
17168 #line 17090 "parser.c" /* yacc.c:1646 */
17169  break;
17170 
17171  case 1589:
17172 #line 10789 "parser.y" /* yacc.c:1646 */
17173  {
17174  (yyval) = (yyvsp[-1]);
17175  if (start_debug) {
17176  cb_check_field_debug ((yyvsp[-1]));
17177  }
17178  }
17179 #line 17101 "parser.c" /* yacc.c:1646 */
17180  break;
17181 
17182  case 1590:
17183 #line 10796 "parser.y" /* yacc.c:1646 */
17184  {
17185  (yyval) = (yyvsp[0]);
17186  if (start_debug) {
17187  cb_check_field_debug ((yyvsp[0]));
17188  }
17189  }
17190 #line 17112 "parser.c" /* yacc.c:1646 */
17191  break;
17192 
17193  case 1591:
17194 #line 10806 "parser.y" /* yacc.c:1646 */
17195  {
17196  (yyval) = cb_build_identifier ((yyvsp[0]), 0);
17197  }
17198 #line 17120 "parser.c" /* yacc.c:1646 */
17199  break;
17200 
17201  case 1592:
17202 #line 10813 "parser.y" /* yacc.c:1646 */
17203  {
17204  (yyval) = (yyvsp[-2]);
17205  if (CB_REFERENCE_P ((yyvsp[-2]))) {
17206  CB_REFERENCE ((yyvsp[-2]))->flag_target = 1;
17207  }
17208  if (start_debug) {
17209  cb_check_field_debug ((yyvsp[-2]));
17210  }
17211  }
17212 #line 17134 "parser.c" /* yacc.c:1646 */
17213  break;
17214 
17215  case 1593:
17216 #line 10823 "parser.y" /* yacc.c:1646 */
17217  {
17218  (yyval) = (yyvsp[-1]);
17219  if (CB_REFERENCE_P ((yyvsp[-1]))) {
17220  CB_REFERENCE ((yyvsp[-1]))->flag_target = 1;
17221  }
17222  if (start_debug) {
17223  cb_check_field_debug ((yyvsp[-1]));
17224  }
17225  }
17226 #line 17148 "parser.c" /* yacc.c:1646 */
17227  break;
17228 
17229  case 1594:
17230 #line 10833 "parser.y" /* yacc.c:1646 */
17231  {
17232  (yyval) = (yyvsp[-1]);
17233  if (CB_REFERENCE_P ((yyvsp[-1]))) {
17234  CB_REFERENCE ((yyvsp[-1]))->flag_target = 1;
17235  }
17236  if (start_debug) {
17237  cb_check_field_debug ((yyvsp[-1]));
17238  }
17239  }
17240 #line 17162 "parser.c" /* yacc.c:1646 */
17241  break;
17242 
17243  case 1595:
17244 #line 10843 "parser.y" /* yacc.c:1646 */
17245  {
17246  (yyval) = (yyvsp[0]);
17247  if (CB_REFERENCE_P ((yyvsp[0]))) {
17248  CB_REFERENCE ((yyvsp[0]))->flag_target = 1;
17249  }
17250  if (start_debug) {
17251  cb_check_field_debug ((yyvsp[0]));
17252  }
17253  }
17254 #line 17176 "parser.c" /* yacc.c:1646 */
17255  break;
17256 
17257  case 1596:
17258 #line 10856 "parser.y" /* yacc.c:1646 */
17259  {
17260  (yyval) = (yyvsp[0]);
17261  }
17262 #line 17184 "parser.c" /* yacc.c:1646 */
17263  break;
17264 
17265  case 1597:
17266 #line 10860 "parser.y" /* yacc.c:1646 */
17267  {
17268  (yyval) = (yyvsp[-2]);
17269  CB_REFERENCE ((yyvsp[-2]))->chain = (yyvsp[0]);
17270  }
17271 #line 17193 "parser.c" /* yacc.c:1646 */
17272  break;
17273 
17274  case 1598:
17275 #line 10868 "parser.y" /* yacc.c:1646 */
17276  {
17277  (yyval) = (yyvsp[-3]);
17278  CB_REFERENCE ((yyvsp[-3]))->subs = cb_list_reverse ((yyvsp[-1]));
17279  }
17280 #line 17202 "parser.c" /* yacc.c:1646 */
17281  break;
17282 
17283  case 1599:
17284 #line 10876 "parser.y" /* yacc.c:1646 */
17285  {
17286  CB_REFERENCE ((yyvsp[-4]))->offset = (yyvsp[-2]);
17287  }
17288 #line 17210 "parser.c" /* yacc.c:1646 */
17289  break;
17290 
17291  case 1600:
17292 #line 10880 "parser.y" /* yacc.c:1646 */
17293  {
17294  CB_REFERENCE ((yyvsp[-5]))->offset = (yyvsp[-3]);
17295  CB_REFERENCE ((yyvsp[-5]))->length = (yyvsp[-1]);
17296  }
17297 #line 17219 "parser.c" /* yacc.c:1646 */
17298  break;
17299 
17300  case 1601:
17301 #line 10890 "parser.y" /* yacc.c:1646 */
17302  {
17303  if (cb_tree_category ((yyvsp[0])) != CB_CATEGORY_NUMERIC
17304  || CB_LITERAL ((yyvsp[0]))->sign < 0
17305  || CB_LITERAL ((yyvsp[0]))->scale) {
17306  cb_error (_("Non-negative integer value expected"));
17307  (yyval) = cb_build_numeric_literal(-1, "1", 0);
17308  } else {
17309  (yyval) = (yyvsp[0]);
17310  }
17311  }
17312 #line 17234 "parser.c" /* yacc.c:1646 */
17313  break;
17314 
17315  case 1602:
17316 #line 10904 "parser.y" /* yacc.c:1646 */
17317  {
17318  int n;
17319 
17320  if (cb_tree_category ((yyvsp[0])) != CB_CATEGORY_NUMERIC) {
17321  cb_error (_("Integer value expected"));
17322  (yyval) = cb_int1;
17323  } else if (CB_LITERAL ((yyvsp[0]))->sign || CB_LITERAL ((yyvsp[0]))->scale) {
17324  cb_error (_("Integer value expected"));
17325  (yyval) = cb_int1;
17326  } else {
17327  n = cb_get_int ((yyvsp[0]));
17328  if (n < 1 || n > 256) {
17329  cb_error (_("Invalid SYMBOLIC integer"));
17330  (yyval) = cb_int1;
17331  } else {
17332  (yyval) = (yyvsp[0]);
17333  }
17334  }
17335  }
17336 #line 17258 "parser.c" /* yacc.c:1646 */
17337  break;
17338 
17339  case 1603:
17340 #line 10927 "parser.y" /* yacc.c:1646 */
17341  {
17342  int n;
17343 
17344  if (cb_tree_category ((yyvsp[0])) != CB_CATEGORY_NUMERIC
17345  || CB_LITERAL ((yyvsp[0]))->sign
17346  || CB_LITERAL ((yyvsp[0]))->scale) {
17347  cb_error (_("Unsigned positive integer value expected"));
17348  (yyval) = cb_int1;
17349  } else {
17350  n = cb_get_int ((yyvsp[0]));
17351  if (n < 1) {
17352  cb_error (_("Unsigned positive integer value expected"));
17353  (yyval) = cb_int1;
17354  } else {
17355  (yyval) = (yyvsp[0]);
17356  }
17357  }
17358  }
17359 #line 17281 "parser.c" /* yacc.c:1646 */
17360  break;
17361 
17362  case 1604:
17363 #line 10949 "parser.y" /* yacc.c:1646 */
17364  {
17365  int n;
17366 
17367  if (cb_tree_category ((yyvsp[0])) == CB_CATEGORY_NUMERIC) {
17368  if (CB_LITERAL ((yyvsp[0]))->sign || CB_LITERAL ((yyvsp[0]))->scale) {
17369  cb_error (_("Integer value expected"));
17370  } else {
17371  n = cb_get_int ((yyvsp[0]));
17372  if (n < 1 || n > 256) {
17373  cb_error (_("Invalid CLASS value"));
17374  }
17375  }
17376  }
17377  (yyval) = (yyvsp[0]);
17378  }
17379 #line 17301 "parser.c" /* yacc.c:1646 */
17380  break;
17381 
17382  case 1605:
17383 #line 10964 "parser.y" /* yacc.c:1646 */
17384  { (yyval) = cb_space; }
17385 #line 17307 "parser.c" /* yacc.c:1646 */
17386  break;
17387 
17388  case 1606:
17389 #line 10965 "parser.y" /* yacc.c:1646 */
17390  { (yyval) = cb_zero; }
17391 #line 17313 "parser.c" /* yacc.c:1646 */
17392  break;
17393 
17394  case 1607:
17395 #line 10966 "parser.y" /* yacc.c:1646 */
17396  { (yyval) = cb_quote; }
17397 #line 17319 "parser.c" /* yacc.c:1646 */
17398  break;
17399 
17400  case 1608:
17401 #line 10967 "parser.y" /* yacc.c:1646 */
17402  { (yyval) = cb_high; }
17403 #line 17325 "parser.c" /* yacc.c:1646 */
17404  break;
17405 
17406  case 1609:
17407 #line 10968 "parser.y" /* yacc.c:1646 */
17408  { (yyval) = cb_low; }
17409 #line 17331 "parser.c" /* yacc.c:1646 */
17410  break;
17411 
17412  case 1610:
17413 #line 10969 "parser.y" /* yacc.c:1646 */
17414  { (yyval) = cb_null; }
17415 #line 17337 "parser.c" /* yacc.c:1646 */
17416  break;
17417 
17418  case 1611:
17419 #line 10974 "parser.y" /* yacc.c:1646 */
17420  {
17421  (yyval) = (yyvsp[0]);
17422  }
17423 #line 17345 "parser.c" /* yacc.c:1646 */
17424  break;
17425 
17426  case 1612:
17427 #line 10978 "parser.y" /* yacc.c:1646 */
17428  {
17429  struct cb_literal *l;
17430 
17431  if (CB_LITERAL_P ((yyvsp[0]))) {
17432  /* We must not alter the original definition */
17433  l = cobc_parse_malloc (sizeof(struct cb_literal));
17434  *l = *(CB_LITERAL((yyvsp[0])));
17435  l->all = 1;
17436  (yyval) = CB_TREE (l);
17437  } else {
17438  (yyval) = (yyvsp[0]);
17439  }
17440  }
17441 #line 17363 "parser.c" /* yacc.c:1646 */
17442  break;
17443 
17444  case 1613:
17445 #line 10995 "parser.y" /* yacc.c:1646 */
17446  {
17447  (yyval) = (yyvsp[0]);
17448  }
17449 #line 17371 "parser.c" /* yacc.c:1646 */
17450  break;
17451 
17452  case 1614:
17453 #line 10999 "parser.y" /* yacc.c:1646 */
17454  {
17455  (yyval) = cb_concat_literals ((yyvsp[-2]), (yyvsp[0]));
17456  }
17457 #line 17379 "parser.c" /* yacc.c:1646 */
17458  break;
17459 
17460  case 1615:
17461 #line 11005 "parser.y" /* yacc.c:1646 */
17462  { (yyval) = (yyvsp[0]); }
17463 #line 17385 "parser.c" /* yacc.c:1646 */
17464  break;
17465 
17466  case 1616:
17467 #line 11006 "parser.y" /* yacc.c:1646 */
17468  { (yyval) = cb_space; }
17469 #line 17391 "parser.c" /* yacc.c:1646 */
17470  break;
17471 
17472  case 1617:
17473 #line 11007 "parser.y" /* yacc.c:1646 */
17474  { (yyval) = cb_zero; }
17475 #line 17397 "parser.c" /* yacc.c:1646 */
17476  break;
17477 
17478  case 1618:
17479 #line 11008 "parser.y" /* yacc.c:1646 */
17480  { (yyval) = cb_quote; }
17481 #line 17403 "parser.c" /* yacc.c:1646 */
17482  break;
17483 
17484  case 1619:
17485 #line 11009 "parser.y" /* yacc.c:1646 */
17486  { (yyval) = cb_high; }
17487 #line 17409 "parser.c" /* yacc.c:1646 */
17488  break;
17489 
17490  case 1620:
17491 #line 11010 "parser.y" /* yacc.c:1646 */
17492  { (yyval) = cb_low; }
17493 #line 17415 "parser.c" /* yacc.c:1646 */
17494  break;
17495 
17496  case 1621:
17497 #line 11011 "parser.y" /* yacc.c:1646 */
17498  { (yyval) = cb_null; }
17499 #line 17421 "parser.c" /* yacc.c:1646 */
17500  break;
17501 
17502  case 1622:
17503 #line 11018 "parser.y" /* yacc.c:1646 */
17504  {
17505  (yyval) = cb_build_intrinsic ((yyvsp[-1]), NULL, (yyvsp[0]), 0);
17506  }
17507 #line 17429 "parser.c" /* yacc.c:1646 */
17508  break;
17509 
17510  case 1623:
17511 #line 11022 "parser.y" /* yacc.c:1646 */
17512  {
17513  (yyval) = cb_build_intrinsic ((yyvsp[-4]), CB_LIST_INIT ((yyvsp[-2])), (yyvsp[0]), 0);
17514  }
17515 #line 17437 "parser.c" /* yacc.c:1646 */
17516  break;
17517 
17518  case 1624:
17519 #line 11026 "parser.y" /* yacc.c:1646 */
17520  {
17521  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17522  }
17523 #line 17445 "parser.c" /* yacc.c:1646 */
17524  break;
17525 
17526  case 1625:
17527 #line 11030 "parser.y" /* yacc.c:1646 */
17528  {
17529  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17530  }
17531 #line 17453 "parser.c" /* yacc.c:1646 */
17532  break;
17533 
17534  case 1626:
17535 #line 11034 "parser.y" /* yacc.c:1646 */
17536  {
17537  (yyval) = cb_build_intrinsic ((yyvsp[-3]), (yyvsp[-1]), NULL, 0);
17538  }
17539 #line 17461 "parser.c" /* yacc.c:1646 */
17540  break;
17541 
17542  case 1627:
17543 #line 11038 "parser.y" /* yacc.c:1646 */
17544  {
17545  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17546  }
17547 #line 17469 "parser.c" /* yacc.c:1646 */
17548  break;
17549 
17550  case 1628:
17551 #line 11042 "parser.y" /* yacc.c:1646 */
17552  {
17553  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17554  }
17555 #line 17477 "parser.c" /* yacc.c:1646 */
17556  break;
17557 
17558  case 1629:
17559 #line 11046 "parser.y" /* yacc.c:1646 */
17560  {
17561  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17562  }
17563 #line 17485 "parser.c" /* yacc.c:1646 */
17564  break;
17565 
17566  case 1630:
17567 #line 11050 "parser.y" /* yacc.c:1646 */
17568  {
17569  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17570  }
17571 #line 17493 "parser.c" /* yacc.c:1646 */
17572  break;
17573 
17574  case 1631:
17575 #line 11054 "parser.y" /* yacc.c:1646 */
17576  {
17577  (yyval) = cb_build_intrinsic ((yyvsp[-4]), (yyvsp[-2]), (yyvsp[0]), 0);
17578  }
17579 #line 17501 "parser.c" /* yacc.c:1646 */
17580  break;
17581 
17582  case 1632:
17583 #line 11058 "parser.y" /* yacc.c:1646 */
17584  {
17585  (yyval) = cb_build_intrinsic ((yyvsp[-1]), (yyvsp[0]), NULL, 0);
17586  }
17587 #line 17509 "parser.c" /* yacc.c:1646 */
17588  break;
17589 
17590  case 1633:
17591 #line 11062 "parser.y" /* yacc.c:1646 */
17592  {
17593  (yyval) = cb_build_intrinsic ((yyvsp[-1]), (yyvsp[0]), NULL, 1);
17594  }
17595 #line 17517 "parser.c" /* yacc.c:1646 */
17596  break;
17597 
17598  case 1643:
17599 #line 11087 "parser.y" /* yacc.c:1646 */
17600  {
17601  (yyval) = NULL;
17602  }
17603 #line 17525 "parser.c" /* yacc.c:1646 */
17604  break;
17605 
17606  case 1644:
17607 #line 11091 "parser.y" /* yacc.c:1646 */
17608  {
17609  (yyval) = CB_BUILD_PAIR ((yyvsp[-2]), NULL);
17610  }
17611 #line 17533 "parser.c" /* yacc.c:1646 */
17612  break;
17613 
17614  case 1645:
17615 #line 11095 "parser.y" /* yacc.c:1646 */
17616  {
17617  (yyval) = CB_BUILD_PAIR ((yyvsp[-3]), (yyvsp[-1]));
17618  }
17619 #line 17541 "parser.c" /* yacc.c:1646 */
17620  break;
17621 
17622  case 1646:
17623 #line 11102 "parser.y" /* yacc.c:1646 */
17624  {
17625  (yyval) = NULL;
17626  }
17627 #line 17549 "parser.c" /* yacc.c:1646 */
17628  break;
17629 
17630  case 1647:
17631 #line 11106 "parser.y" /* yacc.c:1646 */
17632  {
17633  (yyval) = (yyvsp[-1]);
17634  }
17635 #line 17557 "parser.c" /* yacc.c:1646 */
17636  break;
17637 
17638  case 1648:
17639 #line 11110 "parser.y" /* yacc.c:1646 */
17640  {
17641  (yyval) = NULL;
17642  }
17643 #line 17565 "parser.c" /* yacc.c:1646 */
17644  break;
17645 
17646  case 1649:
17647 #line 11117 "parser.y" /* yacc.c:1646 */
17648  {
17649  cb_tree x;
17650 
17651  x = CB_LIST_INIT ((yyvsp[0]));
17652  (yyval) = cb_list_add (x, cb_int0);
17653  }
17654 #line 17576 "parser.c" /* yacc.c:1646 */
17655  break;
17656 
17657  case 1650:
17658 #line 11124 "parser.y" /* yacc.c:1646 */
17659  {
17660  cb_tree x;
17661 
17662  x = CB_LIST_INIT ((yyvsp[-2]));
17663  (yyval) = cb_list_add (x, cb_int1);
17664  }
17665 #line 17587 "parser.c" /* yacc.c:1646 */
17666  break;
17667 
17668  case 1651:
17669 #line 11131 "parser.y" /* yacc.c:1646 */
17670  {
17671  cb_tree x;
17672 
17673  x = CB_LIST_INIT ((yyvsp[-2]));
17674  (yyval) = cb_list_add (x, cb_int2);
17675  }
17676 #line 17598 "parser.c" /* yacc.c:1646 */
17677  break;
17678 
17679  case 1652:
17680 #line 11141 "parser.y" /* yacc.c:1646 */
17681  {
17682  cb_tree x;
17683 
17684  x = CB_LIST_INIT ((yyvsp[0]));
17685  (yyval) = cb_list_add (x, cb_null);
17686  }
17687 #line 17609 "parser.c" /* yacc.c:1646 */
17688  break;
17689 
17690  case 1653:
17691 #line 11148 "parser.y" /* yacc.c:1646 */
17692  {
17693  cb_tree x;
17694 
17695  x = CB_LIST_INIT ((yyvsp[-2]));
17696  (yyval) = cb_list_add (x, (yyvsp[0]));
17697  }
17698 #line 17620 "parser.c" /* yacc.c:1646 */
17699  break;
17700 
17701  case 1654:
17702 #line 11158 "parser.y" /* yacc.c:1646 */
17703  {
17704  cb_tree x;
17705 
17706  x = CB_LIST_INIT ((yyvsp[0]));
17707  (yyval) = cb_list_add (x, cb_null);
17708  }
17709 #line 17631 "parser.c" /* yacc.c:1646 */
17710  break;
17711 
17712  case 1655:
17713 #line 11165 "parser.y" /* yacc.c:1646 */
17714  {
17715  cb_tree x;
17716 
17717  x = CB_LIST_INIT ((yyvsp[-2]));
17718  (yyval) = cb_list_add (x, cb_ref ((yyvsp[0])));
17719  }
17720 #line 17642 "parser.c" /* yacc.c:1646 */
17721  break;
17722 
17723  case 1656:
17724 #line 11175 "parser.y" /* yacc.c:1646 */
17725  {
17726  (yyval) = cb_list_add ((yyvsp[0]), cb_int0);
17727  }
17728 #line 17650 "parser.c" /* yacc.c:1646 */
17729  break;
17730 
17731  case 1657:
17732 #line 11179 "parser.y" /* yacc.c:1646 */
17733  {
17734  const int num_args = cb_list_length ((yyvsp[-2]));
17735 
17736  if (num_args == 4) {
17737  cb_error_x ((yyvsp[-2]), _("Cannot specify offset and SYSTEM-OFFSET at the same time."));
17738  }
17739 
17740  (yyval) = cb_list_add ((yyvsp[-2]), cb_int1);
17741  }
17742 #line 17664 "parser.c" /* yacc.c:1646 */
17743  break;
17744 
17745  case 1658:
17746 #line 11192 "parser.y" /* yacc.c:1646 */
17747  {
17748  (yyval) = cb_list_add ((yyvsp[0]), cb_int0);
17749  }
17750 #line 17672 "parser.c" /* yacc.c:1646 */
17751  break;
17752 
17753  case 1659:
17754 #line 11196 "parser.y" /* yacc.c:1646 */
17755  {
17756  const int num_args = cb_list_length ((yyvsp[-2]));
17757 
17758  if (num_args == 3) {
17759  cb_error_x ((yyvsp[-2]), _("Cannot specify offset and SYSTEM-OFFSET at the same time."));
17760  }
17761 
17762  (yyval) = cb_list_add ((yyvsp[-2]), cb_int1);
17763  }
17764 #line 17686 "parser.c" /* yacc.c:1646 */
17765  break;
17766 
17767  case 1660:
17768 #line 11210 "parser.y" /* yacc.c:1646 */
17769  {
17770  non_const_word = 1;
17771  }
17772 #line 17694 "parser.c" /* yacc.c:1646 */
17773  break;
17774 
17775  case 1661:
17776 #line 11218 "parser.y" /* yacc.c:1646 */
17777  { (yyval) = cb_int0; }
17778 #line 17700 "parser.c" /* yacc.c:1646 */
17779  break;
17780 
17781  case 1662:
17782 #line 11219 "parser.y" /* yacc.c:1646 */
17783  { (yyval) = cb_int1; }
17784 #line 17706 "parser.c" /* yacc.c:1646 */
17785  break;
17786 
17787  case 1663:
17788 #line 11223 "parser.y" /* yacc.c:1646 */
17789  { (yyval) = cb_int0; }
17790 #line 17712 "parser.c" /* yacc.c:1646 */
17791  break;
17792 
17793  case 1664:
17794 #line 11224 "parser.y" /* yacc.c:1646 */
17795  { (yyval) = cb_int1; }
17796 #line 17718 "parser.c" /* yacc.c:1646 */
17797  break;
17798 
17799  case 1665:
17800 #line 11228 "parser.y" /* yacc.c:1646 */
17801  { (yyval) = NULL; }
17802 #line 17724 "parser.c" /* yacc.c:1646 */
17803  break;
17804 
17805  case 1666:
17806 #line 11229 "parser.y" /* yacc.c:1646 */
17807  { (yyval) = cb_int1; }
17808 #line 17730 "parser.c" /* yacc.c:1646 */
17809  break;
17810 
17811  case 1667:
17812 #line 11234 "parser.y" /* yacc.c:1646 */
17813  {
17814  (yyval) = NULL;
17815  }
17816 #line 17738 "parser.c" /* yacc.c:1646 */
17817  break;
17818 
17819  case 1668:
17820 #line 11238 "parser.y" /* yacc.c:1646 */
17821  {
17822  (yyval) = (yyvsp[0]);
17823  }
17824 #line 17746 "parser.c" /* yacc.c:1646 */
17825  break;
17826 
17827  case 1669:
17828 #line 11245 "parser.y" /* yacc.c:1646 */
17829  {
17830  (yyval) = NULL;
17831  }
17832 #line 17754 "parser.c" /* yacc.c:1646 */
17833  break;
17834 
17835  case 1670:
17836 #line 11249 "parser.y" /* yacc.c:1646 */
17837  {
17838  (yyval) = (yyvsp[0]);
17839  }
17840 #line 17762 "parser.c" /* yacc.c:1646 */
17841  break;
17842 
17843  case 1671:
17844 #line 11256 "parser.y" /* yacc.c:1646 */
17845  { (yyval) = cb_int0; }
17846 #line 17768 "parser.c" /* yacc.c:1646 */
17847  break;
17848 
17849  case 1672:
17850 #line 11257 "parser.y" /* yacc.c:1646 */
17851  { (yyval) = cb_int1; }
17852 #line 17774 "parser.c" /* yacc.c:1646 */
17853  break;
17854 
17855  case 1673:
17856 #line 11258 "parser.y" /* yacc.c:1646 */
17857  { (yyval) = cb_int2; }
17858 #line 17780 "parser.c" /* yacc.c:1646 */
17859  break;
17860 
17861  case 1674:
17862 #line 11262 "parser.y" /* yacc.c:1646 */
17863  { (yyval) = NULL; }
17864 #line 17786 "parser.c" /* yacc.c:1646 */
17865  break;
17866 
17867  case 1675:
17868 #line 11263 "parser.y" /* yacc.c:1646 */
17869  { (yyval) = cb_true; }
17870 #line 17792 "parser.c" /* yacc.c:1646 */
17871  break;
17872 
17873  case 1676:
17874 #line 11267 "parser.y" /* yacc.c:1646 */
17875  { (yyval) = cb_int (cb_flag_optional_file); }
17876 #line 17798 "parser.c" /* yacc.c:1646 */
17877  break;
17878 
17879  case 1677:
17880 #line 11268 "parser.y" /* yacc.c:1646 */
17881  { (yyval) = cb_int1; }
17882 #line 17804 "parser.c" /* yacc.c:1646 */
17883  break;
17884 
17885  case 1678:
17886 #line 11269 "parser.y" /* yacc.c:1646 */
17887  { (yyval) = cb_int0; }
17888 #line 17810 "parser.c" /* yacc.c:1646 */
17889  break;
17890 
17891  case 1679:
17892 #line 11274 "parser.y" /* yacc.c:1646 */
17893  {
17894  (yyval) = cb_int0;
17895  }
17896 #line 17818 "parser.c" /* yacc.c:1646 */
17897  break;
17898 
17899  case 1680:
17900 #line 11278 "parser.y" /* yacc.c:1646 */
17901  {
17902  if ((yyvsp[0])) {
17903  (yyval) = (yyvsp[0]);
17904  } else {
17905  (yyval) = cb_int (COB_STORE_ROUND);
17906  }
17907  cobc_cs_check = 0;
17908  }
17909 #line 17831 "parser.c" /* yacc.c:1646 */
17910  break;
17911 
17912  case 1681:
17913 #line 11290 "parser.y" /* yacc.c:1646 */
17914  {
17915  (yyval) = NULL;
17916  cobc_cs_check = 0;
17917  }
17918 #line 17840 "parser.c" /* yacc.c:1646 */
17919  break;
17920 
17921  case 1682:
17922 #line 11295 "parser.y" /* yacc.c:1646 */
17923  {
17924  (yyval) = (yyvsp[0]);
17925  cobc_cs_check = 0;
17926  }
17927 #line 17849 "parser.c" /* yacc.c:1646 */
17928  break;
17929 
17930  case 1683:
17931 #line 11303 "parser.y" /* yacc.c:1646 */
17932  {
17934  }
17935 #line 17857 "parser.c" /* yacc.c:1646 */
17936  break;
17937 
17938  case 1684:
17939 #line 11307 "parser.y" /* yacc.c:1646 */
17940  {
17942  }
17943 #line 17865 "parser.c" /* yacc.c:1646 */
17944  break;
17945 
17946  case 1685:
17947 #line 11311 "parser.y" /* yacc.c:1646 */
17948  {
17950  }
17951 #line 17873 "parser.c" /* yacc.c:1646 */
17952  break;
17953 
17954  case 1686:
17955 #line 11315 "parser.y" /* yacc.c:1646 */
17956  {
17958  }
17959 #line 17881 "parser.c" /* yacc.c:1646 */
17960  break;
17961 
17962  case 1687:
17963 #line 11319 "parser.y" /* yacc.c:1646 */
17964  {
17966  }
17967 #line 17889 "parser.c" /* yacc.c:1646 */
17968  break;
17969 
17970  case 1688:
17971 #line 11323 "parser.y" /* yacc.c:1646 */
17972  {
17974  }
17975 #line 17897 "parser.c" /* yacc.c:1646 */
17976  break;
17977 
17978  case 1689:
17979 #line 11327 "parser.y" /* yacc.c:1646 */
17980  {
17982  }
17983 #line 17905 "parser.c" /* yacc.c:1646 */
17984  break;
17985 
17986  case 1690:
17987 #line 11331 "parser.y" /* yacc.c:1646 */
17988  {
17990  }
17991 #line 17913 "parser.c" /* yacc.c:1646 */
17992  break;
17993 
17994  case 1691:
17995 #line 11337 "parser.y" /* yacc.c:1646 */
17996  { (yyval) = NULL; }
17997 #line 17919 "parser.c" /* yacc.c:1646 */
17998  break;
17999 
18000  case 1692:
18001 #line 11338 "parser.y" /* yacc.c:1646 */
18002  { (yyval) = cb_int1; }
18003 #line 17925 "parser.c" /* yacc.c:1646 */
18004  break;
18005 
18006 
18007 #line 17929 "parser.c" /* yacc.c:1646 */
18008  default: break;
18009  }
18010  /* User semantic actions sometimes alter yychar, and that requires
18011  that yytoken be updated with the new translation. We take the
18012  approach of translating immediately before every use of yytoken.
18013  One alternative is translating here after every semantic action,
18014  but that translation would be missed if the semantic action invokes
18015  YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
18016  if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
18017  incorrect destructor might then be invoked immediately. In the
18018  case of YYERROR or YYBACKUP, subsequent parser actions might lead
18019  to an incorrect destructor call or verbose syntax error message
18020  before the lookahead is translated. */
18021  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
18022 
18023  YYPOPSTACK (yylen);
18024  yylen = 0;
18025  YY_STACK_PRINT (yyss, yyssp);
18026 
18027  *++yyvsp = yyval;
18028 
18029  /* Now 'shift' the result of the reduction. Determine what state
18030  that goes to, based on the state we popped back to and the rule
18031  number reduced by. */
18032 
18033  yyn = yyr1[yyn];
18034 
18035  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
18036  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
18037  yystate = yytable[yystate];
18038  else
18039  yystate = yydefgoto[yyn - YYNTOKENS];
18040 
18041  goto yynewstate;
18042 
18043 
18044 /*--------------------------------------.
18045 | yyerrlab -- here on detecting error. |
18046 `--------------------------------------*/
18047 yyerrlab:
18048  /* Make sure we have latest lookahead translation. See comments at
18049  user semantic actions for why this is necessary. */
18050  yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
18051 
18052  /* If not already recovering from an error, report this error. */
18053  if (!yyerrstatus)
18054  {
18055  ++yynerrs;
18056 #if ! YYERROR_VERBOSE
18057  yyerror (YY_("syntax error"));
18058 #else
18059 # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
18060  yyssp, yytoken)
18061  {
18062  char const *yymsgp = YY_("syntax error");
18063  int yysyntax_error_status;
18064  yysyntax_error_status = YYSYNTAX_ERROR;
18065  if (yysyntax_error_status == 0)
18066  yymsgp = yymsg;
18067  else if (yysyntax_error_status == 1)
18068  {
18069  if (yymsg != yymsgbuf)
18070  YYSTACK_FREE (yymsg);
18071  yymsg = (char *) YYSTACK_ALLOC (yymsg_alloc);
18072  if (!yymsg)
18073  {
18074  yymsg = yymsgbuf;
18075  yymsg_alloc = sizeof yymsgbuf;
18076  yysyntax_error_status = 2;
18077  }
18078  else
18079  {
18080  yysyntax_error_status = YYSYNTAX_ERROR;
18081  yymsgp = yymsg;
18082  }
18083  }
18084  yyerror (yymsgp);
18085  if (yysyntax_error_status == 2)
18086  goto yyexhaustedlab;
18087  }
18088 # undef YYSYNTAX_ERROR
18089 #endif
18090  }
18091 
18092 
18093 
18094  if (yyerrstatus == 3)
18095  {
18096  /* If just tried and failed to reuse lookahead token after an
18097  error, discard it. */
18098 
18099  if (yychar <= YYEOF)
18100  {
18101  /* Return failure if at end of input. */
18102  if (yychar == YYEOF)
18103  YYABORT;
18104  }
18105  else
18106  {
18107  yydestruct ("Error: discarding",
18108  yytoken, &yylval);
18109  yychar = YYEMPTY;
18110  }
18111  }
18112 
18113  /* Else will try to reuse lookahead token after shifting the error
18114  token. */
18115  goto yyerrlab1;
18116 
18117 
18118 /*---------------------------------------------------.
18119 | yyerrorlab -- error raised explicitly by YYERROR. |
18120 `---------------------------------------------------*/
18121 yyerrorlab:
18122 
18123  /* Pacify compilers like GCC when the user code never invokes
18124  YYERROR and the label yyerrorlab therefore never appears in user
18125  code. */
18126  if (/*CONSTCOND*/ 0)
18127  goto yyerrorlab;
18128 
18129  /* Do not reclaim the symbols of the rule whose action triggered
18130  this YYERROR. */
18131  YYPOPSTACK (yylen);
18132  yylen = 0;
18133  YY_STACK_PRINT (yyss, yyssp);
18134  yystate = *yyssp;
18135  goto yyerrlab1;
18136 
18137 
18138 /*-------------------------------------------------------------.
18139 | yyerrlab1 -- common code for both syntax error and YYERROR. |
18140 `-------------------------------------------------------------*/
18141 yyerrlab1:
18142  yyerrstatus = 3; /* Each real token shifted decrements this. */
18143 
18144  for (;;)
18145  {
18146  yyn = yypact[yystate];
18147  if (!yypact_value_is_default (yyn))
18148  {
18149  yyn += YYTERROR;
18150  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
18151  {
18152  yyn = yytable[yyn];
18153  if (0 < yyn)
18154  break;
18155  }
18156  }
18157 
18158  /* Pop the current state because it cannot handle the error token. */
18159  if (yyssp == yyss)
18160  YYABORT;
18161 
18162 
18163  yydestruct ("Error: popping",
18164  yystos[yystate], yyvsp);
18165  YYPOPSTACK (1);
18166  yystate = *yyssp;
18167  YY_STACK_PRINT (yyss, yyssp);
18168  }
18169 
18171  *++yyvsp = yylval;
18173 
18174 
18175  /* Shift the error token. */
18176  YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
18177 
18178  yystate = yyn;
18179  goto yynewstate;
18180 
18181 
18182 /*-------------------------------------.
18183 | yyacceptlab -- YYACCEPT comes here. |
18184 `-------------------------------------*/
18185 yyacceptlab:
18186  yyresult = 0;
18187  goto yyreturn;
18188 
18189 /*-----------------------------------.
18190 | yyabortlab -- YYABORT comes here. |
18191 `-----------------------------------*/
18192 yyabortlab:
18193  yyresult = 1;
18194  goto yyreturn;
18195 
18196 #if !defined yyoverflow || YYERROR_VERBOSE
18197 /*-------------------------------------------------.
18198 | yyexhaustedlab -- memory exhaustion comes here. |
18199 `-------------------------------------------------*/
18200 yyexhaustedlab:
18201  yyerror (YY_("memory exhausted"));
18202  yyresult = 2;
18203  /* Fall through. */
18204 #endif
18205 
18206 yyreturn:
18207  if (yychar != YYEMPTY)
18208  {
18209  /* Make sure we have latest lookahead translation. See comments at
18210  user semantic actions for why this is necessary. */
18211  yytoken = YYTRANSLATE (yychar);
18212  yydestruct ("Cleanup: discarding lookahead",
18213  yytoken, &yylval);
18214  }
18215  /* Do not reclaim the symbols of the rule whose action triggered
18216  this YYABORT or YYACCEPT. */
18217  YYPOPSTACK (yylen);
18218  YY_STACK_PRINT (yyss, yyssp);
18219  while (yyssp != yyss)
18220  {
18221  yydestruct ("Cleanup: popping",
18222  yystos[*yyssp], yyvsp);
18223  YYPOPSTACK (1);
18224  }
18225 #ifndef yyoverflow
18226  if (yyss != yyssa)
18227  YYSTACK_FREE (yyss);
18228 #endif
18229 #if YYERROR_VERBOSE
18230  if (yymsg != yymsgbuf)
18231  YYSTACK_FREE (yymsg);
18232 #endif
18233  return yyresult;
18234 }
#define COB_SCREEN_SCROLL_DOWN
Definition: common.h:917
unsigned int flag_justified
Definition: tree.h:706
int optional
Definition: tree.h:843
int indexes
Definition: tree.h:678
#define SYN_CLAUSE_10
Definition: parser.c:139
struct cb_label * handler_label
Definition: tree.h:805
#define COB_SCREEN_BLINK
Definition: common.h:903
unsigned int flag_is_debug_sect
Definition: tree.h:797
const char * name
Definition: tree.h:645
#define CB_CHAIN_PAIR(x, y, z)
Definition: tree.h:1855
#define TERM_SEARCH
Definition: parser.c:115
#define SYN_CLAUSE_6
Definition: parser.c:135
#define COBC_HD_I_O_CONTROL
Definition: parser.c:256
unsigned int flag_is_pointer
Definition: tree.h:710
#define CB_PAIR_X(x)
Definition: tree.h:1205
Definition: tree.h:1181
int occurs_max
Definition: tree.h:677
void cb_emit_sort_using(cb_tree, cb_tree)
Definition: typeck.c:8293
#define COB_STORE_AWAY_FROM_ZERO
Definition: common.h:871
cb_tree line_counter
Definition: tree.h:1215
#define CB_TREE(x)
Definition: tree.h:440
cb_tree returning
Definition: tree.h:1288
#define PENDING(x)
Definition: parser.c:86
#define CB_REFERENCE_P(x)
Definition: tree.h:902
struct cb_label * current_section
Definition: parser.c:170
#define CB_SIZES(x)
Definition: tree.h:1195
void cb_error_x(cb_tree x, const char *fmt,...)
Definition: error.c:233
cb_tree cb_true
Definition: tree.c:122
#define CB_LABEL(x)
Definition: tree.h:801
#define CB_SYSTEM_NAME(x)
Definition: tree.h:586
#define COB_GT
Definition: common.h:729
cb_tree cb_list_append(cb_tree l1, cb_tree l2)
Definition: tree.c:1305
#define SYN_CLAUSE_17
Definition: parser.c:146
static const yytype_int16 yypact[]
Definition: parser.c:2827
cb_tree cb_build_intrinsic(cb_tree name, cb_tree args, cb_tree refmod, const int isuser)
Definition: tree.c:3304
cb_tree cb_int1
Definition: tree.c:134
struct cb_field * local_storage
Definition: tree.h:1277
static void check_not_88_level(cb_tree x)
Definition: parser.c:1191
static void emit_default_displays_for_x_list(struct cb_list *x_list)
Definition: parser.c:1250
#define COBC_HD_PROCEDURE_DIVISION
Definition: parser.c:265
int record_max
Definition: tree.h:842
size_t cb_needs_01
Definition: field.c:37
void cb_emit_search(cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:7965
void cb_emit_accept_date_yyyymmdd(cb_tree)
Definition: typeck.c:4521
#define CB_INTEGER(x)
Definition: tree.h:522
cb_tree cb_build_perform_exit(struct cb_label *)
Definition: typeck.c:7574
#define COB_SCREEN_BELL
Definition: common.h:900
void cb_emit_accept_exception_status(cb_tree)
Definition: typeck.c:4494
#define CB_CALL_BY_REFERENCE
Definition: tree.h:44
cb_tree cb_build_comment(const char *str)
Definition: tree.c:1540
#define YY_(Msgid)
Definition: parser.c:1933
unsigned int flag_filler
Definition: tree.h:714
const char * cb_source_file
Definition: cobc.c:145
#define COB_STORE_NEAR_TOWARD_ZERO
Definition: common.h:874
unsigned int flag_is_pdiv_opt
Definition: tree.h:725
cb_tree cb_build_filler(void)
Definition: tree.c:2591
static struct cb_report * report_instance
Definition: parser.c:193
static unsigned int in_declaratives
Definition: parser.c:209
unsigned int flag_gen_debug
Definition: tree.h:1321
unsigned int flag_line_adv
Definition: tree.h:855
static unsigned int call_nothing
Definition: parser.c:240
#define SYN_CLAUSE_18
Definition: parser.c:147
#define CB_VALID_TREE(x)
Definition: tree.h:445
cb_tree report_list
Definition: tree.h:1262
static int has_relative_pos(struct cb_field const *field)
Definition: parser.c:1183
cb_tree mnemonic_spec_list
Definition: tree.h:1268
cb_tree cb_build_constant(cb_tree name, cb_tree value)
Definition: tree.c:2189
#define COB_STORE_NEAR_AWAY_FROM_ZERO
Definition: common.h:872
#define TERM_DIVIDE
Definition: parser.c:106
static void set_up_func_prototype(cb_tree prototype_name, cb_tree ext_name, const int is_current_func)
Definition: parser.c:943
unsigned int flag_any_length
Definition: tree.h:712
void * cobc_parse_malloc(const size_t size)
Definition: cobc.c:809
void cb_validate_program_body(struct cb_program *)
Definition: typeck.c:2554
unsigned int flag_global
Definition: tree.h:853
#define SYN_CLAUSE_13
Definition: parser.c:142
unsigned int flag_initial
Definition: tree.h:1307
#define CB_FIELD_ADD(x, y)
Definition: tree.h:1856
#define YYNTOKENS
Definition: parser.c:2125
void cb_warning_x(cb_tree x, const char *fmt,...)
Definition: error.c:222
void cb_emit_set_on_off(cb_tree, cb_tree)
Definition: typeck.c:8124
cb_tree cb_norm_high
Definition: tree.c:131
struct cb_field * sister
Definition: tree.h:653
static int call_mode
Definition: parser.c:224
static cb_tree qualifier
Definition: parser.c:203
#define COB_CLOSE_UNIT_REMOVAL
Definition: common.h:796
unsigned int flag_global_use
Definition: tree.h:1312
static int first_nested_program
Definition: parser.c:223
#define CB_CALL_BY_CONTENT
Definition: tree.h:45
cb_tree screen_backg
Definition: tree.h:668
void cb_emit_write(cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8604
#define MAX_FD_RECORD
Definition: common.h:556
unsigned int flag_no_based
Definition: tree.h:1149
cb_tree cb_build_unstring_delimited(cb_tree, cb_tree)
Definition: typeck.c:8578
#define emit_statement(x)
Definition: parser.c:88
int cb_exp_line
Definition: parser.c:174
#define COB_LOCK_AUTOMATIC
Definition: common.h:775
#define CB_LITERAL(x)
Definition: tree.h:601
static cb_tree get_default_display_device()
Definition: parser.c:1233
int lock_mode
Definition: tree.h:846
unsigned int flag_global
Definition: tree.h:782
void cb_emit_move_corresponding(cb_tree, cb_tree)
Definition: typeck.c:4175
void cb_add_common_prog(struct cb_program *prog)
Definition: tree.c:1469
int occurs_min
Definition: tree.h:676
void cb_emit_call(cb_tree, cb_tree, cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:4748
#define CB_FIELD_PTR(x)
Definition: tree.h:745
#define SYN_CLAUSE_4
Definition: parser.c:133
static const yytype_uint16 yydefact[]
Definition: parser.c:3111
static unsigned int needs_debug_item
Definition: parser.c:237
#define CB_CONV_STDCALL
Definition: tree.h:135
cb_tree cb_build_class_name(cb_tree name, cb_tree list)
Definition: tree.c:1622
void cb_emit_stop_run(cb_tree)
Definition: typeck.c:8482
#define COBC_HD_FILE_CONTROL
Definition: parser.c:255
Definition: parser.c:1856
static void check_attribs_with_conflict(cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is, const char *attrib_name, const int attrib, const char *confl_name, const int confl_attrib)
Definition: parser.c:1125
#define CB_SIZE_8
Definition: tree.h:52
int cb_get_int(const cb_tree x)
Definition: tree.c:1101
static int check_line_col_duplicate
Definition: parser.c:232
#define SYN_CLAUSE_9
Definition: parser.c:138
cb_tree reference_list
Definition: tree.h:1255
#define COB_SCREEN_NO_ECHO
Definition: common.h:919
#define YY_STACK_PRINT(Bottom, Top)
Definition: parser.c:6244
#define CB_CS_ASSIGN
Definition: cobc.h:105
cb_tree screen_from
Definition: tree.h:665
unsigned int flag_synchronized
Definition: tree.h:715
cb_tree cb_norm_low
Definition: tree.c:130
int warningopt
Definition: cobc.c:176
void cb_emit_move(cb_tree, cb_tree)
Definition: typeck.c:7416
struct cb_file * file
Definition: tree.h:1214
unsigned int cb_verify(const enum cb_support, const char *)
Definition: error.c:246
int cb_id
Definition: cobc.c:163
cb_tree cb_build_list(cb_tree purpose, cb_tree value, cb_tree chain)
Definition: tree.c:1293
void cb_emit_open(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:7461
unsigned int flag_fatal_check
Definition: tree.h:786
void cb_emit_set_false(cb_tree)
Definition: typeck.c:8171
unsigned int flag_real_label
Definition: tree.h:781
#define CB_PURPOSE_INT(x)
Definition: tree.h:1197
static unsigned int report_count
Definition: parser.c:212
cb_tree exit_label
Definition: tree.h:771
unsigned int flag_is_returning
Definition: tree.h:737
cb_tree cb_ref(cb_tree x)
Definition: tree.c:2653
cb_tree cb_build_field_tree(cb_tree level, cb_tree name, struct cb_field *last_field, enum cb_storage storage, struct cb_file *fn, const int expl_level)
Definition: field.c:90
unsigned int flag_fileid
Definition: tree.h:852
#define COB_STORE_ROUND
Definition: common.h:867
const char * source_file
Definition: tree.h:431
#define COB_NE
Definition: common.h:731
char * cb_name(cb_tree x)
Definition: tree.c:735
cb_tree cb_build_expr(cb_tree)
Definition: typeck.c:3136
void cb_emit_accept_mnemonic(cb_tree, cb_tree)
Definition: typeck.c:4614
#define CB_SIZE_2
Definition: tree.h:50
#define COB_STORE_NEAR_EVEN
Definition: common.h:873
#define CB_PAIR_Y(x)
Definition: tree.h:1206
#define CB_ALPHABET_ASCII
Definition: tree.h:108
cb_tree cb_build_write_advancing_lines(cb_tree, cb_tree)
Definition: typeck.c:8685
int nested_level
Definition: tree.h:1295
void cb_emit_read(cb_tree, cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:7586
struct cb_picture * pic
Definition: tree.h:659
#define COB_LOCK_MANUAL
Definition: common.h:774
#define CB_BUILD_FUNCALL_1(f, a1)
Definition: tree.h:1799
#define COB_SCREEN_COLUMN_PLUS
Definition: common.h:897
#define YY_REDUCE_PRINT(Rule)
Definition: parser.c:6275
#define SYN_CLAUSE_1
Definition: parser.c:130
#define TERM_ACCEPT
Definition: parser.c:100
cb_tree cb_build_cond(cb_tree)
Definition: typeck.c:3737
cb_tree lattop
Definition: tree.h:835
cb_tree cb_zero
Definition: tree.c:125
short int yytype_int16
Definition: parser.c:1907
cb_tree cb_build_address(cb_tree)
Definition: typeck.c:1357
#define CB_PICTURE(x)
Definition: tree.h:631
static int next_label_id
Definition: parser.c:218
cb_tree crt_status
Definition: tree.h:1287
#define CB_ALPHABET_NATIVE
Definition: tree.h:107
static void clean_up_program(cb_tree name, const unsigned char type)
Definition: parser.c:866
unsigned int flag_main
Definition: tree.h:1305
void cb_emit_accept(cb_tree, cb_tree, struct cb_attr_struct *)
Definition: typeck.c:4341
#define COB_ORG_INDEXED
Definition: common.h:745
#define CB_PURPOSE(x)
Definition: tree.h:1192
#define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
Definition: parser.c:1983
cb_tree cb_build_tallying_characters(cb_tree)
Definition: typeck.c:5863
struct cb_alt_key * next
Definition: tree.h:812
struct cb_field * cb_resolve_redefines(struct cb_field *field, cb_tree redefines)
Definition: field.c:247
void cb_emit_inspect(cb_tree, cb_tree, cb_tree, const unsigned int)
Definition: typeck.c:5805
void cb_emit_allocate(cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:4668
void cb_emit_set_true(cb_tree)
Definition: typeck.c:8139
#define COB_CLOSE_UNIT
Definition: common.h:795
#define COB_SCREEN_LINE_MINUS
Definition: common.h:896
int handler_id
Definition: tree.h:1148
#define YYFINAL
Definition: parser.c:2120
void cb_emit_accept_day(cb_tree)
Definition: typeck.c:4530
struct cb_attr_struct * attr_ptr
Definition: tree.h:1147
cb_tree linage
Definition: tree.h:832
void cb_emit_get_environment(cb_tree, cb_tree)
Definition: typeck.c:4575
void cb_emit_accept_day_of_week(cb_tree)
Definition: typeck.c:4548
cb_tree cb_false
Definition: tree.c:123
#define COB_SELECT_STDIN
Definition: common.h:761
cb_tree file_list
Definition: tree.h:1252
#define COB_SCREEN_LEFTLINE
Definition: common.h:920
cb_tree cb_build_add(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:4015
enum cb_category cb_tree_category(cb_tree x)
Definition: tree.c:745
static unsigned int in_debugging
Definition: parser.c:210
cb_tree cb_any
Definition: tree.c:121
int last_detail
Definition: tree.h:1224
static void bit_set_attr(const cb_tree onoff, const int attrval)
Definition: parser.c:1065
int level
Definition: tree.h:673
unsigned char flag_is_global
Definition: tree.h:699
#define YYEMPTY
Definition: parser.c:6129
#define COB_SCREEN_FULL
Definition: common.h:906
void cb_emit_continue(void)
Definition: typeck.c:5031
#define COB_LE
Definition: common.h:728
#define SYN_CLAUSE_2
Definition: parser.c:131
cb_tree cb_quote
Definition: tree.c:132
#define CB_WORD_ITEMS(x)
Definition: tree.h:906
static enum cb_storage current_storage
Definition: parser.c:200
#define SYN_CLAUSE_20
Definition: parser.c:149
unsigned int flag_ext_assign
Definition: tree.h:851
cb_tree cb_space
Definition: tree.c:127
#define COB_FI
Definition: common.h:732
void cb_emit_command_line(cb_tree)
Definition: typeck.c:5133
static unsigned int needs_field_debug
Definition: parser.c:236
#define CB_CS_EXIT
Definition: cobc.h:112
#define COB_GE
Definition: common.h:730
cb_tree cb_build_perform_times(cb_tree)
Definition: typeck.c:7536
void cb_emit_accept_environment(cb_tree)
Definition: typeck.c:4587
#define CB_FILE(x)
Definition: tree.h:858
cb_tree cb_build_perform_once(cb_tree)
Definition: typeck.c:7523
#define yyclearin
Definition: parser.c:6128
unsigned int flag_screen
Definition: tree.h:1309
void cb_emit_arg_number(cb_tree)
Definition: typeck.c:5124
struct cb_program * current_program
Definition: parser.c:168
cb_tree cb_build_const_length(cb_tree)
Definition: typeck.c:1730
#define COB_SCREEN_OVERLINE
Definition: common.h:913
void cb_validate_program_environment(struct cb_program *)
Definition: typeck.c:1891
unsigned int flag_debugging
Definition: tree.h:1320
unsigned int flag_dummy_paragraph
Definition: tree.h:788
#define TERMINATOR_ERROR(x, z)
Definition: parser.c:124
void cb_emit_delete_file(cb_tree)
Definition: typeck.c:5076
#define CB_SIZE_4
Definition: tree.h:51
unsigned int flag_file_global
Definition: tree.h:1315
#define CB_LITERAL_P(x)
Definition: tree.h:602
#define SYN_CLAUSE_19
Definition: parser.c:148
cb_tree cb_build_perform_until(cb_tree, cb_tree)
Definition: typeck.c:7550
static cb_tree line_column
Definition: parser.c:244
static const yytype_uint16 yyr1[]
Definition: parser.c:5707
void cb_emit_sort_init(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8237
short all
Definition: tree.h:598
char * cb_to_cname(const char *s)
Definition: tree.c:705
const char * name
Definition: tree.h:1137
static struct cb_report * current_report
Definition: parser.c:192
static struct cb_file * current_file
Definition: parser.c:191
cb_tree debug_list
Definition: tree.h:1264
#define YY_SYMBOL_PRINT(Title, Type, Value, Location)
Definition: parser.c:6182
#define TERM_SUBTRACT
Definition: parser.c:118
static const yytype_int16 yytable[]
Definition: parser.c:3571
#define CB_VALUE(x)
Definition: tree.h:1193
void cb_emit_accept_name(cb_tree, cb_tree)
Definition: typeck.c:4635
#define YYSTACK_ALLOC
Definition: parser.c:2030
static cb_tree save_tree
Definition: parser.c:205
void cb_emit_set_to(cb_tree, cb_tree)
Definition: typeck.c:8019
#define CB_TREE_CLASS(x)
Definition: tree.h:442
void cb_emit_arithmetic(cb_tree, const int, cb_tree)
Definition: typeck.c:3465
static unsigned int check_unreached
Definition: parser.c:208
#define YYSYNTAX_ERROR
cb_tree cb_build_inspect_region_start(void)
Definition: typeck.c:5961
cb_tree cb_build_perform_forever(cb_tree)
Definition: typeck.c:7561
unsigned int flag_item_78
Definition: tree.h:711
void cb_emit_accept_command_line(cb_tree)
Definition: typeck.c:4566
struct cb_report * build_report(cb_tree name)
Definition: tree.c:2324
#define COB_ACCESS_DYNAMIC
Definition: common.h:752
int yychar
Definition: parser.c:6552
cb_tree cb_build_replacing_trailing(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5947
static void remove_attrib(int attrib)
Definition: parser.c:1166
#define COBC_HD_LINKAGE_SECTION
Definition: parser.c:261
#define CB_SIZE_AUTO
Definition: tree.h:48
#define COB_SCREEN_ERASE_EOL
Definition: common.h:904
static void check_set_usage(const enum cb_usage usage)
Definition: parser.c:1176
#define COBC_HD_CONFIGURATION_SECTION
Definition: parser.c:252
cb_tree cb_build_alphanumeric_literal(const void *data, const size_t size)
Definition: tree.c:1716
cb_tree cb_build_converting(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5954
cb_tree cb_build_sub(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:4058
cb_tree cb_build_replacing_characters(cb_tree, cb_tree)
Definition: typeck.c:5916
#define COBC_HD_WORKING_STORAGE_SECTION
Definition: parser.c:259
#define YYERROR
Definition: parser.c:6134
struct cb_alphabet_name * code_set
Definition: tree.h:840
int record_min
Definition: tree.h:841
#define YYEOF
Definition: parser.c:6130
#define CB_PERFORM(x)
Definition: tree.h:1118
void cb_emit_if(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5665
void cb_emit_evaluate(cb_tree, cb_tree)
Definition: typeck.c:5571
static unsigned int save_debug
Definition: parser.c:235
int cb_list_length(cb_tree l)
Definition: tree.c:1342
#define COB_SCREEN_UNDERLINE
Definition: common.h:912
cb_tree depending
Definition: tree.h:647
unsigned int flag_section
Definition: tree.h:777
#define SYN_CLAUSE_3
Definition: parser.c:132
static void set_up_use_file(struct cb_file *fileptr)
Definition: parser.c:498
cb_tree cb_build_numeric_literal(const int sign, const void *data, const int scale)
Definition: tree.c:1681
struct cb_file * build_file(cb_tree name)
Definition: tree.c:2344
cb_tree defined_prog_list
Definition: parser.c:172
#define TERM_COMPUTE
Definition: parser.c:103
cb_tree cb_build_perform_varying(cb_tree name, cb_tree from, cb_tree by, cb_tree until)
Definition: tree.c:3160
strict implicit external value
Definition: warning.def:54
unsigned int flag_return
Definition: tree.h:780
static int size_mode
Definition: parser.c:225
static const yytype_uint16 yystos[]
Definition: parser.c:5425
#define CB_FIELD_P(x)
Definition: tree.h:741
unsigned int flag_is_verified
Definition: tree.h:722
cb_tree function_spec_list
Definition: tree.h:1271
cb_tree cb_build_replacing_leading(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5933
int lines
Definition: tree.h:1219
#define CB_ALPHABET_NAME(x)
Definition: tree.h:550
cb_tree screen_column
Definition: tree.h:664
#define YYSTACK_BYTES(N)
Definition: parser.c:2075
#define YYDPRINTF(Args)
Definition: parser.c:6170
cb_tree cb_build_assignment_name(struct cb_file *, cb_tree)
Definition: typeck.c:1276
unsigned int flag_sign_leading
Definition: tree.h:704
unsigned int cobc_in_repository
Definition: parser.c:180
#define TERM_CALL
Definition: parser.c:102
void cobc_parse_free(void *prevptr)
Definition: cobc.c:885
void cb_emit_accept_time(cb_tree)
Definition: typeck.c:4557
#define CB_SIZE_1
Definition: tree.h:49
#define _(s)
Definition: cobcrun.c:59
#define SYN_CLAUSE_23
Definition: parser.c:152
#define COBC_HD_SPECIAL_NAMES
Definition: parser.c:253
#define COB_OPEN_EXTEND
Definition: common.h:787
#define COB_OPEN_INPUT
Definition: common.h:784
cb_tree lookup_system_name(const char *name)
Definition: reserved.c:2860
#define COB_SCREEN_REVERSE
Definition: common.h:910
Definition: tree.h:643
void cb_emit_initialize(cb_tree, cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5682
#define SYN_CLAUSE_7
Definition: parser.c:136
#define CB_CALL_BY_VALUE
Definition: tree.h:46
Definition: parser.c:1348
#define yytable_value_is_error(Yytable_value)
Definition: parser.c:2822
int footing
Definition: tree.h:1225
static int literal_value(cb_tree x)
Definition: parser.c:476
static size_t increment_depth(void)
Definition: parser.c:423
static cb_tree upon_value
Definition: parser.c:243
static int is_screen_field(cb_tree x)
Definition: parser.c:1207
#define CB_SIZE_UNSIGNED
Definition: tree.h:53
cb_tree reports
Definition: tree.h:831
yytype_int16 yyss_alloc
Definition: parser.c:2066
static cb_tree start_tree
Definition: parser.c:206
#define TERM_IF
Definition: parser.c:108
cb_tree cb_build_tallying_trailing(void)
Definition: typeck.c:5896
cb_tree cb_build_label(cb_tree name, struct cb_label *section)
Definition: tree.c:2988
void cb_init_tallying(void)
Definition: typeck.c:5849
#define CB_CHAIN(x)
Definition: tree.h:1194
Definition: parser.c:1698
static const yytype_int16 yycheck[]
Definition: parser.c:4482
static struct cb_field * description_field
Definition: parser.c:190
static cb_tree current_expr
Definition: parser.c:188
#define yyerrok
Definition: parser.c:6127
cb_tree cb_build_ppointer(cb_tree)
Definition: typeck.c:1824
EC ARGUMENT EC EC BOUND EC BOUND EC BOUND EC BOUND TABLE EC DATA EC DATA EC DATA PTR NULL
Definition: exception.def:95
Definition: tree.h:636
#define CB_TREE_TAG(x)
Definition: tree.h:441
unsigned int flag_external
Definition: tree.h:850
static unsigned int check_pic_duplicate
Definition: parser.c:230
#define COB_CLOSE_NO_REWIND
Definition: common.h:794
cb_tree cb_int4
Definition: tree.c:137
#define CB_REPORT_P(x)
Definition: tree.h:1229
unsigned int flag_statement
Definition: tree.h:792
#define COB_ORG_SEQUENTIAL
Definition: common.h:742
if sign
Definition: flag.def:42
void cb_emit_return(cb_tree, cb_tree)
Definition: typeck.c:7818
static int set_up_program(cb_tree id, cb_tree as_literal, const unsigned char type)
Definition: parser.c:777
Definition: parser.c:1559
#define TERM_WRITE
Definition: parser.c:120
static struct cb_field * current_field
Definition: parser.c:189
int screen_flag
Definition: tree.h:684
cb_tree cb_return_code
Definition: tree.h:1265
#define COB_SCREEN_LOWER
Definition: common.h:924
#define COB_LOCK_EXCLUSIVE
Definition: common.h:773
#define SYN_CLAUSE_11
Definition: parser.c:140
cb_tree cb_build_locale_name(cb_tree name, cb_tree list)
Definition: tree.c:1645
#define yylex
Definition: pplex.c:18
#define CB_CS_CALL
Definition: cobc.h:106
cb_tree locale_list
Definition: tree.h:1260
void cb_emit_start(cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8414
void cb_emit_sort_input(cb_tree)
Definition: typeck.c:8309
void cb_emit_free(cb_tree)
Definition: typeck.c:5588
void cb_emit_release(cb_tree, cb_tree)
Definition: typeck.c:7780
cb_tree cb_int0
Definition: tree.c:133
void cb_emit_ready_trace(void)
Definition: typeck.c:7690
#define CB_STATEMENT(x)
Definition: tree.h:1155
cb_tree latbot
Definition: tree.h:836
unsigned char prog_type
Definition: tree.h:1303
cb_tree cb_concat_literals(const cb_tree x1, const cb_tree x2)
Definition: tree.c:1729
void cb_emit_rollback(void)
Definition: typeck.c:7844
#define COB_STORE_TRUNCATION
Definition: common.h:878
#define CB_NAME(x)
Definition: tree.h:904
#define TERM_RETURN
Definition: parser.c:113
cb_tree page_counter
Definition: tree.h:1216
struct cb_field * cb_validate_78_item(struct cb_field *f, const cob_u32_t no78add)
Definition: field.c:1415
int first_detail
Definition: tree.h:1222
static unsigned int header_check
Definition: parser.c:239
unsigned int flag_occurs
Definition: tree.h:702
unsigned int flag_invalid
Definition: tree.h:716
#define CB_REFERENCE(x)
Definition: tree.h:901
cb_tree alphabet_name_list
Definition: tree.h:1256
static int zero_conflicting_flags(const int screen_flag, int parent_flag)
Definition: parser.c:1150
#define COB_ORG_RELATIVE
Definition: common.h:744
#define COB_CLOSE_LOCK
Definition: common.h:793
void cb_build_debug_item(void)
Definition: typeck.c:2243
cb_tree cb_one
Definition: tree.c:126
#define CB_BEFORE
Definition: tree.h:25
#define CB_CLASS_NAME_P(x)
Definition: tree.h:563
static unsigned int main_flag_set
Definition: parser.c:217
cb_tree cb_int3
Definition: tree.c:136
struct cb_program * handler_prog
Definition: tree.h:806
int dir
Definition: tree.h:640
static COB_INLINE COB_A_INLINE void check_not_highlight_and_lowlight(const int flags, const int flag_to_set)
Definition: parser.c:1005
void redefinition_error(cb_tree x)
Definition: error.c:284
#define COB_SCREEN_LOWLIGHT
Definition: common.h:908
int segment
Definition: tree.h:775
#define CB_PROGRAM_TYPE
Definition: tree.h:41
cb_tree exit_label
Definition: tree.h:1111
void cb_emit_reset_trace(void)
Definition: typeck.c:7699
cb_tree global_list
Definition: tree.h:1261
#define SYN_CLAUSE_8
Definition: parser.c:137
#define CB_CONV_STATIC_LINK
Definition: tree.h:132
int loop_counter
Definition: tree.h:1292
cb_tree cb_build_if_check_break(cb_tree, cb_tree)
Definition: typeck.c:5671
cb_tree cb_int(const int n)
Definition: tree.c:1488
void cb_emit_commit(void)
Definition: typeck.c:5023
static void check_repeated(const char *clause, const unsigned int bitval, unsigned int *already_seen)
Definition: parser.c:980
#define CB_FEATURE_CONVENTION
Definition: tree.h:197
void cb_emit_unstring(cb_tree, cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8552
#define YYABORT
Definition: parser.c:6133
#define TERM_STRING
Definition: parser.c:117
#define COB_ACCESS_SEQUENTIAL
Definition: common.h:751
#define TERM_DELETE
Definition: parser.c:104
cb_tree sharing
Definition: tree.h:825
cb_tree linage_ctr
Definition: tree.h:833
unsigned int flag_console_is_crt
Definition: tree.h:1319
#define CB_FILE_P(x)
Definition: tree.h:859
cb_tree latfoot
Definition: tree.h:834
int size
Definition: tree.h:672
Definition: tree.h:818
int non_const_word
Definition: parser.c:178
cb_tree entry_list
Definition: tree.h:1251
#define TERM_PERFORM
Definition: parser.c:110
void cb_emit_accept_arg_value(cb_tree)
Definition: typeck.c:4605
#define CB_ALPHABET_CUSTOM
Definition: tree.h:110
#define COB_SCREEN_INITIAL
Definition: common.h:918
static void clear_initial_values(void)
Definition: parser.c:641
int functions_are_all
Definition: parser.c:177
static void begin_statement(const char *name, const unsigned int term)
Definition: parser.c:271
#define TERMINATOR_CLEAR(x, z)
Definition: parser.c:125
unsigned char currency_symbol
Definition: tree.h:1301
cb_tree cb_build_reference(const char *name)
Definition: tree.c:2572
#define COB_SCREEN_REQUIRED
Definition: common.h:909
cb_tree cb_build_tallying_all(void)
Definition: typeck.c:5874
void finalize_file(struct cb_file *f, struct cb_field *records)
Definition: tree.c:2409
int cb_get_level(cb_tree x)
Definition: field.c:46
#define TERM_MULTIPLY
Definition: parser.c:109
unsigned int flag_any_numeric
Definition: tree.h:736
int duplicates
Definition: tree.h:814
#define yypact_value_is_default(Yystate)
Definition: parser.c:2817
struct cb_field * rename_thru
Definition: tree.h:655
static void yydestruct(const char *yymsg, int yytype, cb_tree *yyvaluep)
Definition: parser.c:6536
void cb_validate_88_item(struct cb_field *f)
Definition: field.c:1386
cb_tree cb_error_node
Definition: tree.c:140
cb_tree screen_to
Definition: tree.h:666
#define COB_DESCENDING
Definition: common.h:736
#define COB_OPEN_I_O
Definition: common.h:786
void cb_emit_search_all(cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:7985
cb_tree cb_build_display_name(cb_tree)
Definition: typeck.c:5362
#define COBC_HD_FILE_SECTION
Definition: parser.c:258
struct cb_field * parent
Definition: tree.h:651
void cb_emit_sort_finish(cb_tree)
Definition: typeck.c:8356
#define TERM_REWRITE
Definition: parser.c:114
cb_tree cb_build_write_advancing_mnemonic(cb_tree, cb_tree)
Definition: typeck.c:8701
cb_tree cb_build_tallying_data(cb_tree)
Definition: typeck.c:5856
cb_tree yylval
Definition: parser.c:6555
static cb_tree advancing_value
Definition: parser.c:242
void cb_emit_delete(cb_tree)
Definition: typeck.c:5039
#define EVAL_DEPTH
Definition: parser.c:163
const char * program_id
Definition: tree.h:1244
static unsigned int use_global_ind
Definition: parser.c:214
static int contains_only_screen_field(struct cb_list *x_list)
Definition: parser.c:1219
void cb_emit_perform(cb_tree, cb_tree)
Definition: typeck.c:7509
cb_tree class_name_list
Definition: tree.h:1258
#define COB_SCREEN_BLANK_LINE
Definition: common.h:901
unsigned int flag_segments
Definition: tree.h:1317
void cb_emit_goto(cb_tree, cb_tree)
Definition: typeck.c:5629
#define CB_DEVICE_CONSOLE
Definition: tree.h:156
unsigned int flag_blank_zero
Definition: tree.h:705
#define COBC_HD_LOCAL_STORAGE_SECTION
Definition: parser.c:260
#define CB_BUILD_CHAIN(x, y)
Definition: tree.h:1852
void cb_emit_set_up_down(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8106
cb_tree index_list
Definition: tree.h:650
cb_tree cb_build_replacing_all(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5926
#define COB_SCREEN_SECURE
Definition: common.h:911
void validate_file(struct cb_file *f, cb_tree name)
Definition: tree.c:2360
#define COB_SCREEN_HIGHLIGHT
Definition: common.h:907
void cb_error(const char *,...) COB_A_FORMAT12
Definition: error.c:98
#define COB_SCREEN_PROMPT
Definition: common.h:914
static unsigned int inspect_keyword
Definition: parser.c:216
unsigned int flag_recursive
Definition: tree.h:1308
#define COB_STORE_PROHIBITED
Definition: common.h:875
int access_mode
Definition: tree.h:845
#define SYN_CLAUSE_21
Definition: parser.c:150
#define COB_EQ
Definition: common.h:726
static unsigned int samearea
Definition: parser.c:215
static COB_INLINE COB_A_INLINE void check_screen_attr_with_conflict(const char *clause, const int bitval, const char *confl_clause, const int confl_bit)
Definition: parser.c:1049
Definition: parser.c:1394
static unsigned int current_linage
Definition: parser.c:211
#define COB_SCREEN_ERASE_EOS
Definition: common.h:905
static cb_tree next_label_list
Definition: parser.c:196
#define COBC_HD_ENVIRONMENT_DIVISION
Definition: parser.c:251
struct cb_field * cb_get_real_field(void)
Definition: field.c:1445
cb_tree label_list
Definition: tree.h:1254
unsigned int flag_chained
Definition: tree.h:1311
#define COBC_HD_INPUT_OUTPUT_SECTION
Definition: parser.c:254
#define COB_SCREEN_GRID
Definition: common.h:925
static unsigned int skip_statements
Definition: parser.c:233
#define YYSTACK_RELOCATE(Stack_alloc, Stack)
Definition: parser.c:2086
#define CB_INVALID_TREE(x)
Definition: tree.h:446
char * source_name
Definition: tree.h:1245
#define CB_FUNCTION_TYPE
Definition: tree.h:42
cb_tree file_status
Definition: tree.h:824
#define COB_SCREEN_LINE_PLUS
Definition: common.h:895
#define TERM_UNSTRING
Definition: parser.c:119
int special
Definition: tree.h:847
cb_tree assign
Definition: tree.h:823
static const yytype_int16 yydefgoto[]
Definition: parser.c:3481
#define CB_ADD_TO_CHAIN(x, y)
Definition: tree.h:1854
unsigned int flag_common
Definition: tree.h:1306
void cb_emit_set_attribute(cb_tree, const int, const int)
Definition: typeck.c:8207
#define YYTERROR
Definition: parser.c:6157
#define YYPOPSTACK(N)
static void screen_display(cob_screen *s, const int line, const int column)
Definition: screenio.c:1591
cb_tree key
Definition: tree.h:813
cb_tree cb_null
Definition: tree.c:124
#define COBC_HD_DATA_DIVISION
Definition: parser.c:257
static unsigned int check_duplicate
Definition: parser.c:228
#define COB_STORE_TOWARD_GREATER
Definition: common.h:876
cb_tree cb_build_unstring_into(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8587
void cb_emit_display(cb_tree, cb_tree, cb_tree, cb_tree, struct cb_attr_struct *)
Definition: typeck.c:5236
static int eval_inc2
Definition: parser.c:221
cb_tree screen_prompt
Definition: tree.h:669
cb_tree collating_sequence
Definition: tree.h:1284
int yynerrs
Definition: parser.c:6557
struct handler_struct global_handler[5]
Definition: tree.h:1283
#define TERM_READ
Definition: parser.c:111
cb_tree screen_line
Definition: tree.h:663
const char * ename
Definition: tree.h:646
cb_tree classification
Definition: tree.h:1285
#define CB_EXCEPTION_ENABLE(id)
Definition: cobc.h:243
unsigned int cobc_in_procedure
Definition: parser.c:179
cb_tree cb_build_display_mnemonic(cb_tree)
Definition: typeck.c:5340
#define CB_CS_DISPLAY
Definition: cobc.h:110
cb_tree cursor_pos
Definition: tree.h:1286
static int depth
Definition: parser.c:222
void cb_emit_display_omitted(cb_tree, struct cb_attr_struct *)
Definition: typeck.c:5217
cb_tree cb_build_binary_list(cb_tree l, const int op)
Definition: tree.c:2902
unsigned int flag_declaratives
Definition: tree.h:784
#define YYMAXDEPTH
Definition: parser.c:6305
static unsigned int start_debug
Definition: parser.c:234
#define COB_MAX_SUBSCRIPTS
Definition: codegen.c:44
cb_tree cb_build_tallying_leading(void)
Definition: typeck.c:5885
unsigned int flag_sign_separate
Definition: tree.h:703
#define TERM_EVALUATE
Definition: parser.c:107
#define COBC_HD_PROGRAM_ID
Definition: parser.c:266
#define yyerror
Definition: parser.c:84
cb_tree cb_high
Definition: tree.c:129
void cb_check_field_debug(cb_tree)
Definition: typeck.c:904
#define COB_LOCK_MULTIPLE
Definition: common.h:776
#define CB_REPORT(x)
Definition: tree.h:1228
void cb_emit_set_last_exception_to_off(void)
Definition: typeck.c:8229
int cb_category_is_alpha(cb_tree x)
Definition: tree.c:843
cb_tree cb_build_identifier(cb_tree, const int)
Definition: typeck.c:1426
int organization
Definition: tree.h:844
cb_tree key
Definition: tree.h:637
#define CB_WORD_COUNT(x)
Definition: tree.h:905
void cb_warning(const char *,...) COB_A_FORMAT12
Definition: error.c:87
void cb_emit_accept_escape_key(cb_tree)
Definition: typeck.c:4485
#define CB_LIST_INIT(x)
Definition: tree.h:1851
static int eval_inc
Definition: parser.c:220
const char * demangle_name
Definition: cobc.c:147
unsigned int flag_declarative_exit
Definition: tree.h:783
#define TERMINATOR_WARNING(x, z)
Definition: parser.c:123
#define SYN_CLAUSE_22
Definition: parser.c:151
static cb_tree eval_check[32][32]
Definition: parser.c:247
#define YYINITDEPTH
Definition: parser.c:6294
#define COB_ORG_SORT
Definition: common.h:746
#define CB_ALPHABET_NAME_P(x)
Definition: tree.h:551
static cb_tree perform_stack
Definition: parser.c:202
void cb_emit_sort_giving(cb_tree, cb_tree)
Definition: typeck.c:8319
#define COB_SCREEN_UPDATE
Definition: common.h:915
cb_tree cb_build_tallying_value(cb_tree, cb_tree)
Definition: typeck.c:5907
void cb_emit_exit(const unsigned int)
Definition: typeck.c:5653
static int eval_level
Definition: parser.c:219
#define COB_ACCESS_RANDOM
Definition: common.h:753
struct cb_label * all_procedure
Definition: tree.h:1289
struct cb_field * linkage_storage
Definition: tree.h:1278
static void check_attr_with_conflict(const char *clause, const int bitval, const char *confl_clause, const int confl_bit, int *flags)
Definition: parser.c:1035
static void check_relaxed_syntax(const unsigned int lev)
Definition: parser.c:525
#define YYTRANSLATE(YYX)
Definition: parser.c:2138
#define CB_AFTER
Definition: tree.h:26
int cb_source_line
Definition: cobc.c:178
#define CB_CS_SET
Definition: cobc.h:116
#define SYN_CLAUSE_12
Definition: parser.c:141
unsigned char numeric_separator
Definition: tree.h:1302
#define COB_ORG_LINE_SEQUENTIAL
Definition: common.h:743
unsigned int flag_trailing_separate
Definition: tree.h:1318
cb_tree exec_list
Definition: tree.h:1253
void cb_emit_accept_date(cb_tree)
Definition: typeck.c:4512
#define COB_LOCK_OPEN_EXCLUSIVE
Definition: common.h:777
void cb_emit_env_value(cb_tree)
Definition: typeck.c:5115
#define CB_BUILD_PAIR(x, y)
Definition: tree.h:1853
static unsigned int check_on_off_duplicate
Definition: parser.c:229
static void begin_implicit_statement(void)
Definition: parser.c:290
struct cb_field * working_storage
Definition: tree.h:1276
#define COB_STORE_TOWARD_LESSER
Definition: common.h:877
void cb_emit_corresponding(cb_tree(*)(cb_tree, cb_tree, cb_tree), cb_tree, cb_tree, cb_tree)
Definition: parser.c:1769
void cb_emit_unlock(cb_tree)
Definition: typeck.c:8535
#define YYACCEPT
Definition: parser.c:6132
void cb_emit_cancel(cb_tree)
Definition: typeck.c:4977
char * cb_build_program_id(cb_tree, cb_tree, const cob_u32_t)
Definition: typeck.c:1190
#define TERM_DISPLAY
Definition: parser.c:105
static unsigned int prog_end
Definition: parser.c:213
unsigned int flag_begin
Definition: tree.h:779
int last_control
Definition: tree.h:1223
void cb_emit_accept_line_or_col(cb_tree, const int)
Definition: typeck.c:4476
void cb_emit_close(cb_tree, cb_tree)
Definition: typeck.c:4988
cb_tree cb_build_write_advancing_page(cb_tree)
Definition: typeck.c:8738
unsigned int flag_validated
Definition: tree.h:1310
static void error_if_no_advancing_in_screen_display(cb_tree advancing)
Definition: parser.c:1302
static int setattr_val_on
Definition: parser.c:226
cb_tree cycle_label
Definition: tree.h:1112
static void check_attribs(cb_tree fgc, cb_tree bgc, cb_tree scroll, cb_tree timeout, cb_tree prompt, cb_tree size_is, const int attrib)
Definition: parser.c:1114
#define SYN_CLAUSE_5
Definition: parser.c:134
#define YYLAST
Definition: parser.c:2122
#define COB_OPEN_OUTPUT
Definition: common.h:785
#define COB_LA
Definition: common.h:733
static void check_headers_present(const unsigned int lev1, const unsigned int lev2, const unsigned int lev3, const unsigned int lev4)
Definition: parser.c:590
struct cb_program * cb_build_program(struct cb_program *last_program, const int nest_level)
Definition: tree.c:1400
unsigned int flag_void
Definition: tree.h:1325
#define SYN_CLAUSE_16
Definition: parser.c:145
cb_tree cb_build_debug(const cb_tree target, const char *str, const cb_tree fld)
Definition: tree.c:1566
int heading
Definition: tree.h:1221
void cb_validate_field(struct cb_field *f)
Definition: field.c:1338
size_t cobc_check_valid_name(const char *name, const unsigned int prechk)
Definition: cobc.c:1142
cb_tree key
Definition: tree.h:826
#define COB_SCREEN_COLUMN_MINUS
Definition: common.h:898
void cb_build_registers(void)
Definition: typeck.c:1051
void cb_emit_divide(cb_tree, cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5399
#define COB_CLOSE_NORMAL
Definition: common.h:792
unsigned int flag_skip_label
Definition: tree.h:798
struct cb_statement * current_statement
Definition: parser.c:169
cb_tree cb_list_reverse(cb_tree l)
Definition: tree.c:1327
unsigned int flag_dummy_section
Definition: tree.h:787
#define COB_SCREEN_AUTO
Definition: common.h:899
void cb_emit_string(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:8490
unsigned int cobc_cs_check
Definition: parser.c:182
void cb_emit_sort_output(cb_tree)
Definition: typeck.c:8340
static const yytype_uint8 yyr2[]
Definition: parser.c:5906
#define COB_MAX_FIELD_PARAMS
Definition: common.h:559
#define COB_SCREEN_INPUT
Definition: common.h:916
cb_tree handler1
Definition: tree.h:1141
cb_tree cb_build_length(cb_tree)
Definition: typeck.c:1781
struct cb_field * redefines
Definition: tree.h:654
int dispattrs
Definition: tree.h:1130
cb_tree values
Definition: tree.h:648
cb_tree cb_build_section_name(cb_tree, const int)
Definition: typeck.c:1251
cb_tree cb_build_alphabet_name(cb_tree name)
Definition: tree.c:1605
#define TERM_START
Definition: parser.c:116
static unsigned int check_comp_duplicate
Definition: parser.c:231
static struct cb_file * linage_file
Definition: parser.c:195
cb_tree screen_foreg
Definition: tree.h:667
static void check_screen_attr(const char *clause, const int bitval)
Definition: parser.c:1012
struct cb_label * current_paragraph
Definition: parser.c:171
int step_count
Definition: tree.h:685
#define COB_SCREEN_BLANK_SCREEN
Definition: common.h:902
#define CB_INTEGER_P(x)
Definition: tree.h:523
int cobc_flag_main
Definition: cobc.c:167
struct cb_alt_key * alt_key_list
Definition: tree.h:827
#define COB_SELECT_STDOUT
Definition: common.h:762
unsigned int flag_has_external
Definition: tree.h:1316
void cb_set_system_names(void)
Definition: tree.c:2637
#define COB_ASCENDING
Definition: common.h:735
#define COB_LT
Definition: common.h:727
void cb_clear_real_field(void)
Definition: field.c:1439
static int setattr_val_off
Definition: parser.c:227
const char * cb_define(cb_tree name, cb_tree val)
Definition: tree.c:1367
#define COB_SCREEN_UPPER
Definition: common.h:923
#define push_expr(type, node)
Definition: parser.c:95
unsigned int alphabet_type
Definition: tree.h:543
#define SYN_CLAUSE_14
Definition: parser.c:143
unsigned int flag_merge
Definition: tree.h:1151
#define SYN_CLAUSE_24
Definition: parser.c:153
cb_tree cb_build_binary_op(cb_tree x, const int op, cb_tree y)
Definition: tree.c:2827
void cb_unput_dot(void)
Definition: scanner.c:4765
cb_tree record_depending
Definition: tree.h:830
static const yytype_int16 yypgoto[]
Definition: parser.c:3393
cb_tree cb_debug_contents
Definition: typeck.c:88
struct cb_key * keys
Definition: tree.h:658
#define CB_ALPHABET_EBCDIC
Definition: tree.h:109
#define likely(x)
Definition: common.h:436
enum cb_storage storage
Definition: tree.h:692
#define YYSTACK_FREE
Definition: parser.c:2031
#define CB_CONV_NO_RET_UPD
Definition: tree.h:131
int nkeys
Definition: tree.h:682
cb_tree cb_low
Definition: tree.c:128
cb_tree cb_int2
Definition: tree.c:135
cb_tree yyvs_alloc
Definition: parser.c:2067
static void emit_entry(const char *name, const int encode, cb_tree using_list)
Definition: parser.c:315
#define YY_IGNORE_MAYBE_UNINITIALIZED_END
Definition: parser.c:1984
#define YYSIZE_T
Definition: parser.c:1917
cb_tree cb_build_replacing_first(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:5940
cb_tree cb_define_switch_name(cb_tree, cb_tree, const int)
Definition: typeck.c:1228
cb_tree symbolic_char_list
Definition: tree.h:1257
unsigned char decimal_point
Definition: tree.h:1300
#define CB_FIELD(x)
Definition: tree.h:740
#define TERM_ADD
Definition: parser.c:101
struct cb_field * screen_storage
Definition: tree.h:1279
unsigned int flag_first_is_goto
Definition: tree.h:793
cb_tree cb_build_goto(const cb_tree target, const cb_tree depending)
Definition: tree.c:3118
cb_tree varying
Definition: tree.h:1110
int errorcount
Definition: cobc.c:173
void cb_emit_accept_day_yyyyddd(cb_tree)
Definition: typeck.c:4539
cb_tree cb_build_index(cb_tree, cb_tree, const unsigned int, struct cb_field *)
Definition: typeck.c:1337
char * orig_program_id
Definition: tree.h:1246
void cb_emit_setenv(cb_tree, cb_tree)
Definition: typeck.c:8013
int num_proc_params
Definition: tree.h:1296
int columns
Definition: tree.h:1220
unsigned char flag_external
Definition: tree.h:697
void cb_emit_accept_arg_number(cb_tree)
Definition: typeck.c:4596
cb_tree cb_list_add(cb_tree l, cb_tree x)
Definition: tree.c:1315
void cb_emit_accept_user_name(cb_tree)
Definition: typeck.c:4503
cb_tree handler2
Definition: tree.h:1142
void cb_emit_alter(cb_tree, cb_tree)
Definition: typeck.c:4733
void cb_validate_program_data(struct cb_program *)
Definition: typeck.c:2344
unsigned int flag_item_based
Definition: tree.h:713
void cb_emit_env_name(cb_tree)
Definition: typeck.c:5106
void cb_emit_rewrite(cb_tree, cb_tree, cb_tree)
Definition: typeck.c:7707
cb_tree false_88
Definition: tree.h:649
static char* yystpcpy ( char *  yydest,
const char *  yysrc 
)
static

Definition at line 6334 of file parser.c.

Referenced by yytnamerr().

6335 {
6336  char *yyd = yydest;
6337  const char *yys = yysrc;
6338 
6339  while ((*yyd++ = *yys++) != '\0')
6340  continue;
6341 
6342  return yyd - 1;
6343 }

Here is the caller graph for this function:

static size_t yystrlen ( const char *  yystr)
static

Definition at line 6317 of file parser.c.

References YYSIZE_T.

Referenced by yysyntax_error(), and yytnamerr().

6318 {
6319  YYSIZE_T yylen;
6320  for (yylen = 0; yystr[yylen]; yylen++)
6321  continue;
6322  return yylen;
6323 }
#define YYSIZE_T
Definition: parser.c:1917

Here is the caller graph for this function:

static int yysyntax_error ( size_t *  yymsg_alloc,
char **  yymsg,
yytype_int16 yyssp,
int  yytoken 
)
static

Definition at line 6404 of file parser.c.

References YY_, YY_NULLPTR, YYCASE_, YYEMPTY, YYLAST, YYNTOKENS, yypact_value_is_default, YYSIZE_T, YYSTACK_ALLOC_MAXIMUM, yystrlen(), yytable_value_is_error, YYTERROR, and yytnamerr().

6406 {
6407  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
6408  YYSIZE_T yysize = yysize0;
6409  enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
6410  /* Internationalized format string. */
6411  const char *yyformat = YY_NULLPTR;
6412  /* Arguments of yyformat. */
6413  char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
6414  /* Number of reported tokens (one for the "unexpected", one per
6415  "expected"). */
6416  int yycount = 0;
6417 
6418  /* There are many possibilities here to consider:
6419  - If this state is a consistent state with a default action, then
6420  the only way this function was invoked is if the default action
6421  is an error action. In that case, don't check for expected
6422  tokens because there are none.
6423  - The only way there can be no lookahead present (in yychar) is if
6424  this state is a consistent state with a default action. Thus,
6425  detecting the absence of a lookahead is sufficient to determine
6426  that there is no unexpected or expected token to report. In that
6427  case, just report a simple "syntax error".
6428  - Don't assume there isn't a lookahead just because this state is a
6429  consistent state with a default action. There might have been a
6430  previous inconsistent state, consistent state with a non-default
6431  action, or user semantic action that manipulated yychar.
6432  - Of course, the expected token list depends on states to have
6433  correct lookahead information, and it depends on the parser not
6434  to perform extra reductions after fetching a lookahead from the
6435  scanner and before detecting a syntax error. Thus, state merging
6436  (from LALR or IELR) and default reductions corrupt the expected
6437  token list. However, the list is correct for canonical LR with
6438  one exception: it will still contain any token that will not be
6439  accepted due to an error action in a later state.
6440  */
6441  if (yytoken != YYEMPTY)
6442  {
6443  int yyn = yypact[*yyssp];
6444  yyarg[yycount++] = yytname[yytoken];
6445  if (!yypact_value_is_default (yyn))
6446  {
6447  /* Start YYX at -YYN if negative to avoid negative indexes in
6448  YYCHECK. In other words, skip the first -YYN actions for
6449  this state because they are default actions. */
6450  int yyxbegin = yyn < 0 ? -yyn : 0;
6451  /* Stay within bounds of both yycheck and yytname. */
6452  int yychecklim = YYLAST - yyn + 1;
6453  int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
6454  int yyx;
6455 
6456  for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6457  if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR
6458  && !yytable_value_is_error (yytable[yyx + yyn]))
6459  {
6460  if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
6461  {
6462  yycount = 1;
6463  yysize = yysize0;
6464  break;
6465  }
6466  yyarg[yycount++] = yytname[yyx];
6467  {
6468  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
6469  if (! (yysize <= yysize1
6470  && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
6471  return 2;
6472  yysize = yysize1;
6473  }
6474  }
6475  }
6476  }
6477 
6478  switch (yycount)
6479  {
6480 # define YYCASE_(N, S) \
6481  case N: \
6482  yyformat = S; \
6483  break
6484  YYCASE_(0, YY_("syntax error"));
6485  YYCASE_(1, YY_("syntax error, unexpected %s"));
6486  YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
6487  YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
6488  YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
6489  YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6490 # undef YYCASE_
6491  }
6492 
6493  {
6494  YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
6495  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
6496  return 2;
6497  yysize = yysize1;
6498  }
6499 
6500  if (*yymsg_alloc < yysize)
6501  {
6502  *yymsg_alloc = 2 * yysize;
6503  if (! (yysize <= *yymsg_alloc
6504  && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
6505  *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
6506  return 1;
6507  }
6508 
6509  /* Avoid sprintf, as that infringes on the user's name space.
6510  Don't have undefined behavior even if the translation
6511  produced a string with the wrong number of "%s"s. */
6512  {
6513  char *yyp = *yymsg;
6514  int yyi = 0;
6515  while ((*yyp = *yyformat) != '\0')
6516  if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
6517  {
6518  yyp += yytnamerr (yyp, yyarg[yyi++]);
6519  yyformat += 2;
6520  }
6521  else
6522  {
6523  yyp++;
6524  yyformat++;
6525  }
6526  }
6527  return 0;
6528 }
static const yytype_int16 yypact[]
Definition: parser.c:2827
#define YY_(Msgid)
Definition: parser.c:1933
#define YYNTOKENS
Definition: parser.c:2125
static const char *const yytname[]
Definition: parser.c:2429
#define YYEMPTY
Definition: parser.c:6129
static const yytype_int16 yytable[]
Definition: parser.c:3571
#define YY_NULLPTR
Definition: parser.c:1316
static size_t yystrlen(const char *yystr)
Definition: parser.c:6317
#define YYSTACK_ALLOC_MAXIMUM
Definition: parser.c:2033
#define yytable_value_is_error(Yytable_value)
Definition: parser.c:2822
static size_t yytnamerr(char *yyres, const char *yystr)
Definition: parser.c:6356
static const yytype_int16 yycheck[]
Definition: parser.c:4482
#define yypact_value_is_default(Yystate)
Definition: parser.c:2817
#define YYTERROR
Definition: parser.c:6157
#define YYLAST
Definition: parser.c:2122
#define YYSIZE_T
Definition: parser.c:1917
#define YYCASE_(N, S)

Here is the call graph for this function:

static size_t yytnamerr ( char *  yyres,
const char *  yystr 
)
static

Definition at line 6356 of file parser.c.

References YYSIZE_T, yystpcpy(), and yystrlen().

Referenced by yysyntax_error().

6357 {
6358  if (*yystr == '"')
6359  {
6360  YYSIZE_T yyn = 0;
6361  char const *yyp = yystr;
6362 
6363  for (;;)
6364  switch (*++yyp)
6365  {
6366  case '\'':
6367  case ',':
6368  goto do_not_strip_quotes;
6369 
6370  case '\\':
6371  if (*++yyp != '\\')
6372  goto do_not_strip_quotes;
6373  /* Fall through. */
6374  default:
6375  if (yyres)
6376  yyres[yyn] = *yyp;
6377  yyn++;
6378  break;
6379 
6380  case '"':
6381  if (yyres)
6382  yyres[yyn] = '\0';
6383  return yyn;
6384  }
6385  do_not_strip_quotes: ;
6386  }
6387 
6388  if (! yyres)
6389  return yystrlen (yystr);
6390 
6391  return yystpcpy (yyres, yystr) - yyres;
6392 }
static size_t yystrlen(const char *yystr)
Definition: parser.c:6317
static char * yystpcpy(char *yydest, const char *yysrc)
Definition: parser.c:6334
#define YYSIZE_T
Definition: parser.c:1917

Here is the call graph for this function:

Here is the caller graph for this function:

static int zero_conflicting_flag ( const int  screen_flag,
int  parent_flag,
const int  flag1,
const int  flag2 
)
static

Definition at line 1138 of file parser.c.

Referenced by zero_conflicting_flags().

1139 {
1140  if (screen_flag & flag1) {
1141  parent_flag &= ~flag2;
1142  } else if (screen_flag & flag2) {
1143  parent_flag &= ~flag1;
1144  }
1145 
1146  return parent_flag;
1147 }

Here is the caller graph for this function:

static int zero_conflicting_flags ( const int  screen_flag,
int  parent_flag 
)
static

Definition at line 1150 of file parser.c.

References COB_SCREEN_BLANK_LINE, COB_SCREEN_BLANK_SCREEN, COB_SCREEN_ERASE_EOL, COB_SCREEN_ERASE_EOS, COB_SCREEN_HIGHLIGHT, COB_SCREEN_LOWLIGHT, and zero_conflicting_flag().

Referenced by yyparse().

1151 {
1152  parent_flag = zero_conflicting_flag (screen_flag, parent_flag,
1155  parent_flag = zero_conflicting_flag (screen_flag, parent_flag,
1158  parent_flag = zero_conflicting_flag (screen_flag, parent_flag,
1161 
1162  return parent_flag;
1163 }
#define COB_SCREEN_ERASE_EOL
Definition: common.h:904
static int zero_conflicting_flag(const int screen_flag, int parent_flag, const int flag1, const int flag2)
Definition: parser.c:1138
#define COB_SCREEN_LOWLIGHT
Definition: common.h:908
#define COB_SCREEN_BLANK_LINE
Definition: common.h:901
#define COB_SCREEN_HIGHLIGHT
Definition: common.h:907
#define COB_SCREEN_ERASE_EOS
Definition: common.h:905
#define COB_SCREEN_BLANK_SCREEN
Definition: common.h:902

Here is the call graph for this function:

Here is the caller graph for this function:

Variable Documentation

cb_tree advancing_value
static

Definition at line 242 of file parser.c.

int call_mode
static

Definition at line 224 of file parser.c.

Referenced by yyparse().

unsigned int call_nothing
static

Definition at line 240 of file parser.c.

Referenced by yyparse().

int cb_exp_line = 0

Definition at line 174 of file parser.c.

Referenced by cb_expr_finish(), and yyparse().

unsigned int check_comp_duplicate
static

Definition at line 231 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

unsigned int check_duplicate
static

Definition at line 228 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

int check_line_col_duplicate
static

Definition at line 232 of file parser.c.

Referenced by yyparse().

unsigned int check_on_off_duplicate
static

Definition at line 229 of file parser.c.

Referenced by yyparse().

unsigned int check_pic_duplicate
static

Definition at line 230 of file parser.c.

Referenced by check_set_usage(), clear_initial_values(), and yyparse().

unsigned int check_unreached
static
unsigned int cobc_cs_check = 0
unsigned int cobc_force_literal = 0

Definition at line 181 of file parser.c.

Referenced by clear_initial_values(), lookup_reserved_word(), and yylex().

char* cobc_glob_line = ((void*)0)

Definition at line 173 of file parser.c.

Referenced by begin_statement(), and clear_initial_values().

unsigned int cobc_in_procedure = 0
unsigned int cobc_in_repository = 0
cb_tree cobc_printer_node = ((void*)0)

Definition at line 176 of file parser.c.

cb_tree current_expr
static

Definition at line 188 of file parser.c.

struct cb_field* current_field
static

Definition at line 189 of file parser.c.

Referenced by yyparse().

struct cb_file* current_file
static

Definition at line 191 of file parser.c.

Referenced by yyparse().

unsigned int current_linage
static

Definition at line 211 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

struct cb_label* current_paragraph = ((void*)0)

Definition at line 171 of file parser.c.

Referenced by cb_validate_program_body(), print_error(), and yyparse().

struct cb_report* current_report
static

Definition at line 192 of file parser.c.

Referenced by yyparse().

struct cb_label* current_section = ((void*)0)

Definition at line 170 of file parser.c.

Referenced by cb_validate_program_body(), print_error(), set_up_use_file(), and yyparse().

enum cb_storage current_storage
static

Definition at line 200 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

cb_tree defined_prog_list = ((void*)0)

Definition at line 172 of file parser.c.

Referenced by cb_find_defined_program_by_id(), and cb_find_defined_program_by_name().

int depth
static

Definition at line 222 of file parser.c.

Referenced by decrement_depth(), increment_depth(), set_up_program(), and yyparse().

struct cb_field* description_field
static

Definition at line 190 of file parser.c.

Referenced by yyparse().

unsigned int env_div_seen
static

Definition at line 238 of file parser.c.

Referenced by clear_initial_values().

cb_tree eval_check[32][32]
static

Definition at line 247 of file parser.c.

int eval_inc
static

Definition at line 220 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

int eval_inc2
static

Definition at line 221 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

int eval_level
static

Definition at line 219 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

int first_nested_program
static

Definition at line 223 of file parser.c.

Referenced by set_up_program(), and yyparse().

int functions_are_all = 0

Definition at line 177 of file parser.c.

Referenced by cb_build_program(), yylex(), and yyparse().

unsigned int header_check
static

Definition at line 239 of file parser.c.

Referenced by check_headers_present(), clear_initial_values(), and yyparse().

unsigned int in_debugging
static

Definition at line 210 of file parser.c.

Referenced by begin_implicit_statement(), begin_statement(), clear_initial_values(), and yyparse().

unsigned int in_declaratives
static

Definition at line 209 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

unsigned int inspect_keyword
static

Definition at line 216 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

struct cb_file* linage_file
static

Definition at line 195 of file parser.c.

cb_tree line_column
static

Definition at line 244 of file parser.c.

unsigned int main_flag_set
static

Definition at line 217 of file parser.c.

Referenced by set_up_program(), and yyparse().

struct cb_statement* main_statement
static

Definition at line 186 of file parser.c.

unsigned int needs_debug_item
static

Definition at line 237 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

unsigned int needs_field_debug
static

Definition at line 236 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

int next_label_id
static

Definition at line 218 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

cb_tree next_label_list
static

Definition at line 196 of file parser.c.

int non_const_word = 0

Definition at line 178 of file parser.c.

Referenced by clear_initial_values(), yylex(), and yyparse().

cb_tree perform_stack
static

Definition at line 202 of file parser.c.

unsigned int prog_end
static

Definition at line 213 of file parser.c.

Referenced by set_up_program(), and yyparse().

cb_tree qualifier
static

Definition at line 203 of file parser.c.

Referenced by yyparse().

unsigned int report_count
static

Definition at line 212 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

struct cb_report* report_instance
static

Definition at line 193 of file parser.c.

unsigned int samearea
static

Definition at line 215 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

unsigned int save_debug
static

Definition at line 235 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

cb_tree save_tree
static

Definition at line 205 of file parser.c.

int setattr_val_off
static

Definition at line 227 of file parser.c.

Referenced by bit_set_attr(), clear_initial_values(), and yyparse().

int setattr_val_on
static

Definition at line 226 of file parser.c.

Referenced by bit_set_attr(), clear_initial_values(), and yyparse().

int size_mode
static

Definition at line 225 of file parser.c.

Referenced by yyparse().

unsigned int skip_statements
static

Definition at line 233 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

char* stack_progid[16]
static

Definition at line 198 of file parser.c.

Referenced by decrement_depth(), and set_up_program().

unsigned int start_debug
static

Definition at line 234 of file parser.c.

Referenced by clear_initial_values(), and yyparse().

cb_tree start_tree
static

Definition at line 206 of file parser.c.

int term_array[22U]
static
cb_tree upon_value
static

Definition at line 243 of file parser.c.

unsigned int use_global_ind
static

Definition at line 214 of file parser.c.

Referenced by clear_initial_values(), set_up_use_file(), and yyparse().

int yychar

Definition at line 6552 of file parser.c.

const yytype_int16 yycheck[]
static

Definition at line 4482 of file parser.c.

int yydebug

Definition at line 6283 of file parser.c.

const yytype_uint16 yydefact[]
static

Definition at line 3111 of file parser.c.

const yytype_int16 yydefgoto[]
static

Definition at line 3481 of file parser.c.

cb_tree yylval

Definition at line 6555 of file parser.c.

Referenced by yyparse().

int yynerrs

Definition at line 6557 of file parser.c.

Referenced by yyparse().

const yytype_int16 yypact[]
static

Definition at line 2827 of file parser.c.

const yytype_int16 yypgoto[]
static

Definition at line 3393 of file parser.c.

const yytype_uint16 yyr1[]
static

Definition at line 5707 of file parser.c.

const yytype_uint8 yyr2[]
static

Definition at line 5906 of file parser.c.

const yytype_uint16 yyrline[]
static

Definition at line 2227 of file parser.c.

const yytype_uint16 yystos[]
static

Definition at line 5425 of file parser.c.

const yytype_int16 yytable[]
static

Definition at line 3571 of file parser.c.

const char* const yytname[]
static

Definition at line 2429 of file parser.c.

const yytype_uint16 yytranslate[]
static

Definition at line 2143 of file parser.c.