付録C.5 GENOVL01パターンを使用した書式付き帳票の複数枚印刷
COBOLのWRITE文を使用して,書式オーバレイで帳票を複数枚印刷するときの方法を説明します。
- 〈この項の構成〉
(1) 処理の概要
書式付き帳票を3部印刷します。納品書兼請求書の書式に3ページ分の出力データを重ねてページプリンタに印刷します。
書式付き帳票を複数枚印刷する処理の概要を次の図に示します。
(2) AP作成上のポイント
作成するAPの基になるAPパターンを次に示します。
-
メインプログラムで使用するAPパターン名:GENOVL01
このプログラムでは,帳票に出力するデータは固定データを代入して,帳票を無条件に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.