IDENTIFICATION DIVISION. PROGRAM-ID. SRTIO03. ENVIRONMENT DIVISION. CONFIGURATION SECTION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ARQ ASSIGN TO "input.dat" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS. SELECT OUT-REC ASSIGN TO "sorted.dat" ORGANIZATION IS SEQUENTIAL ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS. SELECT SORT-REC ASSIGN TO "sort.dat". DATA DIVISION. FILE SECTION. FD ARQ LABEL RECORD IS STANDARD. 01 REG-ARQ. 03 P-IND PIC 9(03). 03 DESCRIPTION PIC X(20). 03 N-KEY2 PIC 9(02). 03 DESC2 PIC X(04). FD OUT-REC. 01 MAIN-RECORD PIC X(29). SD SORT-REC. 01 MAIN-REC. 03 INDICATOR PIC 9(03). 03 DESC PIC X(20). 03 SF-KEY2 PIC 9(02). 03 SF-DESC2 PIC X(04). WORKING-STORAGE SECTION. 01 FS PIC X(02). 01 W-CNT-IN PIC S9(4) COMP. 01 W-CNT-OUT PIC S9(4) COMP. 01 REM PIC 9(5). 01 W01-SWITCHES PIC X(03). 88 W01-END VALUE "YES". 88 W01-MORE VALUE "NO". 01 WSRT-REC. 03 WSRT-IND PIC 9(03). 03 WSRT-DESC PIC X(20). 03 WSRT-KEY2 PIC 9(02). 03 WSRT-DESC2 PIC X(04). 01 EXPECTED-SEQUENCE-RESULT-CONST. 05 FILLER PIC S9(4) COMP VALUE 20. 05 FILLER PIC S9(4) COMP VALUE 10. 05 FILLER PIC S9(4) COMP VALUE 19. 05 FILLER PIC S9(4) COMP VALUE 9. 05 FILLER PIC S9(4) COMP VALUE 18. 05 FILLER PIC S9(4) COMP VALUE 8. 05 FILLER PIC S9(4) COMP VALUE 17. 05 FILLER PIC S9(4) COMP VALUE 7. 05 FILLER PIC S9(4) COMP VALUE 16. 05 FILLER PIC S9(4) COMP VALUE 6. 05 FILLER PIC S9(4) COMP VALUE 15. 05 FILLER PIC S9(4) COMP VALUE 5. 05 FILLER PIC S9(4) COMP VALUE 14. 05 FILLER PIC S9(4) COMP VALUE 13. 05 FILLER PIC S9(4) COMP VALUE 4. 05 FILLER PIC S9(4) COMP VALUE 3. 05 FILLER PIC S9(4) COMP VALUE 12. 05 FILLER PIC S9(4) COMP VALUE 2. 05 FILLER PIC S9(4) COMP VALUE 11. 05 FILLER PIC S9(4) COMP VALUE 1. 01 EXPECTED-RESULT-REDEF REDEFINES EXPECTED-SEQUENCE-RESULT-CONST. 05 ESR-ENT OCCURS 20. 10 ESR-VAL PIC S9(4) COMP. 01 GSR-TAB. 05 GSR-ENT OCCURS 20. 10 GSR-VAL PIC S9(4) COMP. PROCEDURE DIVISION. MAIN SECTION. MOVE 0 TO W-CNT-IN W-CNT-OUT REM. SORT SORT-REC ASCENDING KEY SF-KEY2 DESCENDING KEY INDICATOR USING ARQ OUTPUT PROCEDURE OUT-RECORD. PERFORM CHECK-RESULTS STOP RUN. CHECK-RESULTS SECTION. PERFORM VARYING W-CNT-OUT FROM 1 BY 1 UNTIL W-CNT-OUT > 20 DISPLAY "SRTIO03:(" GSR-VAL(W-CNT-OUT) "):(" ESR-VAL(W-CNT-OUT) "):Record no " W-CNT-OUT END-PERFORM . OUT-RECORD SECTION. OPEN OUTPUT OUT-REC. IF FS NOT = "00" DISPLAY "Error on Opening output File " FS STOP RUN. MOVE "NO" TO W01-SWITCHES. PERFORM WRITE-OUTPUT UNTIL W01-END. WRITE-OUTPUT. RETURN SORT-REC INTO WSRT-REC AT END MOVE "YES" TO W01-SWITCHES. IF NOT W01-END ADD 1 TO W-CNT-OUT DISPLAY WSRT-IND "," WSRT-KEY2 MOVE WSRT-IND TO GSR-VAL(W-CNT-OUT) MOVE WSRT-REC TO MAIN-RECORD WRITE MAIN-RECORD. IF (FS NOT = "00") AND W01-MORE DISPLAY "Error on Writing Output File " FS STOP RUN.