画面・帳票サポートシステム XMAP3 プログラミングガイド


付録C.5 GENOVL01パターンを使用した書式付き帳票の複数枚印刷

COBOLのWRITE文を使用して,書式オーバレイで帳票を複数枚印刷するときの方法を説明します。

〈この項の構成〉

(1) 処理の概要

書式付き帳票を3部印刷します。納品書兼請求書の書式に3ページ分の出力データを重ねてページプリンタに印刷します。

書式付き帳票を複数枚印刷する処理の概要を次の図に示します。

図C‒5 書式付き帳票の複数枚印刷

[図データ]

(2) AP作成上のポイント

作成するAPの基になるAPパターンを次に示します。

このプログラムでは,帳票に出力するデータは固定データを代入して,帳票を無条件に3部印刷する仕様になっています。

AP作成時には,ヘッダ,ボディ(明細),トレイラ部分を印刷するタイミングを考慮する必要があります。また,ファイルからデータを読み込む仕様にする場合は,ファイルの入出力処理を追加してください。

(3) コーディング例

コーディング上のポイントを次に示します。

*
 ENVIRONMENT        DIVISION.
*
 INPUT-OUTPUT       SECTION.
 FILE-CONTROL.
   SELECT  プリンタ ASSIGN TO PRT001…………プリンタの宣言
      ORGANIZATION IS SEQUENTIAL
      FILE STATUS IS ファイル状態
*
   SELECT テキストファイル ASSIGN TO ファイル名
      ORGANIZATION IS LINE SEQUENTIAL
      FILE STATUS IS ファイル状態
************************************************************
*    書式印刷の定義                  *
************************************************************
 I-O-CONTROL
   APPLY FORMS-OVERLAY TO 書式名 ON プリンタ.     …書式利用の宣言
 
 DATA      DIVISION.
 FILE      SECTION.
* 一行分のデータエリア
  01 行データ    PIC X(122).    
 WORKING-STORAGE SECTION.
* 印刷データの明細行数
 77 明細行数  PIC S9(4) VALUE 25. …書式に合わせた行データと明細行数を設定
 PROCEDURE    DIVISION.
 印刷処理
  IF プリンタ状態 = 正常
     THEN
* 1ページ分の印刷処理(3回繰り返し)    ……帳票を繰り返し印刷する処理
        PERFORM VARYING 回数 FROM 1 BY 1
            UNTIL 回数 > 3
            PERFORM 1ページ印刷
        END-PERFORM
  END-IF.
 1ページ印刷   SECTION.
 
* 印刷するオーバレイ名の設定
 MOVE 'FORMA46G' TO 書式名.    …書式名を変更(書式名を'FORMA46G'に変更)
 
 ヘッダ印刷    SECTION.
 MOVE SPACE      TO 番号行.    …出力するデータを代入する処理
 MOVE 回数       TO 番号行-番号.
 MOVE 行番号     TO 行データ.
 WRITE 行データ   TO BEFORE ADVANCING 3 LINE.