O cabeçalho MQRFH2 contém informações sobre a estrutura de uma mensagem e seus consumidores pretendidos, para permitir a um intermediário processar a mensagem e entregá-la ou publicá-la a outros consumidores.
O valor 'MQRFH2 ' deve ser colocado no campo de Format do cabeçalho anterior (geralmente, o MQMD). A constante MQFMT_RF_HEADER_2 é definida com este valor.
Para a linguagem de programação C, a constante MQFMT_RF_HEADER_2_ARRAY também é definida. Essa constante possui o mesmo valor que MQFMT_RF_HEADER_2, mas é uma matriz de caracteres, não uma cadeia de caracteres.
O conjunto de caracteres e da codificação dos campos no cabeçalho MQRFH2 são os seguintes:
Alguns conjuntos de caracteres têm uma representação que é dependente da codificação. Se NameValueCCSID definir um desses conjuntos de caracteres, NameValueData deverá estar na mesma codificação que os outros campos no cabeçalho MQRFH2.
O cabeçalho MQRFH2 contém os seguintes campos:
Nome do Campo | Descrição | Detalhes |
---|---|---|
StrucId | Identificador de estrutura | O valor deve serMQRFH_STRUC_ID, o identificado para as regras e estrutura de cabeçalho de formatação. Para a linguagem de programação C, a constante MQRFH_STRUC_ID_ARRAY também é definida; essa constante possui o mesmo valor que o MQRFH_STRUC_ID, mas é uma matriz de caracteres, não uma cadeia de caracteres. |
Versão | Número da versão da estrutura | O valor deve serMQRFH_VERSION_2, ou seja, as regras e estrutura do cabeçalho de formatação da Versão-2. |
Struclength | Comprimento total de MQRFH2 (incluindo NameValueData) | O valor inicial deste campo é MQRFH_STRUC_LENGTH_FIXED_2, o comprimento da parte fixa da estrutura de cabeçalho do MQRFH2. Este é o comprimento em bytes da estrutura de cabeçalho do MQRFH2, incluindo quaisquer campos NameValueLength e NameValueData no final da estrutura. Pode haver mais que um par desses campos no final da estrutura, na seqüência: comprimento1, dados1, comprimento2, dados2, ....... O comprimento de quaisquer dados do usuário que seguem o último campo NameValueData no final da estrutura não estão inclusos em StrucLength. Nota: Se Struclength não for um múltiplo
de quatro, poderão ocorrer problemas com a conversão de dados do
usuário em alguns ambientes de sistema operacional.
|
Codificação | Codificação numérica de dados que segue NameValueData | O valor inicial deste campo é MQENC_NATIVE. Este campo especifica como são representados valores numéricos em quaisquer dados após o último campo NameValueData. Isso se aplica a dados inteiros binários, dados inteiros decimais compactados e dados de ponto flutuante. |
CodedCharSetId | Identificador de conjunto de caracteres de dados que segue NameValueData | O valor inicial deste campo é MQCCSI_INHERIT, que significa que o identificador do conjunto de caracteres é o mesmo que a estrutura atual. Este campo identifica o conjunto de caracteres codificado para quaisquer cadeias de caracteres após o último campo NameValueData. |
Formato | Nome do formato de dados que segue NameValueData | O valor inicial deste campo é MQFMT_NONE. Este campo especifica o nome do formato de quaisquer dados que seguem o último campo NameValueData. O nome deve ser preenchido com espaços em branco para o comprimento do campo. Nota: Não utilize um caractere nulo para terminar o nome antes
do final do campo. O gerenciador de filas não é alterado para um
caractere em branco, o caractere nulo, ou nenhum caractere que siga o
caractere nulo, no cabeçalho MQRFH2.
Nota: Não especifique um nome com caracteres em branco principais ou
incluídos.
|
Sinalizadores | Flags | O valor inicial deste campo éMQRFH_NONE, que significa que não existem sinalizadores. |
NameValueCCSID | Identificador do conjunto de caracteres de NameValueData | O valor inicial desse campo é 1208, o que significa que o conjunto de caracteres codificado UTF-8 é utilizado. Este campo identifica o conjunto de caracteres codificados para dados no campo NameValueData. Isto é deferente do conjunto de caracteres para outras cadeias de caracteres na estrutura de cabeçalhos do MQRFH2, e pode ser diferente do conjunto de caracteres de quaisquer dados de caracteres que seguem o último campo NameValueData. NameValueCCSID deve ter um dos seguintes valores: 1200: UCS-2 ilimitado 1208: UTF-8 13488: subconjunto de UCS-2 2.0 17584: subconjunto de UCS-2 2.1 (inclui o símbolo do euro €) Para os conjunto de caracteres UCS-2, a codificação(ordem dos bytes) do campo NameValueData deve ser a mesma da codificação de outros campos na estrutura de cabeçalhos MQRFH2. Nota: Os caracteres substitutos (X'D800' a X'DFFF') não são suportados.
|
Os dois campos a seguir são opcionais, mas se presentes devem ocorrer como um par. Eles podem ser repetidos como um par tantas vezes quantas necessárias. Se esses campos ocorrerem mais de uma vez, eles devem ocorrer na seqüência ..... comprimento1, dados1, comprimento2, dados2, ....... |
||
NameValueLength | Comprimento de NameValueData | Esse campo especifica o comprimento, em bytes, do campo NameValueData que segue esse campo. Nota: Se NameValueLength não for um múltiplo de
quatro, poderá haver um problema com a conversão dos dados que seguem
o campo NameValueData.
|
NameValueData | Esta é uma cadeia de caracteres de comprimento variável, contendo dados que são codificados utilizando uma estrutura semelhante a XML | O comprimento, em bytes, dessa cadeia é dado pelo campo NameValueLength que precede este campo NameValueData. Para evitar o problema descrito na nota que acompanha a descrição do campo NameValueLength estenda esse campo com espaços em branco para que seu comprimento seja um múltiplo de quatro ou termine o campo com um caractere nulo. |
typedef struct tagMQRFH2 { MQCHAR4 StrucId; /* Identificador da estrutura */ MQLONG Version; /* Número da versão da estrutura */ MQLONG StrucLength; /* Comprimento total de MQRFH2, incluindo NameValueData */ MQLONG Encoding; /* Codificação numérica dos dados que seguem NameValueData */ MQLONG CodedCharSetId; /* Identificador do conjunto de caracteres de dados que seguem NameValueData */ MQCHAR8 Format; /* Nome do formato dos dados que seguem NameValueData */ MQLONG Flags; /* Sinalizadores */ MQLONG NameValueCCSID; /* Identificador de conjunto de caracteres de NameValueData */ } MQRFH2;