SEND − メッセージの送信(データ操作言語)
- 〈このページの構成〉
形式
DATA DIVISION(通信記述項)の指定
CD 通信記述名 FOR {OUTPUT|I-O} 〔STATUS KEY IS データ名1〕 〔SYMBOLIC TERMINAL IS データ名2〕 〔SYNCHRONOUS MODE IS {SYNC|ASYNC|データ名6}〕 〔SWITCHING MODE IS {NORMAL|PRIOR|データ名7}〕 〔DETAIL MODE IS データ名10〕.
DATA DIVISION(データ記述項)の指定
01 一意名1. 02 データ名A PIC 9(4) COMP. 02 データ名B PIC X(2). 02 データ名C1 PIC X(12) VALUE LOW-VALUE. 02 データ名C2 PIC X(4). 02 データ名C3 PIC X(2) VALUE LOW-VALUE. 02 データ名C4 PIC X(2). 02 データ名C5 PIC X(4) VALUE LOW-VALUE. 02 データ名C6 PIC X(n).
PROCEDURE DIVISION(通信文)の指定
SEND 通信記述名 FROM 一意名1 〔WITH {EMI|一意名2}〕.
機能
次に示すCALLインタフェースの機能を実現します。
-
一方送信メッセージの送信 CBLDCMCF('SEND△△△△')
-
同期型メッセージの送信 CBLDCMCF('SENDSYNC')
送信できるメッセージの一つのセグメントの最大長は,制御ヘッダの24バイトを含めて32000バイトです。単一セグメントだけ扱えます。
セグメントを送信する領域(一意名1で示す領域)の形式を次に示します。
相手IPアドレスと相手ポート番号の設定方法については,「2.1.3 通信相手のアドレスの指定」を参照してください。
UAPで値を設定する項目
●FOR 句
次のどちらかの値を設定します。
- OUTPUT
-
一方送信メッセージの送信
- I-O
-
同期型メッセージの送信または一方送信メッセージの送信
一方送信メッセージの送信を行う場合,UAP共通定義(mcfmuap -c)のnoansreplyオペランドにyesを指定してください。noを指定した場合,SEND文はステータスコード(72000)を返します。
●SYMBOLIC TERMINAL 句
論理端末名称を設定したデータ項目を設定します。データ名2に出力先の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない場合,論理端末名称の後ろを空白で埋めてください。
●SYNCHRONOUS MODE 句
非同期型でメッセージを送信するか,同期型でメッセージを送信するかを設定します。
- SYNC
-
同期型メッセージの送信
同期型メッセージの送信のとき設定します。
- ASYNC
-
非同期型メッセージの送信
一方送信メッセージの送信のとき設定します。
- データ名6
-
次の値を設定したデータ項目
'0'または'△':非同期型メッセージの送信
'1':同期型メッセージの送信
省略した場合は,ASYNC(非同期型メッセージの送信)が設定されます。
●SWITCHING MODE 句
一方送信メッセージの場合に,一般か優先かを設定します。
- NORMAL
-
一般の一方送信メッセージ
- PRIOR
-
優先の一方送信メッセージ
- データ名7
-
次の値を設定したデータ項目
'0'または'△':一般の一方送信メッセージ
'1':優先の一方送信メッセージ
省略した場合およびFOR句にI-Oを設定した場合は,NORMAL(一般の一方送信メッセージ)が設定されます。
●DETAIL MODE 句
非同期型のメッセージの送信の場合に,出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。
- データ名10
-
次の値を設定したデータ項目
'0'または'△':出力通番を付けます。
'1':出力通番を付けません。
省略した場合およびFOR句にI-Oを設定した場合は,出力通番を付けません。
●データ名A
送信するセグメントの長さ+28(制御ヘッダ,データ名A,データ名B)を設定します。
●データ名B
MCFで使用する領域です。
●データ名C1
予備領域です。
●データ名C3
予備領域です。
●データ名C5
予備領域です。
●データ名C6
送信するセグメントの内容を設定します。一つのセグメントで31976バイトまで送信できます。
●WITH句
送信するセグメントが単一の論理メッセージであることを設定します。
- EMI
-
単一セグメントを設定します。
- 一意名2
-
次の値を設定したデータ項目
'2':EMI(単一セグメント)
指定を省略した場合は,EMI(単一セグメント)を設定します。
OpenTP1から値が返される項目
●STATUS KEY 句
ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
71002 |
メッセージキューへの出力処理中に障害が発生しました。 |
メッセージキューが閉塞されています。 |
|
メッセージキューが割り当てられていません。 |
|
データ名Aに32004バイトを超える値を設定しています。 |
|
MCFが終了処理中のため,メッセージの送信を受け付けられません。 |
|
71003 |
メッセージキューが満杯です。 |
71004 |
メッセージを格納するバッファをメモリ上に確保できませんでした。 |
71108 |
メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。 |
プロセスのローカルメモリが不足しています。 |
|
72000 |
<MHPの実行でリターンした場合>
|
<SPPの実行でリターンした場合>
|
|
72001 |
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。 |
SYMBOLIC TERMINAL句に設定した論理端末名称は,定義されていません。 |
|
SEND文を実行できない論理端末を設定しています。 |
|
72017 |
DETAIL MODE句に設定した値が間違っています。 |
72018 |
SWITCHING MODE句に設定した値が間違っています。 |
72020 |
SYNCHRONOUS MODE句に設定した値が間違っています。 |
72024 |
FOR句に設定した値が間違っています。 |
72026 |
WITH句に設定した値が間違っています。 |
72041 |
データ名Aに0から4バイト,またはマイナス値を設定しています。 |
73001 |
出力先の論理端末で障害が発生しました。 |
73010 |
出力メッセージ編集UOCで障害が発生しました。 |
メッセージの読み込み時に障害が発生しました。 |
|
73011 |
データ名Aに5以上28以下の値を設定しています。 |
73019 |
システムに対する送信時に障害が発生しました。 |
73020 |
出力先の論理端末は閉塞しています。 |
上記以外 |
プログラムの破壊などによる,予期しないエラーが発生しました。 |
注意事項
-
データ操作言語のSEND文を使用してメッセージを送信する場合は,時間監視を行いません。したがって,MCFマネジャ定義のUAP共通定義(mcfmuapコマンド)で同期送信監視時間を指定する際には,0を指定してください。
-
同一論理端末上で,同期型メッセージの送信と一方送信メッセージの送信を併用するのは避けてください。詳細は,3章の「dc_mcf_send − 一方送信メッセージの送信(C言語)」を参照してください。