ページプリンタのグラフィック帳票で使用するオブジェクトを利用した,標準的な帳票の出力例について説明します。
帳票を使用したユーザAP例として,家電販売で受注した家電用品の発注商品管理台帳を出力する処理を想定した業務を,COBOLで作成した例題について説明します。
コーディング例を次に示します。マップ名は,「STD1PC」です。
プログラムサイズは,約49KBです。
なお,この例題では,印字データもMOVE文で設定しているので,DBなどから読み込むよう,変更してください。
000100**********************************************************
000200* ページプリンタ グラフィック帳票用標準帳票AP例 *
000300**********************************************************
000400 IDENTIFICATION DIVISION.
000500 PROGRAM-ID. STDPRPC.
000600
000700 ENVIRONMENT DIVISION.
000800
000900 DATA DIVISION.
001000 WORKING-STORAGE SECTION.
001100 01 DB-AREA.
001200 02 DB-MEISAI OCCURS 40.
001300 03 MEI-NUM PIC X(2).
001400 03 MEI-S-CODE PIC X(10).
001500 03 MEI-S-NAME PIC N(10).
001600 03 MEI-TANKA PIC 9(7).
001700 03 MEI-SURYOU PIC 9(3).
001800 01 FLG-FS PIC 9(2).
001900 01 R-CNT PIC 9(2).
002000 01 WORK PIC 9(2).
002100 01 ADDR.
002200 02 DUMMY1 PIC N(16) VALUE N'東京都○×区○×△'.
002300 02 DUMMY2 PIC X(9) VALUE '546-9'.
002400 01 SYOKEI PIC 9(10) COMP.
002500 01 GOUKEI PIC 9(18) COMP.
002600 01 PAGENO PIC X(3) VALUE '001'.
002700 01 H-NAME PIC N(6) VALUE N'港支店'.
002800 01 H-CODE PIC X(2) VALUE 'S1'.
002900 01 NEN PIC 9(2) VALUE 9.
003000 01 TSUKI PIC 9(2) VALUE 9.
003100 01 HINICHI PIC 9(2) VALUE 30.
003200 01 NYUUKIN1 PIC N(8) VALUE N'銀行振込'.
003300 01 NYUUKIN2 PIC N(4) VALUE N'手形'.
003400 01 WARI1 PIC N(6) VALUE N'カード'.
003500 01 WARI2 PIC N(6) VALUE N'セール'.
003600*
003700* (以下,省略)
003800*
008100 01 回数 PIC S9(4).
008200 77 正常 PIC X(5) VALUE '00000'.
008300
008400************************************************************
008500* 論理マップと動的変更テーブルの取り込み *
008600************************************************************
008700* 論理マップのCOPY展開
008800 COPY STD1PCO.
008900* 動的変更テーブルのCOPY展開
009000 COPY X3MODTBL.
009100************************************************************
009200* 通信記述 *
009300************************************************************
009400 COMMUNICATION SECTION.
009500* ワークステーションプリンタに対する通信記述項
009600 CD PRT FOR OUTPUT WS
009700 MAP NAME IS 帳票マップ名
009800 SYMBOLIC TERMINAL IS 帳票端末名
009900 STATUS KEY IS 帳票-RC.
010000
010100************************************************************
010200* プログラム開始 *
010300************************************************************
010400 PROCEDURE DIVISION.
010500 初期設定.
010600************************************************************
010700* 帳票プリント処理 *
010800************************************************************
010900 帳票処理.
011000* 帳票端末名(出力先)の設定
011100 MOVE 'PRT001' TO 帳票端末名.
011200
011300* 出力エリアのクリア
011400 MOVE ALL X'1F' TO STD1PCG.
011500
011600* マップ名を設定
011700 MOVE 'STD1PC6B' TO 帳票マップ名
011800
011900************************************************************
012000****** 印刷データの設定 ******
012100****** 本来はDBなどから読み込みますが ******
012200****** 本例ではMOVE文を使用して設定しています ******
012300************************************************************
012400 PERFORM 印刷データ設定
012500
012600* 帳票印刷
012700 SEND PRT FROM STD1PCO WITH EMI.
012800
012900* 結果確認
013000 IF 帳票-RC = 正常
013100 THEN
013200 CONTINUE
013300 ELSE
013400 DISABLE PRT
013500 MOVE 12 TO RETURN-CODE
013600 STOP RUN
013700 END-IF.
013800
013900 GO TO 正常終了.
014000************************************************************
014100* プログラムの終了 *
014200************************************************************
014300 正常終了.
014400* プリンタのクローズ
014500 DISABLE PRT.
014600 MOVE +0 TO RETURN-CODE.
014700 STOP RUN.
014800
015300************************************************************
015400* 印刷データの設定処理 *
015500********* 本来ならDBなどから読み込みますが, *****************
015600********* 本例ではMOVE文を使用して設定しています ***********
015700************************************************************
015800 印刷データ設定 SECTION.
015900* データ読み込み
016000 PERFORM データ読み込み
016100*
016200* データ設定
016300 MOVE PAGENO TO STD1PC-PAGEO.
016400 MOVE H-NAME TO STD1PC-H-NAMEO.
016500 MOVE H-CODE TO STD1PC-H-CODEO.
016600 MOVE NEN TO STD1PC-NENO.
016700 MOVE TSUKI TO STD1PC-TSUKIO.
016800 MOVE HINICHI TO STD1PC-HINICHIO.
016900*
017000* (以下,省略)
017100*
031600 印刷データ設定-END.
031700 EXIT.
031800
041100*********************************************************
041200 END PROGRAM STDPRPC.