Skip to content
Internal Sort
step 1/4

Reading — step 1 of 4

Learn

~1 min readSORT and File I/O

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 (or DESCENDING)
  • Multiple keys: ON ASCENDING KEY field1, field2
  • USING input-file — read FROM here
  • GIVING 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…