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


11.1.2 CALL文による方法

COBOLのCALL文でAPを作成するときは,CALL命令を発行します。CALL命令でのオープン要求,オプション設定要求,出力要求,入力要求,およびクローズ要求の方法を説明します。

CALL文による方法は,Windows版XMAP3サーバ/クライアント実行環境(64ビット)で動作するAPでは利用できません。

〈この項の構成〉

(1) CALL命令

CALL命令の形式を次に示します。

CALL 'jsvwadrv' USING XMAP-COM XMAP-REQ データ名3 データ名4.
  1. XMAP-COM

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

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

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

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

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

    表11‒2 共通インタフェース領域の形式(XMAP-COM,COBOL)

    データ項目名

    長さ(位置)

    データ形式

    指定内容(データ名)

    アイキャッチャ

    4

    X(4)

    '*XP△'とする(XMAP-COM-ID)。

    リターンコード

    2(4)

    9(4)COMP-5

    2進形式で格納(XMAP-COM-RTN)。

    リターンコード詳細

    (画面入出力時のリターンコード)

    2(6)

    9(4)COMP-5

    2進形式で格納(XMAP-COM-RSN)。

    未使用

    3(8)

    X(3)

    (00)16とする(XMAP-COM-RSV1)。

    id区分

    1(11)

    X

    必ず'I'とする(XMAP-COM-ITYPE)。

    仮想端末名

    8(12)

    X(8)

    スタンドアロンの場合,標準の「DSP001」を指定する。C/Sシステムの場合,出力先の仮想端末名を指定する(XMAP-COM-TNAME)。

    未使用

    4(20)

    X(4)

    (00)16とする(XMAP-COM-RSV2)。

    通信種別

    4(24)

    X(4)

    ディスプレイ要求時は'BWS△'とする(XMAP-COM-MSG)。

    未使用

    44(28)

    X(44)

    (00)16とする(XMAP-COM-RSV3)。

    マップ名

    8(72)

    X(8)

    物理マップ名を左詰めでデバイスID付きで指定する。残りは空白(XMAP-COM-MAPNAME)。

    未使用

    8(80)

    X(8)

    (00)16とする(XMAP-COM-RSV4)。

    入力論理マップ長

    4(88)

    S9(8)COMP-5

    入力論理マップ長を指定する(XMAP-COM-INLNG)。

    未使用

    68(92)

    X(68)

    (00)16とする(XMAP-COM-RSV5)。

    注※

    画面のデバイスIDについては「11.1.1(1) 通信記述項」を参照してください。

  2. XMAP-REQ

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

    表11‒3 要求インタフェース領域の形式(XMAP-REQ,COBOL)

    データ項目名

    長さ(位置)

    データ形式

    指定内容(データ名)

    要求種別

    4

    X(4)

    'OPEN':オープン要求

    'CLOS':クローズ要求

    'SEND':出力要求

    'RECV':入力要求

    'MDO△':オプション設定要求

    (XMAP-REQ-TYPE)

    RECEIVE

    オプション

    1(4)

    X

    'F':入力要求時

    '△':上記以外

    (XMAP-REQ-OPT1)

    SEND

    オプション

    1(5)

    X

    '1':出力要求時

    '△':上記以外

    (XMAP-REQ-OPT2)

    未使用

    2(6)

    X(2)

    '△△'とする(XMAP-REQ-RSV)

  3. データ名3

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

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

    • クローズ要求時 :0Lを指定する。

    • オプション設定要求時:1Lを指定する。

    • オープン要求時 :オープンインタフェース領域のアドレスを必ず指定する。

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

    表11‒4 オープンインタフェース領域の形式(XMAP-OPN,COBOL)

    データ項目名

    長さ(位置)

    データ形式

    指定内容(データ名)

    データ有無

    コード使用選択

    1

    X

    '1' :データ有無コードを指定する

    その他 :データ有無コードを指定しない(標準値「1F」を仮定)

    (XMAP-OPN-DCODE-SET)

    データ有無

    コード

    1(1)

    X

    データ有無コードを指定する場合,2桁の16進数(00〜FF)で指定する

    (XMAP-OPN-DCODE)

    未使用

    2(2)

    X(2)

    '△△'とする(XMAP-OPN-RSV)

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

  4. データ名4

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

    表11‒5 マッピングインタフェース領域の形式(XMAP-MDO,COBOL)

    データ項目名

    長さ(位置)

    データ形式

    指定内容(データ名)

    マッピング

    オプション

    大分類

    4

    9(8)COMP-5

    XMAP-MDO-SFLDの内容を代入する

    (XMAP-MDO-OPT1)

    マッピング

    オプション

    小分類

    (MAPPING MODE句相当)

    4(4)

    9(8)COMP-5

    XMAP-MDO-MAPFLD

    XMAP-MDO-PHFLD

    XMAP-MDO-LOGFLD

    (XMAP-MDO-OPT2)

    注※

    指定内容とマッピングオプションは次のように対応しています。なお,マッピングオプションについては,「3.2 マッピングオプション」を参照してください。

    ・XMAP-MDO-MAPFLD:マージ

    ・XMAP-MDO-PHFLD:物理マップだけ

    ・XMAP-MDO-LOGFLD:論理マップだけ

