IDENTIFICATION DIVISION. PROGRAM-ID. TEST20c. ENVIRONMENT DIVISION. CONFIGURATION SECTION. * SPECIAL-NAMES. * DECIMAL-POINT IS PERIOD. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT TEST-FILE-IN1 ASSIGN TO WS-FILENAME-IN1 ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL. SELECT TEST-FILE-IN2 ASSIGN TO WS-FILENAME-IN2 ORGANIZATION IS LINE SEQUENTIAL ACCESS MODE IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD TEST-FILE-IN1. * LABEL RECORDS ARE STANDARD. 01 TEST-RECORD-IN1 PIC X(10). * 01 TEST-RECORD-IN1. * 05 FILLER PIC X(10). FD TEST-FILE-IN2. * LABEL RECORDS ARE STANDARD. 01 TEST-RECORD-IN2 PIC X(10). * 01 TEST-RECORD-IN2. * 05 FILLER PIC X(10). WORKING-STORAGE SECTION. 01 WS-FILENAME-IN1 PIC X(11) VALUE "TCfile1.txt". 01 WS-FILENAME-IN2 PIC X(11) VALUE "TCfile2.txt". 01 WS-IDX PIC 9(3). 01 WS-IDX1 PIC 9(3). 01 WS-IDX2 PIC 9(3). * 01 IDX2 PIC 9(3) COMP. * 01 IDX1 PIC 9(3) COMP. 01 WS-RCODE PIC Z(4)9 VALUE ZERO. 01 EOF-SW1 PIC X(1) VALUE 'N'. 01 WS-REC-COUNTER-IN1 PIC 9(5) VALUE 0. 01 EOF-SW2 PIC X(1) VALUE 'N'. 01 WS-REC-COUNTER-IN2 PIC 9(5) VALUE 0. * File: TEST-FILE-IN1 01 WS-TABLE1-ENTRIES. * copy 'TCtable2.cpy'. * 01 WS-TABLE1 REDEFINES WS-TABLE1-ENTRIES. 05 WS-TABLE1-ENTRY OCCURS 167 TIMES DESCENDING KEY IS WS-TABLE1-IDX INDEXED BY IDX1. 10 WS-TABLE1-IDX PIC X(3). 10 WS-TABLE1-DATA PIC X(7). * File: TEST-FILE-IN2 01 WS-TABLE2-ENTRIES. * copy 'TCtable3.cpy'. * 01 WS-TABLE2 REDEFINES WS-TABLE2-ENTRIES. 05 WS-TABLE2-ENTRY OCCURS 167 TIMES ASCENDING KEY IS WS-TABLE2-IDX INDEXED BY IDX2. 10 WS-TABLE2-IDX PIC 9(3). 10 WS-TABLE2-DATA PIC X(7). PROCEDURE DIVISION. A-000. PERFORM A-050. MOVE 1 TO WS-IDX1. PERFORM A-100. MOVE 500 TO WS-IDX1. PERFORM A-100. MOVE 2 TO WS-IDX1. PERFORM A-100. MOVE 479 TO WS-IDX1. PERFORM A-100. MOVE 8 TO WS-IDX2. PERFORM A-200. MOVE 1 TO WS-IDX2. PERFORM A-200. MOVE 136 TO WS-IDX2. PERFORM A-200. MOVE 499 TO WS-IDX2. PERFORM A-200. MOVE RETURN-CODE TO WS-RCODE. DISPLAY "WS-RCODE=" WS-RCODE. STOP RUN. A-050. SET IDX1 TO 1. SET IDX2 TO 1. OPEN INPUT TEST-FILE-IN1. PERFORM A-910. DISPLAY "TEST-RECORD-IN1 (1)=" TEST-RECORD-IN1 ":". DISPLAY "WS-TABLE1-ENTRY (1)=" WS-TABLE1-ENTRY (1) ":". PERFORM A-910 UNTIL EOF-SW1 = 'Y'. CLOSE TEST-FILE-IN1. DISPLAY "Records read for file " WS-FILENAME-IN1 " is " WS-REC-COUNTER-IN1. OPEN INPUT TEST-FILE-IN2. PERFORM A-920. DISPLAY "TEST-RECORD-IN2 (1)=" TEST-RECORD-IN2 ":". DISPLAY "WS-TABLE2-ENTRY (1)=" WS-TABLE2-ENTRY (1) ":". DISPLAY "WS-TABLE2-IDX (1) =" WS-TABLE2-IDX (1) ":". DISPLAY "WS-TABLE2-DATA (1)=" WS-TABLE2-DATA (1) ":". PERFORM A-920 UNTIL EOF-SW2 = 'Y'. CLOSE TEST-FILE-IN2. DISPLAY "Records read for file " WS-FILENAME-IN2 " is " WS-REC-COUNTER-IN2. DISPLAY "WS-TABLE2-ENTRY (1)=" WS-TABLE2-ENTRY (1) ":". DISPLAY "WS-TABLE2-IDX (1) =" WS-TABLE2-IDX (1) ":". DISPLAY "WS-TABLE2-DATA (1)=" WS-TABLE2-DATA (1) ":". A-100. DISPLAY "ENTER A-100". SEARCH ALL WS-TABLE1-ENTRY AT END PERFORM A-400 WHEN WS-IDX1 = WS-TABLE1-IDX (IDX1) PERFORM A-300. * NEXT SENTENCE. DISPLAY "EXIT A-100". A-200. DISPLAY "ENTER A-200". SEARCH ALL WS-TABLE2-ENTRY AT END PERFORM A-600 WHEN WS-IDX2 = WS-TABLE2-IDX (IDX2) PERFORM A-500. * NEXT SENTENCE. DISPLAY "EXIT A-200". A-300. DISPLAY "ENTER A-300". MOVE IDX1 TO WS-RCODE. DISPLAY "Data WS-IDX1 =" WS-IDX1 " found IDX1=" WS-RCODE " in table WS-TABLE1". DISPLAY "WS-TABLE1-IDX =" WS-TABLE1-IDX (IDX1) ":". DISPLAY "WS-TABLE1-DATA =" WS-TABLE1-DATA (IDX1) ":". DISPLAY "EXIT A-300". A-400. DISPLAY "ENTER A-400". DISPLAY "Data WS-IDX1 =" WS-IDX1 " not found in table WS-TABLE1". MOVE IDX1 TO WS-RCODE. DISPLAY "Index max IDX1 =" WS-RCODE. DISPLAY "EXIT A-400". A-500. DISPLAY "ENTER A-500". MOVE IDX2 TO WS-RCODE. DISPLAY "Data WS-IDX2 =" WS-IDX2 " found IDX2=" WS-RCODE " in table WS-TABLE2". DISPLAY "WS-TABLE2-IDX =" WS-TABLE2-IDX (IDX2) ":". DISPLAY "WS-TABLE2-DATA =" WS-TABLE2-DATA (IDX2) ":". DISPLAY "EXIT A-500". A-600. DISPLAY "ENTER A-600". DISPLAY "Data WS-IDX2 =" WS-IDX2 " not found in table WS-TABLE2". MOVE IDX2 TO WS-RCODE. DISPLAY "Index max IDX2 =" WS-RCODE. DISPLAY "EXIT A-600". A-910. * DISPLAY "ENTER A-910". READ TEST-FILE-IN1 AT END MOVE 'Y' TO EOF-SW1. IF EOF-SW1 = 'N' MOVE TEST-RECORD-IN1 TO WS-TABLE1-ENTRY (IDX1) SET IDX1 UP BY 1 ADD 1 TO WS-REC-COUNTER-IN1. * DISPLAY "EXIT A-910". A-920. * DISPLAY "ENTER A-920". READ TEST-FILE-IN2 AT END MOVE 'Y' TO EOF-SW2. IF EOF-SW2 = 'N' MOVE TEST-RECORD-IN2 TO WS-TABLE2-ENTRY (IDX2) SET IDX2 UP BY 1 ADD 1 TO WS-REC-COUNTER-IN2. * DISPLAY "EXIT A-920".