第5章 プログラムインタフェース
5.3 基本処理
ps_write(psfile, PS_WRITE_NORMAL, "SCREEN", &rec, 0);
~ 中略 ~
【注意事項】
プリンタ情報ファイル名の指定で、ファイル名だけを指定し、環境変数MEFTDIRが未定義または正しいディレクトリ名を指定して いない場合、MeFtはカレントディレクトリを検索します。カレントディレクトリにもプリンタ情報ファイルが存在しない場合、プリンタ情 報ファイルが省略したものとみなされます。
5.3.2 出力処理(ps_write)
【提供インタフェース】
【機能説明】
レコードデータ領域に格納しているデータを項目の属性に従って編集し、プリンタ装置に出力します。利用者プログラムは、当機 能を呼び出す前に、出力の対象となる項目のレコードデータ項目に出力データを設定します。
使用する定義体名を定義体名とレコードデータ領域長の設定、または定義体名の設定で設定した後に、当機能を使用します。
【 】
[形式]
PSINT PSFUNCTION ps_write(
PSFILE psfile, PSUSHORT mode, PSPSTR pGroup, PSPVOID pRecord, PSPVOID pAttr);
[パラメタ]
psfile : オープン処理で獲得した表示ファイル識別子を指定します。
mode : 出力の種類を指定します。値とその意味は以下のとおりです。
PS_WRITE_NORMAL : 通常出力を行います。
pGroup : 出力の対象とする項目群名または項目名を指定します。項目群名または項目名には、先
頭から最大6文字までのNULLで終わる文字列を指定します。pGroupに0を指定すると、す べての項目が出力の対象となります。
pRecord : レコードデータ領域を指すポインタを指定します。
pAttr : リザーブです。必ず0を指定します。
[使用例]
プリンタ情報ファイル"PRTFILE"を使ってプリンタをオープンし、指定したプリンタに定義体"SAMPLE"を出力します。以下の例 では定義体SAMPLEの項目群名"GRP001"を出力します。
PSFILE psfile;
SAMPLE samp;
PSUSHORT Error;
psfile = ps_open("PRTFILE",PS_OPEN_PRT,&Error,0);
~ レコードデータ領域 samp へのデータ設定 ~ ps_set_formatsize(psfile,"SAMPLE",s_SAMPLE);
ps_write(psfile,PS_WRITE_NORMAL,"GRP001",&samp,0);
~ 中略 ~
ps_close(psfile,&Error);
[診断]
正常終了時には0が返されます。エラー発生時には1または2が返されます。psfileの指定に誤りがある場合には2が、それ以外 のエラーの場合には1が返されます。1が返された場合には通知コードの獲得で通知コードを獲得してエラー原因を識別できま す。
【 】 [形式]
WRITE レコード名.
[パラメタ]
PROCESSING MODE句 : 出力の種類を指定します。値とその意味は以下のとおりです。
空白 : 通常出力を行います。
GROUP句 : 出力の対象とする項目群名または項目名を指定します。
[使用例]
定義体SAMPの項目S001を出力します。
MOVE "SAMP" TO PRT-FORMAT.
MOVE " " TO PRT-MODE.
MOVE "S001" TO PRT-GROUP.
WRITE SAMP.
[診断]
FILE STATUS句に通知コードが格納されます。
5.3.3 行移動出力(ps_write_lineshift)
【提供インタフェース】
【機能説明】
出力の対象とする項目を、定義体に指定した位置ではなく、定義体の行位置を基準として任意の行数だけ前か後ろの位置に出 力します。
【 】
[形式]
PSINT PSFUNCTION ps_write_lineshift ( PSFILE psfile,
PSPSTR pGroup, PSUSHORT control, PSUSHORT lines, PSPVOID pRecord);
[パラメタ]
psfile : オープン処理で獲得した表示ファイル識別子を指定します。
pGroup : 出力の対象とする項目群名または項目名を指定します。項目群名または項目名には、先
頭から最大6文字までのNULLで終わる文字列を指定します。
control : 項目の出力する位置を定義体の行位置を基準として前か後ろかを指定します。値とその意
味は以下のとおりです。
PS_WL_FORWARD : linesで指定した値だけ後の行位置に出力します。
PS_WL_BACKWARD : linesで指定した値だけ前の行位置に出力します。
lines : 行数を指定します。行数には定義体の項目の行位置に加減した値が、定義体の縦サイズ
以内になるように指定してください。指定値は最大3桁(最大値999)です。
pRecord : レコードデータ領域を指すポインタを指定します。
[使用例]
帳票印刷時に印刷の対象とする項目"W001"を定義体に指定した行位置から10行あとに印刷します。
PSFILE psfile;
SAMPLE samp;
PSUSHORT Error;
psfile = ps_open("PRTFILE", PS_OPEN_PRT, &Error, 0);
ps_set_formatsize(psfile, "SAMPLE", s_SAMPLE);
ps_write_lineshift(psfile, "W001", PS_WL_FORWARD, 10, &samp);
ps_close(psfile, &Error);
[診断]
正常終了時には0が返されます。エラー発生時には1または2が返されます。psfileの指定に誤りがある場合には2が、それ以外 のエラーの場合には1が返されます。1が返された場合には通知コードの獲得で通知コードを獲得してエラー原因を識別できま す。
【 】
[形式]
PROCESSING M0DE句とUNIT CONTROL句に指定する。
[パラメタ]
PROCESSING MODE句 : "FW"を指定します。
UNIT CONTROL句 : 項目の出力する位置を定義体の行位置を基準として前か後ろかを指定しま
す。値とその意味は以下のとおりです。
Annn(nnnには整数値 を格納する)
: nnn(最大値999)で指定した値だけ後の行位
置に出力します。
Snnn(nnnには整数値 を格納する)
: nnn(最大値999)で指定した値だけ前の行位
置に出力します。
[使用例]
帳票印刷時に印刷の対象とする項目"W001"を定義体に指定した行位置から10行あとに印刷します。
MOVE "SAMP" TO PRT-FORMAT.
MOVE "W001" TO PRT-GROUP.
MOVE "FW" TO PRT-MODE.
MOVE "A010" TO PRT-CONTROL.
WRITE SAMP.
[診断]
FILE STATUS句に通知コードが格納されます。
5.3.4 パーティション出力(ps_write_partition)
【提供インタフェース】
【機能説明】
現在のプリンタヘッドの位置を基準にして、パーティション項目群を出力する前かあとに任意の行数だけ改行処理を行うか、ある いは指定した位置にパーティション項目群を出力します。
当関数で指定可能な項目群は固定パーティション項目群および浮動パーティション項目群です。
【 】 [形式]
PSINT PSFUNCTION ps_write_partition ( PSFILE psfile,
PSPSTR pGroup, PSUSHORT control, PSUSHORT lines, PSPVOID pRecord);
[パラメタ]
psfile : オープン処理で獲得した表示ファイル識別子を指定します。
pGroup : 出力の対象とする項目群名を指定します。項目群名には、先頭から最大6文字までのNULL
で終わる文字列を指定します。
control : 印刷方法を指定します。値とその意味は以下のとおりです。
PS_WP_AFTERFEED : linesで指定した値だけ改行してから出力します。
PS_WP_BEFOREFEED : 出力してからlinesで指定した値だけ改行します。
PS_WP_POSITION : linesで指定した位置に出力します。
PS_WP_AFTERPAGE : 改ページしてから出力します。
PS_WP_BEFOREPAGE : 出力してから改ページします。
PS_WP_AFTERBLOCK : 改ブロックしてから出力します。
PS_WP_BEFOREBLOCK : 出力してから改ブロックします。
lines : 改行数または行位置を指定します。指定値はcontrolで指定した印刷方法により異なります。
印刷開始位置は、オープン処理直後、定義体変更直後または単票用紙給紙直後の状態で
「1」となります。指定値は最大3桁(最大値999)です。
pRecord : レコードデータ領域を指すポインタを指定します。
[使用例]
浮動パーティション項目群"PTGRP1"を現在のプリンタヘッドの位置から10行改行してから、出力します。
PSFILE psfile;
SAMPLE samp;
PSUSHORT Error;
psfile = ps_open("PRTFILE", PS_OPEN_PRT, &Error, 0);
ps_set_formatsize(psfile, "SAMPLE", s_SAMPLE);
ps_write_partition(psfile, "PTGRP1", PS_WP_AFTERFEED, 10, &samp);
ps_close(psfile, &Error);
[診断]
正常終了時には0が返されます。エラー発生時には1または2が返されます。psfileの指定に誤りがある場合には2が、それ以外 のエラーの場合には1が返されます。1が返された場合には通知コードの獲得で通知コードを獲得してエラー原因を識別できま す。
【 】
[形式]
PROCESSING M0DE句とUNIT CONTROL句に指定する。
[パラメタ]
PROCESSING MODE句 : "PW"を指定します。
UNIT CONTROL句 : 印刷方法を指定します。
Annn(nnnには整数 値を格納する)
: nnn(最大値999)で指定した値だけ改行して
から出力します。
Bnnn(nnnには整数 値を格納する)
: 出力してからnnn(最大値999)で指定した値 だけ改行します。
Pnnn(nnnには整数 値を格納する)
: nnn(最大値999)で指定した位置に出力しま
す。
APAG : 改ページしてから出力します。
BPAG : 出力してから改ページします。
ABLK : 改ブロックしてから出力します。
BBLK : 出力してから改ブロックします。
[使用例]
浮動パーティション項目群"PTGRP1"を現在のプリンタヘッドの位置から10行改行してから、出力します。
MOVE "SAMP" TO PRT-FORMAT.
MOVE "PTGRP1" TO PRT-GROUP.
MOVE "PW" TO PRT-MODE.
MOVE "A010" TO PRT-CONTROL.
WRITE SAMP.
[診断]
FILE STATUS句に通知コードが格納されます。
【注意事項】
改ブロック指定は、帳票定義体が段組みパーティション形式の場合にだけ有効です。段組みパーティション形式で最終ブロック を印刷中に改ブロックを指定すると改ページ処理されます。また、段組みパーティション形式以外の帳票定義体を印刷中に改ブ ロックを指定しても、改ページされます。
5.3.5 クローズ処理(ps_close)
【提供インタフェース】
【機能説明】
表示ファイルの処理を終了します。
【 】
[形式]
PSINT PSFUNCTION ps_close ( PSFILE psfile,
PSPUSHORT pErrno);
[パラメタ]
psfile : オープン処理で獲得した表示ファイル識別子を指定します。
pErrno : クローズ処理が異常終了したときに、通知コードを獲得する領域のアドレスを指定します。
[診断]
正常終了時には0が、エラー発生時には1または2が返されます。psfileの指定に誤りがある場合には2が、それ以外の場合には 1が返されます。1が返された場合には、pErrnoにより通知コードを獲得してエラー原因を識別できます。
【 】
[形式]
CLOSE ファイル名.
[パラメタ]
なし [診断]
FILE STATUS句に通知コードが格納されます。
【注意事項】
- Cの場合、クローズ処理が正常に終了すると、以降psfileは無効になります。無効となったpsfileを関数に指定すると誤動作する
ことがありますので注意してください。
- 印刷処理をクローズしていない場合、出力処理で出力したデータが印字されません。
5.3.6 定義体名とレコードデータ領域長の設定(ps_set_formatsize)
【提供インタフェース】
【機能説明】
出力処理の対象となる定義体名を指定します。オープン直後に出力処理を呼び出す場合、および定義体を切り換える場合は、
本機能で定義体名を設定してから出力処理を呼び出します。
[形式]
PSINT PSFUNCTION ps_set_formatsize ( PSFILE psfile,
PSPSTR pFormat, PSLONG lSize);
[パラメタ]
psfile : オープン処理で獲得した表示ファイル識別子を指定します。
pFormat : 出力の対象とする定義体名を指定します。定義体名には、定義体ファイル名から拡張子を除い
た名前を、先頭から最大8文字のNULLで終わる文字列で指定します。
lSize : pFormatで指定した定義体のレコードデータ領域長を指定します。定義体から生成したインク
ルードファイルには、そのレコードデータ領域長が#defineで宣言されているのでそれを使いま す。定数の名前は、“s_レコードデータ領域構造体名”となります。たとえば、定義体名DENPYOU の場合は、s_DENPYOUとなります。
[診断]
正常終了時には0が返されます。psfileの指定に誤りがあるとエラーになり、2が返されます。
5.3.7 定義体名の設定
【提供インタフェース】
【機能説明】
出力処理の対象となる定義体名を指定します。オープン直後に出力処理を呼び出す場合、および定義体を切り換える場合は、
本機能で定義体名を設定してから出力処理を呼び出します。
[形式]
FORMAT句に指定する。
[パラメタ]