7.3.3 画面表示命令(C言語)

XMAP3を呼び出すためのC言語インタフェースは,次に示すjsvwadrv関数を提供します。

<この項の構成>
(1) jsvwadrv関数の発行順序
(2) jsvwadrv関数
(3) リンケージ時の注意事項

(1) jsvwadrv関数の発行順序

jsvwadrv関数の機能と発行順序を次に示します。

[図データ]

(2) jsvwadrv関数

jsvwadrv関数の形式を次に示します。

   long APIENTRY jsvwadrv(XMAP_COMアドレス,XMAP_REQアドレス,
               パラメタ3,パラメタ4)

  1. XMAP_COMアドレス
    共通インタフェース領域のアドレスを指定します。形式の詳細を次の表に示します。この領域は,画面を出力したい端末単位に作成し,オープンしたときの領域をクローズ要求まで引き継いで使用します。また,次に示す各要求時にマッピング,および入出力に必要な情報を代入します。
    • オープン時 : 仮想端末名,通信種別を指定する。
    • 出力要求時 : 物理マップ名称を指定する。
    • 入力要求時 : 入力論理マップ長を指定する

      表7-8 共通インタフェース領域の形式(XMAP_COM,C言語)

      項目長さ
      (位置)
      データ形式格納内容データ名
      アイキャッチャ4char[4]'*XP△'とするxmap_com_id
      リターンコード※12(4)unsigned short2進形式でXMAP3が格納xmap_com_rtn
      画面入出力時のリターンコード※12(6)unsigned short2進形式で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付きで指定する。残りは空白※2xmap_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
      注※1
      論理マップ名については,「7.2.3(1)(a) 通信記述項」を参照してください。
      注※2
      リターンコードについては「7.2.3(1)(g) STATUS KEY句のリターンコード」を参照してください。

  2. XMAP_REQアドレス
    要求インタフェース領域のアドレスを指定します。形式の詳細を次の表に示します。この領域は,必ず指定してください。この領域で指定した内容によって要求種別が決まります。

    表7-9 要求インタフェース領域の形式(XMAP_REQ,C言語)

    項目長さ
    (位置)
    データ形式指定内容データ名
    要求種別4char[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. パラメタ3
    • 出力要求時:出力論理マップのアドレスを指定する。
    • 入力要求時:入力論理マップのアドレスを指定する。
    • クローズ要求時:0Lを指定する。
    • オプション設定要求時:1Lを指定する。
    • オープン要求時:オープンインタフェース領域のアドレスを必ず指定する。
    オープンインタフェース領域の詳細を次の表に示します。

    表7-10 オープンインタフェース領域の形式(XMAP_OPN,C言語)

    項目長さ
    (位置)
    データ形式指定内容(データ名)データ名
    データ有無コード使用選択1char'1':データ有無コードを指定する
    その他:データ有無コードを指定しない(標準値「1F」を仮定)
    xmap_opn_dcode_set
    データ有無コード1(1)unsigned charデータ有無コードを指定する場合,2桁の16進数(00~FF)で指定するxmap_opn_dcode
    未使用2(2)char[2]'△△'とするxmap_opn_rsv

    なお,データ有無コード使用選択項目でデータ有無コードを無効にする指定をした場合は,標準値「1F」が仮定されます。


  4. パラメタ4
    オプション設定要求時は,マッピングインタフェース領域を指定します。形式の詳細を次の表に示します。なお,マッピングオプションを指定しない場合には,0を指定します。

    表7-11 マッピングインタフェース領域の形式(XMAP_MDO,C言語)

    項目長さ
    (位置)
    データ形式指定内容(データ名)データ名
    マッピングオプション大分類4unsigned longXMAP_MDO_SFLDの内容をセットするxmap_mdo_opt1
    マッピングオプション小分類4(4)unsigned longXMAP_MDO_MAPFLD
    XMAP_MDO_PHFLD
    XMAP_MDO_LOGFLD
    xmap_mdo_opt2
    注※
    データ名とマッピングオプションは次のように対応しています。
    XMAP_MDO_MAPFLD:マージ
    XMAP_MDO_PHFLD:物理マップだけ
    XMAP_MDO_LOGFLD:論理マップだけ
    なお,マッピングオプションの指定値の詳細については「1.5.3(1) マッピングオプション」を参照してください。

(a) リターン情報

共通インタフェース領域のxmap_com_rtnにリターン値が設定されます。リターン値を次に示します。

0:正常終了

4,8:異常終了(詳細については,共通インタフェース領域のxmap_com_rsnに設定される)

12:パラメタ不正

(b) インタフェーステーブルの取り込み方法

XMAP3が提供しているインタフェーステーブル(jsvwatbl.h)をAPに取り込む場合,#include指示語を使用します。

[図データ]

ただし,jsvwatbl.h中のインタフェーステーブルは,構造体の形式などを定義しており,#include指示語によってAPに実領域は確保されません。このため,AP中でインタフェース領域を用意する必要があります。例を次に示します。

(例)
[図データ]

インタフェーステーブルを次の図に示します。

図7-16 インタフェーステーブル

[図データ]

(c) オープン要求

jsvwadrv関数を使用する場合,画面を表示したい端末に付けた仮想端末名単位にオープン要求をします。複数の仮想端末をオープン要求する場合,インタフェース領域は仮想端末ごとに用意する必要があります。一つのAP(プロセス)内で同時にオープンできる端末数の上限は15個です。

(例)
[図データ]
(d) クローズ要求

仮想端末をクローズします。オープン要求,出力要求,および入力要求で使用したインタフェースを引き継いで使用します。

(例)
[図データ]
(e) 出力要求

オープン要求した仮想端末へ画面を表示します。オープン要求で使用した共通インタフェース領域を引き継いで使用します。

(例)
[図データ]
注 
jsvwadrv関数を呼ぶ前に,表示したいデータを出力論理マップにセットしてください。
(f) 入力要求

入力要求によって,画面から入力した情報をAPへ入力します。画面表示要求で使用したインタフェース領域を引き継いで使用します。

(例)
[図データ]
(g) オプション設定要求

仮想端末へ画面を表示する場合,マッピングオプションを指定できます。オープン要求で使用した共通インタフェース領域を引き継いで使用します。

(例)
[図データ]

(3) リンケージ時の注意事項

ライブラリには,次に示すファイルを指定する必要があります。

Visual C++ .NET,Visual C++ 6.0の場合
XMAP3インストール先¥LIB¥X3MWDR32.LIB
Visual C++ 5.0の場合
XMAP3インストール先¥LIB¥V3Compatible¥X3MWDR32.LIB