RECEIVE − メッセージの受信
- 〈このページの構成〉
形式
DATA DIVISION(通信記述項)の指定
CD 通信記述名 FOR {INPUT|I-O} 〔STATUS KEY IS データ名1〕 〔SYMBOLIC TERMINAL IS データ名2〕 〔MESSAGE DATE IS データ名3〕 〔MESSAGE TIME IS データ名4〕. 01 一意名1. 02 データ名5 PIC 9(4) COMP. 02 データ名6 PIC X(2). 02 データ名7 PIC X(n).
PROCEDURE DIVISION(通信文)の指定
RECEIVE 通信記述名 〔FIRST〕 SEGMENT INTO 一意名1.
機能
次に示すCALLインタフェースの機能を実現します。
-
メッセージの受信 CBLDCMCF('RECEIVE ')
-
同期型のメッセージの受信 CBLDCMCF('RECVSYNC')
受信できる一つのセグメントの最大長は,32763バイトまでです。ただし,プロトコルによって,実際の最大長が小さいことがあります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
また,相手システムから通信プロトコルを介して送られたメッセージを受信する場合,通信プロトコルによってRECEIVE文の文法が異なります。相手システムからのメッセージを受信するRECEIVE文の文法についても,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
通信記述項に設定する項目
通信文に指定する項目
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
受信領域の長さより短いセグメントを受信しました。余りの受信領域には空白が設定されます。 |
|
71000 |
先頭セグメントを受信するRECEIVE文を2回以上実行しています。中間セグメントおよび最終セグメントを受信する場合は,FIRSTを指定しないでRECEIVE文を実行してください。 |
71001 |
メッセージの最終セグメントを受信したあとで,次のセグメントを受信するRECEIVE文を実行しています。直前に実行したRECEIVE文でメッセージはすべて受信しました。 このステータスコードが返されたあとに,再びRECEIVE文を実行した場合は,ステータスコード「72000」が返されます。 |
71002 |
メッセージキューへの入出力処理時に障害が起こりました。 |
メッセージキューが閉塞されています。 |
|
72000 |
<MHPの実行でリターンした場合> 先頭セグメントを受信するRECEIVE文を実行する前に,中間セグメントおよび最終セグメントを受信するRECEIVE文を実行しています。先頭セグメントを受信する場合は,FIRSTを指定してRECEIVE文を実行してください。 ステータスコード「71000」が返されたあとで,RECEIVE文を実行しています。 |
<SPPの実行でリターンした場合> SPPではRECEIVE文を実行できません。 |
|
72001 |
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。 |
RECEIVE文を実行できない論理端末を設定しています。 |
|
72013 |
受信領域の長さを超えるセグメントを受信しました。受信領域の長さを超えた部分は切り捨てられました。 |
バッファ形式2の場合で,32767バイトを超えるセグメントを受信しました。32767バイトを超えた部分は切り捨てられました。 |
|
72020 |
SYNCHRONOUS MODE句に設定した値が間違っています。 |
72024 |
FOR句に設定した値が間違っています。 |
72036 |
セグメントを受信する領域(一意名1)の長さが不足しています。5バイト以上の領域を確保してください。 |
上記以外 |
プログラムの破壊などによる,予期しないエラーが発生しました。 |