* 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.