5.4.2 スタンドアロン環境,およびC/S環境下での画面入出力および帳票出力命令

<この項の構成>
(1) jsvwadrv関数の発行順序
(2) jsvwadrv関数

(1) jsvwadrv関数の発行順序

jsvwadrv関数の機能と発行順序を図5-12に示します。

図5-12 jsvwadrv関数の機能と発行順序

[図データ]

注※1
ディスプレイとプリンタを使う場合,それぞれに必要です。
注※2
画面・帳票数分を繰り返します。
注※3
マッピングオプション変更時に発行します。
注※4
ディスプレイからデータを入力する場合に必要であり,プリンタの場合は発行しません。

(2) jsvwadrv関数

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

[図データ]

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

      表5-9 共通インタフェース領域の形式XMAP_COM

      データ項目名長さ(位置)データ形式指定内容(データ名)
      アイキャッチャ4char[4]「*XP△」とします(xmap_com_id)
      リターン値2(4)unsigned short2進形式で格納(xmap_com_rtn)
      リターンコード詳細2(6)unsigned short2進形式で格納(xmap_com_rsn)
      未使用3(8)char[3](00)16とします(xmap_com_rsvl)
      id区分1(11)char必ず「I」とします(xmap_com_itype)
      仮想端末名称8(12)char[8]仮想端末定義ファイルで指定した名称を左詰めで指定し,残りは空白です。仮想端末名を省略して空白を8バイトセットすると,仮想端末定義ファイル中の先頭に定義された仮想端末名が仮定されます(xmap_com_tname)
      未使用4(20)char[4](00)16とします(xmap_com_rsv2)
      通信種別4(24)char[4]ディスプレイの場合は,「BWS△」とします。プリンタの場合は,「OWS△」とします(xmap_com_msg)
      未使用44(28)char[44](00)16とします(xmap_com_rsv3)
      マップ名称8(72)char[8]物理マップ名を左詰めでデバイスID付きで指定します。残りは空白です(xmap_com_mapname)
      未使用2(80)char[2](00)16とします(xmap_com_rsv4)
      未使用6(82)char[6](00)16とします(xmap_com_pagename)
      入力論理マップ長4(88)long入力論理マップ長を指定します(xmap_com_inlng)
      未使用68(92)char[68](00)16とします(xmap_com_rsv5)
  2. XMAP_REQアドレス
    要求インタフェース領域のアドレスを指定します。形式を表5-10に示します。この領域は必ず指定します。この領域で指定した内容によって,要求種別が決まります。

    表5-10 要求インタフェース領域の形式XMAP_REQ

    データ項目名長さ(位置)データ形式指定内容(データ名)
    要求種別4char[4]OPEN:オープン要求
    CLOS:クローズ要求
    SEND:出力要求
    RECV:入力要求
    MDO△:オプション設定要求(xmap_req_type)
    RECEIVEオプション1(4)charF:入力要求
    △:入力要求以外(xmap_req_opt1)
    SENDオプション1(5)char1:出力要求
    △:出力要求以外(xmap_req_opt2)
    未使用2(6)char[2]「△△」とします(xmap_req_rsv)
  3. パラメタ3
    入出力要求やオープン要求などの要求種別に応じて適切な内容を指定します。
    • 出力要求時:出力論理マップのアドレスを指定する。
    • 入力要求時:入力論理マップのアドレスを指定する。
    • オープン要求時:オープンインタフェース領域のアドレスを指定する。オープンインタフェース領域の形式の詳細を表5-11に示す。

      表5-11 オープンインタフェース領域の形式XMAP_OPN

      データ項目名長さ(位置)データ形式指定内容(データ名)
      データ有無コード使用選択1char1:データ有無コードを有効にします
      その他:データ有無コードを無効にします(xmap_opn_dcode_set)
      データ有無コード1(1)unsigned charデータ有無コードを指定します(xmap_opn_dcode)
      未使用2(2)char[2]「△△」とします(xmap_opn_rsv)
    • クローズ要求時:0を指定する。
    • オプション設定要求時:1を指定する。
  4. パラメタ4
    オプション設定要求時は,マッピングインタフェース領域を指定します。形式の詳細を表5-12に示します。なお,マッピングオプションを指定しない場合は,0を指定します。

    表5-12 マッピングインタフェース領域の形式XMAP_MDO

    データ項目名長さ(位置)データ形式指定内容(データ名)
    マッピングオプション大分類4unsigned longXMAP_MDO_SFLDの内容をセットします(xmap_mdo_opt1)
    マッピングオプション小分類4(4)unsigned longマージ:XMAP_MDO_MAPFLDの内容をセットします
    物理マップだけ:XMAP_MDO_PHFLDの内容をセットします
    論理マップだけ:XMAP_MDO_LOGFLDの内容をセットします(xmap_mdo_opt2)
注※
詳細については,「5.2 COBOLの画面入出力および帳票出力命令」を参照してください。
(a) リターン情報

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

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

XMAP3 Serverが提供しているインタフェーステーブル(jsvwatbl.h)をアプリケーションプログラムに取り込む場合,#include指示語を使います。

[図データ]

ただし,jsvwatbl.h中のインタフェーステーブルは,構造体の形式などを定義しているだけで,#include指示語によってアプリケーションプログラムに実領域が取られるのではありません。そのため,アプリケーションプログラム中でインタフェース領域を定義しなければなりません。インタフェース領域を定義する例を図5-13に示します。

図5-13 インタフェース領域の定義例

[図データ]

[図データ]

(c) オープン要求

jsvwadrv関数を使用する場合,画面・帳票を表示,印刷したい端末に付けた仮想端末名単位にオープン要求を実行します。複数の仮想端末(ディスプレイとプリンタ)をオープン要求する場合,インタフェース領域は仮想端末ごとに用意します。

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

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

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

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

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

入力要求によって,画面から入力した情報をアプリケーションプログラムへ入力します。画面表示要求で使用したインタフェース領域を引き継いで使用します。ただし,プリンタの場合は指定できません。

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

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

(例)
[図データ]