メッセージ・フラグ・フィールドの構造
ここでは、メッセージ・フラグ・フィールドの 構造について説明します。
MsgFlags フィールドは 32 ビット長の整数で、別々の 3 つのサブフィールドに分かれています。 これらのサブフィールドは、次のオプションを識別します。- ローカル・キュー・マネージャーによって認識されない場合に拒否されるメッセージ・フラグ
- ローカル・キュー・マネージャーによって認識されない場合でも、常に受け入れられるメッセージ・フラグ
- 他の特定の条件が満たされた場合にのみ受け入れられるメッセージ・フラグ
注:
MsgFlags のサブフィールドはすべて、キュー・マネージャーが使用するために予約されています。各サブフィールドは、サブフィールドに対応する位置に 1 のビット、それ以外の位置に 0 のビットを持つビット・マスクによって識別されます。 これらのビットには、ビット 0 が最上位ビットになり、ビット 31 が最下位ビットになるように番号が付けられています。 サブフィールドを識別するために定義されているマスクは次のとおりです。
- MQMF_REJECT_UNSUP_MASK
- このマスクは、
MsgFlagsフィールド内のビット位置を識別します。このフィールドでは、ローカル・キュー・マネージャーがサポートしないメッセージ・フラグによって、MQPUT 呼び出しまたは MQPUT1 呼び出しが失敗し、完了コード 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_SEGMENTATION_INHIBITED
- MQMF_ACCEPT_UNSUP_MASK
- このマスクは、
MsgFlagsフィールド内のビット位置を識別します。このフィールドでは、ローカル・キュー・マネージャーがメッセージ・フラグをサポートしないにもかかわらず、メッセージ・フラグは MQPUT 呼び出しまたは MQPUT1 呼び出しで受け入れられることが示されています。 この完了コードは MQCC_OK です。このサブフィールドは、ビット位置 0 から 11 を占めます。
- MQMF_ACCEPT_UNSUP_IF_XMIT_MASK
- このマスクは、
MsgFlagsフィールド内のビット位置を識別します。このフィールドのビット位置には、ローカル・キュー・マネージャーによってサポートされない場合でも、以下の 2 つの条件が満たされる場合に限り、MQPUT または MQPUT1 呼び出しでメッセージ・フラグが受け入れられることが示されています。- メッセージの宛先がリモート・キュー・マネージャーである。
- アプリケーションがローカル伝送キューにメッセージを直接書き込んでいない (つまり、MQOPEN または MQPUT1 呼び出しで指定されたオブジェクト記述子内の
ObjectQMgrNameおよびObjectNameフィールドによって識別されるキューが、ローカル伝送キューではない)。
このサブフィールドは、ビット位置 12 から 19 を占めます。
MsgFlags フィールドにキュー・マネージャーが認識しないフラグが指定されている場合、キュー・マネージャーはビット単位の AND 演算を使用して各サブフィールドを順に検査し、MsgFlags フィールドとそのサブフィールドのマスクを結合します。 この演算の結果が 0 でない場合は、上記の完了コードと理由コードが戻ります。