https://gcc.gnu.org/bugzilla/show_bug.cgi?id=122317
Bug ID: 122317
Summary: SORT: invalid COBOL code compiles (and seems to
execute "something")
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: cobol
Assignee: unassigned at gcc dot gnu.org
Reporter: simonsobisch at gnu dot org
Target Milestone: ---
The following code compiles and executes
IDENTIFICATION DIVISION.
PROGRAM-ID. prog.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT SRTFIL ASSIGN TO "SRTFIL"
ORGANIZATION LINE SEQUENTIAL.
SELECT STFILE ASSIGN TO "STFILE"
ORGANIZATION LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD SRTFIL.
01 SRTREC PIC X(256).
01 STFREC2 PIC X(256).
SD STFILE.
01 STFREC PIC X(256).
PROCEDURE DIVISION.
SORT STFILE DESCENDING KEY SRTREC USING SRTFIL GIVING SRTFIL.
SORT STFILE DESCENDING KEY STFREC USING SRTFIL GIVING SRTFIL.
SORT SRTFIL DESCENDING KEY SRTREC USING STFILE GIVING STFILE.
RELEASE STFREC.
RETURN STFILE AT END CONTINUE.
RETURN STFREC AT END CONTINUE.
RELEASE SRTREC.
RETURN SRTFIL AT END CONTINUE.
RELEASE STFREC2.
STOP RUN.
Compare with GnuCOBOL:
t.cob:23: error: must be an SD filename
21 | SORT STFILE DESCENDING KEY SRTREC USING SRTFIL GIVING
SRTFIL.
22 | SORT STFILE DESCENDING KEY STFREC USING SRTFIL GIVING
SRTFIL.
23 > SORT SRTFIL DESCENDING KEY SRTREC USING STFILE GIVING
STFILE.
24 | RELEASE STFREC.
25 | RETURN STFILE AT END CONTINUE.
t.cob:26: error: 'STFREC' is not a file name
24 | RELEASE STFREC.
25 | RETURN STFILE AT END CONTINUE.
26 > RETURN STFREC AT END CONTINUE.
27 | RELEASE SRTREC.
28 | RETURN SRTFIL AT END CONTINUE.
t.cob:27: error: RELEASE not allowed on this record item
25 | RETURN STFILE AT END CONTINUE.
26 | RETURN STFREC AT END CONTINUE.
27 > RELEASE SRTREC.
28 | RETURN SRTFIL AT END CONTINUE.
29 | RELEASE STFREC2.
t.cob:28: error: must be an SD filename
26 | RETURN STFREC AT END CONTINUE.
27 | RELEASE SRTREC.
28 > RETURN SRTFIL AT END CONTINUE.
29 | RELEASE STFREC2.
30 | STOP RUN.
t.cob:29: error: RELEASE not allowed on this record item
27 | RELEASE SRTREC.
28 | RETURN SRTFIL AT END CONTINUE.
29 > RELEASE STFREC2.
30 | STOP RUN.