[All]
GPRE fails to place an "END-IF" statement in a COBOL program
Abstract: GPRE fails to place an "END-IF" statement in a COBOL program
Problem:
Gpre fails to add in a matching "END-IF" for an "IF . . . THEN" command when processing a
COBOL program file. Then example .e file is found on jabba:/usr/gds/support/bug_8465 along
with a resulting .e.cbl file.
The problem was encountered using version HP-V4.0B(2), and was tested using the version
HU-V4.5.0.69. The problem reproduced under both of these versions. Gpre was ran with the
following command line arguments:
/usr/interbase/bin/gpre -co brioux.e
The source code looks as follows:
IDENTIFICATION DIVISION.
PROGRAM-ID. PCOCO.
ENVIRONMENTAL DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
DATABASE COCO = FILENAME '/usr/interbase/examples/v3/atlas.gdb'
EXEC SQL INCLUDE SQLDA
END-EXEC
01 PASS-ACTION PIC X(1).
01 WS-CITY PIC X(20).
01 FILENAME PIC X(40).
PROCEDURE DIVISION.
MAIN ROUTINE.
READY COCO.
IF (PASS-ACTION = "a" )
FINISH COCO
END-IF
STOP RUN.
END.
The resulting .cbl file looks as follows:
* ********** Preprocessed module -- do not edit **************
* ********** Preprocessed module -- do not edit **************
* ********** Preprocessed module -- do not edit **************
* ********** Preprocessed module -- do not edit **************
* ********** Preprocessed module -- do not edit **************
* **************** gpre version HU-V4.5.0.69 *********************
IDENTIFICATION DIVISION.
PROGRAM-ID. PCOCO.
ENVIRONMENTAL DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* DATABASE COCO = FILENAME '/usr/interbase/examples/v3/atlas.gdb'
* **** GDS Preprocessor Definitions ****
01 isc_blob_null PIC S9(18) USAGE COMP VALUE IS 0.
01 ISC_SQLCODE PIC S9(9) USAGE COMP EXTERNAL.
01 COCO IS GLOBAL PIC S9(9) USAGE COMP VALUE IS 0.
01 isc_1db PIC X(36) VALUE IS "/usr/interbase/examples/v3/atlas.gdb".
01 ISC_TRANS IS GLOBAL PIC S9(9) USAGE COMP VALUE IS 0.
01 ISC_STATUS_VECTOR IS GLOBAL.
03 ISC_STATUS PIC S9(9) USAGE COMP OCCURS 20 TIMES.
01 ISC_STATUS_VECTOR2 IS GLOBAL.
03 ISC_STATUS2 PIC S9(9) USAGE COMP OCCURS 20 TIMES.
01 ISC_ARRAY_LENGTH PIC S9(9) USAGE COMP.
01 SQLCODE IS GLOBAL PIC S9(9) USAGE COMP-5 VALUE IS 0.
* **** end of GPRE definitions ****
* EXEC SQL INCLUDE SQLDA
* END-EXEC
01 PASS-ACTION PIC X(1).
01 WS-CITY PIC X(20).
01 FILENAME PIC X(40).
PROCEDURE DIVISION.
MAIN ROUTINE.
* READY COCO
CALL "isc_attach_database" USING BY VALUE 0, BY VALUE 36,
- BY REFERENCE isc_1db, BY REFERENCE COCO, BY VALUE 0, BY VALUE 0
IF (PASS-ACTION = "a" )
* FINISH COCO
IF ISC_TRANS NOT = 0 THEN
CALL "isc_commit_transaction" USING BY VALUE 0,
- BY REFERENCE ISC_TRANS
END-IF
IF COCO NOT = 0 THEN
CALL "isc_detach_database" USING BY VALUE 0, BY REFERENCE COCO
END-IF
STOP RUN.
END.
Solution:
None