SENDメッセージの送信(データ操作言語)

形式1(論理端末へ送信するメッセージを設定して,送信要求する場合)

DATA DIVISION(通信記述項)の指定

CD  通信記述名
   FOR  {OUTPUT|I-O}
 〔STATUS  KEY  IS データ名1〕
 〔SYMBOLIC  TERMINAL  IS データ名2〕
 〔MAP  NAME  IS データ名5〕
 〔SYNCHRONOUS  MODE  IS {ASYNC|データ名6}〕
 〔SWITCHING  MODE  IS {NORMAL|PRIOR|データ名7}〕
 〔NEXT  TRANSACTION  IS データ名8〕
 〔DETAIL  MODE  IS データ名10〕
 〔PAGE  NAME  IS データ名12〕
 〔MAPPING  MODE  IS データ名13〕.

DATA DIVISION(データ記述項)の指定

01 一意名1.
   02 データ名A  PIC  9(4) COMP.
   02 データ名B  PIC  X(2).
   02 データ名C  PIC  X(n).
01 一意名4.
  02 JST-PAGEC-LENG    PIC S9(4) COMP.
  02 JST-PAGEC-FACE    PIC X.
  02 JST-PAGEC-STACCTL PIC X.
  02 JST-PAGEC-HOPPER  PIC X(2).
  02 JST-PAGEC-RSV1    PIC X(2).
  02 JST-PAGEC-STACKER PIC X(2).
  02 JST-PAGEC-RSV2    PIC X(2).
  02 JST-PAGEC-RSV3    PIC X(2).
  02 JST-PAGEC-RSV4    PIC X(2).
  02 JST-PAGEC-RSV5    PIC X(8).
  02 JST-PAGEC-RSV6    PIC X(8).

PROCEDURE DIVISION(通信文)の指定

SEND  通信記述名  FROM  一意名1
   〔WITH  {ESI|EMI|一意名2}〕
   〔PAGE  CONTROL  IS  一意名4〕.

形式2(先頭セグメントまたは中間セグメントの送信後,メッセージ送信の終了を連絡する場合)

DATA DIVISION(通信記述項)の指定

CD  通信記述名
   FOR  {OUTPUT|I-O}
 〔STATUS  KEY  IS  データ名1〕
 〔SYMBOLIC  TERMINAL  IS  データ名2〕
 〔SWITCHING  MODE  IS  {NORMAL|PRIOR|データ名7}〕.

PROCEDURE DIVISION(通信文)の指定

SEND  通信記述名  WITH  EMI.

機能

次に示すCALLインタフェースの機能を実現します。

送信できる一つのセグメントの最大長は,32000バイトまでです。

送信するセグメントの領域(一意名1で示す領域)の形式を次に示します。

[図データ]

TP1/NET/XMAP3の論理端末に送信する場合は,XMAP3で作成した出力論理マップをCOPY文で取り込み,一意名1として指定します。出力論理マップの詳細については,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 帳票編」,マニュアル「画面・帳票サポートシステム XMAP3 プログラミングガイド 画面編」,マニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 プログラミングガイド」,またはマニュアル「XMAP3 Version 5 画面・帳票サポートシステム XMAP3 開発ガイド」を参照してください。コーディング例については,「付録G.1 コーディング例」を参照してください。

UAPで値を設定する項目

●FOR句

送信するメッセージが,一方送信メッセージか応答メッセージかを設定します。

OUTPUT
一方送信メッセージの送信
I-O
応答メッセージの送信

●SYMBOLIC TERMINAL句

論理端末名称を設定したデータ項目を設定します。データ名2にメッセージ出力先の論理端末名称を設定します。

●MAP NAME句

マップ名を設定したデータ項目を設定します。データ名5にマップ名を6文字以内で設定します。

●SYNCHRONOUS MODE句

非同期型でのメッセージ送信を示す,次のどちらかの値を指定して下さい。

ASYNC
非同期型のメッセージの送信
データ名6
次の値を設定したデータ項目
'0'または'△':非同期型のメッセージの送信

指定を省略した場合は,非同期型のメッセージの送信が設定されます。

●SWITCHING MODE句

一方送信メッセージの場合に,一般か優先かを設定します。

NORMAL
一般の一方送信メッセージ
PRIOR
優先の一方送信メッセージ
データ名7
次の値を設定したデータ項目
'0'または'△':一般の一方送信メッセージ
'1':優先の一方送信メッセージ

省略した場合は,一般の一方送信メッセージ(NORMAL)が設定されます。

●NEXT TRANSACTION句

継続問い合わせ応答メッセージの場合で,次の端末入力メッセージによって起動するMHPを変更するときに設定します。データ名8に起動するMHPのアプリケーション名を8文字以内で設定します。

●DETAIL MODE句

出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。

'0'または'△'
出力通番を付ける場合に設定します。
'1'
出力通番を付けない場合に設定します。

省略した場合は,出力通番を付けません。

●PAGE NAME句

PAGEC機能を利用する場合に設定します。通信メッセージに対するPAGEC名を連絡します。データ名12にPAGEC名を6文字以内で設定します。

●MAPPING MODE句

