* ==== TYPE: MT01 MATCHING(1:1) ==== * FEATURE: 2 input files, IF KEY = compare, 3-way IF * BRANCHES: 4, DECISIONS: 2 IDENTIFICATION DIVISION. PROGRAM-ID. MT01. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE-A ASSIGN TO 'FILEA.DAT'. SELECT FILE-B ASSIGN TO 'FILEB.DAT'. DATA DIVISION. FILE SECTION. FD FILE-A. 01 REC-A PIC X(80). FD FILE-B. 01 REC-B PIC X(80). WORKING-STORAGE SECTION. 01 WS-KEY-A PIC X(10). 01 WS-KEY-B PIC X(10). 01 WS-EOF-A PIC X VALUE 'N'. 01 WS-EOF-B PIC X VALUE 'N'. PROCEDURE DIVISION. MAIN-PROCEDURE. OPEN INPUT FILE-A FILE-B. READ FILE-A INTO REC-A AT END MOVE 'Y' TO WS-EOF-A. READ FILE-B INTO REC-B AT END MOVE 'Y' TO WS-EOF-B. PERFORM UNTIL WS-EOF-A = 'Y' OR WS-EOF-B = 'Y' IF WS-KEY-A = WS-KEY-B DISPLAY 'MATCH: ' REC-A(1:50) READ FILE-A AT END MOVE 'Y' TO WS-EOF-A READ FILE-B AT END MOVE 'Y' TO WS-EOF-B ELSE IF WS-KEY-A < WS-KEY-B DISPLAY 'UNMATCH-A: ' REC-A(1:50) READ FILE-A AT END MOVE 'Y' TO WS-EOF-A ELSE DISPLAY 'UNMATCH-B: ' REC-B(1:50) READ FILE-B AT END MOVE 'Y' TO WS-EOF-B END-IF END-PERFORM. CLOSE FILE-A FILE-B. STOP RUN.