分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/Secondary Logical Unit - TypeP2編

[目次][用語][索引][前へ][次へ]

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

形式1(セグメントの内容を設定して送信する場合)

DATA DIVISION(通信記述項)の指定
 
CD   通信記述名
     FOR {OUTPUT|I-O}
   〔STATUS  KEY  IS  データ名1〕
   〔SYMBOLIC  TERMINAL  IS  データ名2〕
   〔SYNCHRONOUS  MODE  IS  {SYNC|ASYNC|データ名6}〕
   〔SWITCHING  MODE  IS  {NORMAL|PRIOR|データ名7}〕
   〔DETAIL  MODE  IS  データ名10〕
   〔WAITING  TIME  IS  データ名11〕.
 

PROCEDURE DIVISION(通信文)の指定
 
SEND  通信記述名  FROM  一意名1WITH  {ESI|EMI|一意名2}〕
    〔BEFORE  RECEIVING  MESSAGE  INTO  一意名3〕.
 

形式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インタフェースの機能を実現します。

同期型の問い合わせメッセージの送受信では,単一セグメントの論理メッセージだけを扱えます。

通信記述項に設定する項目

●FOR句

次のどちらかの値を指定します。

OUTPUT
一方送信メッセージの送信

I-O
同期型のメッセージの送受信

●STATUS KEY句

ステータスコードを受け取りたい場合に指定します。この指定を省略した場合は,ステータスコードを受け取れません。

●SYMBOLIC TERMINAL句

論理端末名称を設定したデータ項目を指定します。

●SYNCHRONOUS MODE句

メッセージ送信が,同期型か非同期型かを指定します。

SYNC
同期型のメッセージ送受信。
同期型のメッセージ送受信の場合に設定します。

ASYNC
非同期型のメッセージ送信。
一方送信メッセージ送信の場合に設定します。

データ名6
次の値を設定したデータ項目
'0':非同期型のメッセージ送信
'1':同期型のメッセージ送受信
指定を省略した場合は,非同期のメッセージ送信(ASYNC)が仮定されます。

●SWITCHING MODE句

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

NORMAL
一般の一方送信メッセージ

PRIOR
優先の一方送信メッセージ

データ名7
次の値を設定したデータ項目
'0'または'△':一般の一方送信メッセージ
'1':優先の一方送信メッセージ
指定を省略した場合は,一般(NORMAL)が仮定されます。

●DETAIL MODE句

一方送信メッセージの場合に,出力通番を付けるかどうかを指定します。

データ名10
次の値を設定したデータ項目
'0'または'△':出力通番を付けます。
'1':出力通番を付けません。
省略した場合は,出力通番を付けません。

●WAITING TIME句

SEND文を実行してから終了するまでの,最大時間を設定したデータ項目を設定します。同期型のメッセージの送信,または同期型のメッセージを送受信する場合に指定します。

指定を省略した場合,または'00000000'を設定した場合は,MCFマネジャ定義のUAP共通定義(mcfmuap -t)で指定した同期型送信監視時間または同期型送受信監視時間が設定されます。

データ名11
監視時間の値をHHMMSS00(HH:時 MM:分 SS:秒 00は固定)の形式で設定したデータ項目

通信文に指定する項目

●一意名1

セグメントを送信するデータ項目を指定します。一つのセグメントで32000バイトまで送信できます。

一意名1の形式を次に示します。

[図データ]

●WITH句

メッセージの最終セグメントを送信するかどうかを指定します。非同期型のメッセージ送信の場合だけ指定します。

ESI
先頭セグメントまたは中間セグメントの送信

EMI
最終セグメントまたは単一セグメントの送信

一意名2
次の値を設定したデータ項目
'1':ESI(先頭セグメントまたは中間セグメント)
'2':EMI(最終セグメントまたは単一セグメント)
省略した場合は,EMI(最終セグメントまたは単一セグメントの送信)が設定されます。
なお,同期型のメッセージの送受信(SENDRECV)の場合は,EMI を指定するか,または指定を省略してください。

●BEFORE句

同期型のメッセージを送受信する場合に,セグメントを受信するデータ項目(一意名3)を指定します。

一意名3の形式を次に示します。

[図データ]

ステータスコード

ステータスコード 意味
00000 正常に終了しました。
71002 メッセージキューへの出力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
一意名1のLに32000バイトを超える値を設定しています。
MCFが終了処理中のため,メッセージの送信を受け付けられません。
71003 メッセージキューが満杯です。
71004 メッセージを格納するバッファをメモリ上に確保できませんでした。
71108 メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000 <MHPの実行でリターンした場合>
  • 応答型でないMHPから応答メッセージを送信しています。
  • 先頭セグメントを受信するRECEIVE文を実行する前に,SEND文を実行しています。
<SPPの実行でリターンした場合>
  • SPPでは,応答メッセージを送信するSEND文を実行できません。
  • トランザクションでないSPPの処理から,SEND文を実行しています。
72001 SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。
SEND文を実行できない論理端末を設定しています。
72005 先頭セグメントまたは中間セグメント送信時,一意名1のLに4以下の値を設定しています。
72013 一意名3のLの指定値を超えるセグメントを受信しました。一意名3のLの指定値を超えた部分は切り捨てられました。
32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。
72017 DETAIL MODE句に設定した値が間違っています。
72018 SWITCHING MODE句に設定した値が間違っています。
72020 SYNCHRONOUS MODE句に設定した値が間違っています。
72024 FOR句に設定した値が間違っています。
72026 WITH句に設定した値が間違っています。
72036 一意名3のLの指定値が不足しています。5バイト以上の領域を確保してください。
72037 BEFORE句に設定した値が間違っています。
72041 単一セグメント送信時,一意名1のLに4以下の値を設定しています。
72073 非同期型のメッセージの送信処理で仕掛り中です。
73001 出力先の論理端末で障害が発生しました。
73002 MCF通信サービスで障害が発生しました。
73005 WAITING TIME句に設定した時間が経過しましたが,論理端末からの応答がありません。
73008 論理端末が閉塞中,またはMCFが終了処理中に,SEND文を実行しました。
73010 入力または出力メッセージ編集UOCで障害が発生しました。
メッセージの読み込み時に障害が発生しました。
メッセージの編集エラーが発生しました。
73015 出力先の論理端末は,ほかのUAPで仕掛り中です。
73018 WAITING TIME句に設定した値が間違っています。
73020 出力先の論理端末は停止しています。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。