55 lines
1.8 KiB
COBOL
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.
|