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.
-
共通インタフェース領域を指定します。この領域は,画面を出力したい端末単位に作成し,オープンしたときの領域をクローズ要求まで引き継いで使用します。また,次に示す各要求時にマッピング,および入出力に必要な情報を代入します。
-
オープン要求時 :仮想端末名,通信種別を指定する。
-
出力要求時 :物理マップ名を指定する。
-
入力要求時 :入力論理マップ長を指定する。
共通インタフェース領域の形式の詳細を次の表に示します。
表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)。
-
-
要求インタフェース領域を指定します。形式を次の表に示します。この領域は,必ず指定してください。この領域を指定した内容によって,要求種別が決まります。
表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
-
出力要求時 :出力論理マップを指定する。
-
入力要求時 :入力論理マップを指定する。
-
クローズ要求時 :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)
-
-
データ名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)
(2) インタフェース領域の取り込み方法
XMAP3が提供しているインタフェース領域(JSVWATBL.CBL)をAPに取り込む場合,COBOLのWORKING-STORAGE SECTION,またはLINKAGE SECTIONにCOPY文を指定します。また,コンパイルする前にJSVWATBL.CBLのフォルダ名をCBLLIBに設定しておく必要があります。
インタフェース領域を次の図に示します。
* * 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.入力論理マップのデータを判定する