12.2.1 帳票印刷命令(C言語)
ここでは,C言語で開発するときに使用する関数の形式と,オープン要求,クローズ要求,および出力要求について説明します。
- 〈この項の構成〉
(1) jsvwadrv関数
jsvwadrv関数の形式を次に示します。
long APIENTRY jsvwadrv(XMAP_COMアドレス,XMAP_REQアドレス,パラメタ3,パラメタ4)
-
共通インタフェース領域のアドレスを指定します。この領域は,帳票を出力したい端末単位に作成し,オープンしたときの領域をクローズ要求まで引き継いで使用します。また,次に示す各要求時にマッピング,および出力に必要な情報をセットします。
-
オープン要求時:仮想端末名,通信種別を指定します。
-
出力要求時:物理マップ名を指定します。
共通インタフェース領域の形式の詳細を次の表に示します。
表12‒7 共通インタフェース領域の形式(XMAP_COM,C言語) データ項目名
長さ
(位置)
データ形式
指定内容(データ名)
アイキャッチャ
4
char[4]
'*XP△'とします(xmap_com_id)
リターンコード
2(4)
unsigned short
2進形式で格納します(xmap_com_rtn)※1
リターンコード
詳細
2(6)
unsigned short
2進形式で格納します(xmap_com_rsn)※1
未使用
3(8)
char[3]
(00)16とします(xmap_com_rsv1)
id区分
1(11)
char
必ず'I'とします(xmap_com_itype)
仮想端末名
8(12)
char[8]
仮想端末定義ファイルで指定した仮想端末名を左詰めで指定し,残りは空白とします(xmap_com_tname)
未使用
4(20)
char[4]
(00)16とします(xmap_com_rsv2)
通信種別
4(24)
char[4]
プリンタ要求時は'OWS△'とします
(xmap_com_msg)
未使用
44(28)
char[44]
(00)16とします(xmap_com_rsv3)
マップ名
8(72)
char[8]
物理マップ名を左詰めでデバイスID※2付きで指定し,残りは空白とします
(xmap_com_mapname)
未使用
8(80)
char[8]
(00)16とします(xmap_com_rsv4)
未使用
4(88)
long
(00)16とします(xmap_com_inlng)
未使用
68(92)
char[68]
(00)16とします(xmap_com_rsv5)
-
-
要求インタフェース領域のアドレスを指定します。形式を次の表に示します。この領域は,必ず指定してください。この領域で指定した内容によって要求種別が決まります。
表12‒8 要求インタフェース領域の形式(XMAP_REQ,C言語) データ項目名
長さ
(位置)
データ形式
指定内容(データ名)
要求種別
4
char[4]
'OPEN':オープン要求
'CLOS':クローズ要求
'SEND':出力要求
(xmap_req_type)
未使用
1(4)
char
'△'とします(xmap_req_opt1)
SEND
オプション
1(5)
char
'1':出力要求時
'△':上記以外
(xmap_req_opt2)
未使用
2(6)
char[2]
'△△'とします(xmap_req_rsv)
-
パラメタ3
-
出力要求時:出力論理マップのアドレスを指定します。
-
オープン要求時:オープンインタフェース領域のアドレスを指定します。
-
クローズ要求時:0を指定します。
オープンインタフェース領域の形式を次の表に示します。
表12‒9 オープンインタフェース領域の形式(XMAP_OPN,C言語) データ項目名
長さ
(位置)
データ形式
指定内容(データ名)
データ有無コード使用選択
1
char
'1':データ有無コードを指定します
その他:データ有無コードを指定しません(標準値「1F」を仮定)
(xmap_opn_dcode_set)
データ有無コード
1(1)
unsigned char
データ有無コードを指定する場合,2桁の16進数(00〜FF)で指定します
(xmap_opn_dcode)
未使用
2(2)
char[2]
'△△'とします(xmap_opn_rsv)
-
-
パラメタ4
各要求時ともに0を指定します。
(a) リターン情報
共通インタフェース領域のxmap_com_rtnにリターン値が設定されます。リターン値を次に示します。
-
0:正常終了
-
4,8:異常終了(詳細については,共通インタフェース領域のxmap_com_rsnに設定される)
-
12:パラメタ不正
(b) インタフェーステーブルの取り込み方法
XMAP3で用意しているインタフェーステーブル(jsvwatbl.h)をAPに取り込む場合,#include指示語を使用します。
#include "jsvwatbl.h" … インタフェーステーブルの取り込み
ただし,jsvwatbl.h中のインタフェーステーブルは,構造体の形式などを定義しており,#include指示語によってAPに実領域は取られません。このため,AP中でインタフェース領域を取る必要があります。インタフェースを取る例を次に示します。
- 例
#include "jsvwatbl.h" XMAP_COM com; /* 共通インタフェース領域 */ XMAP_REQ req; /* 要求インタフェース領域 */ XMAP_OPN opn; /* オープンインタフェース領域 */
インタフェーステーブルを次の図に示します。
/*** COMMON INTERFACE AREA ********************************/ typedef struct { char xmap_com_id[4]; unsigned short xmap_com_rtn; unsigned short xmap_com_rsn; char xmap_com_rsv1[3]; char xmap_com_itype; char xmap_com_tname[8]; char xmap_com_rsv2[4]; char xmap_com_msg[4]; char xmap_com_rsv3[44]; char xmap_com_mapname[8]; char xmap_com_rsv4[8]; long xmap_com_inlng; char xmap_com_rsv5[68]; } XMAP_COM; /*** REQUEST INTERFACE AREA ******************************/ typedef struct { char xmap_req_type[4]; char xmap_req_opt1; char xmap_req_opt2; char xmap_req_rsv[2]; } XMAP_REQ; /*** OPEN INTERFACE AREA *********************************/ typedef struct { char xmap_opn_dcode_set; unsigned char xmap_opn_dcode; char xmap_opn_rsv[2]; } XMAP_OPN; |