12.3.1 行データの帳票印刷(C言語)
(1) jstqlopn関数
環境変数を取り込んで,行データの編集を開始します。なお,環境変数については,マニュアル「XMAP3 実行ガイド」を参照してください。
- 形式
#include "jstqlcom.h" long APIENTRY jstqlopn(com) JSTQL_COM *com; …… 1.
(a) 形式の説明
-
APで確保したユーザインタフェース領域の先頭アドレスを指定します。ユーザインタフェース領域の形式を次の表に示します。
表12‒11 ユーザインタフェース領域の形式 属性および名称
位置
長さ
内容
備考
(バイト)
unsigned char lcomid
0
4
テーブル
ID:'XMP3'
jstqlopn関数を呼び出す前に設定します
unsigned char *lcomsvnm
4
4
印刷サービス名のアドレス
unsigned char lcomdevnm
8
6
予備
jstqlopn関数を呼び出す前に必ず,NULL(0x00)でクリアします※1
unsigned char lcomrsv1
14
2
予備
unsigned char lcompgcnm
16
8
予備
unsigned char lcomrsv2
24
4
予備
unsigned char *lcompgedr
28
4
予備
long lcomrc
32
4
リターンコード
関数呼び出し後に参照します※3
long lcomerr
36
4
エラー詳細コード※2
unsigned char lcomsync
40
1
予備
jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします※1
unsigned char lcomrsv3
41
1
予備
unsigned char lcomrsv4
42
1
予備
unsigned char lcomrsv5
43
1
予備
unsigned char lcomrsv6
44
12
予備
unsigned char *lcomxppdr
56
4
予備
unsigned char lcomperr
60
4
ページ制御エラー情報
ページ制御のエラー発生時に参照します※3
unsigned char *lcomxperr
64
4
予備
jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします※1
unsigned char lcomwrk
68
188
XMAP3の作業領域
jstqlopn関数を呼び出す前に必ずNULL(0x00)でクリアします※1
ユーザインタフェース領域には,次に示す項目に情報を設定し,そのほかの項目はNULL(0x00)でクリアします。
-
テーブルIDとして文字列'XMP3'を設定します。
-
印刷サービス名は,14バイト以内の文字列で,NULLを終端とします。印刷サービス名は,スタンドアロン環境では,必ず,表示・印刷セットアップの[プリンタ]タブの印刷モードに,ページプリンタ用として定義したサービス名を指定します。C/Sシステム環境の場合は,C/Sセットアップの印刷サービス名と同じ名称を指定します。
印刷サービス名アドレスの指定がNULLポインタのとき,文字列がNULLまたはスペースだけのときは,環境変数「XMAP3_PSNAME」で指定した名称が仮定されます。環境変数の指定がない場合は,印刷サービス名として「#PRT」が仮定されます。
(2) jstqlpag関数
ページ制御情報を作成して,ページバッファに格納します。
- 形式
#include "jstqlcom.h" long APIENTRY jstqlpag(com,pgcnm,rsv,ovlname) JSTQL_COM *com; …… 1. unsigned char *pgcnm; …… 2. unsigned char *rsv; …… 3. unsigned char *ovlname; …… 4.
(a) 形式の説明
-
JSTQL_COMアドレス
jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
-
予備
必ず,NULLを指定します。
-
予備
必ず,NULLを指定します。
-
書式名格納領域のアドレス
書式名(マップ名にIDを付けた名称(IDはマップ名が6文字のときは6G,7文字のときはF))が格納されている領域のアドレスを必ず指定します。書式名は,8バイト以内の文字列で,NULLを終端とします。書式名を9バイト以上で指定した場合は,先頭から8バイト分を書式名と見なします。
書式名の指定がNULLポインタのとき,文字列がNULLまたは空白だけのときは,環境変数「XMAP3_FMP」で指定した名称が仮定されます。
(b) リターン情報
関数のリターン値を次に示します。
-
0:正常終了
-
8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)
-
12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)
(c) 注意事項
jstqldat関数での行データをjstqllpt関数で出力していない場合,この関数によって出力されます。また,この関数を発行するjstqlcls関数を発行するまでは,前に発行した関数の情報(書式マップ名など)が引き継がれます。
(3) jstqlctp関数
書式印刷時にずれを生じさせないように,行データの制御情報を作成して,行バッファに格納します。ここで指定した制御情報は,jstqllpt関数の発行,または改ページまで有効です。
- 形式
#include "jstqlcom.h" long APIENTRY jstqlctp(com,argpt,cnt) JSTQL_COM *com; …… 1. JSTQL_CTL *argpt; …… 2. long cnt; …… 3.
(a) 形式の説明
-
JSTQL_COMアドレス
jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
-
JSTQL_CTLアドレス
行データの制御情報を設定する制御情報テーブルの先頭アドレスを指定します。制御情報テーブルの形式と,制御情報テーブルに指定できる定数と値を次の図に示します。
図12‒3 行データの制御情報テーブル(JSTQL_CTL)の形式 typedef struct{ long ctl_type; long ctl_val; }JSTQL_CTL; #define JSTQ_TYPE_PNT 1 #define JSTQ_TYPE_INT 2 #define JSTQ_TYPE_FMT 3 #define JSTQ_TYPE_WID 4
表12‒12 行データの制御情報テーブル(JSTQL_CTL)に指定できる定数と値 制御情報の
種類
定数(ctl_type)
指定値
(ctl_val)
意味
文字サイズ
JSTQ_TYPE_PNT
50
文字サイズに5ポイントを指定します
70
文字サイズに7ポイントを指定します
90
文字サイズに9ポイントを指定します
120
文字サイズに12ポイントを指定します
文字の間隔
JSTQ_TYPE_INT
0
文字の間隔を指定しません
1〜7
文字の間隔に1〜7ポイントを指定します
書体
JSTQ_TYPE_FMT
0
書体を元に(標準値に)戻します
1
書体に明朝体を指定します
2
書体にゴシック体を指定します
9
書体にOCR体を指定します※
拡大(平体)
JSTQ_TYPE_WID
0
拡大を指定しません
1
拡大を指定します
-
項目数
制御情報テーブル中に設定した制御情報の項目数(1以上の値)を指定します。
- 例
JSTQL_CTL arg[4]; long cnt; cnt = 0; argpt[cnt].ctl_type = JSTQ_TYPE_PNT; ……文字サイズの設定 argpt[cnt].ctl_val = 90; ……9ポイントを指定 cnt++; argpt[cnt].ctl_type = JSTQ_TYPE_FMT; ……書体の設定 argpt[cnt].ctl_val = 1; ……明朝体を指定 cnt++; jstqlctp(com,argpt,cnt); ……文字サイズと書体の制御情報編集
(b) リターン情報
関数のリターン値を次に示します。
-
0:正常終了
-
8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)
-
12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)
(c) 注意事項
行の先頭での制御情報の初期値は,文字サイズ,文字の間隔,および書体はドローで定義した値,平体は指定なしです。ただし,環境定数(XMAP3_FORMAT)で書体を指定している場合,環境変数で指定した書体が有効となります。ここで指定した制御情報は,jstqllpt関数の発行,または改ページまで有効です。制御情報の指定がない場合には,この関数を発行しないでください。
(4) jstqldat関数
文字データを編集して,行バッファに格納します。
- 形式
#include "jstqlcom.h" long APIENTRY jstqldat(com,datp,datl) JSTQL_COM *com; …… 1. unsigned char *datp; …… 2. long datl; …… 3.
(a) 形式の説明
-
JSTQL_COMアドレス
jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
-
文字データのアドレス
出力する文字データ(行データ)のアドレスを指定します。
-
文字データの長さ
出力する文字データ(行データ)の長さを,バイト数で指定します。
(b) リターン情報
関数のリターン値を次に示します。
-
0:正常終了
-
8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)
-
12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)
(c) 注意事項
この関数では,印刷する文字データ(行データ)だけを指定し,行送りなどはjstqllpt関数で指定します。
(5) jstqllpt関数
行バッファに格納されている行データに行送り情報を付けて,1行分のデータをページバッファに出力します。ただし,改ページを指定したときや,改ページが発生したときは,ページバッファに格納されている1ページ分のデータをプリンタに出力します。
- 形式
#include "jstqlcom.h" long APIENTRY jstqllpt(com,argpt,tim) JSTQL_COM *com; …… 1. JSTQL_CTL *argpt; …… 2. long tim; …… 3.
(a) 形式の説明
-
JSTQL_COMアドレス
jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
-
JSTQL_CTLアドレス
行送り情報を設定する制御情報テーブルの先頭アドレスを指定します。制御情報テーブルの形式と,制御情報テーブルに指定できる定数と値を次に示します。
図12‒4 行送りの制御情報テーブル(JSTQL_CTL)の形式 typedef struct{ long ctl_type; long ctl_val; }JSTQL_CTL; #define JSTQ_TYPE_NLN 2 #define JSTQ_TYPE_CNL 3
表12‒13 行送りの制御情報テーブル(JSTQL_CTL)に指定できる定数と値 制御情報の
種類
定数(ctl_type)
指定値
(ctl_val)
意味
改行
JSTQ_TYPE_NLN
1〜99
1〜99行分改行します
チャネル
スキップ
JSTQ_TYPE_CNL
0
行送りをしません
1
紙送りチャネル番号C01(改ページ)を指定します
-
行出力と行送りのタイミング
行データを行送り後に出力するか,または行送り前に出力するかを指定します。
行送り後に行データを出力する場合は「0」を,行送り前に出力する場合は「1」を指定します。0または1以外の値を指定した場合は「0」を仮定します。
(b) リターン情報
関数のリターン値を次に示します。
-
0:正常終了
-
8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)
-
12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)
(c) 注意事項
この関数を発行しない場合でも,ページバッファに格納された行データの数が1ページに印刷できる行数を超えるとき,またはページバッファに格納できるデータ長の制限を超えるときは,自動的に改ページされます。
(6) jstqlcls関数
行データの編集を終了します。
- 形式
#include "jstqlcom.h" long APIENTRY jstqlcls(com) JSTQL_COM *com; …… 1.
(a) 形式の説明
-
JSTQL_COMアドレス
jstqlopn関数で指定したユーザインタフェース領域の先頭アドレスを指定します。
(b) リターン情報
関数のリターン値を次に示します。
-
0:正常終了
-
8:異常終了(ユーザインタフェース領域内のエラー詳細コードを参照してください)
-
12:パラメタ不正(ユーザインタフェース領域のアドレスまたはIDが不正です)
(c) 注意事項
この関数を発行したとき,バッファ中に残っている行データは,すべて出力されます。なお,行バッファの文字データは,ページバッファに格納され,ページバッファから出力されます。