uwol / proleap-cobol-parser

ProLeap ANTLR4-based parser for COBOL
MIT License
136 stars 74 forks source link

FUNCTION CURRENT-DATE as part of string-statement not allowed ... #48

Closed Reinhard-Prehofer closed 6 years ago

Reinhard-Prehofer commented 6 years ago

We run into the following error when using the next string statement . (Line 1634 is exactly the FUNCTION CURRENT-DATE within the string-Statement)

line 1634:23 extraneous input 'FUNCTION' expecting {ABORT, ALL, APOST, ARITH, AS, ASCII, ASSOCIATED_DATA, ASSOCIATED_DATA_LENGTH, ATTRIBUTE, AUTO, AUTO_SKIP, BACKGROUND_COLOR, BACKGROUND_COLOUR, BEEP, BELL, BINARY, BIT, BLINK, BOUNDS, CAPABLE, CCSVERSION, CHANGED, CHANNEL, CLOSE_DISPOSITION, COBOL, CODEPAGE, COMMITMENT, CONTROL_POINT, CONVENTION, CRUNCH, CURSOR, DEFAULT, DEFAULT_DISPLAY, DEFINITION, DELIMITED, DFHRESP, DFHVALUE, DISK, DONTCARE, DOUBLE, EBCDIC, EMPTY_CHECK, ENTER, ENTRY_PROCEDURE, ERASE, EOL, EOS, ESCAPE, EVENT, EXCLUSIVE, EXPORT, EXTENDED, FALSE, FOR, FOREGROUND_COLOR, FOREGROUND_COLOUR, FULL, FUNCTIONNAME, FUNCTION_POINTER, GRID, HIGHLIGHT, HIGH_VALUE, HIGH_VALUES, IMPLICIT, IMPORT, INTEGER, KEPT, KEYBOARD, LANGUAGE, LB, LD, LEFTLINE, LENGTH_CHECK, LIB, LIBACCESS, LIBPARAMETER, LIBRARY, LINAGE_COUNTER, LIST, LOCAL, LONG_DATE, LONG_TIME, LOWER, LOWLIGHT, LOW_VALUE, LOW_VALUES, MMDDYYYY, NAMED, NATIONAL, NETWORK, NO_ECHO, NOSEQ, NULL, NULLS, NUMERIC_DATE, NUMERIC_TIME, ODT, OPTIMIZE, ORDERLY, OVERLINE, OWN, PASSWORD, PORT, PRINTER, PRIVATE, PROCESS, PROGRAM, PROMPT, QUOTE, QUOTES, READER, REMOTE, REAL, RECEIVED, REF, REMOVE, REQUIRED, REVERSE_VIDEO, SAVE, SECURE, SHARED, SHAREDBYALL, SHAREDBYRUNUNIT, SHARING, SHORT_DATE, SP, SPACE, SPACES, SYMBOL, TASK, THREAD, THREAD_LOCAL, TIMER, TODAYS_DATE, TODAYS_NAME, TRUE, TRUNCATED, TYPEDEF, UNDERLINE, VIRTUAL, WAIT, XOPTS, YEAR, YYYYMMDD, YYYYDDD, ZERO, ZERO_FILL, ZEROS, ZEROES, NONNUMERICLITERAL, '66', '77', '88', INTEGERLITERAL, NUMERICLITERAL, IDENTIFIER}

Statement ist:

           STRING      '2016'
                       '-'
                       'LST'
                       '-'
                       ZW-ETINODERIDNR   DELIMITED BY SPACE
                       '-'
                       ZW-EL-ANFANG-A
                       ZW-EL-ENDE-A
                       '-'
                       ZW-EL-AG-STNR-A
                       '-'
                       EL0000 IN C1ELALT
                       '-'
                       ZW-EL-ABR-DAT
                       '-'
                       '1'
                       FUNCTION CURRENT-DATE(1:16)
                                       DELIMITED BY SIZE
               INTO ZW-EL-KMID
           END-STRING
uwol commented 6 years ago

Correct, this is a bug. Fixed in d6868f6fef60454a9b453aba258d64e20243b8ec. Added a unit test.

Now any type of IDENTIFIER including FUNCTION calls can be used.