(2) インタフェース領域の取り込み方法

XMAP3が提供しているインタフェース領域(JSVWATBL.CBL)をAPに取り込む場合,COBOLのWORKING-STORAGE SECTION,またはLINKAGE SECTIONにCOPY文を指定します。また,コンパイルする前にJSVWATBL.CBLのフォルダ名をCBLLIBに設定しておく必要があります。

インタフェース領域を次の図に示します。

図11‒1 インタフェース領域
*
* COMMON INTERFACE AREA
 01 XMAP-COM.
  03 XMAP-COM-ID         PIC  X(4).
  03 XMAP-COM-RTN        PIC  9(4)  COMP-5.
  03 XMAP-COM-RSN        PIC  9(4)  COMP-5.
  03 XMAP-COM-RSV1       PIC  X(3).
  03 XMAP-COM-ITYPE      PIC  X.
  03 XMAP-COM-TNAME      PIC  X(8).
  03 XMAP-COM-RSV2       PIC  X(4).
  03 XMAP-COM-MSG        PIC  X(4).
  03 XMAP-COM-RSV3       PIC  X(44).
  03 XMAP-COM-MAPNAME    PIC  X(8).
  03 XMAP-COM-RSV4       PIC  X(8).
  03 XMAP-COM-INLNG      PIC  S9(8)  COMP-5.
  03 XMAP-COM-RSV5       PIC  X(68).
*
* REQUEST INTERFACE AREA
 01 XMAP-REQ.
  03 XMAP-REQ-TYPE       PIC  X(4).
  03 XMAP-REQ-OPT1       PIC  X.
  03 XMAP-REQ-OPT2       PIC  X.
  03 XMAP-REQ-RSV        PIC  X(2).
*
* OPEN INTERFACE AREA
 01 XMAP-OPN.
  03 XMAP-OPN-DCODE-SET     PIC  X.
  03 XMAP-OPN-DCODE      PIC  X.
  03 XMAP-OPN-RSV        PIC  X(2).
*
* MAPPING OPTION INTERFACE AREA
 01 XMAP-MDO.
  03 XMAP-MDO-OPT1       PIC  9(8)  COMP-5.
  03 XMAP-MDO-OPT2       PIC  9(8)  COMP-5.
*
* MAPPING OPTION VALUE
 77  XMAP-MDO-SFLD        PIC  9(8)  COMP  VALUE  3.
 77  XMAP-MDO-MAPFLD      PIC  9(8)  COMP  VALUE 13.
 77  XMAP-MDO-PHFLD       PIC  9(8)  COMP  VALUE 14.
 77  XMAP-MDO-LOGFLD      PIC  9(8)  COMP  VALUE 15.

(3) オープン要求

CALL命令を使用する場合,画面を表示したい端末に付けた仮想端末名単位にオープン要求をします。複数の仮想端末(ディスプレイ)をオープン要求する場合,インタフェース領域は,仮想端末ごとに準備してください。一つのAP(プロセス)内で同時にオープンできる端末数の上限は15個です。

PROCEDURE DIVISION.
   .
   :
 MOVE 0    TO XMAP-COM.          … 1.共通エリアをクリアする
 MOVE SPACE  TO XMAP-REQ.        … 2.要求エリアをクリアする
