Der Header MQRFH2 enthält Informationen über die Struktur einer Nachricht und über ihre beabsichtigten Empfängern, damit ein Nachrichtenbroker die Nachricht verarbeiten und an diese Empfänger zustellen oder veröffentlichen kann.
Der Wert 'MQRFH2' muss im Format-Feld des vorhergehenden Headers (normalerweise MQMD) stehen. Die Konstante MQFMT_RF_HEADER_2 wird mit diesem Wert definiert.
Für die Programmiersprache C wird außerdem die Konstante MQFMT_RF_HEADER_2_ARRAY definiert. Diese Konstante hat denselben Wert wie MQFMT_RF_HEADER_2, ist jedoch keine Zeichenfolge, sondern eine Feldgruppe.
Für die Felder im Header MQRFH2 gilt Folgendes hinsichtlich Zeichensatz und Codierung:
Bei einigen Zeichensätzen ist die Darstellung von der Codierung abhängig. Wenn in NameValueCCSID einer dieser Zeichensätze definiert ist, muss NameValueData dieselbe Codierung wie die anderen Felder im Header MQRFH2 haben.
Der Header MQRFH2 enthält die folgenden Felder:
Feldname | Beschreibung: | Details |
---|---|---|
StrucId | Struktur-ID | Der Wert muss MQRFH_STRUC_ID sein. Dies ist die ID für die Headerstruktur (Regeln und Formatierung). In der Programmiersprache C wird außerdem die Konstante MQRFH_STRUC_ID_ARRAY definiert. Diese Konstante hat denselben Wert wie MQRFH_STRUC_ID, ist jedoch keine Zeichenfolge, sondern eine Feldgruppe. |
Version | Versionsnummer der Struktur | Der Wert muss MQRFH_VERSION_2 sein, der für die Version-2-Headerstruktur (Regeln und Formatierung) steht. |
Struclength | Gesamtlänge des MQRFH2-Headers (einschließlich NameValueData) | Der Anfangswert dieses Feldes ist MQRFH_STRUC_LENGTH_FIXED_2, was der Länge des festen Teils der MQRFH2-Headerstruktur entspricht. Dies ist die Länge der MQRFH2-Headerstruktur in Bytes, einschließlich aller NameValueLength- und NameValueData-Felder am Ende der Struktur. Am Ende der Struktur können mehrere Paare mit diesen Feldern in folgender Reihenfolge stehen: Länge1, Daten1, Länge2, Daten2, ....... Die Länge von Benutzerdaten, die nach dem letzten NameValueData-Feld am Ende der Struktur folgen, ist nicht in StrucLength eingeschlossen. Anmerkung: Wenn Struclength nicht ein Mehrfaches von vier ist, können in
einigen Systemumgebungen Probleme bei der Konvertierung von Benutzerdaten auftreten.
|
Encoding | Numerische Codierung von Daten, die nach NameValueData folgen | Der Anfangswert dieses Feldes ist MQENC_NATIVE. Dieses Feld legt fest, wie numerische Werte in Daten, die nach dem Feld NameValueData folgen, dargestellt werden. Dies gilt für binäre Ganzzahlen, gepackt dezimale Ganzzahlen und Fließkommadaten. |
CodedCharSetId | Zeichensatz-ID für Daten, die nach NameValueData folgen | Der Anfangswert dieses Feldes ist MQCCSI_INHERIT, d. h., die Zeichensatz-ID ist dieselbe wie die der aktuellen Struktur. Dieses Feld identifiziert den codierten Zeichensatz für alle Zeichenfolgen in den Daten, die nach dem letzten NameValueData-Feld folgen. |
Format | Formatname für Daten, die nach NameValueData folgen | Der Anfangswert dieses Feldes ist MQFMT_NONE. Dieses Feld gibt den Formatnamen für alle Daten an, die nach dem letzten NameValueData-Feld folgen. Der Name muss bis zur Länge des Feldes mit Leerzeichen aufgefüllt werden. Anmerkung: Setzen Sie kein Nullzeichen, um den Namen vor Ende des Feldes zu beenden. Der
Warteschlangenmanager ändert das Nullzeichen im MQRFH2-Header (bzw. jedes Zeichen, das nach dem
Nullzeichen folgt) nicht in ein Leerzeichen.
Anmerkung: Geben Sie keinen Namen mit
führenden oder eingebetteten Leerzeichen an.
|
Flags | Flags | Der Anfangswert dieses Feldes ist MQRFH_NONE, d. h., es sind keine Flags vorhanden. |
NameValueCCSID | Zeichensatz-ID für NameValueData | Der Anfangswert dieses Feldes ist 1208, d. h., es wird der codierte UTF-8-Zeichensatz verwendet. Dieses Feld bestimmt den codierten Zeichensatz für Daten im Feld NameValueData. Dieser Zeichensatz unterscheidet sich von dem für andere Zeichenfolgen in der MQRFH2-Headerstruktur und kann sich vom Zeichensatz für alle Daten, die nach dem letzten NameValueData-Feld folgen, unterscheiden. NameValueCCSID muss einen der folgenden Werte enthalten: 1200: UCS-2 open-ended 1208: UTF-8 13488: UCS-2 2.0 Subset 17584: UCS-2 2.1 Subset (einschließlich Euro-Symbol €) Für die UCS-2-Zeichensätze muss die Codierung (Byteanordnung) des Feldes NameValueData mit der Codierung der anderen Felder in der MQRFH2-Headerstruktur identisch sein. Anmerkung: Ersatzzeichen (X'D800' bis X'DFFF') werden nicht unterstützt.
|
Die beiden folgenden Felder sind optional. Wenn Sie angegeben werden, müssen sie immer als Paar angegeben werden. Als Paar können sie beliebig oft wiederholt werden. Wenn diese Felder mehrfach angegeben werden, muss folgende Reihenfolge eingehalten werden: ..... Länge1, Daten1, Länge2, Daten2, ....... |
||
NameValueLength | Länge von NameValueData | Dieses Feld gibt die Länge des Feldes NameValueData, das nach diesem Feld folgt, in Bytes an. Anmerkung: Wenn NameValueLength nicht ein Mehrfaches von vier
ist, kann bei der Konvertierung der Daten, die nach dem Feld NameValueData
folgen, ein Problem auftreten.
|
NameValueData | Dies ist eine Zeichenfolge variabler Länge mit Daten, die unter Verwendung einer XML-ähnlichen Struktur codiert wurden. | Die Länge dieser Zeichenfolge in Bytes ist durch das Feld NameValueLength, das dem Feld NameValueData vorausgeht, festgelegt. Sie können das in der Anmerkung zur Beschreibung des Feldes NameValueLength geschilderte Problem vermeiden, indem Sie dieses Feld entweder mit Leerzeichen auffüllen, so dass die Länge ein Mehrfaches von vier ist, oder das Feld mit einem Nullzeichen beenden. |
typedef struct tagMQRFH2 { MQCHAR4 StrucId; /* Struktur-ID */ MQLONG Version; /* Versionsnummer der Struktur */ MQLONG StrucLength; /* Gesamtlänge von MQRFH2 einschließlich NameValueData folgen */ MQLONG Encoding; /* Numerische Codierung von Daten, die nach NameValueData folgen */ MQLONG CodedCharSetId; /* Zeichensatz-ID für Daten, die nach NameValueData folgen */ MQCHAR8 Format; /* Formatname für Daten, die nach NameValueData folgen */ MQLONG Flags; /* Flags */ MQLONG NameValueCCSID; /* Zeichensatz-ID für NameValueData */ } MQRFH2;