9.3.2 COBOLでのグラフィック帳票出力例(標準帳票例題

ページプリンタのグラフィック帳票で使用するオブジェクトを利用した,標準的な帳票の出力例について説明します。

帳票を使用したユーザAP例として,家電販売で受注した家電用品の発注商品管理台帳を出力する処理を想定した業務を,COBOLで作成した例題について説明します。

(a) 出力例

[図データ]

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

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