27.2.5 メッセージを送信する(CBLMQSENDMSG)
キューへメッセージを送信するには,CBLMQSENDMSGサービスルーチンを呼び出します。
- 形式
-
CALL 'CBLMQSENDMSG' USING 引数1 引数2
- 引数
-
引数1には,キューをオープンしたときにCBLMQOPENサービスルーチンに指定した「表27‒2 MSMQアクセスサービスルーチンで使用するインタフェース領域」の名前を指定します。
引数2には,データパラメタ領域の名前を指定します。
- インタフェース領域に設定する項目
-
-
優先順位
メッセージの優先順位を0〜7の範囲で指定します。
-
配信方法
メッセージの配信方法を指定します。
高速メッセージとして配信する場合は0を,回復可能メッセージとして配信する場合は1を指定します。
-
ジャーナリング
メッセージの送信に成功した場合,ジャーナルキューにメッセージのコピーを格納するかどうかを指定します。
メッセージのコピーを格納する場合は1を,格納しない場合は0を指定します。
-
配信不能メッセージ
メッセージの送信に失敗した場合,配信不能メッセージキューにメッセージのコピーを格納するかどうかを指定します。
メッセージのコピーを格納する場合は1を,格納しない場合は0を指定します。
-
データ変換フラグ
メッセージデータをデータ変換して,テキストデータとしてキューへ送信するかどうかを指定します。
テキストデータに変換して送信する場合は1を,そのまま送信する場合は0を指定します。
インタフェース領域の形式については,「表27‒2 MSMQアクセスサービスルーチンで使用するインタフェース領域」を参照してください。
-
- データパラメタ領域に設定する項目
-
送信するメッセージデータ,およびメッセージのラベルを,次の形式で指定します。
記述形式
内容
01 データ名1.
CALL文のUSINGで指定するデータパラメタ領域の名前
02 データ名2 PIC S9(9) USAGE COMP.
メッセージのラベルのデータ長
02 データ名3 PIC X(512).
メッセージのラベルのパス名
02 データ名4 PIC S9(9) USAGE COMP.
メッセージデータのデータ長
02 データ名5 PIC X(n).
メッセージデータ
- (凡例)
-
n:メッセージデータのデータ長
- 戻り値
-
0:サービスルーチンは正常に終了した。
-1:MSMQアクセスでエラーを検出した。
-2:MSMQアクセス以外でエラーを検出した。
また,インタフェース領域に次の項目が返されます。
-
MSMQのエラーコード(戻り値が-1の場合)
-
表27‒3 詳細コードの内容(戻り値が-2の場合)
-
- 規則
-
-
データパラメタ領域のデータ名2には,データ名3で指定したメッセージのラベルのデータ長を,バイト数で指定します。
-
データパラメタ領域のデータ名5の領域長には,メッセージデータのデータ長を指定します。指定できる最大データ長は,4,096,000バイトです。
-
データパラメタ領域のデータ名4には,データ名5で指定したメッセージデータのデータ長を,バイト数で指定します。
ただし,インタフェース領域のデータ変換フラグに有効(テキストデータに変換)を指定した場合,CBLMQSENDMSGサービスルーチンはメッセージデータをワイド文字列(Unicode)に変換してキューに送信します。したがって,実際にキューに格納されるメッセージ本文のデータサイズは,データ名4で指定したメッセージデータのデータ長よりも大きくなり,最大で(メッセージデータのデータ長+1)×2バイトとなります。なお,実際にキューに格納されたメッセージ本文のデータサイズは,MSMQエクスプローラなどで確認できます。
-
このサービスルーチンを実行する場合,あらかじめCBLMQOPENサービスルーチンを使って,メッセージを送信するキューをSENDモードでオープンしておく必要があります。
-