Você pode utilizar ESQL em um nó Compute para converter dados para página de códigos e codificação de mensagens. Se seu fluxo de mensagens estiver processando as mensagens do , você poderá utilizar os recursos do (incluindo as opções get e put e a conversão de dados do sairá) para fornecer essas conversões. Se não estiver processando mensagens do ou se escolher não utilizar recursos do , poderá utilizar recursos do , codificando o ESQL apropriado em um nó Compute em seu fluxo de mensagens.
O conteúdo de MQMD, de MQRFH2 e do corpo da mensagem de uma mensagem no domínio MRM, que foi modelado com um formato físico CWF, pode estar sujeito à conversão de página de códigos e de codificação. O conteúdo do corpo de uma mensagem nos domínios XML, XMLNS e JMS e as mensagens no domínio MRM que foram modeladas com um formato físico XML ou TDS são tratados como cadeias. Apenas a conversão de página de códigos é aplicável; nenhuma conversão de codificação é necessária.
Para mensagens no domínio MRM modeladas com um formato físico CWF, é possível definir os campos MQMD CCSID e de Codificação da mensagem de saída, além de CCSID e Codificação de quaisquer cabeçalhos adicionais, para o valor de destino requerido.
Para mensagens no domínio MRM modeladas com um formato físico XML ou TDS, você pode definir o campo MQMD CCSID da mensagem de saída, além do CCSID de quaisquer cabeçalhos adicionais. Os dados XML e TDS são tratados como cadeias e, portanto, estão sujeitos apenas à conversão de CCSID.
Uma mensagem de exemplo do possui um cabeçalho MQMD, um cabeçalho MQRFH2 e um corpo de mensagem.Para converter esta mensagem em um CodedCharSetId e Codificação de mainframe, codifique o seguinte ESQL no nó Compute:
SET OutputRoot.MQMD.CodedCharSetId = 500; SET OutputRoot.MQMD.Encoding = 785; SET OutputRoot.MQRFH2.CodedCharSetId = 500; SET OutputRoot.MQRFH2.Encoding = 785;
O exemplo a seguir ilustra o que deve ser feito para modificar uma mensagem CWF para que ela possa ser transmitida do para o IMS no z/OS.
-- Loop to copy message headers DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(InputRoot.*[]); WHILE I < J - 1 DO SET OutputRoot.*[I] = InputRoot.*[I]; SET I=I+1; END WHILE; SET OutputRoot.MQMD.CodedCharSetId = 500; SET OutputRoot.MQMD.Encoding = 785; SET OutputRoot.MQMD.Format = 'MQIMS '; SET OutputRoot.MQIIH.StrucId = 'IIH '; SET OutputRoot.MQIIH.Version = 1; SET OutputRoot.MQIIH.StrucLength = 84; SET OutputRoot.MQIIH.Encoding = 785; SET OutputRoot.MQIIH.CodedCharSetId = 500; SET OutputRoot.MQIIH.Format = 'MQIMSVS '; SET OutputRoot.MQIIH.Flags = 0; SET OutputRoot.MQIIH.LTermOverride = ' '; SET OutputRoot.MQIIH.MFSMapName = ' '; SET OutputRoot.MQIIH.ReplyToFormat = 'MQIMSVS '; SET OutputRoot.MQIIH.Authenticator = ' '; SET OutputRoot.MQIIH.TranInstanceId = X'00000000000000000000000000000000'; SET OutputRoot.MQIIH.TranState = ' '; SET OutputRoot.MQIIH.CommitMode = '0'; SET OutputRoot.MQIIH.SecurityScope = 'C'; SET OutputRoot.MQIIH.Reserved = ' '; SET OutputRoot.MRM.e_elen08 = 30; SET OutputRoot.MRM.e_elen09 = 0; SET OutputRoot.MRM.e_string08 = InputBody.e_string01; SET OutputRoot.MRM.e_binary02 = X'31323334353637383940'; SET OutputRoot.Properties.MessageDomain = 'MRM'; SET OutputRoot.Properties.MessageSet = 'DHCJOEG072001'; SET OutputRoot.Properties.MessageType = 'IMS1'; SET OutputRoot.Properties.MessageFormat = 'CWF1';
Observe a utilização de uma variável J, que é inicializada para o valor da cardinalidade dos cabeçalhos existentes na mensagem. Isso é mais eficiente do que calcular a cardinalidade em cada iteração do loop, que ocorre se você codificar a seguinte instrução WHILE:
WHILE I < CARDINALITY(InputRoot.*[]) DO
-- Loop to copy message headers DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(InputRoot.*[]); WHILE I < J DO SET OutputRoot.*[I] = InputRoot.*[I]; SET I=I+1; END WHILE; SET OutputRoot.MQMD.CodedCharSetId = 437; SET OutputRoot.MQMD.Encoding = 546; SET OutputRoot.MQMD.Format = 'MQIMS '; SET OutputRoot.MQIIH.CodedCharSetId = 437; SET OutputRoot.MQIIH.Encoding = 546; SET OutputRoot.MQIIH.Format = ' '; SET OutputRoot.MRM = InputBody; SET OutputRoot.Properties.MessageDomain = 'MRM'; SET OutputRoot.Properties.MessageSet = 'DHCJOEG072001'; SET OutputRoot.Properties.MessageType = 'IMS2'; SET OutputRoot.Properties.MessageFormat = 'CWF1';
Não é necessário definir valores específicos para as propriedades do nó MQInput1, porque a mensagem e o conjunto de mensagens são identificados no cabeçalho MQRFH2 e nenhuma conversão é requerida.
Você deve definir valor para o domínio, conjunto, tipo e formato de mensagem no nó MQInput para o fluxo de mensagens de entrada (MQInput2). Não é necessário definir parâmetros de conversão.
Uma situação específica na qual você pode converter dados em uma página de códigos para outra é quando as mensagens contêm indicadores de novas linhas e estão sendo transmitidas entre sistemas EBCDIC e ASCII. A conversão requerida para esta situação é descrita em Convertendo NL EBCDIC em LF CR ASCII
Conceitos relacionados
Fluxos de Mensagem
ESQL
Modelagem de Mensagens
Tarefas relacionadas
Projetando um Fluxo de Mensagens
Definindo o Conteúdo do Fluxo de Mensagens
Gerenciando Arquivos ESQL
Referências relacionadas
Suporte ao Idioma Nacional
Nó Compute
Nó Database
Nó Filter
ESQL
Função CARDINALITY
Instrução DECLARE
Instrução SET
Instrução WHILE
Avisos |
Marcas |
Downloads |
Biblioteca |
Suporte |
Feedback
![]() ![]() |
ac11620_ |