tinycobol/test_suite/sortio_tests/srtio08.cob

110 lines
3.6 KiB
COBOL

IDENTIFICATION DIVISION.
PROGRAM-ID. SRTIO08.
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT ARQ ASSIGN TO "input.dat"
ORGANIZATION IS LINE SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS FS.
SELECT OUT-REC ASSIGN TO "sorted.dat"
ORGANIZATION IS LINE 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 "SRTIO08:(" 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
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.