Master Mainframe Technologies - COBOL, JCL, DB2, VSAM, CICS & More
ABEND Codes SQLCODEs File Status Interview Prep Contact
← Back to File Handling
File Handling | Advanced | COBOL

Merge Two Sorted Files

Problem Description

Read two sorted files and merge them into one sorted output file.

Expected Output

Single sorted output file from two inputs

Hints

Use two file pointers, compare current records, write smaller one.

Solution

IDENTIFICATION DIVISION. PROGRAM-ID. MERGEFILES. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO "FILE1.DAT". SELECT FILE2 ASSIGN TO "FILE2.DAT". SELECT OUTFILE ASSIGN TO "MERGED.DAT". DATA DIVISION. FILE SECTION. FD FILE1. 01 REC1. 05 KEY1 PIC 9(5). 05 DATA1 PIC X(25). FD FILE2. 01 REC2. 05 KEY2 PIC 9(5). 05 DATA2 PIC X(25). FD OUTFILE. 01 OUT-REC PIC X(30). WORKING-STORAGE SECTION. 01 WS-EOF1 PIC 9 VALUE 0. 01 WS-EOF2 PIC 9 VALUE 0. PROCEDURE DIVISION. OPEN INPUT FILE1 FILE2 OUTPUT OUTFILE. READ FILE1 AT END MOVE 1 TO WS-EOF1 END-READ. READ FILE2 AT END MOVE 1 TO WS-EOF2 END-READ. PERFORM UNTIL WS-EOF1 = 1 AND WS-EOF2 = 1 EVALUATE TRUE WHEN WS-EOF1 = 1 WRITE OUT-REC FROM REC2 READ FILE2 AT END MOVE 1 TO WS-EOF2 END-READ WHEN WS-EOF2 = 1 WRITE OUT-REC FROM REC1 READ FILE1 AT END MOVE 1 TO WS-EOF1 END-READ WHEN KEY1 <= KEY2 WRITE OUT-REC FROM REC1 READ FILE1 AT END MOVE 1 TO WS-EOF1 END-READ WHEN OTHER WRITE OUT-REC FROM REC2 READ FILE2 AT END MOVE 1 TO WS-EOF2 END-READ END-EVALUATE END-PERFORM. CLOSE FILE1 FILE2 OUTFILE. DISPLAY "FILES MERGED SUCCESSFULLY!". STOP RUN.

Explanation:

Classic merge algorithm with two input files, comparing keys.