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

形式

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

CD 通信記述名
  FOR INPUT
  〔STATUS KEY IS データ名1〕
  〔SYMBOLIC TERMINAL IS データ名2〕
  〔MESSAGE DATE IS データ名3〕
  〔MESSAGE TIME IS データ名4〕.

PROCEDURE DIVISION(通信文)の指定

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

機能

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

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

●FOR句

次の値を指定します。

INPUT
非同期型のメッセージの受信

●STATUS KEY句

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

●SYMBOLIC TERMINAL句

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

●MESSAGE DATE句

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

●MESSAGE TIME句

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

通信文に指定する項目

●FIRST

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

●一意名1

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

[図データ]

ステータスコード

ステータスコード意味
00000正常に終了しました。
71000先頭セグメントを受信するRECEIVE文を2回以上実行しています。中間セグメントまたは最終セグメントを受信する場合は,FIRSTを指定しないでRECEIVE文を実行してください。
71001メッセージの最終セグメントを受信したあとで,次のセグメントを受信するRECEIVE文を実行しています。以前に実行したRECEIVE文でそのメッセージはすべて受信しました。
このステータスコードが返されたあとに,再びRECEIVE文を実行した場合は,ステータスコード72000が返されます。
71002メッセージキューからの入力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
MCFが終了処理中のため,メッセージの受信を受け付けられません。
71108メッセージ受信に必要な管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000〈MHPの実行でリターンした場合〉
  • 先頭セグメントを受信するRECEIVE文を実行する前に,中間セグメントおよび最終セグメントを受信するRECEIVE文を実行しています。先頭セグメントを受信する場合は,FIRSTを指定してRECEIVE文を実行してください。
  • ステータスコード71000が返されたあとで,RECEIVE文を実行しています。
〈SPPの実行でリターンした場合〉
SPPではRECEIVE文を実行できません。
72001SYMBOLIC TERMINAL 句に設定した論理端末名称が間違っています。
RECEIVE文を実行できない論理端末を設定しています。
72013一意名1のLの指定値を超えるセグメントを受信しました。一意名1のLの指定値を超えた部分は切り捨てられました。
32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。
72020SYNCHRONOUS MODE 句に設定した値が間違っています。
72024FOR 句に設定した値が間違っています。
72036一意名1のLの指定値が不足しています。5バイト以上の領域を確保してください。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。