COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

29.2.5 メッセージを送信するCBLMQSENDMSG

キューへメッセージを送信するには,CBLMQSENDMSGサービスルーチンを呼び出します。

形式
CALL 'CBLMQSENDMSG' USING 引数1 引数2

引数
引数1には,キューをオープンしたときにCBLMQOPENサービスルーチンに指定した「表29-2 MSMQアクセスサービスルーチンで使用するインタフェース領域」の名前を指定します。
引数2には,データパラメタ領域の名前を指定します。

インタフェース領域に設定する項目
  • 優先順位
    メッセージの優先順位を0〜7の範囲で指定します。
  • 配信方法
    メッセージの配信方法を指定します。
    高速メッセージとして配信する場合は0を,回復可能メッセージとして配信する場合は1を指定します。
  • ジャーナリング
    メッセージの送信に成功した場合,ジャーナルキューにメッセージのコピーを格納するかどうかを指定します。
    メッセージのコピーを格納する場合は1を,格納しない場合は0を指定します。
  • 配信不能メッセージ
    メッセージの送信に失敗した場合,配信不能メッセージキューにメッセージのコピーを格納するかどうかを指定します。
    メッセージのコピーを格納する場合は1を,格納しない場合は0を指定します。
  • データ変換フラグ
    メッセージデータをデータ変換して,テキストデータとしてキューへ送信するかどうかを指定します。
    テキストデータに変換して送信する場合は1を,そのまま送信する場合は0を指定します。
インタフェース領域の形式については,「表29-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アクセス以外でエラーを検出した。
また,インタフェース領域に次の項目が返されます。

規則
  • データパラメタ領域のデータ名2には,データ名3で指定したメッセージのラベルのデータ長を,バイト数で指定します。
  • データパラメタ領域のデータ名5の領域長には,メッセージデータのデータ長を指定します。指定できる最大データ長は,4,096,000バイトです。
  • データパラメタ領域のデータ名4には,データ名5で指定したメッセージデータのデータ長を,バイト数で指定します。
    ただし,インタフェース領域のデータ変換フラグに有効(テキストデータに変換)を指定した場合,CBLMQSENDMSGサービスルーチンはメッセージデータをワイド文字列(Unicode)に変換してキューに送信します。したがって,実際にキューに格納されるメッセージ本文のデータサイズは,データ名4で指定したメッセージデータのデータ長よりも大きくなり,最大で(メッセージデータのデータ長+1)×2バイトとなります。なお,実際にキューに格納されたメッセージ本文のデータサイズは,MSMQエクスプローラなどで確認できます。
  • このサービスルーチンを実行する場合,あらかじめCBLMQOPENサービスルーチンを使って,メッセージを送信するキューをSENDモードでオープンしておく必要があります。