Menu ▾ ▴

#1303 IS GLOBAL in a CONSTANT definition

GC 3.2
open
nobody
None
5 - default
6 days ago
6 days ago
No

Following program compiles without errors.

        >>SOURCE FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTCONST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A       CONSTANT    AS 2.
01 B       CONSTANT ( (3 + 4 / 2) * A). *> value = 10 
01 CON     CONSTANT (A ** B).           *> value = 1024
01 MYDATA  PIC X(CON).
01 C       CONSTANT IS GLOBAL AS 2.
01 D       CONSTANT ( (3 + 4 / 2) * C). *> value = 10 
01 CON2    CONSTANT (C ** D).           *> value = 1024
01 MYDATA2 PIC X(CON2).
PROCEDURE DIVISION.
DISPLAY A ' ' B ' ' CON
move all "1234567890" to MYDATA
move ">" to MYDATA(1:1)
move "<" to MYDATA(CON:1)
DISPLAY MYDATA
DISPLAY ' ' 
DISPLAY C ' ' D ' ' CON2
move all "1234567890" to MYDATA2
move ">" to MYDATA2(1:1)
move "<" to MYDATA2(CON:1)
DISPLAY MYDATA2
ACCEPT omitted
GOBACK.
IDENTIFICATION DIVISION.
PROGRAM-ID. SUBTESTCONST.
PROCEDURE DIVISION.
*> DISPLAY A  
DISPLAY C  
ACCEPT omitted
GOBACK.
END PROGRAM SUBTESTCONST.
END PROGRAM TESTCONST.

If I add the "IS GLOBAL" clause to variable "A"—making it similar to variable "C"—I get a compilation error instead.

        >>SOURCE FREE
IDENTIFICATION DIVISION.
PROGRAM-ID. TESTCONST.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 A       CONSTANT IS GLOBAL  AS 2.
01 B       CONSTANT ( (3 + 4 / 2) * A). *> value = 10 
01 CON     CONSTANT (A ** B).           *> value = 1024
01 MYDATA  PIC X(CON).
01 C       CONSTANT IS GLOBAL AS 2.
01 D       CONSTANT ( (3 + 4 / 2) * C). *> value = 10 
01 CON2    CONSTANT (C ** D).           *> value = 1024
01 MYDATA2 PIC X(CON2).
PROCEDURE DIVISION.
DISPLAY A ' ' B ' ' CON
move all "1234567890" to MYDATA
move ">" to MYDATA(1:1)
move "<" to MYDATA(CON:1)
DISPLAY MYDATA
DISPLAY ' ' 
DISPLAY C ' ' D ' ' CON2
move all "1234567890" to MYDATA2
move ">" to MYDATA2(1:1)
move "<" to MYDATA2(CON:1)
DISPLAY MYDATA2
ACCEPT omitted
GOBACK.
IDENTIFICATION DIVISION.
PROGRAM-ID. SUBTESTCONST.
PROCEDURE DIVISION.
DISPLAY A  
DISPLAY C  
ACCEPT omitted
GOBACK.
END PROGRAM SUBTESTCONST.
END PROGRAM TESTCONST.

Compiklation error message: (GnuCOBOL.3.3)

C:\GC-AWORK>cobc testconst.cob -x
testconst.cob:8: error: syntax error, unexpected Identifier
    6 | 01 A       CONSTANT IS GLOBAL  AS 2.
    7 | 01 B       CONSTANT ( (3 + 4 / 2) * A). *> value = 10
    8 > 01 CON     CONSTANT (A ** B).           *> value = 1024
    9 | 01 MYDATA  PIC X(CON).
   10 | 

Discussion


Log in to post a comment.