La cabecera MQRFH2 contiene información acerca de la estructura de un mensaje y de los destinatarios previstos para que el intermediario de mensajes pueda procesar el mensaje y entregarlo o publicarlo para dichos destinatarios.
El valor 'MQRFH2' ha de colocarse en el campo Format de la cabecera precedente (normalmente MQMD). La constante MQFMT_RF_HEADER_2 se define con ese valor.
Para el lenguaje de programación C, también se define la constante la constante MQFMT_RF_HEADER_2_ARRAY. Dicha constante tiene el mismo valor que MQFMT_RF_HEADER_2, pero es una matriz de caracteres, no una serie de caracteres.
El juego de caracteres y la codificación son los siguientes:
Algunos juegos de caracteres tienen una representación que depende de la codificación. Si NameValueCCSID define uno de dichos juegos de caracteres , NameValueData ha de tener la misma codificación que los demás campos de la cabecera MQRFH2.
La cabecera MQRFH2 contiene los siguientes campos:
Nombre de campo | Descripción | Detalles |
---|---|---|
StrucId | Identificador de la estructura | El valor ha de ser MQRFH_STRUC_ID, que es el identificador de la estructura de normas y formato de la cabecera. Para el lenguaje de programación C, también se define la constante MQRFH_STRUC_ID_ARRAY; esta constante tiene el mismo valor que MQRFH_STRUC_ID, pero es una matriz de caracteres, no una serie de caracteres. |
Version | Número de versión de la estructura | El valor ha de ser MQRFH_VERSION_2, que es la estructura de normas y formato de la cabecera, en la Versión 2. |
Struclength | Longitud total de MQRFH2 (incluidos los NameValueData) | El valor inicial de este campo es MQRFH_STRUC_LENGTH_FIXED_2, que es la longitud de la parte fija de la estructura de la cabecera MQRFH2. Es la longitud en bytes de la estructura de la cabecera MQRFH2, incluidos los campos NameValueLength y NameValueData que haya, al final de la estructura. Puede haber más de un par de estos campos al final de la estructura, en la secuencia: longitud1, datos1, longitud2, datos2, ....... La longitud de cualquier dato de usuario que siga al último campo NameValueData al final de la estructura, no se incluirá en StrucLength. Nota: Si StrucLength no es un múltiplo de cuatro, pueden producirse problemas con la conversión
de datos del usuario en algunos entornos de sistemas operativos.
|
Encoding | Codificación numérica de datos que sigue a NameValueData | El valor inicial de este campo es MQENC_NATIVE. Este campo especifica cómo se representan los valores numéricos de cualquier dato que siga al último campo NameValueData. Esto se aplica a datos enteros binarios, datos enteros decimales empaquetados y datos de coma flotante. |
CodedCharSetId | Identificador del juego de caracteres de los datos que siguen a NameValueData | El valor inicial de este campo es MQCCSI_INHERIT, que indica que el identificador del juego de caracteres es el mismo que el de la estructura actual. Este campo identifica el juego de caracteres codificado de cualquier serie de caracteres de los datos que siguen al último campo NameValueData. |
Format | Nombre de formato de los datos que siguen a NameValueData | El valor inicial de este campo es MQFMT_NONE. Este campo especifica el nombre del formato de cualquier dato que siga al último campo NameValueData. El nombre ha de rellenarse con blancos hasta que tenga la longitud del campo. Nota: No utilice ningún carácter nulo para terminar el nombre antes del final del campo; el gestor de colas
no cambia por un carácter en blanco el carácter nulo ni ninguno de los caracteres que sigan al carácter nulo en
la cabecera MQRFH2.
Nota: No especifique nombres con caracteres en blanco al principio o incorporados.
|
Indicadores | Indicadores | El valor inicial de este campo es MQRFH_NONE, que indica que no hay indicadores. |
NameValueCCSID | Identificador del juego de caracteres de NameValueData | El valor inicial de este campo es 1208, que indica que se utiliza el juego de caracteres codificado UTF-8. Este campo identifica el juego de caracteres codificado establecido para los datos en el campo NameValueData. Esto es distinto del juego de caracteres de las demás series de caracteres de la estructura de la cabecera MQRFH2 y puede ser distinto del juego de caracteres para cualquier dato de tipo carácter que siga al último campo NameValueData. NameValueCCSID ha de tener uno de los siguientes valores: 1200: UCS-2 con final abierto 1208: UTF-8 13488: subconjunto UCS-2 2.0 17584: subconjunto UCS-2 2.1 (incluye el símbolo de Euro €) Para los juegos de caracteres UCS-2, la codificación (orden de bytes) del campo NameValueData ha de ser igual que la codificación de los demás campos de la estructura de la cabecera MQRFH2. Nota: Los caracteres sustitutos (X'D800' a X'DFFF') no están soportados.
|
Los dos campos siguientes son opcionales, pero si existen, han de estar por pares. Pueden repetirse como pares tantas veces como sea necesario. Si estos campos se producen más de una vez, ha de hacerlo con la secuencia ..... longitud1, datos1, longitud2, datos2, ....... |
||
NameValueLength | Longitud de NameValueData | Este campo especifica la longitud, en bytes, del campo NameValueData que sigue a este campo. Nota: Si NameValueLength no es múltiplo de cuatro, puede haber un problema
en la conversión de los datos que sigan al campo NameValueData.
|
NameValueData | Es una serie de caracteres de longitud variable que contiene datos codificados utilizando un estructura de tipo XML. | La longitud, en bytes, de esa serie de caracteres la proporciona el campo NameValueLength que precede a este campo NameValueData. Para evitar el problema que se indica en la nota que acompaña a la descripción del campo NameValueLength, expanda el campo con blanco para que su longitud sea múltiplo de cuatro, o termine el campo con un carácter nulo. |
typedef struct tagMQRFH2 { MQCHAR4 StrucId; /* Identificador de estructura */ MQLONG Version; /* Número de versión de estructura */ MQLONG StrucLength; /* Longitud total de MQRFH2 incluidos los NameValueData */ MQLONG Encoding; /* Codificación numérica de datos que sigue NameValueData */ MQLONG CodedCharSetId; /* Identificador de juego de caracteres de los datos que siguen a NameValueData */ MQCHAR8 Format; /* Nombre de formato de los datos que siguen a NameValueData */ MQLONG Flags; /* Identificadores */ MQLONG NameValueCCSID; /* Identificador de juego de caracteres de NameValueData */ } MQRFH2;