分散トランザクション処理機能 OpenTP1 プロトコル TP1/NET/OSI-TP編

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

RECEIVEメッセージの受信(データ操作言語)

形式

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

 
CD  通信記述名
   FORINPUT|I-O}
 〔STATUS  KEY  IS  データ名1〕
 〔SYMBOLIC  TERMINAL  IS  データ名2〕
 〔MESSAGE  DATE  IS  データ名3〕
 〔MESSAGE  TIME  IS  データ名4〕
 〔SYNCHRONOUS  MODE  IS {SYNC|データ名6}〕
 〔WAITING  TIME  IS  データ名11〕.
 

PROCEDURE DIVISION(通信文)の指定

 
RECEIVE  通信記述名
    〔FIRSTSEGMENT
          INTO 一意名1.
 

機能

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

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

●FOR 句

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

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

●STATUS KEY 句

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

●SYMBOLIC TERMINAL 句

入力元の論理端末名称を参照するデータ項目を指定します。

●MESSAGE DATE 句

メッセージを受信した日付を参照するデータ項目を指定します。YYMMDD(YY:西暦の下2けた MM:月 DD:日)の形式で参照できます。

●MESSAGE TIME 句

メッセージを受信した時刻を参照するデータ項目を指定します。HHMMSS00(HH:時 MM:分 SS:秒 00は固定)の形式で参照できます。

●SYNCHRONOUS MODE 句

同期型メッセージの受信の場合に指定します。次のどちらかの値を指定します。

SYNC
同期型メッセージの受信
データ名6
次の値を設定したデータ項目
'1'…同期型メッセージの受信

●WAITING TIME句

同期型メッセージを受信する場合の,監視時間の値を設定したデータ項目を指定します。

データ名11
監視時間をHHMMSS00(HH:時 MM:分 SS:秒 00は固定)の形式で指定します。指定できる値の範囲は10秒〜10分で,10秒単位です。

省略した場合は,2分を設定します。

通信文に指定する項目

●FIRST

先頭セグメントを受信する場合に指定します。

●一意名1

セグメントを受信するデータ項目を指定します。一意名1の形式を次に示します。

[図データ]

ステータスコード

ステータスコード 意味
00000 正常に終了しました。
71000 先頭セグメントを受信するRECEIVE文を,2回以上実行しています。中間セグメントまたは最終セグメントを受信する場合は,FIRSTを設定しないでRECEIVE文を実行してください。
71001 メッセージの最終セグメントを受信したあとで,次のセグメントを受信するRECEIVE文を実行しています。直前に実行したRECEIVE文でメッセージはすべて受信しました。
このステータスコードが返されたあとに,再びRECEIVE文を実行した場合は,ステータスコード72000が返されます。
71002 メッセージキューからの入力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
MCFが終了処理中のため,メッセージの受信を受け付けられません。
71108 メッセージ受信に必要な管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000 <MHPの実行でリターンした場合>
  • 先頭セグメントを受信するRECEIVE文を実行する前に,中間セグメントまたは最終セグメントを受信するRECEIVE文を実行しています。先頭セグメントを受信する場合は,FIRSTを指定してRECEIVE文を実行してください。
  • ステータスコード71001が返されたあとで,RECEIVE文を実行しています。
<SPPの実行でリターンした場合>
SPPではRECEIVE文を実行できません。
72001 SYMBOLIC TERMINAL 句に設定した論理端末名称が間違っています。
RECEIVE文を実行できない論理端末を設定しています。
72013 一意名1のLの指定値を超えるメッセージ(セグメント)を受信しました。
一意名1のLの指定値を超える部分は切り捨てられました。
32763バイトを超えるメッセージ(セグメント)を受信しました。
32763バイトを超えた部分は切り捨てられました。
72016 WAITING 句に設定した値が間違っています。
72020 SYNCHRONOUS MODE句に設定した値が間違っています。
72024 FOR 句に設定した値が間違っています。
72036 一意名1のLが不足しています。5バイト以上の領域を確保してください。
73001 入力元の論理端末で障害が発生しました。
73005 RECEIVE文が,設定した監視時間を過ぎても終了しません。
73010 入力,または出力メッセージの編集UOCでエラーが発生しました。
メッセージの読み込み中に障害が発生しました。
73018 RECEIVE文を実行した場合に,データ名11に設定した監視時間が間違っています。
73020 RECEIVE文で指定した論理端末は停止中です。
77350 サービスプリミティブの発行順が間違っています。
サービスプリミティブの連結数が超過しています。
77433 相手からのメッセージによって,ダイアログが未確立になりました。
77436 相手からのメッセージによって,ダイアログを解放中です。
77437 相手からのメッセージによって,ハンドシェイクが応答待ちになりました。
77491 相手からのメッセージによって,エラー処理中です。
上記以外 プログラムの破壊などによる,予期しないエラーが発生しました。