• 検索結果がありません。

プリンタ装置の制御(ps_control_printer)

ドキュメント内 MeFt V10.2 ユーザーズガイド (ページ 143-148)

第5章 プログラムインタフェース

5.5 印刷制御

5.5.1 プリンタ装置の制御(ps_control_printer)

【提供インタフェース】

【機能説明】

プリンタの次の制御を行います。

- 用紙の改ページ

- 矩形領域の出力範囲指定

- 印刷のキャンセル

- 段組みパーティションの改ブロック、フレームパーティションの改フレーム

- 下端情報設定(COBOLのみ)

矩形領域の出力範囲指定が有効となるのは、帳票定義体の形式が段組み伝票形式およびタックシール形式だけです。

下端情報設定が有効となるのは、帳票定義体およびパーティション形式の画面帳票定義体です。

【 】

[形式]

PSINT PSFUNCTION ps_control_printer ( PSFILE psfile,

PSUSHORT mode, PSUSHORT detail, PSPVOID pExtension);

[パラメタ]

psfile : オープン処理で獲得した表示ファイル識別子を指定します。

mode : プリンタの制御方法を指定します。

PS_CP_NEWPAGE : 用紙を改ページします。

PS_CP_PRCT : 矩形領域の出力範囲を指定します。

PS_CP_PRINTCANCEL : 印刷をキャンセルします。

PS_CP_BLOCK : 段組みパーティションを改ブロック、または、フレームパー

ティションを改フレームします。

detail : 詳細情報を指定します。詳細情報はmodeで指定した値により異なります。値とその意味

は以下のとおりです。

PS_CP_NEWPAGE : 0を指定します。

PS_CP_PRCT : 0を指定します。

PS_CP_PRINTCANCEL : 0を指定します。

PS_CP_BLOCK : 0を指定します。

pExtension : modeがPS_CP_PRCTのとき有効で、範囲情報を設定します。それ以外は必ず0を指定し

ます。

抑止情報のレコードデータの構造体を以下に示します。

struct {

unsigned char pt_head; /* ヘッダ出力情報 */

unsigned char pt_foot; /* フッタ出力情報 */

unsigned short pt_rsv02; /* 保留 */

unsigned long pt_rsv04[5]; /* 保留 */

unsigned char pt_startbody[4]; /* 印刷開始ボディ番号 */

unsigned char pt_endbody[4]; /* 印刷終了ボディ番号 */

};

pt_head : ヘッダの出力について数値(バイナリ)で指定します。

0:出力

1:抑止

pt_foot : フッタの出力について数値(バイナリ)で指定します。

0:出力 1:抑止

pt_startbody : 印刷開始ボディ番号を数値の文字列で指定します。

'0001'~'0999':印刷開始番号 '0000':指定解除

pt_endbody : 印刷終了ボディ番号を数値の文字列で指定します。

'0001'~'0999':印刷終了番号 '0000':指定解除

印刷開始番号は印刷終了番号よりも小さい値を設定してください。そうでない場合、印刷 開始番号と印刷終了番号に設定している値は指定解除として動作します。また、上記の 指定範囲外の設定は無視されます。

[使用例]

定義体を帳票に印刷後、改ページさせます。

PSFILE psfile;

SAMPLE samp;

PSUSHORT Error;

psfile = ps_open("PRTFILE", PS_OPEN_PRT, &Error, 0);

ps_set_formatsize(psfile,"SAMPLE",s_SAMPLE);

~ レコードデータ領域 samp へのデータ設定 ~ ps_write(psfile,PS_WRITE_NORMAL,"@ALLF",&samp,0);

ps_control_printer(psfile,PS_CP_NEWPAGE,0,0);

矩形領域の出力範囲を指定します。

typedef struct tagOUTCTL {

unsigned char head; /* ヘッダ出力情報 '0':出力、'1':抑止 */

unsigned char foot; /* フッタ出力情報 '0':出力、'1':抑止 */

unsigned short rsv02; /* 保留 */

unsigned long rsv04[5]; /* 保留 */

unsigned char sbody[4]; /* 明細開始ボディ番号 '0000':指定なし */

unsigned char ebody[4]; /* 明細終了ボディ番号 '0000':指定なし */

} OUTCTL;

OUTCTL sOutctl;

memset( &sOutctl, 0x00, sizeof( OUTCTL ) );

