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の形式を次に示します。

[図データ]

制御ヘッダは,MCF通信構成定義でmcftalccn -o ctlheader=useを指定したときだけ付けられます。制御ヘッダの内容を次に示します。

[図データ]

XX
【PVCの場合】
リセットパケットの原因コード。この値は相手システムに依存します。
【VCの場合】
予備(0)
YY
【PVCの場合】
リセットパケットの診断コード。この値は相手システムに依存します。
【VCの場合】
予備(0)
ZZ
【PVCの場合】
27ビット:相手システムから受信したデータパケットのQビット
26~25ビット:メッセージ種別
  • (10)2リセットメッセージ(テキスト部は存在しません)
  • (00)2通常メッセージ
24~20ビット:予備(0)
【VCの場合】
27ビット:相手システムから受信したデータパケットのQビット
26~25ビット:メッセージ種別
  • (11)2:割り込みメッセージ
  • (00)2:通常メッセージ
24~20ビット:予備(0)

ステータスコード

ステータスコード意味
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バイトを超えた部分は切り捨てられました。
72020SYNCHRONOUS MODE句に設定した値が間違っています。
72024FOR句に設定した値が間違っています。
72036一意名1のLが不足しています。5バイト以上の領域を確保してください。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。