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が返される場合,ほかの警告条件があるときはどんな理由コードが返却されるかは定義されていません。
- ローカルキューマネジャで認識できない報告オプションの指定および受け付けができれば,リモートキューマネジャで認識され処置される報告オプションを持つメッセージを送信するときに便利です。