sOutctl.head = 0;

sOutctl.foot = 1;

memcpy( sOutctl.sbody, "0002", 4 );

memcpy( sOutctl.ebody, "0004", 4 );

rtn = ps_control_printer( pFile, PS_CP_PRCT, 0, pOutctl );

[診断]

正常終了時には0が返されます。エラー発生時には1または2が返されます。psfileの指定に誤りがある場合には2が、それ以外 のエラーの場合には1が返されます。1が返した場合には通知コードの獲得で通知コードを獲得してエラー原因を識別できま す。

【 】

[形式]

PROCESSING MODE句とUNIT CONTROL句に指定する。

[パラメタ]

PROCESSING MODE 句

: "CT"を指定します。

UNIT CONTROL句 : プリンタの制御方法を指定します。

PAGE : 用紙を改ページします。

PRCT : 矩形領域の出力範囲を指定します。

CAN : 印刷をキャンセルします。

BLCK : 段組みパーティションを改ブロック、または、フレームパーティ ションを改フレームします。

ULMT : パーティションを配置および拡張可能な下端位置を設定しま

す。COBOLのみ使用可能です。

詳細情報(UNIT CONTROL句の下2桁)に以下のいずれか

を指定します。

PT : 固定パーティション名を指定します。固定パーティ ションの開始位置まで出力可能となります。存在 しないパーティション名や浮動パーティション名を 指定した場合はMEFD_RC_FLD(24)エラーとなり ます。

LN : フリーフレーム形式以外の場合は帳票の先頭か ら、フリーフレーム形式の場合、フレームの先頭 からの相対行位置を6桁以内の符号なし外部10 進で指定します。6桁に満たない場合は空白また はNULL文字を設定してください。指定した行の 直前までを出力可能な下端とします。横方向のフ レームに定義されたパーティションの場合は指定 できません。MEFD_RC_PARA(26)で復帰しま す。

帳票定義体やフレームのサイズを超える指定を 行った場合もMEFD_RC_PARA(26)で復帰しま す。

DT : フリーフレーム形式以外の場合は帳票の先頭か ら、フリーフレーム形式の場合、フレームの先頭 からの相対ドット位置(1/1440インチ)を6桁以内の 符号なし外部10進で指定します。指定したドット 位置までを出力可能な下端とします。6桁に満た ない場合は空白またはNULL文字を設定してくだ さい。帳票定義体やフレームのサイズを超える指 定を行った場合MEFD_RC_PARA(26)で復帰し ます。

RS : 解除。

PT、LN,DTのいずれかにより設定された下端情 報を解除します。

フリーフレーム形式以外の帳票定義体使用時は 帳票定義体の縦幅がパーティション出力可能な 下端となります。また、フリーフレーム形式の場 合、出力方向が「縦」のフレームはフレームの縦 幅、出力方向が「横」のフレームはフレームの横 幅がそれぞれ出力可能な下端(右端)となります。

パーティションの出力を抑止する場合に使用するレコードを示します。

01 出力抑止レコード

03 ヘッダ出力情報 PIC X(1)

03 フッタ出力情報 PIC X(1)

03 FILLER PIC X(22)

03 印刷開始ボディ番号 PIC X(4) 03 印刷終了ボディ番号 PIC X(4)

ヘッダ出力情報 ヘッダの出力について数値(バイナリ)で指定します。

0:出力

1:抑止

フッタ出力情報 フッタの出力について数値(バイナリ)で指定します。

0:出力

1:抑止

印刷開始ボディ番号 印刷開始ボディ番号を数値の文字列で指定します。

'0001'~'0999':印刷開始番号 '0000':指定解除

印刷終了ボディ番号 印刷終了ボディ番号を数値の文字列で指定します。

'0001'~'0999':印刷終了番号 '0000':指定解除

印刷開始番号は印刷終了番号よりも小さい値を設定してください。そうでない場合、印刷開始番号と印刷終 了番号に設定している値は指定解除として動作します。また、上記の指定範囲外の設定は無視されます。

パーティションの出力可能な下端位置を指定する場合に使用するレコードを示します。

・UNIT CONTROL句の下2桁がPTの場合

固定パーティションの開始位置を出力可能な下端位置として指定します。

01 下端情報レコード

03 指定パーティション PIC X(6)

