RECEIVE一時記憶データの受け取り(データ操作言語)

形式

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

CD  通信記述名
   FOR  {INPUT|I-O}  STORAGE
 〔STATUS  KEY  IS  データ名1〕.

DATA DIVISION(データ記述項)の指定

01 一意名1.
   02 データ名A  PIC  9(4) COMP.
   02 データ名B  PIC  X(4).
   02 データ名C  PIC  X(n).

PROCEDURE DIVISION(通信文)の指定

RECEIVE  通信記述名  {MESSAGE|SEGMENT}
  INTO  一意名1.

機能

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

一時記憶データ格納バッファ領域(データ名C)は,1~32000バイトの長さを確保してください。

データ名Cの長さを超える一時記憶データがある場合,超えた分については切り捨てます。

データ名Cの長さと比べて一時記憶データの長さの方が短い場合,データ名Cに一時記憶データを設定します。残りの領域については何もしません。

受け取り要求実行時に一時記憶データがない場合,アプリケーション属性定義(mcfaalcap -n)のtempsizeオペランドで指定した長さの(00)16の一時記憶データがあるものとして実行します。

受け取り後の一意名1の形式を次に示します。

[図データ]

UAPで値を設定する項目

●FOR句

一時記憶データの受け取りであることを示す,INPUT STORAGEまたはI-O STORAGEを設定します。

●データ名B

MCFで使用する領域です。

●MESSAGE,SEGMENT

どちらかを指定します。

OpenTP1から値が返される項目

●STATUS KEY句

ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。

●データ名A

受け取った一時記憶データの長さ+6が返されます。

●データ名C

受け取った一時記憶データが返されます。

ステータスコード

ステータスコード意味
00000正常に終了しました。
72000SPPではRECEIVE(一時記憶データの受け取り)文を呼び出せません。
72013受け取り領域の長さを超える一時記憶データを切り捨てました。
72016通信文にBEFORE ERASINGが設定されています。
72036受け取り領域の長さが不足しています。受け取り領域長に6以下の値を設定しています。
72042通信記述項にSYMBOLIC TERMINAL句の指定があり,空白以外が設定されています。
72101継続問い合わせ応答型でないMHPで,RECEIVE(一時記憶データの受け取り)文を呼び出しました。
72106先頭セグメントを受信するRECEIVE文を呼び出す前に,RECEIVE(一時記憶データの受け取り)文を呼び出しました。
72107DISABLE文を呼び出したあとで,RECEIVE(一時記憶データの受け取り)文を呼び出しました。
上記以外プログラムの破壊などによる,予期しないエラーが発生しました。