ページプリンタのグラフィック帳票を利用した,帳票の出力例について説明します。
グラフィック帳票では,文字の重ね書きができます。この例では,重ね文字として「X」を使用しています。
文字の重ね書きをするには,複数フィールドを同一位置に配置することで実現できます。
次にコーディング例を示します。マップ名は,「OVC1PC」です。
プログラムサイズは約24KBです。
000100************************************************************
000200* プログラム名 : ページプリンタ-重ね印刷例題 *
000300* ファイル名 : OVCHRPC *
000400* 説明 : 文字と文字とを重ねて印刷する例題です *
000500* グラフィック帳票でのみ使用できます *
000600************************************************************
000700 IDENTIFICATION DIVISION.
000800 PROGRAM-ID. OVCHRPC.
000900
001000 ENVIRONMENT DIVISION.
001100*
001200 DATA DIVISION.
001300*
001400 WORKING-STORAGE SECTION.
001500*
001600* 支店名データファイル *
001700 01 支店データ.
001800 02 支店データファイル.
001900 03 FILLER PIC X(84)
002000 VALUE '仙台支店 横浜支店 大阪支店
002100- ' '.
* (途中省略)
002200 02 FILLER
002300 REDEFINES 支店データファイル OCCURS 4.
002400 03 支店データレコード PIC X(84).
002500
002600
002700 77 支店カウンタ PIC 9(4).
002800
002900 77 正常 PIC X(5) VALUE '00000'.
003000 77 異常 PIC X(2) VALUE X'0001'.
003100 77 重ね文字 PIC X(14) VALUE 'xxxxxxxxxxxxxx'.
003200
003300************************************************************
003400* 論理マップと動的変更テーブルの取込み *
003500************************************************************
003600* 論理マップの取り込み
003700 COPY OVC1PCO.
003800
003900* 動的変更テーブルの取り込み--"XMAP3インストール先¥INCLUDE"にあります
004000 COPY X3MODTBL.
004100***********************************************************
004200* 通信記述
004300***********************************************************
004400 COMMUNICATION SECTION.
004500* ワークステーションプリンタに対する通信記述項
004600 CD PRT FOR OUTPUT WS
004700 MAP NAME IS 帳票マップ名
004800 SYMBOLIC TERMINAL IS 帳票端末名
004900 STATUS KEY IS 帳票-RC.
005000************************************************************
005100* プログラム開始
005200************************************************************
005300 PROCEDURE DIVISION.
005400
005500* 帳票端末名(出力先)の設定
005600 MOVE 'PRT001' TO 帳票端末名.
005700
005800* 出力エリアのクリア
005900 MOVE ALL X'1F' TO OVC1PCG.
006000
006100* マップ名を設定
006200 MOVE 'OVC1PC6G' TO 帳票マップ名.
006300
006400* 支店名の設定
006500 PERFORM 支店名称設定処理.
006600
006700* 帳票の印刷
006800 SEND PRT FROM OVC1PCO WITH EMI.
006900
007000* 結果確認
007100 IF 帳票-RC = 正常
007200 THEN
007300 CONTINUE
007400 ELSE
007500 DISABLE PRT
007600 MOVE 12 TO RETURN-CODE
007700 STOP RUN
007800 END-IF.
007900
008000 GO TO 正常終了.
008100
008200************************************************************
008300* プログラムの終了
008400************************************************************
008500 正常終了.
008600* プリンタのクローズ
008700 DISABLE PRT.
008800 MOVE +0 TO RETURN-CODE.
008900 STOP RUN.
009000
009100************************************************************
009200* 本来なら,DBファイルなどから入力しますが, *
009300* 本例では固定データをファイルから取り込みます *
009400************************************************************
009500 支店名称設定処理 SECTION.
009600
009700* 支店データの設定(支店データをファイルから読み込みます)
009800 PERFORM WITH TEST AFTER
009900 VARYING 支店カウンタ
010000 FROM 1 BY 1 UNTIL (支店カウンタ >= 4)
010100 MOVE 支店データレコード(支店カウンタ)
010200 TO OVC1PC-支店一覧-O(支店カウンタ)
010300 END-PERFORM.
010400
010500***** データの重ねがき ****************************************
010600** 本来は設定したデータに対してある条件をもとに重ね処理を行い *
010700** ますが,ここでは'x'を決められたフィールドに対して重ねています *
010800 MOVE 重ね文字 TO OVC1PC-重ね文字-O(1,2)
010900 MOVE 重ね文字 TO OVC1PC-重ね文字-O(2,1)
011000 MOVE 重ね文字 TO OVC1PC-重ね文字-O(4,3).
011100************************************************************
011200
011300 支店名称設定処理-END.
011400 EXIT.
011500************************************************************
011600 END PROGRAM OVCHRPC.