画面・帳票サポートシステム XMAP3 プログラミングガイド


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

ここでは,C言語で開発するときに使用する関数の形式と,オープン要求,クローズ要求,出力要求,入力要求,およびオプション設定要求について説明します。

〈この項の構成〉

(1) jsvwadrv関数

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

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

    共通インタフェース領域のアドレスを指定します。この領域は,画面を出力したい端末単位に作成し,オープンしたときの領域をクローズ要求まで引き継いで使用します。また,次に示す各要求時にマッピング,および入出力に必要な情報を代入します。

    • オープン時 : 仮想端末名,通信種別を指定する。

    • 出力要求時 : 物理マップ名を指定する。

    • 入力要求時 : 入力論理マップ長を指定する

    共通インタフェース領域の形式の詳細を次の表に示します。

    表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

    注※

    論理マップ名,リターンコード,および画面のデバイスIDについては,「11.1.1(1) 通信記述項」を参照してください。

  2. XMAP_REQアドレス

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

    表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. パラメタ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

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

  4. パラメタ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

    注※

    指定内容とマッピングオプションは次のように対応しています。

    XMAP_MDO_MAPFLD:マージ

    XMAP_MDO_PHFLD:物理マップだけ

    XMAP_MDO_LOGFLD:論理マップだけ

    なお,マッピングオプションの指定値については「3.2 マッピングオプション」を参照してください。

(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;   /* マッピングインタフェース領域 */

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

図12‒1 インタフェーステーブル
/***     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個です。

[図データ]

(3) クローズ要求

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

[図データ]

(4) 出力要求

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

[図データ]

注 

jsvwadrv関数を呼ぶ前に,表示したいデータを出力論理マップにセットしてください。

(5) 入力要求

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

[図データ]

(6) オプション設定要求

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

[図データ]