Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
💻 COBOL

COBOL SORT Statement

Advanced 🕑 10 min read 👁 2 views

COBOL SORT Statement

The SORT statement arranges records in a specified sequence.

Syntax

SORT sort-file
    ON ASCENDING/DESCENDING KEY key-1 [key-2 ...]
    [WITH DUPLICATES IN ORDER]
    USING input-file
    GIVING output-file

SORT sort-file
    ON ASCENDING/DESCENDING KEY key-1
    INPUT PROCEDURE procedure-1
    OUTPUT PROCEDURE procedure-2

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. SORT-DEMO.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT INPUT-FILE ASSIGN TO 'INPUT.DAT'.
           SELECT OUTPUT-FILE ASSIGN TO 'OUTPUT.DAT'.
           SELECT SORT-FILE ASSIGN TO 'SORTWORK'.

       DATA DIVISION.
       FILE SECTION.
       FD INPUT-FILE.
       01 INPUT-REC.
          05 IN-EMP-ID     PIC 9(5).
          05 IN-EMP-NAME   PIC X(30).
          05 IN-EMP-DEPT   PIC X(10).
          05 IN-EMP-SALARY PIC 9(7)V99.

       FD OUTPUT-FILE.
       01 OUTPUT-REC       PIC X(54).

       SD SORT-FILE.
       01 SORT-REC.
          05 SORT-EMP-ID     PIC 9(5).
          05 SORT-EMP-NAME   PIC X(30).
          05 SORT-EMP-DEPT   PIC X(10).
          05 SORT-EMP-SALARY PIC 9(7)V99.

       PROCEDURE DIVISION.
      * Simple SORT using files
           SORT SORT-FILE
               ON ASCENDING KEY SORT-EMP-DEPT
               ON DESCENDING KEY SORT-EMP-SALARY
               USING INPUT-FILE
               GIVING OUTPUT-FILE

           DISPLAY 'Sort completed'
           STOP RUN.

Expected Output

Sort completed

Sort with Procedures

       SORT SORT-FILE
           ON ASCENDING KEY SORT-EMP-NAME
           INPUT PROCEDURE IS 1000-INPUT-PROC
           OUTPUT PROCEDURE IS 2000-OUTPUT-PROC.

       1000-INPUT-PROC.
           OPEN INPUT INPUT-FILE
           PERFORM UNTIL END-OF-FILE
               READ INPUT-FILE
                   AT END SET END-OF-FILE TO TRUE
                   NOT AT END
                       IF IN-EMP-SALARY > 50000
                           RELEASE SORT-REC FROM INPUT-REC
                       END-IF
               END-READ
           END-PERFORM
           CLOSE INPUT-FILE.

       2000-OUTPUT-PROC.
           OPEN OUTPUT OUTPUT-FILE
           PERFORM UNTIL NO-MORE-RECORDS
               RETURN SORT-FILE
                   AT END SET NO-MORE-RECORDS TO TRUE
                   NOT AT END
                       WRITE OUTPUT-REC FROM SORT-REC
               END-RETURN
           END-PERFORM
           CLOSE OUTPUT-FILE.

Key Points

  • SD (Sort Description) defines sort work file
  • USING/GIVING for simple file sorts
  • INPUT/OUTPUT PROCEDURE for processing
  • RELEASE sends records to sort
  • RETURN retrieves sorted records