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}〕 〔NEXT TRANSACTION IS データ名8〕 〔DETAIL MODE IS データ名10〕 〔WAITING TIME IS データ名11〕.
機能
次に示すCALLインタフェースの機能を実現します。
-
応答メッセージの送信 CBLDCMCF('REPLY△△△')
-
一方送信メッセージの送信 CBLDCMCF('SEND△△△△')
-
同期型メッセージの送受信 CBLDCMCF('SENDRECV')
-
同期型メッセージの送信 CBLDCMCF('SENDSYNC')
送信できるメッセージの一つのセグメントの最大長は,32,000バイトです。単一セグメントだけ扱えます。
送信するセグメント長は,システム定義,共用メモリ,およびOpenTP1ファイルに影響があります。詳細は「4. COBOL-UAP作成用プログラムインタフェース」の「COBOL-UAP作成用プログラムインタフェース使用時の注意事項」を参照してください。
セグメントを送信する領域(一意名1で示す領域)の形式を次に示します。
同期型メッセージの送受信の場合,セグメントを受信する領域(一意名3で示す領域)も設定します。受信できるメッセージの一つのセグメントの最大長は,32,763バイトです。
受信するセグメント長は,システム定義,共用メモリ,およびOpenTP1ファイルに影響があります。詳細は「4. COBOL-UAP作成用プログラムインタフェース」の「COBOL-UAP作成用プログラムインタフェース使用時の注意事項」を参照してください。
セグメントを受信する領域の形式を次に示します。
UAPで値を設定する項目
●FOR句
次のどちらかの値を設定します。
- OUTPUT
-
一方送信メッセージの送信
- I-O
-
応答メッセージの送信,同期型のメッセージの送受信,または,同期型のメッセージの送信。
●SYMBOLIC TERMINAL句
論理端末名称を設定したデータ項目を設定します。データ名2にメッセージ出力先の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない名称を設定する場合は,後ろを空白で埋めてください。
●SYNCHRONOUS MODE句
非同期型でメッセージを送信するか,同期型でメッセージを送信するかを設定します。
- SYNC
-
同期型のメッセージの送信または送受信
同期型のメッセージの送信または同期型のメッセージの送受信のとき設定します。
- ASYNC
-
非同期型のメッセージの送信
一方送信メッセージの送信または応答メッセージの送信のとき設定します。
- データ名6
-
次の値を設定したデータ項目
'0'または'△':非同期型のメッセージの送信
'1':同期型のメッセージの送信
省略した場合は,ASYNC(非同期型のメッセージの送信)が設定されます。
●SWITCHING MODE句
一方送信メッセージの場合に,一般か優先かを設定します。
- NORMAL
-
一般の一方送信メッセージ
- PRIOR
-
優先の一方送信メッセージ
- データ名7
-
次の値を設定したデータ項目
'0'または'△':一般の一方送信メッセージ
'1':優先の一方送信メッセージ
省略した場合,および非応答型のアプリケーションから応答メッセージを送信した場合は,NORMAL(一般の一方送信メッセージ)が設定されます。
●NEXT TRANSACTION句
- <継続問い合わせ応答形態の場合>
-
次のメッセージ受信時に起動するアプリケーションを設定します。データ名8に起動するMHPのアプリケーション名を設定します。アプリケーション名は最大8バイトの長さです。8バイトに満たない名称を設定する場合は,後ろを空白で埋めてください。
NEXT TRANSACTION句を省略,または,データ名8に空白を設定した場合,実行中のアプリケーションを次のメッセージ受信時に再び起動します。
応答メッセージの送信を行うSEND(メッセージの送信)文を呼び出すサービスでDISABLE(継続問い合わせ応答の終了)文を呼び出す場合はNEXT TRANSACTION句を省略,または,データ名8に空白を設定してください。
継続問い合わせ応答を引き継いだエラーイベントで応答メッセージの送信を行うSEND(メッセージの送信)文を発行する際に,NEXT TRANSACTION句を省略,または,データ名8に空白を設定した場合,継続問い合わせ応答を終了します。ただし,継続問い合わせ応答を引き継いだエラーイベントで,SEND(アプリケーションプログラムの起動)文を発行して継続問い合わせ応答型のアプリケーションを起動し,起動先のアプリケーションで応答メッセージの送信を行うSEND(メッセージの送信)文を発行する際に,NEXT TRANSACTION句を省略,または,データ名8に空白を設定した場合,継続問い合わせ応答を終了しないで,SEND(アプリケーションプログラムの起動)文を発行したときに設定した継続問い合わせ応答型のアプリケーションを次のメッセージ受信時に再び起動します。
- <継続問い合わせ応答形態以外の場合>
-
NEXT TRANSACTION句を省略,または,データ名8に空白を設定します。
●DETAIL MODE句
非同期型のメッセージの送信の場合に,出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。
- データ名10
-
次の値を設定したデータ項目
'0'または'△':出力通番を付けます。
'1':出力通番を付けません。
省略した場合,および非応答型のアプリケーションから応答メッセージを送信した場合は,出力通番を付けません。
●WAITING TIME句
SEND文を実行してから終了するまでの,最大時間を設定したデータ項目を設定します。同期型メッセージの送受信,または同期型メッセージの送信の場合に設定します。
- データ名11
-
監視時間の値をHHMMSS00(HH:時 MM:分 SS:秒 00は固定)の形式で設定したデータ項目を設定します。
省略した場合,またはデータ名11に'00000000'を設定した場合,同期型メッセージの送受信のときは,MCFマネジャ定義のUAP共通定義で指定した同期型送受信監視時間(mcfmuap -t sndrcvtim)が設定されます。同期型メッセージの送信のときは,MCFマネジャ定義のUAP共通定義で指定した同期型送信監視時間(mcfmuap -t sndtim)が設定されます。
- 注意事項
-
監視時間の精度は秒単位です。また,タイマ定義(mcfttim -t)のbtimオペランドで指定する時間の間隔でタイムアウトが発生したかどうかを監視しています。このため,設定した監視時間と実際にタイムアウトを検出する時間には秒単位の誤差が生じます。そのため,タイミングによっては,設定した監視時間よりも短い時間でタイムアウトすることがあります。監視時間が小さくなるほど,誤差の影響を受けやすくなりますので,監視時間は3秒以上の値の設定を推奨します
●データ名A
送信するセグメントの長さ+4を設定します。
●データ名B
送信完了通知イベントを設定します。データ名Bとビットの設定値の関係を次に示します。
AIX,HP-UXの場合
送信完了通知イベントの要否は,データ名Bの領域の24ビットに設定します。
- 領域の24ビットに1を設定
-
送信完了通知イベントを通知させます。ただし,送信完了通知イベント処理用のMHPをMCFアプリケーション定義で指定していない場合は無効です。
- 領域の24ビットに0を設定
-
送信完了通知イベントを通知させません。
Linux,Windowsの場合
送信完了通知イベントの要否は,データ名Bの領域の212ビットに設定します。
- 領域の212ビットに1を設定
-
送信完了通知イベントを通知させます。ただし,送信完了通知イベント処理用のMHPをMCFアプリケーション定義で指定していない場合は無効です。
- 領域の212ビットに0を設定
-
送信完了通知イベントを通知させません。
●データ名C
送信するセグメントの内容を設定します。一つのセグメントで32,000バイトまで送信できます。
●データ名E
MCFで使用する領域です。
●WITH句
送信するセグメントが単一の論理メッセージであることを設定します。
- EMI
-
単一セグメントを設定します。
- 一意名2
-
次の値を設定したデータ項目
'2':EMI(単一セグメント)
指定を省略した場合は,EMI(単一セグメント)を設定します。
●BEFORE句
同期型のメッセージの送受信の場合に,セグメントを受信するデータ項目(一意名3)を設定します。一方送信メッセージの送信,応答メッセージの送信,または,同期型のメッセージの送信の場合,BEFORE句を省略します。
OpenTP1から値が返される項目
●STATUS KEY句
ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。
●データ名D
受信したセグメントの長さ+4が返されます。
●データ名F
受信したセグメントの内容が返されます。一つのセグメントで32,763バイトまで受信できます。
ステータスコード
ステータスコード |
意味 |
---|---|
00000 |
正常に終了しました。 |
71002 |
メッセージキューへの出力処理中に障害が発生しました。 |
メッセージキューが閉塞されています。 |
|
メッセージキューが割り当てられていません。 |
|
MCFが終了処理中のため,メッセージの送信を受け付けられません。 |
|
データ名Aに32,004バイトを超える値を設定しています。 |
|
71003 |
メッセージキューが満杯です。 |
71004 |
メッセージを格納するバッファをメモリ上に確保できませんでした。 |
71108 |
メッセージを送信しようとしましたが,送信先の管理テーブルが確保できませんでした。 |
プロセスのローカルメモリが不足しています。 |
|
72000 |
<MHPの実行でリターンした場合>
|
<SPPの実行でリターンした場合>
|
|
72001 |
SYMBOLIC TERMINAL句に設定した論理端末名称が間違っています。 |
SYMBOLIC TERMINAL句に設定した出力先の論理端末名称は,MCFで定義していません。 |
|
SEND文を実行できない論理端末を設定しています。 |
|
<応答メッセージの送信を行う(FOR句にI-Oを設定し,かつ,SYNCHRONOUS MODE句を省略またはSYNCHRONOUS MODE句にASYNCを設定またはSYNCHRONOUS MODE句に0もしくは空白を設定したデータ名6を設定)場合>
|
|
<同期型メッセージの送信または同期型メッセージの送受信を行う(FOR句にI-Oを設定し,かつ,SYNCHRONOUS MODE句にSYNCを設定または1を設定したデータ名6を設定)場合> 問い合わせ応答形態および継続問い合わせ応答形態のメッセージ送受信機能を使用している(コネクション定義(mcftalccn -l)のreplymsgオペランドにyesを指定)場合,問い合わせ応答中または継続問い合わせ応答中のため受け付けられません。 |
|
72008 |
応答型のアプリケーションからSEND(アプリケーションプログラムの起動)文を呼び出して応答型のアプリケーションを起動したあとで,応答メッセージを送信するSEND文を呼び出しました。 |
継続問い合わせ応答型のアプリケーションからSEND(アプリケーションプログラムの起動)文を呼び出して継続問い合わせ応答型のアプリケーションを起動したあとで,応答メッセージを送信するSEND文を呼び出しました。 |
|
72011 |
継続問い合わせ応答型でないアプリケーションが,次起動アプリケーションを設定して,応答メッセージを送信するSEND文を呼び出しました。 |
72012 |
MCFバッファグループ定義のバッファ長が不足しました。 |
MCF通信プロセスは相手システムからメッセージを受信しましたが,UAPへの応答連絡でRPC通信の送信可能な上限値を超えました。 |
|
72013 |
データ名Fのサイズを超えるセグメントを受信しました。データ名Fのサイズを超えた部分は切り捨てられました。 |
32,763バイトを超えるセグメントを受信しました。32,763バイトを超えた部分は切り捨てられました。 |
|
72017 |
DETAIL MODE句に設定した値が間違っています。 |
72018 |
SWITCHING MODE句に設定した値が間違っています。 |
72020 |
SYNCHRONOUS MODE句に設定した値が間違っています。 |
72024 |
FOR句に設定した値が間違っています。 |
72026 |
WITH句に設定した値が間違っています。 |
72036 |
データ名Fのサイズが不足しています。5バイト以上の領域を確保してください。 |
72037 |
非同期型メッセージの送信(SYNCHRONOUS MODE句を省略,またはSYNCHRONOUS MODE句にASYNCを設定,またはSYNCHRONOUS MODE句に0もしくは空白を設定したデータ名6を設定)の場合,BEFORE句は設定できません。 |
72041 |
データ名Aに0から4バイト,またはマイナス値を設定しています。 |
72044 |
DISABLE文を呼び出したあとで,次起動アプリケーションを設定して応答メッセージを送信するSEND文を呼び出しました。 |
72045 |
NEXT TRANSACTION句に継続問い合わせ応答型でないアプリケーションのアプリケーション名を設定して応答メッセージを送信するSEND文を呼び出しました。 |
72046 |
NEXT TRANSACTION句に設定したアプリケーション名が異なる応答メッセージの送信を行うSEND文を2回以上呼び出しました。 |
72047 |
NEXT TRANSACTION句にアプリケーション属性定義(mcfaalcap)に定義されていないアプリケーション名を設定して応答メッセージを送信するSEND文を呼び出しました。 |
72073 |
非同期メッセージを送信処理中です。 |
73001 |
データ名11に60秒を加算した時間が経過しましたが,MCF通信プロセスからの応答がありません。 |
無通信監視時間(コネクション定義(mcftalccn -k)のnotrftimeオペランド指定値)が経過しましたが,相手システムからの通信がありません。 |
|
相手システムからメッセージを受信しましたが,受信バッファを確保できませんでした。 |
|
メッセージの送信処理中に相手システムからメッセージを受信したため,非同期受信処理を行いましたが,障害(UOC障害など)が発生しました。 |
|
出力先の論理端末でMCF通信プロセスの内部障害が発生しました。 |
|
73002 |
<同期型メッセージの送信または同期型メッセージの送受信を行う(FOR句にI-Oを設定し,かつ,SYNCHRONOUS MODE句にSYNCを設定または1を設定したデータ名6を設定)場合> コネクション再確立時の未送信メッセージの送信抑止機能を使用している(論理端末定義(mcftalcle -d)のreplacemsgオペランドにdiscardを指定)場合に,MHPでメッセージ受信後にコネクションが再確立されたため,送信を抑止しました。 |
73003 |
メッセージ受信仕掛り中です。 |
73005 |
WAITING TIME句に設定した時間が経過しましたが,論理端末からの応答がありません。 |
73010 |
入力または出力メッセージ編集UOCで障害が発生しました。 |
メッセージの読み込み時に障害が発生しました。 |
|
73015 |
出力先の論理端末は,ほかのUAPで仕掛り中です。 |
73018 |
WAITING TIME句に設定した値が間違っています。 |
73019 |
メッセージ送信完了監視タイマのタイムアウトが発生しました。 |
73020 |
出力先の論理端末は停止しています。 |
上記以外 |
プログラムの破壊などによる,予期しないエラーが発生しました。 |