*
 MOVE 'OPEN' TO XMAP-REQ-TYPE.   … 3.オープン要求を代入する
 MOVE '*XP△' TO XMAP-COM-ID.    … 4.IDを代入する
 MOVE 'I'   TO XMAP-COM-ITYPE.   … 5.ID区分を代入する
 MOVE 'BWS△' TO XMAP-COM-MSG.   … 6.ディスプレイの通信種別を代入する
 MOVE 'DSP001△△' TO XMAP-COM-TNAME.   … 7.仮想端末名を代入する
                          
 MOVE '1'    TO XMAP-OPN-DCODE-SET.  ┐
 MOVE X'1F'   TO XMAP-OPN-DCODE.     ├ … 8.データ有無コードを代入する
 MOVE SPACE   TO XMAP-OPN-RSV.       ┘
 CALL 'jsvwadrv' USING XMAP-COM         … 9.共通インタフェース領域
            XMAP-REQ             … 10.要求インタフェース領域
            XMAP-OPN             … 11.オープンインタフェース領域
            BY VALUE 0.

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

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

MOVE 'MDO△' TO XMAP-REQ-TYPE.     … 1.オプション設定要求を代入する
MOVE '△'   TO XMAP-REQ-OPT1.      … 2.必ず空白を代入する
MOVE '△'   TO XMAP-REQ-OPT2.      … 3.必ず空白を代入する
MOVE XMAP-MDO-SFLD  TO XMAP-MDO-OPT1. … 4.マッピングオプション
                                               大分類を代入する
MOVE XMAP-MDO-LOGFLD TO XMAP-MDO-OPT2. … 5. マッピングオプション
                                               小分類を代入する
CALL 'jsvwadrv' USING XMAP-COM    … 6.共通インタフェース領域
            XMAP-REQ              … 7.要求インタフェース領域
         BY VALUE 1               … 8.必ず1を指定する
         BY REFERENCE XMAP-MDO.   … 9. マッピングオプションインタフェース領域

(5) 出力要求

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

MOVE 'SEND'  TO XMAP-REQ-TYPE. … 1.出力要求を代入する
MOVE '△'    TO XMAP-REQ-OPT1. … 2.出力要求時に必ず空白を代入する
MOVE '1'    TO XMAP-REQ-OPT2.  … 3.出力要求時に必ず'1'を代入する
MOVE 'MAP003NC'TO XMAP-COM-MAPNAME … 4.物理マップ名を代入する 
MOVE データ  TO MAP003O.           … 5.画面表示したいデータを
                                        出力論理マップへ代入する
CALL 'jsvwadrv' USING XMAP-COM     … 6.共通インタフェース領域
            XMAP-REQ               … 7.要求インタフェース領域
            MAP003O                … 8.出力論理マップ
            BY VALUE 0.

(6) 入力要求

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

MOVE 'RECV' TO XMAP-REQ-TYPE.   … 1.入力要求を代入する
MOVE 'F'   TO XMAP-REQ-OPT1.    … 2.入力要求時に必ず'F'を代入する
MOVE '△'   TO XMAP-REQ-OPT2.   … 3.入力要求時に必ず空白を代入する
MOVE map003S TO XMAP-COM-INLNG. … 4.入力論理マップ長を代入する
*
CALL 'jsvwadrv' USING XMAP-COM  … 5.共通インタフェース
            XMAP-REQ            … 6.要求インタフェース
            MAP003I             … 7.入力論理マップ
            BY VALUE 0.
IF MAP003-INCI                  … 8.入力論理マップのデータを判定する

(7) クローズ要求

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

 MOVE 'CLOS' TO XMAP-REQ-TYPE.   … 1.クローズ要求を代入する
 MOVE '△'   TO XMAP-REQ-OPT1.   … 2.必ず空白を代入する
 MOVE '△'   TO XMAP-REQ-OPT2.   … 3.必ず空白を代入する
 CALL 'jsvwadrv' USING XMAP-COM  … 4.共通インタフェース領域
             XMAP-REQ            … 5.要求インタフェース領域
             BY VALUE 0 0.