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