12.1.1 画面表示命令(C言語)
ここでは,C言語で開発するときに使用する関数の形式と,オープン要求,クローズ要求,出力要求,入力要求,およびオプション設定要求について説明します。
(1) jsvwadrv関数
jsvwadrv関数の形式を次に示します。
long APIENTRY jsvwadrv(XMAP_COMアドレス,XMAP_REQアドレス, パラメタ3,パラメタ4)
-
共通インタフェース領域のアドレスを指定します。この領域は,画面を出力したい端末単位に作成し,オープンしたときの領域をクローズ要求まで引き継いで使用します。また,次に示す各要求時にマッピング,および入出力に必要な情報を代入します。
-
オープン時 : 仮想端末名,通信種別を指定する。
-
出力要求時 : 物理マップ名を指定する。
-
入力要求時 : 入力論理マップ長を指定する
共通インタフェース領域の形式の詳細を次の表に示します。
表12‒2 共通インタフェース領域の形式(XMAP_COM,C言語) 項目
長さ
(位置)
データ形式
格納内容
データ名
アイキャッチャ
4
char[4]
'*XP△'とする
xmap_com_id
リターンコード※
2(4)
unsigned short
2進形式でXMAP3が格納
xmap_com_rtn
画面入出力時のリターンコード※
2(6)
unsigned short
2進形式でXMAP3が格納
xmap_com_rsn
未使用
3(8)
char[3]
(00)16とする
xmap_com_rsv1
id区分
1(11)
char
必ず'I'とする
xmap_com_itype
仮想端末名
8(12)
char[8]
出力先の仮想端末名を指定する(標準は'DSP001△△'を指定する)
xmap_com
_tname
未使用
4(20)
char[4]
(00)16とする
xmap_com_rsv2
通信種別
4(24)
char[4]
'BWS△'とする
xmap_com_msg
未使用
44(28)
char[44]
(00)16とする
xmap_com_rsv3
マップ名
8(72)
char[8]
物理マップ名を左詰めでデバイスID付きで指定する
残りは空白※
xmap_com
_mapname
未使用
8(80)
char[8]
(00)16とする
xmap_com_rsv4
入力論理
マップ長
4(88)
long
入力論理マップ長を指定する
xmap_com_inlng
未使用
68(92)
char[68]
(00)16とする
xmap_com_rsv5
-
-
要求インタフェース領域のアドレスを指定します。形式の詳細を次の表に示します。この領域は,必ず指定してください。この領域で指定した内容によって要求種別が決まります。
表12‒3 要求インタフェース領域の形式(XMAP_REQ,C言語) 項目
長さ
(位置)
データ形式
指定内容
データ名
要求種別
4
char[4]
'OPEN':オープン要求
'CLOS':クローズ要求
'RECV':入力要求
'SEND':出力要求
'MDO△':オプション設定要求
xmap_req_type
RECEIVE
オプション
1(4)
char
'F':入力要求時
'△':上記以外
xmap_req_opt1
SEND
オプション
1(5)
char
'1':出力要求時
'△':上記以外
xmap_req_opt2
未使用
2(6)
char[2]
'△△'とする
xmap_req_rsv
-
パラメタ3
-
出力要求時:出力論理マップのアドレスを指定する。
-
入力要求時:入力論理マップのアドレスを指定する。
-
クローズ要求時:0Lを指定する。
-
オプション設定要求時:1Lを指定する。
-
オープン要求時:オープンインタフェース領域のアドレスを必ず指定する。
オープンインタフェース領域の形式の詳細を次の表に示します。
表12‒4 オープンインタフェース領域の形式(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を指定します。
表12‒5 マッピングインタフェース領域の形式(XMAP_MDO,C言語) 項目
長さ
(位置)
データ形式
指定内容
データ名
マッピングオプション大分類
4
unsigned long
XMAP_MDO_SFLDの内容をセットする
xmap_mdo_opt1
マッピングオプション小分類
4(4)
unsigned long
XMAP_MDO_MAPFLD※
XMAP_MDO_PHFLD※
XMAP_MDO_LOGFLD※
xmap_mdo_opt2
(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; /* オープンインタフェース領域 */ XMAP_MDO mdo; /* マッピングインタフェース領域 */
インタフェーステーブルを次の図に示します。
/*** 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; /*** MAPPING OPTION INTERFACE AREA **********************/ typedef struct { unsigned long xmap_mdo_opt1; unsigned long xmap_mdo_opt2; } XMAP_MDO; /*** MAPPING OPTION VALUE ********************************/ #define XMAP_MDO_SFLD 3 #define XMAP_MDO_MAPFLD 13 #define XMAP_MDO_PHFLD 14 #define XMAP_MDO_LOGFLD 15 |
(2) オープン要求
jsvwadrv関数を使用する場合,画面を表示したい端末に付けた仮想端末名単位にオープン要求をします。複数の仮想端末をオープン要求する場合,インタフェース領域は仮想端末ごとに用意する必要があります。一つのAP(プロセス)内で同時にオープンできる端末数の上限は15個です。
- 例