💻 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