付録D.1 報告オプション

MQPUT命令およびMQPUT1命令で指定される,メッセージ記述子のReportフィールドの処理について説明します。Reportフィールドの詳細については,「1. データタイプ」の「MQMD構造体 - メッセージ記述子」を参照してください。

Reportフィールドは三つのサブフィールドに分けられた32ビット整数です。三つのサブフィールドが示す報告オプションを次に示します。

各サブフィールドはサブフィールドに対応する位置にビットが立ち,そのほかの位置にはビットが立っていないビットマスクで識別されます。サブフィールドの各ビットは隣接している必要はありません。ビットは,ビット0が最大重要ビットでありビット31が最小重要ビットです。次に示すマスクはサブフィールドを識別するために定義されています。

MQRO_REJECT_UNSUP_MASK
未サポートの報告オプションの場合拒否されるオプションのマスク
ローカルキューマネジャにサポートされていないため,MQPUT命令またはMQPUT1命令が,次に示すコードでエラーとなる報告オプションのReportフィールド中のビット位置を示します。
この場合に返される完了コードと理由コードを次に示します。
  • 完了コード:MQCC_FAILED
  • 理由コード:MQRC_REPORT_OPTIONS_ERROR
このサブフィールドはビット位置3と,ビット位置11~13を使用します。
MQRO_ACCEPT_UNSUP_MASK
未サポートの報告オプションでも受け付けられるオプションのマスク
このマスクは報告フィールド内で,ローカルキューマネジャにサポートされていなくても,MQPUT命令またはMQPUT1命令を受け付ける報告オプションのビット位置を示します。
この場合に返される完了コードと理由コードを次に示します。
  • 完了コード:MQCC_WARNING
  • 理由コード:MQRC_UNKNOWN_REPORT_OPTION
このサブフィールドは,ビット位置0~2,ビット位置4~10,ビット位置24~31を使用します。
MQRO_ACCEPT_UNSUP_IF_XMIT_MASK
ある条件のときだけ受け付けられる報告オプションのマスク
このマスクは報告フィールド内で,ローカルキューマネジャにサポートされていなくても,次に示す条件がすべて満たされたとき,MQPUT命令またはMQPUT1命令を受け付ける報告オプションのビット位置を示します。
  • メッセージが置かれる最初のキューが転送キューです。
  • アプリケーションは直接転送キューに登録していません。
これらの条件が満たされた場合は,次に示す完了コードと理由コードが返されます。
  • 完了コード:MQCC_WARNING
  • 理由コード:MQRC_UNKNOWN_REPORT_OPTION
また,条件が満たされない場合は,次に示す完了コードと理由コードが返されます。
  • 完了コード:MQCC_FAILED
  • 理由コード:MQRC_REPORT_OPTIONS_ERROR
Reportフィールドにキューマネジャが認識しないオプションを指定した場合,キューマネジャは,ReportフィールドとサブフィールドのマスクをビットごとにAND結合して,各サブフィールドを順番に確認します。AND結合の結果が0でなかった場合,完了コードと理由コードは上記に示した値が返されます。
MQCC_WARNINGが返される場合,ほかの警告条件があるときはどんな理由コードが返却されるかは定義されていません。
ローカルキューマネジャで認識できない報告オプションの指定および受け付けができれば,リモートキューマネジャで認識され処置される報告オプションを持つメッセージを送信するときに便利です。