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

COBOL MERGE Statement

Advanced 🕑 10 min read 👁 0 views

COBOL MERGE Statement

The MERGE statement combines two or more sorted files into one sorted file.

Syntax

MERGE merge-file
    ON ASCENDING/DESCENDING KEY key-1 [key-2 ...]
    USING file-1 file-2 [file-3 ...]
    GIVING output-file

Example Program

       IDENTIFICATION DIVISION.
       PROGRAM-ID. MERGE-DEMO.

       ENVIRONMENT DIVISION.
       INPUT-OUTPUT SECTION.
       FILE-CONTROL.
           SELECT FILE-A ASSIGN TO 'FILEA.DAT'.
           SELECT FILE-B ASSIGN TO 'FILEB.DAT'.
           SELECT OUTPUT-FILE ASSIGN TO 'MERGED.DAT'.
           SELECT MERGE-FILE ASSIGN TO 'MERGEWORK'.

       DATA DIVISION.
       FILE SECTION.
       FD FILE-A.
       01 REC-A.
          05 A-KEY        PIC 9(5).
          05 A-DATA       PIC X(45).

       FD FILE-B.
       01 REC-B.
          05 B-KEY        PIC 9(5).
          05 B-DATA       PIC X(45).

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

       SD MERGE-FILE.
       01 MERGE-REC.
          05 MERGE-KEY    PIC 9(5).
          05 MERGE-DATA   PIC X(45).

       PROCEDURE DIVISION.
      * Both input files must already be sorted on MERGE-KEY
           MERGE MERGE-FILE
               ON ASCENDING KEY MERGE-KEY
               USING FILE-A FILE-B
               GIVING OUTPUT-FILE

           DISPLAY 'Merge completed successfully'
           STOP RUN.

Expected Output

Merge completed successfully

Input Files (Already Sorted)

FILE-A:

00001Record A1
00003Record A2
00005Record A3

FILE-B:

00002Record B1
00004Record B2
00006Record B3

Output File (Merged)

00001Record A1
00002Record B1
00003Record A2
00004Record B2
00005Record A3
00006Record B3

Key Points

  • Input files MUST be pre-sorted
  • SD defines merge work area
  • Can merge more than 2 files
  • OUTPUT PROCEDURE can process merged records
  • Maintains order with DUPLICATES IN ORDER