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

形式

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

CD  通信記述名
  FOR  {INPUT|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文を実行できません。
72001SYMBOLIC TERMINAL 句に設定した論理端末名称が間違っています。
RECEIVE文を実行できない論理端末を設定しています。
72013一意名1のLの指定値を超えるメッセージ(セグメント)を受信しました。
一意名1のLの指定値を超える部分は切り捨てられました。
32763バイトを超えるメッセージ(セグメント)を受信しました。
32763バイトを超えた部分は切り捨てられました。
72016WAITING 句に設定した値が間違っています。
72020SYNCHRONOUS MODE句に設定した値が間違っています。
72024FOR 句に設定した値が間違っています。
72036一意名1のLが不足しています。5バイト以上の領域を確保してください。
73001入力元の論理端末で障害が発生しました。
73005RECEIVE文が,設定した監視時間を過ぎても終了しません。
73010入力,または出力メッセージの編集UOCでエラーが発生しました。
メッセージの読み込み中に障害が発生しました。
73018RECEIVE文を実行した場合に,データ名11に設定した監視時間が間違っています。
73020RECEIVE文で指定した論理端末は停止中です。
77350サービスプリミティブの発行順が間違っています。
サービスプリミティブの連結数が超過しています。
77433相手からのメッセージによって,ダイアログが未確立になりました。
77436相手からのメッセージによって,ダイアログを解放中です。
77437相手からのメッセージによって,ハンドシェイクが応答待ちになりました。
77491相手からのメッセージによって,エラー処理中です。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。