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〕.
DATA DIVISION(データ記述項)の指定
01 一意名1.
02 データ名A PIC 9(4) COMP.
02 データ名B PIC X(2).
02 データ名C PIC X(n).
01 一意名3.
02 データ名D PIC 9(4) COMP.
02 データ名E PIC X(2).
02 データ名F PIC X(n).
PROCEDURE DIVISION(通信文)の指定
SEND 通信記述名 FROM 一意名1
〔WITH {EMI|一意名2}〕
〔BEFORE RECEIVING MESSAGE INTO 一意名3〕.
機能
次に示すCALLインタフェースの機能を実現します。
送信できるメッセージの一つのセグメントの最大長は,32000バイトです。単一セグメントだけ扱えます。
セグメントを送信する領域(一意名1で示す領域)の形式を次に示します。
同期型メッセージの送受信の場合,セグメントを受信する領域(一意名3で示す領域)も設定します。受信できるメッセージの一つのセグメントの最大長は,32763バイトです。
セグメントを受信する領域の形式を次に示します。
UAPで値を設定する項目
●FOR句
次のどちらかの値を設定します。
●SYMBOLIC TERMINAL句
論理端末名称を設定したデータ項目を設定します。データ名2にメッセージ出力先の論理端末名称を設定します。論理端末名称は最大8バイトの長さです。8バイトに満たない名称を設定する場合は,後ろを空白で埋めてください。
●SYNCHRONOUS MODE句
非同期型でメッセージを送信するか,同期型でメッセージを送信するかを設定します。
省略した場合は,ASYNC(非同期型のメッセージの送信)が設定されます。
●SWITCHING MODE句
一方送信メッセージの場合に,一般か優先かを設定します。
省略した場合は,NORMAL(一般の一方送信メッセージ)が設定されます。
●NEXT TRANSACTION句
●DETAIL MODE句
非同期型のメッセージの送信の場合に,出力通番を付けるかどうかを設定します。データ名10に次のどちらかを設定します。
省略した場合は,出力通番を付けません。
●WAITING TIME句
SEND文を実行してから終了するまでの,最大時間を設定したデータ項目を設定します。同期型メッセージの送受信,または同期型メッセージの送信の場合に設定します。
省略した場合,またはデータ名11に'00000000'を設定した場合,同期型メッセージの送受信のときは,MCFマネジャ定義のUAP共通定義で指定した同期型送受信監視時間(mcfmuap -t sndrcvtim)が設定されます。同期型メッセージの送信のときは,MCFマネジャ定義のUAP共通定義で指定した同期型送信監視時間(mcfmuap -t sndtim)が設定されます。
●データ名A
送信するセグメントの長さ+4を設定します。
●データ名B
送信完了通知イベントを設定します。データ名Bとビットの設定値の関係を次に示します。
送信完了通知イベントの要否は,データ名Bの領域の24ビット目で設定します。
●データ名C
送信するセグメントの内容を設定します。一つのセグメントで32000バイトまで送信できます。
●データ名E
MCFで使用する領域です。
●WITH句
送信するセグメントが単一の論理メッセージであることを設定します。
指定を省略した場合は,EMI(単一セグメント)を設定します。
●BEFORE句
同期型のメッセージの送受信の場合に,セグメントを受信するデータ項目(一意名3)を設定します。一方送信メッセージの送信,応答メッセージの送信,または,同期型のメッセージの送信の場合,BEFORE句を省略します。
OpenTP1から値が返される項目
●STATUS KEY句
ステータスコードを受け取りたい場合に設定します。省略した場合は,ステータスコードを受け取れません。データ名1にステータスコードが返されます。
●データ名D
受信したセグメントの長さ+4が返されます。
●データ名F
受信したセグメントの内容が返されます。一つのセグメントで32763バイトまで受信できます。
ステータスコード
ステータスコード | 意味 |
---|---|
00000 | 正常に終了しました。 |
71002 | メッセージキューへの出力処理中に障害が発生しました。 |
メッセージキューが閉塞されています。 | |
メッセージキューが割り当てられていません。 | |
MCFが終了処理中のため,メッセージの送信を受け付けられません。 | |
データ名Aに32004バイトを超える値を設定しています。 | |
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のサイズを超えた部分は切り捨てられました。 |
32763バイトを超えるセグメントを受信しました。32763バイトを超えた部分は切り捨てられました。 | |
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 | 出力先の論理端末は停止しています。 |
上記以外 | プログラムの破壊などによる,予期しないエラーが発生しました。 |