Files
cobol-java-v3/test-data/cobol/HINA007.cbl
T

55 lines
1.8 KiB
COBOL

* HINA007 - キーブレイク(集計)
>>SOURCE FORMAT IS FREE
*
* 期待: 2 IF, 1 PERFORM, 5 段落, キーブレイク有
IDENTIFICATION DIVISION.
PROGRAM-ID. HINA007.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT IN-FILE ASSIGN TO "TRANS.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
SELECT OUT-FILE ASSIGN TO "SUM.DAT"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-REC.
05 IN-KEY PIC X(05).
05 IN-AMT PIC 9(07).
FD OUT-FILE.
01 OUT-REC PIC X(30).
WORKING-STORAGE SECTION.
01 WS-PREV-KEY PIC X(05).
01 WS-SUM PIC 9(10).
01 WS-EOF PIC X VALUE 'N'.
88 EOF-VALUE VALUE 'Y'.
01 WS-FIRST PIC X VALUE 'Y'.
88 FIRST-REC VALUE 'Y'.
PROCEDURE DIVISION.
0000-MAIN.
OPEN INPUT IN-FILE.
OPEN OUTPUT OUT-FILE.
PERFORM 1000-READ.
PERFORM 2000-PROCESS UNTIL EOF-VALUE.
PERFORM 3000-WRITE-BREAK.
CLOSE IN-FILE OUT-FILE.
STOP RUN.
1000-READ.
READ IN-FILE INTO IN-REC
AT END MOVE 'Y' TO WS-EOF.
2000-PROCESS.
IF FIRST-REC THEN
MOVE IN-KEY TO WS-PREV-KEY
MOVE 'N' TO WS-FIRST.
IF IN-KEY NOT = WS-PREV-KEY THEN
PERFORM 3000-WRITE-BREAK
MOVE IN-KEY TO WS-PREV-KEY
MOVE 0 TO WS-SUM.
ADD IN-AMT TO WS-SUM.
PERFORM 1000-READ.
3000-WRITE-BREAK.
STRING WS-PREV-KEY WS-SUM DELIMITED BY SIZE
INTO OUT-REC.
WRITE OUT-REC.