マッピングモードを設定します。データ名13に次のどちらかを設定します。

'2'
論理マップだけでマッピングする場合に設定します。
'2'以外
論理マップと物理マップの情報でマッピングする場合に設定します。

省略した場合は,論理マップと物理マップの情報でマッピングします。

●データ名A

一意名1の長さを設定します。TP1/NET/XMAP3の論理端末にメッセージを送信する場合,出力論理マップの長さ(論理マップ固定部の長さ+論理マップ可変部・定数部の長さ)を設定します。

●データ名B

送信完了通知イベントおよび送信障害通知イベントを設定します。データ名Bとビットの設定値の関係を次に示します。

[図データ]

送信完了通知イベントおよび送信障害通知イベントの要否は,データ名Bの領域の24ビット目で設定します。

●データ名C

送信メッセージのセグメントの内容(論理マップ可変部・定数部に出力する内容)を設定します。

●WITH句

非同期型のメッセージ送信(一方送信メッセージ,応答メッセージ)の場合に設定します。送信するセグメントが,論理メッセージの最終セグメントかどうかを設定してください。

ESI
先頭セグメントまたは中間セグメントの場合に設定します。
EMI
最終セグメントまたは単一セグメントの場合に設定します。
一意名2
次の値を設定したデータ項目
'1':ESI(先頭セグメント,中間セグメント)
'2':EMI(最終セグメント,単一セグメント)

指定を省略した場合は,EMI(最終セグメントまたは単一セグメント)を設定します。

●PAGE CONTROL句

PAGECモジュールを動的に変更する場合に設定します。一意名4にPAGECインタフェース領域の情報を設定します。

一意名4の形式は,XMAP3/PRINTER UTILITYが提供するPAGECインタフェース領域と同じです。XMAP3/PRINTER UTILITYが提供する登録集原文をCOPY文でUAPに取り込み,一意名4として指定します。取り込むCOBOLソースファイルを次に示します。

PAGECインタフェース領域を確保したら,JST-PAGEC-LENGにPAGECインタフェース領域の長さ32を設定します。また,変更したい情報に対応するインタフェース定数を,PAGECインタフェース領域に設定してください。PAGECインタフェース領域とPAGECインタフェース定数の詳細については,マニュアル「画面・帳票サポートシステム/プリンタユティリティ XMAP3/PRINTER UTILITY 解説・手引書」を参照してください。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。

ステータスコード

ステータスコード意味
00000正常に終了しました。
71002メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
セグメント長に32000バイトを超える値を設定しています。
MCFが終了処理中のため,メッセージの送信を受け付けられません。
71003メッセージキューが満杯です。
71004メッセージを格納するバッファをメモリ上に確保できませんでした。
71108メッセージを送信しようとしましたが,送信先の管理テーブルを確保できませんでした。
プロセスのローカルメモリが不足しています。
72000<MHPの実行でリターンした場合>
  • 先頭セグメントを受信するRECEIVE文を呼び出す前に,SEND文を呼び出しました。
  • 応答型でないMHPから応答メッセージを送信しました。
<SPPの実行でリターンした場合>
  • SPPでは応答メッセージを送信できません。
  • トランザクションの処理でないSPPから,SEND文を呼び出しました。
72001設定した論理端末名称が間違っています。
設定した論理端末名称は,定義されていません。
該当する論理端末には,一方送信メッセージを送信できません。
SYNCHRONOUS MODE句にSYNCが設定されているか,データ名6に'1'が設定されています。
72005先頭セグメントまたは中間セグメントを送信するSEND文で,送信メッセージセグメント長に4以下の値を設定しています。
72008WITH句に「EMI」を設定したSEND文を,2回以上呼び出しました。
応答型のMHPからSEND(アプリケーションプログラムの起動)文を呼び出して応答型のほかのMHPを開始したあとで,SEND(応答メッセージの送信)文を呼び出しました。
継続問い合わせ応答型のMHPからSEND(アプリケーションプログラムの起動)文を呼び出して継続問い合わせ応答型のほかのMHPを開始したあとで,SEND(応答メッセージの送信)文を呼び出しました。
72011継続問い合わせ応答中でないMHPが,次に起動するアプリケーション名を指定して,SEND文を呼び出しました。
72017DETAIL MODE句に設定した値が間違っています。
72018SWITCHING MODE句に設定した値が間違っています。
72020SYNCHRONOUS MODE句に設定した値が間違っています。
72024FOR句に設定した値が間違っています。
72026WITH句に設定した値が間違っています。
72037通信文にBEFORE句が設定されています。
72041単一セグメントを送信するSEND文で,送信セグメント長に4以下,またはマイナスの値を設定しています。
72044DISABLE文を呼び出したあとで,次に起動するアプリケーション名を指定してSEND文を呼び出しました。
72045NEXT TRANSACTION句に継続問い合わせ応答型でないアプリケーションのアプリケーション名を設定しています。
72046NEXT TRANSACTION句にアプリケーション名を設定したSEND文を2回以上発行しました。
72047NEXT TRANSACTION句に設定したアプリケーション名は,アプリケーション定義で定義されていません。
73001メッセージ出力先論理端末に障害が発生しました。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。