MQRFH2 ヘッダーには、メッセージの構造体についての情報と対象消費者についての情報が入っていて、 それを使ってメッセージ・ブローカーはメッセージを処理してその消費者に配送またはパブリッシュすることができます。
値 'MQRFH2 ' を、先行するヘッダー (通常は MQMD) の「形式」フィールドに入れなければなりません。定数 MQFMT_RF_HEADER_2 は、この値で定義されます。
C プログラミング言語の場合、定数 MQFMT_RF_HEADER_2_ARRAY も定義されます。この定数は MQFMT_RF_HEADER_2 と同じ値を持ちますが、文字ストリングではなく文字の配列です。
MQRFH2 ヘッダーのフィールドの文字セットおよびエンコードは以下のとおりです。
文字セットによっては、エンコードに依存する表記を持つものがあります。 NameValueCCSID がそのような文字セットの 1 つを定義する場合、 NameValueData は MQRFH2 ヘッダーの他のフィールドと同じエンコードでなければなりません。
MQRFH2 ヘッダーには、以下のフィールドが含まれています。
フィールド名 | 説明 | 詳細 |
---|---|---|
StrucId | 構造体 ID | この値は MQRFH_STRUC_ID でなければなりません。 これは、規則およびフォーマット・ヘッダー構造体の ID です。 C プログラミング言語の場合、定数 MQRFH_STRUC_ID_ARRAY も定義されます。 この定数は MQRFH_STRUC_ID と同じ値を持ちますが、ストリングではなく文字の配列です。 |
Version | 構造体バージョン番号 | この値は MQRFH_VERSION_2 でなければなりません。 これは、Version-2 規則およびフォーマット・ヘッダー構造体です。 |
Struclength | MQRFH2 の全長 (NameValueData を含む)。 | このフィールドの初期値は、MQRFH_STRUC_LENGTH_FIXED_2 です。 これは、MQRFH2 ヘッダー構造体の固定部分の長さです。 これは、MQRFH2 ヘッダー構造体の長さ (バイト) です (この構造体の最後の NameValueLength および NameValueData フィールドを含みます)。 このようなフィールドの複数のペアが、length1、data1、length2、data2、.......という順序で構造体の末尾に存在する可能性があります。 構造体の末尾にある最後の NameValueData フィールドの後に続くすべてのユーザー・データの長さは、StrucLength には含まれません。 注: Struclength が 4 の倍数でない場合は、オペレーティング・システム環境によってはユーザー・データのデータ変換時に問題が生じる可能性があります。
|
Encoding | NameValueData の後に続くデータの数値エンコード | このフィールドの初期値は、 MQENC_NATIVE です。 このフィールドでは、最後の NameValueData フィールドの後に続くすべてのデータ内の数値をどのように表すかを指定します。これは、バイナリー整数データ、パック 10 進整数データ、および浮動小数点データに適用されます。 |
CodedCharSetId | NameValueData の後に続くデータの文字セット ID | このフィールドの初期値は、 MQCCSI_INHERIT です。 これは、文字セット ID が現行構造体のものと同じであることを意味します。 このフィールドは、最後の NameValueData フィールドに続くデータ内のすべての文字ストリングのコード化文字セット ID を識別します。 |
Format | NameValueData の後に続くデータの形式名 | このフィールドの初期値は、 MQFMT_NONE です。 このフィールドでは、最後の NameValueData フィールドの後に続くすべてのデータの形式名を指定します。この名前には、フィールドの長さに合わせてブランクを埋め込む必要があります。 注: フィールドの末尾の前でヌル文字を使用して名前を終了しないでください。キュー・マネージャーは、MQRFH2 ヘッダー内のヌル文字や、ヌル文字の後に続く文字をブランク文字に変換しないからです。
注: また、先頭または埋め込まれたブランク文字を使って名前を指定しないでください。
|
Flags | Flags | このフィールドの初期値は MQRFH_NONE です。 フラグがないことを意味します。 |
NameValueCCSID | NameValueData の文字セット ID | このフィールドの初期値は 1208 です。これは、 utf-8コード化文字セットが使われることを意味します。 このフィールドは、 NameValueData フィールド内のデータのコード化文字セットを識別します。これは、MQRFH2 ヘッダー構造体の他のストリングの文字セットとは異なり、 最後の NameValueData フィールドに続く文字データの文字セットとも異なる場合があります。 NameValueCCSID には、以下のいずれかの値がなければなりません。 1200: UCS-2 開放型 1208: UTF-8 13488: UCS-2 2.0 サブセット 17584: UCS-2 2.1 サブセット (ユーロ記号 € を含む) UCS-2 文字セットの場合、NameValueData のエンコード (バイト配列) は、 MQRFH2 ヘッダー構造体の他のエンコードと同じでなければなりません。 注: 代理文字 (X'D800' から X'DFFF') はサポートされません。
|
以下の 2 つのフィールドはオプションですが、存在する場合は、ペアとなっていなければなりません。 これらのフィールドはペアとして、必要なだけ何回でも繰り返すことができます。 これらのフィールドが複数回出現する場合、length1、data1、length2、data2、.......という順序で出現しなければなりません。 |
||
NameValueLength | NameValueData の長さ | このフィールドでは、このフィールドの後に続く NameValueData フィールドの長さをバイト数で指定します。 注: NameValueLength が 4 の倍数でない場合、NameValueData フィールドの後に続くデータの変換時に問題が生じることがあります。
|
NameValueData | これは、XML 形式の構文を使用してエンコード化されるデータの入った可変長文字ストリングです。 | このストリングのバイト単位の長さは、 この NameValueData フィールドより前にある NameValueLength フィールドで指定されます。 注記の NameValueLength フィールドの説明に示されている問題を避けるためには、このフィールドをブランクで拡張して長さを 4 の倍数にするか、またはヌル文字でフィールドを終端してください。 |
typedef struct tagMQRFH2 { MQCHAR4 StrucId; /* Structure identifier */ MQLONG Version; /* Structure version number */ MQLONG StrucLength; /* Total length of MQRFH2 including NameValueData */ MQLONG Encoding; /* Numeric encoding of data that follows NameValueData */ MQLONG CodedCharSetId; /* Character set identifier of data that follows NameValueData */ MQCHAR8 Format; /* Format name of data that follows NameValueData */ MQLONG Flags; /* Flags */ MQLONG NameValueCCSID; /* Character set identifier of NameValueData */ } MQRFH2;