RECEIVE - メッセージの受信(データ操作言語)
形式
DATA DIVISION(通信記述項)の指定
CD 通信記述名
FOR {INPUT|I-O}
〔STATUS KEY IS データ名1〕
〔SYMBOLIC TERMINAL IS データ名2〕
〔MESSAGE DATE IS データ名3〕
〔MESSAGE TIME IS データ名4〕
〔MAP NAME IS データ名5〕
〔SYNCHRONOUS MODE IS {ASYNC|データ名6}〕.
DATA DIVISION(データ記述項)の指定
01 一意名1.
02 データ名A PIC 9(4) COMP.
02 データ名B PIC X(2).
02 データ名C PIC X(n).
PROCEDURE DIVISION(通信文)の指定
RECEIVE 通信記述名
〔FIRST〕 SEGMENT
INTO 一意名1.
機能
次に示すCALLインタフェースの機能を実現します。
受信できる一つのセグメントの最大長は,32763バイトまでです。
セグメントを受信する領域(一意名1で示す領域)の形式を次に示します。
UAPで値を設定する項目
●FOR句
受信するメッセージが,一方送信メッセージか問い合せメッセージかを設定します。
●データ名B
MCFで使用する領域です。
●FIRST
先頭セグメントを受信するときに指定します。
●SYNCHRONOUS MODE句
非同期型でのメッセージ受信を示す,次のどちらかの値を指定してください。
指定を省略した場合は,非同期型のメッセージの受信が設定されます。
OpenTP1から値が返される項目
●STATUS KEY句
ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。
●SYMBOLIC TERMINAL句
メッセージ入力元の論理端末名称を参照するためのデータ項目を設定します。データ名2にメッセージ入力元の論理端末名称が返されます。
●MESSAGE DATE句
メッセージ入力日付を参照するためのデータ項目を設定します。データ名3にメッセージ入力日付がYYMMDD(YY:西暦下2けた MM:月 DD:日)の形式で返されます。
●MESSAGE TIME句
メッセージ入力時刻を参照するためのデータ項目を設定します。データ名4にメッセージ入力時刻がHHMMSS00(HH:時 MM:分 SS:秒 00は固定)の形式で返されます。
●MAP NAME句
XMAP3のドローで指定した次画面名(マップ名),またはパネル定義のNEXTオペランドで指定した次画面名(マップ名)を参照するためのデータ項目を設定します。データ名5に次画面名が返されます。次画面名の最大長は6文字です。ただし,次の場合は,空白が返されます。
●データ名A
受信したセグメントの長さ+4が返されます。TP1/NET/XMAP3の論理端末画面から入力されたメッセージを受信した場合,受信した入力論理マップの長さ(論理マップ固定部の長さ+論理マップ可変部・定数部の長さ)が返されます。
●データ名C
受信したセグメントが返されます。TP1/NET/XMAP3の論理端末画面から入力されたメッセージを受信した場合,論理マップ可変部・定数部に設定されるデータが返されます。一つのセグメントで32763バイトまで受信できます。
ステータスコード
ステータスコード | 意味 |
---|---|
00000 | 正常に終了しました。 |
71000 | 先頭セグメントを受信するRECEIVE文を2回以上呼び出しました。中間セグメントおよび最終セグメントを受信する場合は,FIRSTの指定を省略してRECEIVE文を呼び出してください。 |
71001 | メッセージの最終セグメントを受信したあとで,次のセグメントを受信するRECEIVE文を呼び出しました。直前に呼び出したRECEIVE文でメッセージをすべて受信しました。このステータスコードが返されたあとに,再びRECEIVE文を呼び出した場合は,ステータスコード72000が返されます。 |
71002 | メッセージキューからの入力処理中に障害が発生しました。 |
メッセージキューが閉塞されています。 | |
メッセージキューが割り当てられていません。 | |
MCF終了処理中のため,メッセージの受信を受け付けられません。 | |
71108 | メッセージの受信に必要な管理テーブルを確保できませんでした。 |
プロセスのローカルメモリが不足しています。 | |
72000 | <MHPの実行でリターンした場合>
|
<SPPの実行でリターンした場合> SPPではRECEIVE文を呼び出せません。 | |
72001 | 設定した論理端末名称が間違っています。 |
設定した論理端末名称は,定義されていません。 | |
SYNCHRONOUS MODE句にSYNCが設定されているか,データ名6に'1'が設定されています。 | |
72013 | 受信領域の長さを超えるセグメントを受信しました。受信領域の長さを超えた部分は切り捨てられました。 |
72016 | 通信文にWAITING句が設定されています。 |
72020 | SYNCHRONOUS MODE句に設定した値が間違っています。 |
72024 | FOR句に設定した値が間違っています。 |
72036 | 一意名1に指定した,セグメントを受信する領域の長さが不足しています。5バイト以上の領域を確保してください。 |
上記以外 | プログラムの破壊などによる,予期しないエラーが発生しました。 |