MsgFlagsフィールドは三つのサブフィールドに分けられた32ビット整数です。三つのサブフィールドが示すメッセージフラグを次に示します。
- ローカルキューマネジャが認識できない場合,拒否されるメッセージフラグ
- ローカルキューマネジャが認識できなくても受け付けられるメッセージフラグ
- ある条件が満たされたときに受け付けられるメッセージフラグ
- 注意
- MsgFlagsフィールドのすべてのサブフィールドは,キューマネジャが使用するために予約されています。
各サブフィールドはサブフィールドに対応する位置にビットが立ち,そのほかの位置にはビットが立っていないビットマスクで識別されます。ビットは,ビット0が最大重要ビットでありビット31が最小重要ビットです。次に示すマスクはサブフィールドを識別するために定義されています。
- MQMF_REJECT_UNSUP_MASK
- 未サポートのメッセージフラグの場合,拒否されるメッセージフラグのマスク
- ローカルキューマネジャにサポートされていないため,MQPUT命令またはMQPUT1命令が,次に示すコードでエラーとなるメッセージフラグフィールドのMsgFlagsフィールドの中のビット位置を示します。
- この場合に返される完了コードと理由コードを次に示します。
- 完了コード:MQCC_FAILED
- 理由コード:MQRC_MSG_FLAGS_ERROR
- このサブフィールドは,ビット位置20~31を使用します。
- なお,このサブフィールドには,次のメッセージフラグがあります。
- MQMF_LAST_MSG_IN_GROUP
- MQMF_LAST_SEGMENT
- MQMF_MSG_IN_GROUP
- MQMF_SEGMENT
- MQMF_SEGMENTATION_ALLOWED
- MQMF_ACCEPT_UNSUP_MASK
- 未サポートのメッセージフラグでも受け付けられるメッセージフラグのマスク
- このマスクは,メッセージフラグがローカルキューマネジャによってサポートされていなくても,MQPUT命令またはMQPUT1命令で受け付けるMsgFlagsフィールドのビット位置を示します。この場合,完了コードはMQCC_OKです。
- このサブフィールドは,ビット位置0~11を使用します。
- MQMF_ACCEPT_UNSUP_IF_XMIT_MASK
- ある条件のときだけ受け付けられる,未サポートメッセージフラグのマスク
- このマスクは,メッセージフラグがローカルキューマネジャによってサポートされていなくても,メッセージフラグをMQPUT命令またはMQPUT1命令で受け付けるMsgFlagsフィールドのビット位置を示します。ただし,次の条件を満たす場合だけです。
- メッセージのあて先が,リモートキューマネジャです。
- アプリケーションが直接ローカルの転送キューにメッセージを登録していません。つまり,MQOPEN命令またはMQPUT1命令の呼び出しによって指定されたオブジェクト記述子のObjectQMgrNameフィールドおよびObjectNameフィールドによって識別されるキューが,ローカルの転送キューではありません。
- これらの条件が二つとも満たされた場合は,次に示す完了コードが返されます。
- また,条件が満たされない場合は,次に示す完了コードと理由コードが返されます。
- 完了コード:MQCC_FAILED
- 理由コード:MQRC_MSG_FLAGS_ERROR
- このサブフィールドは,ビット位置12~19を使用します。
- MsgFlagsフィールドにキューマネジャが認識しないオプションを指定した場合,キューマネジャはMsgFlagsフィールドとサブフィールドのマスクをビットごとにAND結合して,各サブフィールドを順番に確認します。AND結合の結果が0でなかった場合は,完了コードと理由コードは上記に示した値が返されます。