メッセージ・フラグ・フィールドの構造

ここでは、メッセージ・フラグ・フィールドの 構造について説明します。

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 フィールドによって識別されるキューが、ローカル伝送キューではない)。
上記の条件を 2 つとも満たせば完了コード MQCC_OK が戻りますが、満たさなければ完了コード MQCC_FAILED が理由コード MQRC_MSG_FLAGS_ERROR と共に戻ります。

このサブフィールドは、ビット位置 12 から 19 を占めます。

MsgFlags フィールドにキュー・マネージャーが認識しないフラグが指定されている場合、キュー・マネージャーはビット単位の AND 演算を使用して各サブフィールドを順に検査し、MsgFlags フィールドとそのサブフィールドのマスクを結合します。 この演算の結果が 0 でない場合は、上記の完了コードと理由コードが戻ります。