IDENTIFICATION DIVISION.
PROGRAM-ID. XMATCHNG.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FILE-A ASSIGN TO 'FILEA'
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FSA.
SELECT FILE-B ASSIGN TO 'FILEB'
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FSB.
SELECT OUTPUT-FILE ASSIGN TO 'OUTFILE'
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FSO.
DATA DIVISION.
FILE SECTION.
FD FILE-A.
01 REC-A.
05 ACCOUNT-NO-A PIC X(10).
05 OTHER-DATA-A PIC X(50).
FD FILE-B.
01 REC-B.
05 ACCOUNT-NO-B PIC X(10).
05 OTHER-DATA-B PIC X(50).
FD OUTPUT-FILE.
01 OUTPUT-REC.
05 ACCOUNT-NO-OUT PIC X(10).
05 DATA-A PIC X(50).
05 DATA-B PIC X(50).
WORKING-STORAGE SECTION.
01 FSA PIC X(2).
01 FSB PIC X(2).
01 FSO PIC X(2).
01 EOF-A PIC X VALUE 'N'.
01 EOF-B PIC X VALUE 'N'.
PROCEDURE DIVISION.
MAIN-PROCESS.
PERFORM INITIALIZATION
PERFORM PROCESS-FILES UNTIL EOF-A = 'Y' AND EOF-B = 'Y'
PERFORM TERMINATION
STOP RUN.
INITIALIZATION.
OPEN INPUT FILE-A
OPEN INPUT FILE-B
OPEN OUTPUT OUTPUT-FILE
PERFORM READ-FILE-A
PERFORM READ-FILE-B.
PROCESS-FILES.
IF EOF-A = 'Y' OR EOF-B = 'Y'
EXIT PARAGRAPH
END-IF
IF ACCOUNT-NO-A = ACCOUNT-NO-B
MOVE ACCOUNT-NO-A TO ACCOUNT-NO-OUT
MOVE OTHER-DATA-A TO DATA-A
MOVE OTHER-DATA-B TO DATA-B
WRITE OUTPUT-REC
PERFORM READ-FILE-A
PERFORM READ-FILE-B
ELSE
IF ACCOUNT-NO-A < ACCOUNT-NO-B
PERFORM READ-FILE-A
ELSE
PERFORM READ-FILE-B
END-IF
END-IF.
READ-FILE-A.
READ FILE-A
AT END MOVE 'Y' TO EOF-A
END-READ.
READ-FILE-B.
READ FILE-B
AT END MOVE 'Y' TO EOF-B
END-READ.
TERMINATION.
CLOSE FILE-A
CLOSE FILE-B
CLOSE OUTPUT-FILE.