Estructura MQRFH2

La cabecera MQRFH2 contiene información acerca de la estructura de un mensaje, y de los consumidores a quienes va dirigida, para permitir que un intermediario de mensajes pueda procesar el mensaje y entregarlo o publicarlo en dichos consumidores.

El valor 'MQRFH2  ' debe ponerse en el campo Formato de la cabecera anterior (normalmente MQMD). La constante MQFMT_RF_HEADER_2 se define con este valor.

Para el lenguaje de programación C también se define la constante MQFMT_RF_HEADER_2_ARRAY. Esta 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 de los campos en la cabecera MQRFH2 son los siguientes:

La cabecera MQRFH2 contiene los campos siguientes:

Nombre de campo Descripción Detalles
StrucId Identificador de la estructura

El valor debe ser MQRFH_STRUC_ID, que es el identificador de las normas y el formato de la estructura de la cabecera.

En 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 debe ser MQRFH_VERSION_2, que es la estructura de la cabecera de las normas y el formato de la versión 2.

Struclength Longitud total de MQRFH2 (incluido 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.

Se trata de la longitud en bytes de la estructura de la cabecera MQRFH2, incluidos los campos NameValueLength y NameValueData colocados al final de la estructura.

Es posible que haya más de un par de estos campos al final de la estructura, en la secuencia: length1, data1, length2, data2, ....... La longitud de cualquiera de los datos de usuario que figuran a continuación del último campo NameValueData al final de la estructura no está incluida en StrucLength.

Nota: Si Struclength no es un múltiplo de cuatro, pueden producirse problemas con la conversión de datos de los datos de usuario en algunos entornos de sistemas operativos.
Encoding Codificación numérica de datos que figura a continuación de NameValueData

El valor inicial de este campo es MQENC_NATIVE.

Este campo especifica la manera de representar los valores numéricos de los datos que figuran a continuación del último campo NameValueData. Esto se aplica a los datos binarios de tipo entero, a los datos de tipo entero decimal empaquetados y los datos de coma flotante.

CodedCharSetId Identificador de juego de caracteres de datos que figura a continuación de NameValueData

El valor inicial de este campo es MQCCSI_INHERIT, que significa que el identificador de juego de caracteres es el mismo que el de la estructura actual.

Este campo identifica el juego de caracteres codificado de las series de caracteres de los datos que figuran a continuación del último campo NameValueData.

Format Nombre de formato de los datos que figuran a continuación de NameValueData

El valor inicial de este campo es MQFMT_NONE.

Este campo especifica el nombre de formato de los datos que figuran a continuación del último campo NameValueData. El nombre debe rellenarse de espacios en blanco que ocupen toda la longitud del campo.

Nota: no utilice un carácter nulo para terminar el nombre antes del final del campo; el gestor de colas no cambia el carácter nulo, ni ninguno de los caracteres que figuran a continuación del carácter nulo, por un carácter en blanco en la cabecera MQRFH2.
Nota: no especifique un nombre que tenga caracteres en blanco intercalados ni iniciales.
Flags Distintivos

El valor inicial de este campo es MQRFH_NONE, lo que significa que no hay distintivos.

NameValueCCSID Identificador de juego de caracteres de NameValueData

El valor inicial de este campo es 1208, lo que significa que se utiliza el juego de caracteres codificado por UTF-8.

Este campo identifica el juego de caracteres codificado para los datos del campo NameValueData. Dicho juego de caracteres es distinto del de otras series de caracteres de la estructura de la cabecera MQRFH2, y también puede ser distinto del que se utiliza para los datos de tipo carácter que figuran a continuación del último campo NameValueData.

NameValueCCSID debe tener uno de los valores siguientes:

1200: UCS-2, final abierto

1208: UTF-8

13488: subconjunto de UCS-2 2.0

17584: subconjunto de UCS-2 2.1 (incluye el símbolo del euro €)

Para los juegos de caracteres UCS-2, la codificación (orden de bytes) del campo NameValueData debe ser la misma que la codificación de los otros campos de la estructura de la cabecera MQRFH2.

Nota: no se admiten los caracteres sustitutos (de X'D800' a X'DFFF').

Los dos campos siguientes son opcionales, pero, si se utilizan, deben aparecer como un par. Pueden utilizarse repetidamente como un par tantas veces como sea necesario.

Si estos campos se utilizan varias veces, deberán utilizarse en la secuencia ..... length1, data1, length2, data2, .......

NameValueLength Longitud de NameValueData

Este campo especifica la longitud, en bytes, del campo NameValueData que figura a continuación de este campo.

Nota: Si NameValueLength no es un múltiplo de cuatro, es posible que se produzca un problema con la conversión de los datos que figura a continuación del campo NameValueData.
NameValueData Es una serie de caracteres de longitud de variable que contiene datos codificados mediante una estructura parecida a XML.

La longitud, en bytes, de esta serie de caracteres la proporciona el campo NameValueLength que precede a este campo NameValueData.

Inicio del cambioPara evitar el problema descrito en la nota que acompaña la descripción del campo NameValueLength, amplíe este campo con espacios en blanco para que su longitud sea un múltiplo de cuatro o termine el campo con un carácter nulo. Fin del cambio

Definición de lenguaje de programación C

La estructura siguiente se define en el archivo de cabecera cmqc.h suministrado con WebSphere MQ. Las constantes utilizadas en el campo NameValueData se definen en el archivo de cabecera BipRfc.h, suministrado con WebSphere Business Integration Event Broker.
typedef struct tagMQRFH2 {
  MQCHAR4   StrucId;        /* Identificador de la estructura               */
  MQLONG    Version;        /* Número de versión de la estructura           */
  MQLONG   StrucLength;     /*  Longitud total de MQRFH2 incluido
                                 NameValueData                              */
  MQLONG   Encoding;        /*  Codificación numérica de datos que figura
                                 a continuación de NameValueData            */
  MQLONG   CodedCharSetId;  /*  Identificador de juego de caracteres de
                                 datos que figura después de NameValueData  */
  MQCHAR8  Format;          /*  Nombre de formato de datos que figura a
                                 continuación de NameValueData              */
  MQLONG   Flags;           /*  Distintivos                                 */
  MQLONG   NameValueCCSID;  /*  Identif. de juego caract. de NameValueData  */
 } MQRFH2;