第3章 開発と運用
3.1 印刷機能
3.1.1 使い方
ここでは、図売上伝票の印刷例を例に、MeFtの基本機能について説明します。
図3.1 売り上げ伝票の印刷例
売り上げ伝票印刷のプログラム例を示します。
例
#include <psdef.h>
#include "BILL.H"
print(){
PSFILE psfile; /* 表示ファイル用識別子 */
BILL bill; /* レコードデータ領域 */
PSUSHORT Error; /* 通知コード格納領域 */
psfile = ps_open("prt1.env", PS_OPEN_PRT, &Error, 0);
ps_set_formatsize(psfile, "BILL", s_BILL);
~ レコードデータ領域へのデータ格納 ~
ps_write(psfile, PS_WRITE_NORMAL, "SCREEN", &bill,0);
ps_close(psfile, &Error);
}
~ 中略 ~
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT プリンタファイル ASSIGN TO GS-PRTFILE ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL SYMBOLIC DESTINATION IS "PRT"
FORMAT IS PRT-FORMAT GROUP IS PRT-GROUP
PROCESSING MODE IS PRT-MODE UNIT CONTROL IS PRT-CONTROL.
~ 中略 ~ DATA DIVISION.
FILE SECTION.
FD プリンタファイル.
COPY BILL OF XMDLIB.
~ 中略 ~
PROCEDURE DIVISION.
OPEN I-O プリンタファイル.
INITIALIZE BILL.
MOVE "BILL" TO PRT-FORMAT.
MOVE " " TO PRT-MODE.
MOVE "SCREEN" TO PRT-GROUP.
WRITE BILL.
CLOSE プリンタファイル.
利用者プログラムが定義体を使って印刷プログラムを作成するときは、MeFtの以下の機能を使用します。以降で、上記のプログラム を使用した帳票の出力方法を説明します。
オープン 出力 クローズ
参照
本マニュアルでは、COBOLの印刷機能は表示ファイル印刷機能について説明します。FORMAT句付き印刷ファイル機能につ
いては、COBOLの使用手引書を参照してください。
3.1.1.1 オープン
プリンタ装置への出力の開始宣言であり、プリンタ情報ファイルを指定します。プリンタ装置へ出力するには、ほかの機能の使用に先 立ち、必ずオープンを行います。
例
psfile=ps_open("prt1.env", PS_OPEN_PRT, &Error, 0);
psfile : 表示ファイル識別子
"prt1.env" : プリンタ情報ファイル名
Error : オープン異常終了時の通知コード格納領域
オープンの正常処理時の復帰値(ここではpsfile)は表示ファイル識別子と呼び、以降のプリンタ装置への出力で装置を識別する ために指定します。
注意
利用者プログラムでオープンした表示ファイル識別子は必ずクローズしてください。クローズしないと内部資源が残り、システムが 誤動作することがあります。
OPEN I-O プリンタファイル.
"プリンタファイル"の情報は、ファイル管理段落(FILE-CONTROL)で指定します。
[必須]
SELECT句 : ファイル名("プリンタファイル")を指定します。
ASSIGN句 : "GS-ファイル識別子"の形式で指定します。ここで指定し
たファイル識別子が、プリンタ情報ファイルのパス名を設 定する環境変数名になります。
FORMAT句 : 帳票定義体を設定するためのデータ項目を指定します。
GROUP句 : 項目群名または項目名を設定するためのデータ項目を
指定します。
[任意]
SYMBOLIC DESTINATION句 : "PRT"を指定します。
FILE STATUS句 : 異常終了時の通知コード格納領域を指定します。異常
が発生した場合、ここで指定した領域にエラー情報が返 却されます。
PROCESSING MODE句 : 処理種別を設定するためのデータ項目を指定します。
UNIT CONROL句 : ユニット制御情報を設定するためのデータ項目を指定し
ます。
OUTPUTまたはI-O指定のOPEN文を実行します。
注意
利用者プログラムでオープンしたプリンタファイルは必ずクローズしてください。クローズしないと内部資源が残り、システムが誤動 作することがあります。
3.1.1.2 出力
定義体中の固定データ、利用者プログラムが用意したデータおよびオーバレイデータをプリンタ装置に出力を指示する機能です。
ポイント
実際の印刷は出力またはクローズのどちらか、または両方で行われます。
注意
クローズを実行しないで出力を行いつづけると、スプール領域が不足してシステムエラーが発生する場合があります。ある程度出力 を行ったらクローズで印刷処理を実行してください。
例
ps_write(psfile, PS_WRITE_NORMAL, "SCREEN", &bill, 0);
psfile : 表示ファイル識別子
PS_WRITE_NORMAL : 出力の種類の1つ
"SCREEN" : 定義体中のすべての項目を構成する項目群名
bill : 項目群名"SCREEN"を構成するレコードデータ領域 出力の直前の文、
ps_set_formatsize(psfile, "BILL", s_BILL);
は、表示ファイル識別子psfileに対して、帳票定義体"BILL"を使用することを宣言しています。
WRITE BILL.
プリンタ装置に出力するには、表示レコードを指定したWRITE文を使います。WRITE文を実行する前には、MOVE文で以下の情 報を設定しておく必要があります。
MOVE "BILL" TO PRT-FORMAT. : FORMAT句に指定したデータ名に画面帳票定義体"BILL"
を指定します。
MOVE " " TO PRT-MODE. : 出力処理の種類を"通常出力"として指定します。
MOVE "SCREEN" TO PRT-GROUP. : GROUP句に指定したデータ名に、定義体中のすべての項
目を構成する項目群名"SCREEN"を指定します。
3.1.1.3 クローズ
プリンタ装置への出力の終了宣言であり、オープン以外のMeFtの機能が使用できなくなります。
クローズの実行後、実際の印刷が始まります。
例
ps_close(psfile, &Error);
psfile : 表示ファイル識別子
Error : クローズ異常終了時の通知コード格納領域
CLOSE プリンタファイル.