9.3.4 COBOLによるけい線の動的変更例(表サイズ変更例題

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

グラフィック帳票では,けい線の動的属性を変更(けい線を引くまたはけい線を引かない)できます。この例では,印字データのある行にだけ横けい線を引きます。印字データのない行には,横けい線を引きません。

(a) 出力例

[図データ]

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

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.