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

【HSC1手順またはHSC2手順(非同期モード)の場合】
一方送信メッセージの受信 CBLDCMCF('RECEIVE△')
【HSC2手順(同期モード)の場合】
接続情報通知の受信 CBLDCMCF('RECEIVE△')
同期型のメッセージの受信 CBLDCMCF('RECVSYNC')

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

●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句

この句の指定は無効です。0を指定しておいてください。また,MCFマネジャ定義のUAP共通定義で同期受信監視時間を指定しても,時間監視をしません。

通信文に指定する項目

●FIRST

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

●一意名1

セグメントを受信するデータ項目を指定します。相手システムから送信されるセグメントの最大長は31966バイトです。一意名1の形式を次に示します。

[図データ]

テキスト形態の次に続く領域には,次に示す内容が返されます。

【HSC1手順またはHSC2手順(非同期モード)の場合】
受信したセグメントの内容
【HSC2手順(同期モード)でIDを交換する場合】
相手ターミナルID
【HSC2手順(同期モード)でIDを交換しない場合】
返される内容はありません。

ステータスコード

ステータスコード意味
00000正常に終了しました。
71000先頭セグメントを受信するRECEIVE文を,2回以上実行しています。中間セグメントまたは最終セグメントを受信する場合は,FIRSTを指定しないでRECEIVE文を実行してください。
71001メッセージの最終セグメントを受信したあとで,その次のセグメントを受信するRECEIVE文を実行しています。直前に実行したRECEIVE文でそのメッセージはすべて受信しました。
このステータスコードが返されたあとに,再び次のメッセージを受信するRECEIVE文を実行した場合は,ステータスコード72000が返されます。
71002メッセージキューからの入力処理中に障害が発生しました。
メッセージキューが閉塞されています。
メッセージキューが割り当てられていません。
MCFが終了処理中のため,メッセージの受信を受け付けられません。
71108メッセージの受信に必要な管理テーブルが確保できませんでした。
プロセスのローカルメモリが不足しています。
72000<MHPの実行でリターンした場合>
  • 非同期型のメッセージの先頭セグメントを受信するRECEIVE文を実行する前に,そのほかのセグメントを受信するRECEIVE文を実行しています。
  • ステータスコード71000が返されたあとで,再び非同期型のメッセージを受信するRECEIVE文を実行しています。
<SPPの実行でリターンした場合>
SPPでは非同期型のメッセージを受信するRECEIVE文を実行できません。
72001SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。
RECEIVE文を実行できない論理端末を設定しています。
72013一意名1のLの指定値を超えるセグメントを受信しました。一意名1のLの指定値を超えた部分は切り捨てられました。
32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。
72016WAITING TIME句に設定した値が間違っています。
72020SYNCHRONOUS MODE句に設定した値が間違っています。
72024FOR句に設定した値が間違っています。
72036一意名1のLの指定値が不足しています。5バイト以上の領域を確保してください。
73001入力元の論理端末で障害が発生しました。
73002同期型のメッセージを受信しているときに,入力元の論理端末とMCFとの間のコネクションまたは経路が切り離されました。
同期型のメッセージを受信するまでに,入力元の論理端末とMCFとの間のコネクションまたは経路が切り離されました。
73008入力元の論理端末は,次のコマンドで停止しています。
  • mcftdctle
  • mcftdctcn
73010入力または出力メッセージ編集UOCで障害が発生しました。
メッセージ読み込み時に障害が発生しました。
73015入力元の論理端末は,ほかのUAPで仕掛り中です。
入力元の論理端末は,該当するUAPと仕掛り中ではありません。
73018同期型のメッセージ受信を発行したときに,データ名11に設定した監視時間が間違っています。
73020設定した論理端末は停止しています。
77900同期受信要求の保留中に,回線維持モードが終了しました。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。