付録D.2 メッセージフラグ

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_OK
また,条件が満たされない場合は,次に示す完了コードと理由コードが返されます。
  • 完了コード:MQCC_FAILED
  • 理由コード:MQRC_MSG_FLAGS_ERROR
このサブフィールドは,ビット位置12~19を使用します。
MsgFlagsフィールドにキューマネジャが認識しないオプションを指定した場合,キューマネジャはMsgFlagsフィールドとサブフィールドのマスクをビットごとにAND結合して,各サブフィールドを順番に確認します。AND結合の結果が0でなかった場合は,完了コードと理由コードは上記に示した値が返されます。