ここでは、図 売上伝票の印刷例を例に、MeFtの基本機能について説明します。
売り上げ伝票印刷のプログラム例を示します。
例
#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句付き印刷ファイル機能については、NetCOBOLユーザーズガイドを参照してください。
プリンタ装置への出力の開始宣言であり、プリンタ情報ファイルを指定します。プリンタ装置へ出力するには、ほかの機能の使用に先立ち、必ずオープンを行います。
例
psfile=ps_open("prt1.env", PS_OPEN_PRT, &Error, 0);
psfile | : | 表示ファイル識別子 | |
"prt1.env" | : | プリンタ情報ファイル名 | |
PS_OPEN_PRT | : | プリンタ装置のオープン | |
Error | : | オープン異常終了時の通知コード格納領域 |
オープンの正常処理時の復帰値(ここではpsfile)は表示ファイル識別子と呼び、以降のプリンタ装置への出力で装置を識別するために指定します。
OPEN I-O プリンタファイル.
"プリンタファイル"の情報は、ファイル管理段落(FILE-CONTROL)で指定します。
[必須] | ||||
SELECT句 | : | ファイル名("プリンタファイル")を指定します。 | ||
ASSIGN句 | : | "GS-ファイル識別子"の形式で指定します。ここで指定したファイル識別子が、プリンタ情報ファイルのパス名を設定する環境変数名になります。 | ||
FORMAT句 | : | 帳票定義体を設定するためのデータ項目を指定します。 | ||
GROUP句 | : | 項目群名または項目名を設定するためのデータ項目を指定します。 | ||
[任意] | ||||
SYMBOLIC DESTINATION句 | : | "PRT"を指定します。 | ||
FILE STATUS句 | : | 異常終了時の通知コード格納領域を指定します。異常が発生した場合、ここで指定した領域にエラー情報が返却されます。 | ||
PROCESSING MODE句 | : | 処理種別を設定するためのデータ項目を指定します。 | ||
UNIT CONTROL句 | : | ユニット制御情報を設定するためのデータ項目を指定します。 |
OUTPUTまたはI-O指定のOPEN文を実行します。
定義体中の固定データ、利用者プログラムが用意したデータおよびオーバレイデータをプリンタ装置に出力を指示する機能です。
ポイント
実際の印刷は出力またはクローズのどちらか、または両方で行われます。
例
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"を指定します。 |
データを入力する機能です。この機能は、バーコード項目またはID項目のときだけ有効であり、給紙直後でだけ可能です。入力は、必ず、給紙直後に行わなければならないため、バーコード項目とID項目の入力を続けて行うことはできません。
入力を行う場合は、PRTACS(印刷形態)で「多目的プリンタ機能を使っての印刷を行う」を設定する必要があります。ただし、PowerFORMで作成した帳票定義体での入力はできません。
また、入力の種類には、通常入力しかありません。必ず、通常入力を指定します。
入力したデータは、利用者プログラムに通知します。プリンタの入力は次のように行います。
例
ps_set_formatsize(psfile, "BILL", s_BILL);
ps_read(psfile, PS_READ_NORMAL,"IDMARK", &bill, 0);
psfile | : | 表示ファイル識別子 | |
PS_READ_NORMAL | : | 通常入力 | |
"IDMARK" | : | 入力対象のIDの項目名 | |
bill | : | 項目群名"IDMARK"を含むレコードデータ領域 |
入力の直前の文、
ps_set_formatsize(psfile, "BILL", s_BILL); |
は、表示ファイル識別子psfileに対して、画面帳票定義体"BILL"を使用することを宣言しています。
入力が完了すると、読み込んだIDのデータが利用者プログラム内のレコードデータ領域に通知されます。
psfile=ps_open("print", PS_OPEN_PRT, &Error, 0); ps_set_formatsize(psfile, "BILL", s_BILL); ps_control_printer(psfile, PS_CP_MODE, PS_CPMODE_2, 0); ps_control_printer(psfile, PS_CP_LOAD, PS_CPLOAD_HOPPER, 0); ps_read(psfile, PS_READ_NORMAL,"IDMARK", &bill, 0); ps_control_printer(psfile, PS_CP_UNLOAD, PS_CPUNLOAD_STACKER1, 0); ps_close(psfile, &Error);
READ プリンタファイル.
プリンタ装置から入力するには、表示ファイルを指定したREAD文を使います。READ文を実行する前には、MOVE文で以下の情報を設定しておく必要があります。
MOVE "BILL" TO PRT-FORMAT. | : | FORMAT句に指定したデータ名に画面帳票定義体"BILL"を指定します。 | |
MOVE " " TO PRT-MODE. | : | 入力処理の種類を"通常入力"として指定します。 | |
MOVE "IDMARK" TO PRT-GROUP. | : | GROUP句に指定したデータ名に、入力対象の項目"IDMARK"を指定します。 |
COBOLで入力を実行するには、I-O指定のOPEN文を実行してください。
入力が完了すると、読み込んだIDのデータが利用者プログラム内のレコードデータ領域に通知されます。
MOVE "BILL" TO PRT-FORMAT. MOVE "CT" TO PRT-MODE. MOVE "BIN " TO UNIT-CONTROL. WRITE BILL. ← 帳票モードの設定(単票処理モード) MOVE "CT" TO PRT-MODE. MOVE "LHP " TO UNIT-CONTROL. WRITE BILL. ← 用紙の給紙 MOVE " " TO PRT-MODE. MOVE "IDMARK" TO PRT-GROUP. READ プリンタファイル. ← IDの入力 MOVE "CT" TO PRT-MODE. MOVE "US1 " TO UNIT-CONTROL. WRITE BILL. ← 用紙の排出 MOVE "CT" TO PRT-MODE. MOVE "RST " TO UNIT-CONTROL. WRITE BILL. ← 帳票モードの解除
プリンタ装置への出力の終了宣言であり、オープン以外のMeFtの機能が使用できなくなります。
クローズの実行後、実際の印刷が始まることがあります。
例
ps_close(psfile, &Error);
psfile | : | 表示ファイル識別子 | |
Error | : | クローズ異常終了時の通知コード格納領域 |
CLOSE プリンタファイル.