9.3.6 COBOLによるフィールドの重ね印字例(重ね印刷例題

ページプリンタのグラフィック帳票を利用した,帳票の出力例について説明します。

グラフィック帳票では,文字の重ね書きができます。この例では,重ね文字として「X」を使用しています。

(a) 出力例

[図データ]

物理マップサイズの目安は,約2KBです。
(b) コーディング例

文字の重ね書きをするには,複数フィールドを同一位置に配置することで実現できます。

次にコーディング例を示します。マップ名は,「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.