ページプリンタのグラフィック帳票を利用した,帳票の出力例について説明します。
グラフィック帳票では,けい線の動的属性を変更(けい線を引くまたはけい線を引かない)できます。この例では,印字データのある行にだけ横けい線を引きます。印字データのない行には,横けい線を引きません。
APからけい線を引くには,けい線用の制御項目に修飾名を格納します。この例では,「実線で細線のけい線を引く」修飾名である,「SL」を格納しています。
次に,コーディング例を示します。マップ名は,「MDL1PC」です。
プログラムサイズは約24KBです。
000100************************************************************
000200* プログラム名 : ページプリンタ-表サイズ変更例題 *
000300* ファイル名 : MDLINPC *
000400* 説明 : けい線の種別を動的に変更する例題です *
000500* グラフィック帳票でのみ使用できます *
000600************************************************************
000700 IDENTIFICATION DIVISION.
000800 PROGRAM-ID. MDLINPC.
000900*
001000 ENVIRONMENT DIVISION.
001100*
001200 DATA DIVISION.
001300*
001400 WORKING-STORAGE SECTION.
001500*
001600* 月次別売上データファイル
001700 01 売上データ.
001800 02 売上データファイル.
001900 03 FILLER PIC X(52)
002000 VALUE ' 10 8 5 13 4 1 '.
* (途中省略)
002100 02 FILLER
002200 REDEFINES 売上データファイル OCCURS 12.
002300 03 売上データレコード PIC X(52).
002400
002500 77 ファイル状態 PIC X(2).
002600 77 月次カウンタ PIC 9(4).
002700 77 正常 PIC X(5) VALUE '00000'.
002800 77 異常 PIC X(2) VALUE X'0001'.
002900 77 データ件数 PIC 9(2) COMP.
003000 77 行カウント PIC 9(2) COMP.
003100
003200************************************************************
003300* 論理マップと動的変更テーブルの取込み *
003400************************************************************
003500* 論理マップの取り込み
003600 COPY MDL1PCO.
003700
003800*動的変更テーブルの取り込み--"XMAP3インストール先¥INCLUDE"にあります
003900 COPY X3MODTBL.
004000************************************************************
004100* 通信記述 *
004200************************************************************
004300 COMMUNICATION SECTION.
004400* プリンタに対する通信記述項
004500 CD PRT FOR OUTPUT WS
004600 MAP NAME IS 帳票マップ名
004700 SYMBOLIC TERMINAL IS 帳票端末名
004800 STATUS KEY IS 帳票-RC.
004900************************************************************
005000* プログラム開始 *
005100************************************************************
005200 PROCEDURE DIVISION.
005300*
005400 MOVE 正常 TO 帳票-RC.
005500
005600* 出力プリンタの設定
005700 MOVE 'PRT001' TO 帳票端末名.
005800
005900* 出力エリアのクリア
006000 MOVE ALL X'1F' TO MDL1PCG.
006100
006200* マップ名の設定
006300 MOVE 'MDL1PC6G' TO 帳票マップ名.
006400
006500* 印字データの設定
006600 PERFORM 印字データ設定処理.
006700
006800* 帳票印刷
006900 SEND PRT FROM MDL1PCO WITH EMI.
007000
007100* 結果確認
007200 IF 帳票-RC = 正常
007300 THEN
007400 CONTINUE
007500 ELSE
007600 DISABLE PRT
007700 MOVE 12 TO RETURN-CODE
007800 STOP RUN
007900 END-IF.
008000*
008100 GO TO 正常終了.
008200
008300************************************************************
008400* プログラムの終了 *
008500************************************************************
008600 正常終了.
008700
008800* プリンタのクローズ
008900 DISABLE PRT.
009000 MOVE +0 TO RETURN-CODE.
009100 STOP RUN.
009200
009300************************************************************
009400* 本来なら,DBファイルなどから入力しますが, *
009500* 本例では固定データをテーブルやファイルから取り込みます *
009600************************************************************
009700 印字データ設定処理 SECTION.
009800
009900* 支店名称の設定&けい線の種別変更
010000 MOVE 1 TO データ件数.
010100 PERFORM WITH TEST BEFORE UNTIL データ件数 > 6
010200 EVALUATE データ件数
010300 WHEN 1
010400 MOVE N'港支店' TO MDL1PC-支店名称-O(データ件数)
010500**** けい線の種別の動的変更 ***********************************
010600* 印字データを設定した行にのみ引くようにします *
010700* 本例では,6行分引きます (XMAP-LINE-SL:実線の細線) *
010800************************************************************
010900 MOVE XMAP-LINE-SL TO MDL1PC-RLINE0001-A
011000 WHEN 2
011100 MOVE N'練馬支店' TO MDL1PC-支店名称-O(データ件数)
011200 MOVE XMAP-LINE-SL TO MDL1PC-RLINE0002-A
011300 WHEN 3
011400 MOVE N'足立支店' TO MDL1PC-支店名称-O(データ件数)
011500 MOVE XMAP-LINE-SL TO MDL1PC-RLINE0003-A
011600 WHEN 4
011700 MOVE N'豊島支店' TO MDL1PC-支店名称-O(データ件数)
011800 MOVE XMAP-LINE-SL TO MDL1PC-RLINE0004-A
011900 WHEN 5
012000 MOVE N'板橋支店' TO MDL1PC-支店名称-O(データ件数)
012100 MOVE XMAP-LINE-SL TO MDL1PC-RLINE0005-A
012200 WHEN 6
012300 MOVE N'荒川支店' TO MDL1PC-支店名称-O(データ件数)
012400 MOVE XMAP-LINE-SL TO MDL1PC-RLINE0006-A
012500 END-EVALUATE
012600
012700 COMPUTE データ件数 = データ件数 + 1
012800 END-PERFORM.
012900
013000* 売上明細用の月次データをファイルから読み込みます
013100 PERFORM WITH TEST AFTER
013200 VARYING 月次カウンタ
013300 FROM 1 BY 1 UNTIL (月次カウンタ >= 12)
013400 MOVE 売上データレコード(月次カウンタ)
013500 TO MDL1PC-月次明細-O(月次カウンタ)
013600 END-PERFORM.
013700
013800 印字データ設定処理-END.
013900 EXIT.
014000************************************************************
014100 END PROGRAM MDLINPC.