Reading — step 1 of 4
Learn
COBOL has a built-in SORT verb for files. The classic mainframe pattern: read records, sort, write output.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO 'in.dat'
ORGANIZATION IS SEQUENTIAL.
SELECT WORK-FILE ASSIGN TO 'work.dat'.
SELECT OUTPUT-FILE ASSIGN TO 'out.dat'
ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD INPUT-FILE.
01 IN-REC.
05 IN-NAME PIC X(20).
05 IN-AGE PIC 9(3).
SD WORK-FILE. *> Sort Description
01 WORK-REC.
05 W-NAME PIC X(20).
05 W-AGE PIC 9(3).
FD OUTPUT-FILE.
01 OUT-REC PIC X(23).
PROCEDURE DIVISION.
SORT WORK-FILE
ON ASCENDING KEY W-AGE
USING INPUT-FILE
GIVING OUTPUT-FILE.
STOP RUN.
The SORT verb:
ON ASCENDING KEY field(orDESCENDING)- Multiple keys:
ON ASCENDING KEY field1, field2 USING input-file— read FROM hereGIVING output-file— write TO here
INPUT PROCEDURE / OUTPUT PROCEDURE — pre-/post-process records:
SORT WORK-FILE
ON ASCENDING KEY W-AGE
INPUT PROCEDURE FILTER-PARA
OUTPUT PROCEDURE FORMAT-PARA.
The filter paragraph reads records from input, transforms, and RELEASE to the sort. The output paragraph RETURNs sorted records and writes formatted output.
This is THE classic mainframe report-generation pattern — sort + format in one pass.
Performance: COBOL SORT is usually a qsort/external merge implementation, optimized for huge files (gigabytes routinely). Faster than user code in 99% of cases.
MERGE verb — merge multiple already-sorted files:
MERGE WORK-FILE
ON ASCENDING KEY W-AGE
USING SORTED-A SORTED-B SORTED-C
GIVING MERGED-FILE.
Often paired with SORT — sort each chunk, then merge.
Discussion
Ask a question, share an insight, or help someone who’s stuck.
Sign in to post a comment or reply.
Loading…