11.2.2 CALL文による印刷
ここでは,COBOLのCALL文での,オープン要求,出力要求,およびクローズ要求について説明します。
CALL文による印刷は,Windows版XMAP3サーバ/クライアント実行環境(64ビット)で動作するAPでは利用できません。
(1) CALL命令
CALL命令の形式を次に示します。
CALL 'jsvwadrv' USING XMAP-COM XMAP-REQ データ名3 データ名4
-
共通インタフェース領域を指定します。この領域は,帳票を出力したい端末単位に作成し,オープンしたときの領域をクローズ要求まで引き継いで使用します。また,次に示す各要求時にマッピング,および出力に必要な情報をセットします。
-
オープン要求時:仮想端末名,通信種別を指定します。
-
出力要求時:物理マップ名を指定します。
共通インタフェース領域の形式の詳細を次の表に示します。
表11‒8 共通インタフェース領域の形式(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)
仮想端末定義ファイルで指定した名称を左詰めで指定し,残りは空白とします
(XMAP-COM-TNAME)※1
未使用
4(20)
X(4)
(00)16とします(XMAP-COM-RSV2)
通信種別
4(24)
X(4)
プリンタ要求時は'OWS△'とします
(XMAP-COM-MSG)
未使用
44(28)
X(44)
(00)16とします(XMAP-COM-RSV3)
マップ名
8(72)
X(8)
物理マップ名を左詰めでデバイスID※2付きで指定し,残りは空白とします
(XMAP-COM-MAPNAME)
未使用
8(80)
X(8)
(00)16とします(XMAP-COM-RSV4)
未使用
4(88)
S9(8)COMP-5
0とします(XMAP-COM-INLNG)
未使用
68(92)
X(68)
(00)16とします(XMAP-COM-RSV5)
-
-
要求インタフェース領域を指定します。要求インタフェース領域の形式を次の表に示します。この領域は,必ず指定します。この領域に指定した内容によって,要求種別が決まります。
表11‒9 要求インタフェース領域の形式(XMAP-REQ,COBOL) データ項目名
長さ(位置)
データ形式
指定内容(データ名)
要求種別
4
X(4)
'OPEN':オープン要求
'CLOS':クローズ要求
'SEND':出力要求
(XMAP-REQ-TYPE)
未使用
1(4)
X
'△'とします(XMAP-REQ-OPT1)
SEND
オプション
1(5)
X
'1':出力要求
'△':上記以外(XMAP-REQ-OPT2)
未使用
2(6)
X(2)
'△△'とします(XMAP-REQ-RSV)
-
データ名3
次に示す各要求に対応する情報を指定します。
-
出力要求時:出力論理マップを指定します。
-
クローズ要求時:0を指定します。
-
オープン要求時:オープンインタフェース領域を指定します。オープンインタフェース領域の形式を次の表に示します。この領域は,必ず指定します。
表11‒10 オープンインタフェース領域の形式(XMAP-OPN,COBOL) データ項目名
長さ(位置)
データ形式
指定内容(データ名)
データ有無コード
使用選択
1
X
'1':データ有無コードを指定します
その他:データ有無コードを指定しません(標準値「1F」を仮定)
(XMAP-OPN-DCODE-SET)
データ有無コード
1(1)
X
データ有無コードを指定する場合,2桁の16進数(00〜FF)で指定します
(XMAP-OPN-DCODE)
未使用
2(6)
X(2)
'△△'とします(XMAP-OPN-RSV)
-
-
データ名4
次に示す各要求に対応する情報を指定します。
-
出力要求時:0を指定します。
-
クローズ要求時:0を指定します。
-
オープン要求時:0を指定します。
-
(2) インタフェース領域の取り込み方法
XMAP3が提供しているインタフェース領域(Jsvwatbl.cbl)をAPに取り込むには,COPY文を使用します。COPY文は,WORKING-STORAGE SECTION,またはLINKAGE SECTIONに指定します。また,コンパイルする前に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). |
(3) オープン要求
CALL命令を使用する場合,帳票を印字したいプリンタに付けた仮想端末名単位にオープン要求をします。複数の仮想端末(プリンタ)をオープン要求する場合,インタフェース領域は,各端末に用意します。一つのAP(プロセス)内で同時にオープンできる端末数の上限は15個です。
- 例
PROCEDURE DIVISION. : INITIALIZE XMAP-COM ┐ REPLACING NUMERIC DATA BY ZERO ├ …… 1.共通エリアをクリア ALPHANUMERIC DATA BY LOW-VALUE.┘ MOVE ALL 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 'OWS△' TO XMAP-COM-MSG. …………… 6.プリンタの通信種別をセット MOVE 'PRT001△△' TO XMAP-COM-TNAME. …………… 7.仮想端末名を代入 MOVE '1' TO XMAP-OPN-DCODE-SET. …………… 8.データ有無コードをセット MOVE X'1F' TO XMAP-OPN-DCODE. MOVE SPACE TO XMAP-OPN-RSV. CALL 'jsvwadrv' USING XMAP-COM …………… 9.共通インタフェース領域 XMAP-REQ …………… 10.要求インタフェース領域 XMAP-OPN …………… 11.オープンインタフェース領域 BY VALUE 0.
(4) 出力要求
オープン要求した仮想端末へ帳票印刷をします。オープン要求で使用した共通インタフェース領域を引き継いで使用します。
- 例
MOVE 'SEND' TO XMAP-REQ-TYPE. ……… 1.出力要求をセット MOVE '△' TO XMAP-REQ-OPT1. ……… 2.必ず空白をセット MOVE '1' TO XMAP-REQ-OPT2. ……… 3.出力要求の場合’1’をセット MOVE 'MAP3016B' TO XMAP-COM-MAPNAME. … 4.物理マップ名をセット MOVE データ TO MAP301O. ……………… 5.帳票出力したいデータを論理マップへセット CALL 'jsvwadrv' USING XMAP-COM ……… 6.共通インタフェース領域 XMAP-REQ ……… 7.要求インタフェース領域 MAP301O ……… 8.出力論理マップ BY VALUE 0.