CBLDCMCF('RECEIVE ')
- 〈このページの構成〉
形式
PROCEDURE DIVISIONの指定
CALL 'CBLDCMCF' USING 一意名1 一意名2 一意名3
DATA DIVISIONの指定
01 一意名1. 02 データ名A PIC X(8) VALUE 'RECEIVE '. 02 データ名B PIC X(5). 02 FILLER PIC X(3). 02 データ名C PIC X(4). 02 データ名D PIC X(4) VALUE SPACE. 02 データ名E PIC 9(8). 02 データ名F PIC 9(8). 02 データ名G PIC 9(9) COMP. 02 データ名H PIC X(4) VALUE SPACE. 02 データ名I PIC X(4) VALUE SPACE. 02 データ名J PIC X(4) VALUE SPACE. 02 データ名K PIC X(4) VALUE SPACE. 02 データ名L PIC X(8) VALUE SPACE. 02 データ名M1 PIC X(4) VALUE SPACE. 02 データ名M2 PIC X(8) VALUE SPACE. 02 データ名M3 PIC X(4) VALUE SPACE. 02 データ名M4 PIC 9(9) COMP VALUE ZERO. 02 データ名M5 PIC 9(9) COMP VALUE ZERO. 02 データ名M6 PIC X(1) VALUE SPACE. 02 データ名M7 PIC X(1). 02 データ名N PIC X(14) VALUE LOW-VALUE. 01 一意名2. 02 データ名O PIC X(4) VALUE SPACE. 02 データ名P PIC X(8). 02 データ名Q PIC X(8). 02 データ名R PIC X(8) VALUE SPACE. 02 データ名T PIC X(28) VALUE LOW-VALUE. 01 一意名3. 02 データ名U PIC 9(x) COMP. 02 データ名V PIC X(x). 02 データ名W PIC X(n).
機能
メッセージのうち,一つのセグメントを受け取ります。一つの論理メッセージを受信する場合は,セグメントの数だけCBLDCMCF('RECEIVE ')を呼び出します。
CBLDCMCF('RECEIVE ')では,次に示すメッセージを受信できます。
-
相手システムから通信プロトコルを介して送られたメッセージ
-
自システムから通知されたMCFイベント
-
自システムのUAPからアプリケーション起動(CBLDCMCF('EXECAP '))で送られたメッセージ
-
自システムでmcfuevtコマンドを実行して送られたメッセージ
-
ユーザタイマ監視を設定したときに指定したメッセージ
相手システムから通信プロトコルを介して送られたメッセージを受信する場合,通信プロトコルによってCBLDCMCF('RECEIVE ')の文法が異なります。相手システムからのメッセージを受信するCBLDCMCF('RECEIVE ')の文法については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
受信できる一つのセグメントの最大長は,1メガバイトまでです。ただし,プロトコルによって,実際の最大長が小さいことがあります。詳細については,マニュアル「OpenTP1 プロトコル」の該当するプロトコル編を参照してください。
メッセージを受信する領域(一意名3で示す領域)の形式を次に示します。
また,ユーザタイマ監視を設定したときに指定したメッセージを受信する領域(一意名3で示す領域)の形式を次に示します。
UAPで値を設定するデータ領域
●データ名A
メッセージの受信を示す要求コードを「VALUE 'RECEIVE△'」と設定します。
●データ名C
メッセージの先頭セグメントを受信するかどうかを設定します。次のどちらかを設定します。
- 'FRST'
-
先頭セグメントを受信するときに設定します。
メッセージが単一セグメントの場合も,「'FRST'」を設定します。
- 'SEG△'
-
中間セグメントおよび最終セグメントを受信するときに設定します。
●データ名D
空白を設定します。
●データ名G
セグメントを受信する領域の長さを設定します。
●データ名H,データ名I,データ名J,データ名K,データ名L,データ名M1,データ名M2,データ名M3
空白を設定します。
●データ名M4,データ名M5
0を設定します。
●データ名M6
空白を設定します。
●データ名M7
使うバッファ形式を設定します。
'1'…バッファ形式1を使うときに設定します。通常は,バッファ形式1を使います。
'2'… バッファ形式2を使うときに設定します。
空白を設定…省略されたものとして,'1'(バッファ形式1)が仮定されます。
●データ名N
「LOW-VALUE」を設定します。
●データ名O
空白を設定します。
●データ名P【中間セグメント,最終セグメントを受信するとき】
入力元の論理端末名称を設定します。先頭セグメントを受信したときに返された論理端末名称を設定します。論理端末名称は8バイト以内で設定してください。8バイトに満たない名称を設定する場合は,後ろを空白で埋めてください。
●データ名Q
MCFで使う領域です。
●データ名R
空白を設定します。
●データ名T
「LOW-VALUE」を設定します。
●データ名V
【バッファ形式1の場合】 PIC X(8)
【バッファ形式2の場合】 PIC X(2)
MCFで使う領域です。
OpenTP1から値が返されるデータ領域
●データ名B
ステータスコードが,5けたの数字で返されます。
●データ名E
メッセージを受信した日付が「YYYYMMDD」(YYYY:西暦の年 MM:月 DD:日)の形式で返されます。
●データ名F
メッセージを受信した時刻が「HHMMSS00」(HH:時 MM:分 SS:秒 00は固定)の形式で返されます。
●データ名P【先頭セグメントを受信するとき】
入力元の論理端末名称が返されます。
中間セグメントおよび最終セグメントを受信するときは,ここで返された論理端末名称をデータ名Pに設定します。
●データ名U
- 【バッファ形式1の場合】 PIC 9(9)
-
受信したセグメントの長さが返されます。
- 【バッファ形式2の場合】 PIC 9(4)
-
受信したセグメントの長さ+4が返されます。
●データ名W
受信したセグメントの内容が返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
71000 |
先頭セグメントを受信するCBLDCMCF('RECEIVE ')を2回以上呼び出しています。中間セグメントおよび最終セグメントを受信する場合は,データ名Cに「'SEG '」を設定してCBLDCMCF('RECEIVE ')を呼び出してください。 |
71001 |
メッセージの最終セグメントを受信したあとで,次のセグメントを受信するCBLDCMCF('RECEIVE ')を呼び出しています。直前に呼び出したCBLDCMCF('RECEIVE ')でメッセージはすべて受信しました。 このステータスコードが返されたあとに,再び CBLDCMCF('RECEIVE ')を呼び出した場合は,ステータスコード「72000」が返されます。 |
71002 |
メッセージキューへの入力処理時に障害が起こりました。 |
メッセージキューが閉塞されています。 |
|
71108 |
プロセスのローカルメモリが不足しています。 |
72000 |
<MHPの実行でリターンした場合> 先頭セグメントを受信するCBLDCMCF('RECEIVE ')を呼び出す前に,中間セグメントおよび最終セグメントを受信するCBLDCMCF('RECEIVE ')を呼び出しています。先頭セグメントを受信する場合は,データ名Cに「'FRST'」を設定してCBLDCMCF('RECEIVE ')を呼び出してください。 ステータスコード「71001」が返されたあとに,再びCBLDCMCF('RECEIVE ')を呼び出しています。 |
<SPPの実行でリターンした場合> SPPではCBLDCMCF('RECEIVE ')を呼び出せません。 |
|
72001 |
データ名Pに設定した論理端末名称が間違っています。 |
72013 |
受信領域の長さを超えるセグメントを受信しました。受信領域の長さを超えた部分は切り捨てられました。 |
バッファ形式2の場合で,32767バイトを超えるセグメントを受信しました。32767バイトを超えた部分は切り捨てられました。 |
|
72016 |
データ名Dに設定した値が間違っています。 |
データ名Nまたはデータ名Tに設定した値が間違っています。 |
|
データ名M7に設定した値が間違っています。 |
|
72024 |
データ名Oに設定した値が間違っています。 |
72025 |
データ名Cに設定した値が間違っています。 |
72028 |
データ名Aに設定した値が間違っています。 |
72036 |
セグメントを受信する領域の長さが不足しています。バッファ形式1の場合は9バイト以上,バッファ形式2の場合は5バイト以上の領域を確保してください。 |
上記以外 |
プログラムの破壊などによる,予期しないエラーが発生しました。 |