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.

Reply via email to