03 FILLER PIC X(2)

03 下端パーティション PIC X(6)

03 FILLER PIC X(2)

指定パーティション 出力可能な下端を指定するパーティションの名前を6文字以内で指定しま す。

6文字に満たない場合、空白またはNULL文字を設定してください。

下端パーティション 開始位置が下端となる固定パーティションの名前を6文字以内で指定しま す。

6文字に満たない場合、空白またはNULL文字を設定してください。

・UNIT CONTROL句の下2桁が'LN'または'DT'の場合

下端の位置を行で指定位置を出力可能な下端位置として指定します。

01 下端情報レコード

03 指定パーティション PIC X(6)

03 FILLER PIC X(2)

03 下端値 PIC 9(6)

03 FILLER PIC X(2)

指定パーティション 出力可能な下端を指定するパーティションの名前を6文字以内で指定しま す。

6文字に満たない場合、空白またはNULL文字を設定してください。

下端値 下端の位置を6桁以内の外部10進数で指定します。6桁に満たない場合、

空白またはNULL文字を設定してください。

・UNIT CONTROL句の下2桁が'RS'の場合

PT,DT,RSのいずれかのレコードデータの形式で指定してください。指定パーティションのみ有効です。下端パーティション や下端値は指定しても無視されます。

[使用例]

定義体を帳票に印刷後、改ページさせます。

MOVE "SAMP" TO PRT-FORMAT.

MOVE " " TO PRT-MODE.

MOVE "@ALLF" TO PRT-GROUP.

WRITE SAMP.

MOVE "CT" TO PRT-MODE.

MOVE "PAGE" TO UNIT-CONTROL.

WRITE SAMP.

矩形領域の出力範囲を指定します。

01 出力抑止レコード.

03 ヘッダ出力情報 PIC X(01).

03 フッタ出力情報 PIC X(01).

03 FILLER PIC X(22).

03 印刷開始ボディ番号 PIC X(04).

03 印刷終了ボディ番号 PIC X(04).

* 出力抑止

MOVE "CT" TO 処理種別.

MOVE "PRCT" TO 制御情報.

MOVE X"00" TO ヘッダ出力情報.

MOVE X"01" TO フッタ出力情報.

MOVE "0002" TO 印刷開始ボディ番号.

MOVE "0004" TO 印刷終了ボディ番号.

WRITE 出力抑止レコード.

パーティションの配置および拡張可能な下端位置として固定パーティションを指定します。

01 下端情報レコード.

03 指定パーティション PIC X(6).

03 FILLER PIC X(2).

03 下端パーティション PIC X(6).

03 FILLER PIC X(2).

* 下端情報設定(下端パーティション指定)

MOVE "CT" TO 処理種別.

MOVE "ULMT" TO 制御情報.

MOVE "PT" TO 詳細情報.

MOVE "DE" TO 指定パーティション.

MOVE "PF" TO 下端パーティション.

WRITE 下端情報レコード.

* 下端パーティションとして"PF"を指定します。PFの直前までDEを出力可能となります。

パーティションの配置および拡張可能な下端位置として行位置を指定します。

01 下端情報レコード.

03 指定パーティション PIC X(6).

03 FILLER PIC X(2).

03 下端値 PIC 9(6).

03 FILLER PIC X(2).

* 下端情報設定(行位置指定)

MOVE "CT" TO 処理種別.

MOVE "ULMT" TO 制御情報.

MOVE "LN" TO 詳細情報.

MOVE "DE" TO 指定パーティション.

MOVE 51 TO 下端値.

WRITE 下端情報レコード.

* 下端値として51を指定します。50行目までDEを出力可能となります。

[診断]

FILE STATUS句に通知コードが格納されます。

【注意事項】

- 矩形領域の出力範囲指定が有効となる定義体はタックシール形式と段組み伝票形式です。それ以外の形式の定義体に対し て指定した場合は無効です。

- 矩形領域の出力範囲指定は対象となる定義体の出力よりも前に行ってください。

- 矩形領域の出力範囲指定は指定解除を指定するまでの間に出力する定義体すべてに対して適応します。

- 段組みパーティションの改ブロック指定を段組みパーティション形式以外で指定した場合は、用紙の改ページとして扱います。

ドキュメント内 MeFt V10.2 ユーザーズガイド (ページ 143-148)