| 
              
                | SAMPLE01 順次ファイルコンバート
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 順次ファイルコンバート
 1つのファイルをある条件に従って3ファイルに出力する。
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ----*----1----*----2----*----3----*----4----*----5----*----6----*----7
 000000*       SAMPLE01             LEVEL=1        DATE=95.10.01
 000100****************************************************************
 000200*                                                              *
 000300*  サブシステム名:資材所要量計画                              *
 000400*                                                              *
 000500*  モジュール名  :順次ファイルコンバート                      *
 000600*                                                              *
 000700*  モジュールID:SAMPLE01                                    *
 000800*                                                              *
 000900*  機能概要      :1つのファイルをある条件に従って3ファイルに *
 001000*        :出力する。                                  *
 001100*                                                              *
 001200*  作成者        :山田太郎                                    *
 001300*  作成日        :1995.10.01                                  *
 001400*  変更履歴      :1996.08.01  山田 XXXを追加              *
 001500*                                                              *
 001600****************************************************************
 001700 IDENTIFICATION         DIVISION.
 001800 PROGRAM-ID.            SAMPLE01.
 001900*
 002000 ENVIRONMENT            DIVISION.
 002100 INPUT-OUTPUT           SECTION.
 002200 FILE-CONTROL.
 002300   SELECT  IN01-FILE  ASSIGN  IN01.
 002400   SELECT  OT01-FILE  ASSIGN  OT01.
 002400   SELECT  OT02-FILE  ASSIGN  OT02
 002400   SELECT  OT03-FILE  ASSIGN  OT03.
 002500/
 002600 DATA                   DIVISION.
 002700 FILE                   SECTION.
 002800 FD  IN01-FILE
 002900     BLOCK  CONTAINS  0  RECORDS.
 003000 01  I1-REC.
 003100   COPY  AAA001  REPLACING ==()== BY ==I1-==.
 003200*
 003300 FD  OT01-FILE.
 003400 01  O1-REC.
 003500        COPY  BBB001  REPLACING ==()== BY ==O1-==.
 003200*
 003300 FD  OT02-FILE.
 003400 01  O2-REC.
 003500        COPY  BBB001  REPLACING ==()== BY ==O2-==.
 003200*
 003300 FD  OT03-FILE.
 003400 01  O3-REC.
 003500        COPY  BBB001  REPLACING ==()== BY ==O3-==.
 003600/
 002400 WORKING-STORAGE        SECTION.
 002500*
 003900*----ワークエリア----------------------------------------------*
 004000 01  WRK-AREA.
 004100   03  CAN-AREA.
 004200     05  CAN-PGMID                PIC  X(08)  VALUE "SAMPLE01".
 004300   03  CTR-AREA.
 004400     05  CTR-I1                   PIC S9(09)  PACKED-DECIMAL.
 004500     05  CTR-O1                   PIC S9(09)  PACKED-DECIMAL.
 004500     05  CTR-O2                   PIC S9(09)  PACKED-DECIMAL.
 004500     05  CTR-O3                   PIC S9(09)  PACKED-DECIMAL.
 004100   03  KEY-AREA.
 004200     05  KEY-NEW                  PIC  X(01).
 002700   03  MSG-AREA.
 002800     COPY  DISPMSG.
 004600*
 004700*----初期化領域------------------------------------------------*
 004800 01  INI-O1-REC.
 004900        COPY  BBB001  REPLACING ==()== BY ==INI-O1-==.
 004600*
 004700*----共通領域--------------------------------------------------*
 004800 01  W1-REC.
 004900        COPY  BBB001  REPLACING ==()== BY ==W1-==.
 006900/
 007000PROCEDURE               DIVISION.
 007100****************************************************************
 007200*   SAMPLE01                                (0.0)              *
 007300****************************************************************
 007400 00-SAMPLE01             SECTION.
 007100*
 007500   PERFORM  10-INIT.
 007700   PERFORM  20-MAIN
 008000     UNTIL  KEY-NEW  =  HIGH-VALUE.
 008100   PERFORM  30-END.
 008200*
 008300 00-SAMPLE01-EXIT.
 008400   EXIT PROGRAM.
 008500/***************************************************************
 008600*  <初期処理>                            (1.0)               *
 008700*    領域の初期クリア、入出力ファイルをオープンする。          *
 008800*                                                              *
 008900****************************************************************
 009000 10-INIT                SECTION.
 009100*
 007200*----出力ファイルの初期化--------------------------------------*
 007300     MOVE  SPACE        TO  INI-O1-REC.
 007400     INITIALIZE         INI-O1-REC.
 007900*
 008000*----ワークエリアの初期化--------------------------------------*
 008100     MOVE  LOW-VALUE    TO  KEY-NEW.
 008200     MOVE  ZERO         TO  CTR-AREA.
 007500*
 007600*----ファイルOPEN------------------------------------------*
 007700     OPEN  INPUT        IN01-FILE.
 007800     OPEN  OUTPUT       OT01-FILE
 007800                                 OT02-FILE
 007800                                 OT03-FILE.
 007500*
 008220*----入力ファイルのREAD------------------------------------*
 008230     PERFORM            11-READ.
 
 012100*
 012200 10-INIT-EXIT.
 012300     EXIT.
 012400****************************************************************
 012500*  <READ処理>                        (1.1)               *
 012600*    入力ファイルをREADする。                              *
 012700*                                                              *
 012800****************************************************************
 012900 11-READ                SECTION.
 013000*
 009400   READ  IN01-FILE
 009500    AT  END
 009600     MOVE  HIGH-VALUE  TO  KEY-NEW
 009700    NOT AT END
 009800     COMPUTE  CTR-I1   =   CTR-I1  + 1
 009900   END-READ.
 014000*
 014100 11-READ-EXIT.
 014200     EXIT.
 014300****************************************************************
 014400*  <主処理>                              (2.0)               *
 014500*    レコードを編集してWRITEする。                        *
 014600*                                                              *
 014700****************************************************************
 014800 20-MAIN                SECTION.
 014900*
 015000*----出力ファイルの初期化--------------------------------------*
 015100     MOVE  INI-O1-REC   TO  W1-REC.
 015200*
 015300*----出力ファイルの編集----------------------------------------*
 015400     MOVE  I1-AA0001  TO  W1-BB0001.
 015500     MOVE  I1-AA0002  TO  W1-BB0002.
 015600     MOVE  I1-AA0003  TO  W1-BB0003.
 015700     MOVE  I1-AA0004  TO  W1-BB0004.
 015800     MOVE  I1-AA0005  TO  W1-BB0005.
 015900*
 016000*----振り分け&出力ファイルのWRITE------------------------*
 016100   EVALUATE  I1-AA0001
 016200     WHEN  1
 016300     WHEN  2
 016400       MOVE  W1-REC     TO  O2-REC        *1,2の時
 016500       PERFORM  22-WRITE
 016700     WHEN  3
 016400       MOVE  W1-REC     TO  O3-REC        *3の時
 016500       PERFORM  23-WRITE
 017100     WHEN  OTHER
 016400       MOVE  W1-REC     TO  O1-REC        *1,2,3以外の時
 016500       PERFORM  21-WRITE
 017500   END-EVALUATE.
 017600*
 017610*----入力ファイルのREAD------------------------------------*
 017620     PERFORM            11-READ.
 017630*
 017700 20-MAIN-EXIT.
 017800     EXIT.
 017900****************************************************************
 018000*  <終了処理>                            (3.0)               *
 018100*    入出力ファイルをCLOSEする。                          *
 018200*                                                              *
 018300****************************************************************
 018400 30-END                 SECTION.
 018500*
 014400*----ファイルCLOSE----------------------------------------*
 014500     CLOSE  IN01-FILE
 014600                OT01-FILE
 014600                OT02-FILE
 014600                OT03-FILE.
 020100*
 020200* 件数のコンソール表示
 020300     MOVE  SPACE      TO  MSG-REC.
 020400     MOVE  CAN-PGMID  TO  MSG-PROGRAM-ID.
 020500     MOVE  3          TO  MSG-TBL-NUM.
 020600     MOVE  "XXXXX"    TO  MSG-MESSAGE-B(1).
 020700     MOVE  CTR-I1     TO  MSG-REC-CTR(1).
 020800     MOVE  "XXXXX"    TO  MSG-MESSAGE-B(2).
 020900     MOVE  CTR-O1     TO  MSG-REC-CTR(2).
 021000     MOVE  "XXXXX"    TO  MSG-MESSAGE-B(3).
 021100     MOVE  CTR-O2     TO  MSG-REC-CTR(3).
 021200     CALL  "AAAAMSG" USING  MSG-AREA.
 021300*
 021400 30-END-EXIT.
 021500     EXIT.
 012500/***************************************************************
 012600*  <WRITE処理>                      (2.1)               *
 012700*    出力ファイル1へのWRITEする。                        *
 012800*                                                              *
 012900****************************************************************
 013000 21-WRITE               SECTION.
 013100*
 013200     WRITE  O1-REC.
 017000     COMPUTE  CTR-O1    =  CTR-O1  +  1.
 013400*
 013500 21-WRITE-EXIT.
 013600    EXIT.
 012500****************************************************************
 012600*  <WRITE処理>                      (2.2)               *
 012700*    出力ファイル2へのWRITEする。                        *
 012800*                                                              *
 012900****************************************************************
 013000 22-WRITE               SECTION.
 013100*
 013200     WRITE  O2-REC.
 017000     COMPUTE  CTR-O2    =  CTR-O2  +  1.
 013400*
 013500 22-WRITE-EXIT.
 013600    EXIT.
012500****************************************************************
 012600*  <WRITE処理>                      (2.3)               *
 012700*    出力ファイル3へのWRITEする。                        *
 012800*                                                              *
 012900****************************************************************
 013000 23-WRITE               SECTION.
 013100*
 013200     WRITE  O3-REC.
 017000     COMPUTE  CTR-O3    =  CTR-O3  +  1.
 013400*
 013500 23-WRITE-EXIT.
 013600    EXIT.
 
 
 
 SAMPLE02 順次ファイルのマッチング(1:N)
 
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 順次ファイルのマッチング(1:N)
 2つのファイルをキーに従って1ファイルにまとめる。
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ----*----1----*----2----*----3----*----4----*----5----*----6----*----7
 000000*       SAMPLE02             LEVEL=1        DATE=95.10.01
 000100****************************************************************
 000200*                                                              *
 000300*  サブシステム名:資材所要量計画                              *
 000400*                                                              *
 000500*  モジュール名  :順次ファイルのマッチング                    *
 000600*                                                              *
 000700*  モジュールID:SAMPLE02                                    *
 000800*                                                              *
 000900*  機能概要      :2つのファイルをキーに従って                *
 001000*                :1ファイルにまとめる。                      *
 001100*                                                              *
 001200*  作成者        :山田太郎                                    *
 001300*  作成日        :1995.10.01                                  *
 001400*  変更履歴      :1996.08.01  山田 XXXを追加              *
 001500*                                                              *
 001600****************************************************************
 001700 IDENTIFICATION         DIVISION.
 001800 PROGRAM-ID.            SAMPLE02.
 001900/
 002000 ENVIRONMENT            DIVISION.
 002100 INPUT-OUTPUT           SECTION.
 002200 FILE-CONTROL.
 002300     SELECT  IN01-FILE  ASSIGN  IN01.
 002300     SELECT  IN02-FILE  ASSIGN  IN02.
 002400     SELECT  OT01-FILE  ASSIGN  OT01.
 002500/
 002600 DATA                   DIVISION.
 002700 FILE                   SECTION.
 002800 FD  IN01-FILE
 002900    BLOCK  CONTAINS  0  RECORDS.
 003000 01  I1-REC.
 003100         COPY  AAA001  REPLACING  ==()==  BY  ==I1-==.
 003200*
 002800 FD  IN02-FILE
 002900             BLOCK  CONTAINS  0  RECORDS.
 003000 01  I2-REC.
 003100         COPY  BBB001  REPLACING  ==()==  BY  ==I2-==.
 003200*
 003300 FD  OT01-FILE.
 003400 01  O1-REC.
 003500         COPY  CCC001  REPLACING  ==()==  BY  ==O1-==.
 003600/
 003700 WORKING-STORAGE        SECTION.
 003800*
 003900*----ワークエリア----------------------------------------------*
 005400 01  WRK-AREA.
 004100   03  CAN-AREA.
 004200     05  CAN-PGMID            PIC  X(08)  VALUE "SAMPLE02".
 005500   03  CTR-AREA.
 005600     05  CTR-I1               PIC S9(09)  PACKED-DECIMAL.
 005700     05  CTR-I2               PIC S9(09)  PACKED-DECIMAL.
 005800     05  CTR-O1               PIC S9(09)  PACKED-DECIMAL.
 005900   03  KEY-AREA.
 006000     05  KEY-I1.
 006100       07  KEY-I1-XX0001  PIC  X(01).
 006200       07  KEY-I1-YY0001  PIC  X(08).
 006300     05  KEY-I2.
 006400       07  KEY-I2-XX0001  PIC  X(01).
 006500       07  KEY-I2-YY0001  PIC  X(08).
 006600*
 004700*----初期化領域------------------------------------------------*
 004800 01  INI-O1-REC.
 004900        COPY  CCC001  REPLACING  ==()==  BY  ==INI-O1-==.
 007000/
 007100 PROCEDURE              DIVISION.
 007200****************************************************************
 007300*   SAMPLE02                                (0.0)               *
 007400****************************************************************
 007500 00-SAMPLE02             SECTION.
 006600*
 007600   PERFORM  10-INIT.
 007900   PERFORM  20-MAIN
 007900        UNTIL  ( KEY-I1  =  HIGH-VALUE )
 008000         AND  ( KEY-I2  =  HIGH-VALUE ).
 009600   PERFORM  30-END.
 009700*
 009800 00-SAMPLE02-EXIT.
 009900        EXIT  PROGRAM.
 010000****************************************************************
 010100*  <初期処理>                            (1.0)               *
 010200*    領域の初期クリア、入出力ファイルをオープンする。          *
 010300*                                                              *
 010400****************************************************************
 010500 10-INIT                SECTION.
 010600*
 010700*----出力ファイルの初期化--------------------------------------*
 010800     MOVE  SPACE  TO  INI-O1-REC.
 010900     INITIALIZE   INI-O1-REC.
 011000*
 008000*----ワークエリアの初期化--------------------------------------*
 008100     MOVE  LOW-VALUE  TO  KEY-AREA.
 008200     MOVE       ZERO  TO  CTR-AREA.
 011500*
 007600*----ファイルOPEN------------------------------------------*
 007700     OPEN  INPUT   IN01-FILE
 007710                          IN02-FILE.
 007800     OPEN  OUTPUT  OT01-FILE.
 012110*
 012120*----入力ファイル1のREAD----------------------------------*
 012130     PERFORM  11-READ.
 012130     PERFORM  12-READ.
 013000*
 013100 10-INIT-EXIT.
 013200     EXIT.
 013300****************************************************************
 013400*  <ファイルREAD処理>                (1.1)               *
 013500*    標準入力ファイル1をREADする。                        *
 013600*                                                              *
 013700****************************************************************
 013800 11-READ                SECTION.
 013900*
 009400   READ  IN01-FILE
 009500    AT  END
 014800     MOVE  HIGH-VALUE   TO  KEY-I1
 009700    NOT  AT  END
 009800     COMPUTE  CTR-I1    =   CTR-I1  + 1
 014500     MOVE  I1-XX0001  TO  KEY-I1-XX0001
 014600     MOVE  I1-YY0001  TO  KEY-I1-YY0001
 009900   END-READ.
 015000*
 015100 11-READ-EXIT.
 015200     EXIT.
 015300****************************************************************
 015400*  <ファイルREAD処理>                (1.2)               *
 015500*    標準入力ファイル2 をREADする。                        *
 015600*                                                              *
 015700****************************************************************
 015800 12-READ                SECTION.
 015900*
 009400   READ  IN02-FILE
 009500    AT  END
 014800     MOVE  HIGH-VALUE   TO  KEY-I2
 009700    NOT  AT  END
 009800     COMPUTE  CTR-I2    =   CTR-I2  + 1
 014500     MOVE  I2-XX0001  TO  KEY-I2-XX0001
 014600     MOVE  I2-YY0001  TO  KEY-I2-YY0001
 009900   END-READ.
 017000*
 017100 12-READ-EXIT.
 017200     EXIT.
 017300****************************************************************
 017400*  <マッチング>                          (2.0)               *
 017500*                                                              *
 017600*                                                              *
 017700****************************************************************
 017800 20-MAIN                SECTION.
 017900*
 008100   EVALUATE  TRUE
 008200     WHEN  KEY-I1  <  KEY-I2
 008300        PERFORM  21-I1-ONLY
 008400        PERFORM  11-READ
 008500     WHEN  KEY-I1  >  KEY-I2
 008600        PERFORM  22-I2-ONLY
 008700        PERFORM  12-READ
 008800     WHEN  KEY-I1  =  KEY-I2
 008900        PERFORM  UNTIL  KEY-I1  NOT  =  KEY-I2
 009000          PERFORM  23-MATCH
 009100          PERFORM  12-READ
 009200          END-PERFORM
 009300        PERFORM 11-READ
 009400   END-EVALUATE
 018200*
 018300 20-MAIN-EXIT.
 018400   EXIT.
 017300****************************************************************
 017400*  <出力ファイル編集1>                  (2.1)               *
 017500*                                                              *
 017600*                                                              *
 017700****************************************************************
 017800 21-I1-ONLY             SECTION.
 017900*IN01-FILEのみの時
 018000* ここでは何もしない
 018100        CONTINUE.
 018200*
 018300 21-I1-ONLY-EXIT.
 018400     EXIT.
 018500****************************************************************
 018600*  <出力ファイル編集2>                  (2.2)               *
 018700*                                                              *
 018800*                                                              *
 018900****************************************************************
 019000 22-I2-ONLY             SECTION.
 021500*IN02-FILEのみの時
 021600*----出力ファイルの初期化--------------------------------------*
 021700     MOVE  INIT-O1-REC  TO  O1-REC.
 021800*
 021900*----出力ファイルの編集----------------------------------------*
 022000     MOVE  I2-AA0001  TO  O1-BB0001.
 022100     MOVE  I2-AA0002  TO  O1-BB0002.
 022200     MOVE  I2-AA0003  TO  O1-BB0003.
 022300     MOVE  I2-AA0004  TO  O1-BB0004.
 022400     MOVE  I2-AA0005  TO  O1-BB0005.
 022500*
 022600*----出力ファイル1のWRITE--------------------------------*
 012100     PERFORM  221-WRITE.
 023000*
 020700 22-I2-ONLY-EXIT.
 020800     EXIT.
 020900****************************************************************
 021000*  <出力ファイル編集3>                  (2.3)               *
 021100*                                                              *
 021200*                                                              *
 021300****************************************************************
 021400 23-MATCH               SECTION.
 021500*
 021600*----出力ファイルの初期化--------------------------------------*
 021700     MOVE  INIT-O1-REC  TO  O1-REC.
 021800*
 021900*----出力ファイルの編集----------------------------------------*
 022000     MOVE  I2-AA0001  TO  O1-BB0001.
 022100     MOVE  I2-AA0002  TO  O1-BB0002.
 022200     MOVE  I2-AA0003  TO  O1-BB0003.
 022300     MOVE  I2-AA0004  TO  O1-BB0004.
 022400     MOVE  I2-AA0005  TO  O1-BB0005.
 022500*
 022600*----出力ファイル1のWRITE--------------------------------*
 012100     PERFORM  221-WRITE.
 023000*
 023100 23-MATCH-EXIT.
 023200     EXIT.
 023300****************************************************************
 023400*  <終了処理>                            (3.0)               *
 023500*    入出力ファイルをCLOSEする。                          *
 023600*                                                              *
 023700****************************************************************
 023800 30-END                 SECTION.
 023900*
 014400*----ファイルCLOSE----------------------------------------*
 014500     CLOSE  IN01-FILE
 014600                 IN02-FILE
 014600                 OT01-FILE.
 025100*
 026400 30-END-EXIT.
 026500     EXIT.
 028600****************************************************************
 028700*  <書出処理>                            (2.2.1)             *
 028800*    順編成ファイル出力。                                      *
 028900*                                                              *
 029000****************************************************************
 029100 221-WRITE            SECTION.
 029300*
 029310     WRITE  O1-REC.
 013300     COMPUTE  CTR-O1  =  CTR-O1  +  1.
 029300*
 029400 221-WRITE-EXIT.
 029500     EXIT.
 
 
 
 SAMPLE03 コントロールブレークリスト出力
 
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 コントロールブレークリスト出力。
 1入力で明細リスト出力して、ある条件で合計出力する。
 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 ----*----1----*----2----*----3----*----4----*----5----*----6----*----7
 000000*       SAMPLE03             LEVEL=1        DATE=95.10.01
 000100****************************************************************
 000200*                                                              *
 000300*  サブシステム名:資材所要量計画                              *
 000400*                                                              *
 000500*  モジュール名  :コントロールブレークリスト出力              *
 000600*                                                              *
 000700*  モジュールID:SAMPLE03                                    *
 000800*                                                              *
 000900*  機能概要      :明細と合計を印刷する。                      *
 001000*                :                                            *
 001100*                                                              *
 001200*  作成者        :山田太郎                                    *
 001300*  作成日        :1995.10.01                                  *
 001400*  変更履歴      :1996.08.01  山田 XXXを追加              *
 001500*                                                              *
 001600****************************************************************
 001700 IDENTIFICATION         DIVISION.
 001800 PROGRAM-ID.            SAMPLE03.
 001900*
 002000 ENVIRONMENT            DIVISION.
 002100*
 002200 INPUT-OUTPUT           SECTION.
 002300 FILE-CONTROL.
 002300     SELECT  IN01-FILE  ASSIGN  IN01.
 002400     SELECT  OT01-FILE  ASSIGN  OT01.
 002500*
 002600 DATA                   DIVISION.
 002700 FILE                   SECTION.
 002800 FD  IN01-FILE
 002900         BLOCK  CONTAINS  0  RECORDS.
 003000 01  I1-REC.
 003100     COPY  AAA001  REPLACING  ==()==  BY  ==I1-==.
 003200*
 003300 FD  OT01-FILE.
 003500 01  O1-REC             PIC X(300).
 003600/
 003700 WORKING-STORAGE        SECTION.
 005100*----ワークエリア----------------------------------------------*
 005200 01  WRK-AREA.
 004100     03  CAN-AREA.
 004200         05  CAN-PGMID            PIC  X(08)  VALUE  "SAMPLE03".
 005500*
 005300   03  CNM-AREA.
005400       05  CNM-O1-LINE-MAX      PIC S9(04)  BINARY  VALUE 58.
 005500*
 005600     03  CTR-AREA.
 005700         05  CTR-I1               PIC S9(09)  PACKED-DECIMAL.
 005800         05  CTR-O1               PIC S9(09)  PACKED-DECIMAL.
 005900        05  CTR-O1-PAGE         PIC S9(04)  PACKED-DECIMAL.
 006000        05  CTR-O1-LINE         PIC S9(04)  PACKED-DECIMAL.
 006100*
 006200    03  KEY-AREA.
 006300        05 KEY-NEW.
 006400           07 KEY-NEW-XXX001  PIC  X(04).
 006500        05 KEY-OLD.
 006600           07 KEY-OLD-XXX001  PIC  X(04).
 006700*
 006800    03  MSG-AREA.
 006900        COPY  VDISPMSG.
 007000*
 007100    03  SUM-AREA.
 007200       05  SUM-FIN-AAA001          PIC S9(09)  BINARY SYNC.
 007300       05  SUM-FIN-BBB001          PIC S9(09)  BINARY SYNC.
 007400       05  SUM-FIN-CCC001          PIC S9(09)  BINARY SYNC.
 007500       05  SUM-TOT-AAA001     PIC S9(09)  BINARY SYNC.
 007600       05  SUM-TOT-BBB001     PIC S9(09)  BINARY SYNC.
 007700       05  SUM-TOT-CCC001     PIC S9(09)  BINARY SYNC.
 007800*
 007900*----ヘッダ1--------------------------------------------------*
 008000 01  O1-HEAD1.
 008100     03  FILLER                        PIC  X(10)
 008200                                       VALUE  "(SAMPLE03)"
 008300                                       POSITION  3.
 008400     03  FILLER                        PIC  N(21)
 008500         VALUE  NC"*** 金額集計表 ***"
 008600                                       MODE-1  POSITION  46.
 008700     03  O1-OP-DATE-YY                 PIC  ZZZ9  POSITION  114.
 008800     03  FILLER                        PIC  N(01)
 008900                                       VALUE  NC"年"  MODE-3.
 009000     03  O1-OP-DATE-MM                 PIC  Z9.
 009100     03  FILLER                        PIC  N(01)
 009200                                       VALUE  NC"月"  MODE-3.
 009300     03  O1-OP-DATE-DD                 PIC  Z9.
 009400     03  FILLER                        PIC  N(01)
 009500                                       VALUE  NC"日"  MODE-3.
 009600     03  O1-PAGE                       PIC  ZZZ9  POSITION 130.
 009700     03  FILLER                        PIC  N(01)
 009800                                       VALUE  NC"頁"  MODE-3.
 009900*
 010000*----ヘッダ2--------------------------------------------------*
 010100 01  O1-HEAD2.
 010200      03  O1-CODE1                      PIC  ZZZ9  POSITION  5.
 010300*
 010400*----ヘッダ3--------------------------------------------------*
 010500 01  O1-HEAD3.
 010600      03  O1-CODE2                      PIC  X(NN)  POSITION  5.
 010700*
 010800*----明細1----------------------------------------------------*
 010900 01  O1-MEISAI1.
 011000   03  O1-MEISAI11                  PIC  X(NN)  POSITION   2.
 011100      03  O1-MEISAI12                  PIC  N(NN)  MODE-2 POSITION 12.
 011200      03  O1-MEISAI13                  PIC  X(NN)  POSITION  47.
 011300*
 011400*----明細2----------------------------------------------------*
 011500 01  O1-MEISAI2.
 011600      03 FILLER                        PIC  N(05)
 011700                                       VALUE  NC"*営業部計"
 011800                                       MODE-2  POSITION  79.
 011900      03 O1-SUM-TOT-AAA001      PIC  ZZZ,ZZZ,ZZ9
 011900                                        POSITION  94.
 012000      03 O1-SUM-TOT-BBB001      PIC  ZZZ,ZZZ,ZZ9
 012010                                        POSITION  103.
 012100    03 O1-SUM-TOT-CCC001      PIC  ZZZ,ZZZ,ZZ9
 012110                                        POSITION  113.
 012200*
 012300*----明細3----------------------------------------------------*
 012400 01  O1-MEISAI3.
 012500   03 FILLER            PIC  N(05)
 012600                     VALUE  NC"**総合計"
 012700                     MODE-2  POSITION  79.
 012800   03 O1-SUM-FIN-AAA001      PIC  ZZZ,ZZZ,ZZ9
 012810                     POSITION  94.
 012900   03 O1-SUM-FIN-BBB001      PIC  ZZZ,ZZZ,ZZ9
 012910                     POSITION  103.
 013000   03 O1-SUM-FIN-CCC001      PIC  ZZZ,ZZZ,ZZ9.
 013010                     POSITION  113.
 013100*
 013200/
 013300 PROCEDURE              DIVISION.
 013400****************************************************************
 013500* SAMPLE03                   (0.0)          *
 013600****************************************************************
 013700 00-SAMPLE03             SECTION.
 013800*
 013900   PERFORM  10-INIT.
 014000   PERFORM  UNTIL  ( KEY-NEW  =  HIGH-VALUE )
 014100     PERFORM  20-INIT
 014200     PERFORM  UNTIL  ( KEY-NEW  =  HIGH-VALUE )
 014300       PERFORM  30-INIT
 014400       PERFORM  UNTIL ( KEY-NEW-XXX001
 014500                NOT  =  KEY-OLD-XXX001 )
 014600         PERFORM  40-MAIN
 014700       END-PERFORM
 014800       PERFORM  50-END
 014900     END-PERFORM
 015000     PERFORM  60-END
 015100   END-PERFORM.
 015200   PERFORM  70-END.
 015300*
 015400 00-SAMPLE03-EXIT.
 015500  EXIT  PROGRAM.
 015600****************************************************************
 015700*  <初期処理>         (1.0)         *
 015800*   領域の初期クリア、入出力ファイルをオープンする。       *
 015900*                                                      *
 016000****************************************************************
 016100 10-INIT                SECTION.
 016200*
 016300*----ファイルOPEN------------------------------------------*
 016400     OPEN  INPUT   IN01-FILE.
 016500     OPEN  OUTPUT  OT01-FILE.
 016600*
 017300 10-INIT-EXIT.
 017400     EXIT.
 017500****************************************************************
 017600*  <ファイルREAD処理>         (1.1)         *
 017700*   標準入力ファイル1をREADする。                 *
 017800*                                                      *
 017900****************************************************************
 018000 11-READ                SECTION.
 018100*
 018200   READ  IN01-FILE
 018300    AT  END
 018400     MOVE  HIGH-VALUE  TO  KEY-NEW
 018500    NOT  AT  END
 018600     COMPUTE  CTR-I1  =  CTR-I1  +  1
 018700   END-READ.
 018800*
 018900 11-READ-EXIT.
 019000   EXIT.
 019100****************************************************************
 019200*  <合計行の初期化>             (2.0)            *
 019300*                                                       *
 019400*                                                              *
 019500****************************************************************
 019600 20-INIT                SECTION.
 019700*
 019800*----ページ初期化----------------------------------------------*
 019900     MOVE  ZERO  TO  CTR-O1-PAGE.
 020000*
 020100*----合計行の初期化--------------------------------------------*
 020200   MOVE  ZERO  TO  SUM-FIN-AAA001
 020300           SUM-FIN-BBB001
 020400           SUM-FIN-CCC001.
 020500*
 020600 20-INIT-EXIT.
 020700     EXIT.
 020800****************************************************************
 020900*  <X計行の初期化>                     (3.0)               *
 021000*                                                          *
 021100*                                                              *
 021200****************************************************************
 021300 30-INIT                SECTION.
 021400*
 021500*----改ページ設定----------------------------------------------*
 021600     MOVE  CNM-O1-LINE-MAX  TO  CTR-O1-LINE.
 021700*
 021800*----X計行の初期化--------------------------------------------*
 021900   MOVE       ZERO  TO  SUM-TOT-AAA001
 022000                 SUM-TOT-BBB001
 022100                 SUM-TOT-CCC001.
 022200*
 022300   MOVE      KEY-NEW  TO  KEY-OLD.
 022400*
 022500 30-INIT-EXIT.
 022600     EXIT.
 022700****************************************************************
 022800*  <主処理>                             (4.0)               *
 022900*                                                          *
 023000*                                                              *
 023100****************************************************************
 023200 40-MAIN                SECTION.
 023300*
 023400*----改ページ判定----------------------------------------------*
 023500   IF  CTR-O1-LINE  +  1  >  CNM-O1-LINE-MAX
 023600     PERFORM  99-NEWPAGE
 023700   END-IF.
 023800   WRITE  O1-REC  FROM  O1-MEISAI1  AFTER  1.
 023900   COMPUTE  CTR-O1-LINE  =  CTR-O1-LINE  +  1.
 024000*
 024100*----ZZZZ計加算--------------------------------------------*
 024200     COMPUTE  SUM-TOT-AAA001  =  SUM-TOT-AAA001 + I1-AAA001.
 024400     COMPUTE  SUM-TOT-BBB001  =  SUM-TOT-BBB001 + I1-BBB001.
 024600     COMPUTE  SUM-TOT-CCC001  =  SUM-TOT-CCC001 + I1-CCC001.
 024800*
 024900 40-MAIN-EXIT.
 025000     EXIT.
 025100****************************************************************
 025200*  <XXXX計行の印刷>                  (5.0)               *
 025300*                                                              *
 025400*                                                              *
 025500****************************************************************
 025600 50-END                 SECTION.
 025700*
 025800*----編集------------------------------------------------------*
 025900     MOVE  SUM-TOT-AAA001  TO  O1-SUM-TOT-AAA001.
 026000     MOVE  SUM-TOT-BBB001  TO  O1-SUM-TOT-BBB001.
 026100     MOVE  SUM-TOT-CCC001  TO  O1-SUM-TOT-CCC001.
 026200*
 026300*----改ページ判定/XXXX計行の印刷--------------------------*
 026400     IF  CTR-O1-LINE  +  1  >  CNM-O1-LINE-MAX
 026500         PERFORM 99-NEWPAGE
 026600     END-IF.
 026700     WRITE  O1-REC  FROM  O1-MEISAI2  AFTER  1.
 026800     COMPUTE  CTR-O1-LINE  =  CTR-O1-LINE  +  1.
 026900*
 027000*----合計加算--------------------------------------------------*
 027100     COMPUTE SUM-FIN-AAA001 = SUM-FIN-AAA001 + SUM-TOT-AAA001.
 027300     COMPUTE SUM-FIN-BBB001 = SUM-FIN-BBB001 + SUM-TOT-BBB001.
 027500     COMPUTE SUM-FIN-CCC001 = SUM-FIN-CCC001 + SUM-TOT-CCC001.
 027700*
 027800 50-END-EXIT.
 027900     EXIT.
 028000****************************************************************
 028100*  <合計行の印刷>                        (6.0)               *
 028200*                                                              *
 028300*                                                              *
 028400****************************************************************
 028500 60-END                SECTION.
 028600*
 028700*----編集------------------------------------------------------*
 028800     MOVE  SUM-FIN-AAA001  TO  O1-SUM-FIN-AAA001.
 028900     MOVE  SUM-FIN-BBB001  TO  O1-SUM-FIN-BBB001.
 029000     MOVE  SUM-FIN-CCC001  TO  O1-SUM-FIN-CCC001.
 029100*
 029200*----改ページ判定/合計行の印刷--------------------------------*
 029300     IF  CTR-O1-LINE  +  1  >  CNM-O1-LINE-MAX
 029400         PERFORM  99-NEWPAGE
 029500     END-IF.
 029600     WRITE  O1-REC  FROM  O1-MEISAI3  AFTER  1.
 029700*
 029800 60-END-EXIT.
 029900     EXIT.
 030000****************************************************************
 030100*  <終了処理>                (7.0)         *
 030200*   入出力ファイルをCLOSEする。                *
 030300*                                                      *
 030400****************************************************************
 030500 70-END                 SECTION.
 030600*
 030700*----ファイルのCLOSE--------------------------------------*
 030800     CLOSE  IN01-FILE
 030900            OT01-FILE.
 032000*
 032100 70-END-EXIT.
 032200     EXIT.
 032300****************************************************************
 032400*  <改ページ>                (9.9)         *
 032500*   改ページ処理を行う。                            *
 032600*                                                      *
 032700****************************************************************
 032800 99-NEWPAGE             SECTION.
 032900*
 033000*----行カウンタ初期化/ページカウンタ設定----------------------*
 033100     MOVE            ZERO  TO  CTR-O1-LINE.
 033200     COMPUTE  CTR-O1-PAGE  =   CTR-O1-PAGE  +  1.
 033300     MOVE     CTR-O1-PAGE  TO  O1-PAGE.
 033400*
 033500*----改ページ処理----------------------------------------------*
 033600     MOVE   SPACE   TO    O1-REC.
 033700     WRITE  O1-REC  AFTER  PAGE.
 033800     WRITE  O1-REC  FROM  O1-HEAD1   AFTER  2.
 033900     WRITE  O1-REC  FROM  O1-HEAD2   AFTER  2.
 034000     WRITE  O1-REC  FROM  O1-HEAD31  AFTER  2.
 034100     WRITE  O1-REC  FROM  O1-HEAD32  AFTER  1.
 034200     COMPUTE  CTR-O1-LINE  =  CTR-O1-LINE  +  8.
 034300*
 034400 99-NEWPAGE-EXIT.
 034500     EXIT.
 
 
 
 |  |