Puede utilizar ESQL dentro de un nodo Compute para convertir datos para la página de códigos y codificación de mensajes. Si el flujo de mensajes está procesando mensajes de WebSphere MQ, puede utilizar los recursos de WebSphere MQ (incluidas las opciones de obtener y transferir y las rutinas de salida de conversión de datos de WebSphere MQ) para proporcionar estas conversiones. Si no está procesando mensajes de WebSphere MQ o decide no utilizar los recursos de WebSphere MQ, puede utilizar los recursos de WebSphere Business Integration Message Broker codificando el ESQL adecuado en un nodo Compute en el flujo de mensajes.
El contenido de MQMD, el MQRFH2, y el cuerpo de un mensaje en el dominio MRM se ha modelado con un formato físico CWF pueden estar sujetos a conversiones de página de códigos y de codificación. El contenido del cuerpo de un mensaje en los dominios XML, XMLNS y JMS, y los mensajes del dominio MRM que se han modelado con un formato físico XML o TDS, se tratan como series. Sólo se aplica la conversión de página de códigos; no se requiere la conversión de codificación.
Para los mensajes del dominio MRM que se han modelado con un formato físico CWF, puede establecer los campos de MQMD CCSID y codificación del mensaje de salida, más el CCSID y la codificación de cualquiera de las cabeceras adicionales, en el valor de destino necesario.
Para los mensajes del dominio MRM que se han modelado con un formato físico XML o TDS, puede establecer el campo MQMD CCSID del mensaje de salida, más el CCSID de cualquiera de las cabeceras adicionales. Los datos XML y TDS se manejan como series y, por lo tanto, sólo están sujetas a la conversión CCSID.
Por ejemplo, un mensaje de WebSphere MQ tiene una cabecera MQMD una cabecera MQRFH2 y un cuerpo de mensaje. Para convertir este mensaje en una codificación y CCSID de sistema principal, escriba el siguiente código ESQL en el nodo Compute:
SET OutputRoot.MQMD.CodedCharSetId = 500; SET OutputRoot.MQMD.Encoding = 785; SET OutputRoot.MQRFH2.CodedCharSetId = 500; SET OutputRoot.MQRFH2.Encoding = 785;
En el siguiente ejemplo se muestra qué se debe hacer para modificar un mensaje CWF para que pueda pasarse de WebSphere Business Integration Message Broker a IMS en 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 la utilización de la variable, J, que se ha inicializado con el valor de cardinalidad de las cabeceras existentes en el mensaje. Es más eficaz que calcular la cardinalidad de cada iteración del bucle, que sucede si codifica la siguiente sentencia 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';
No tiene que establecer ningún valor específico para las propiedades del nodo MQInput1 porque el mensaje y el conjunto de mensajes se identifican en la cabecera MQRFH2 y no se requiere efectuar ninguna conversión.
Debe establecer los valores para el dominio, el conjunto, el tipo y el formato de los mensajes en el nodo MQInput para el flujo de mensajes de entrada (MQInput2). No es necesario establecer parámetros de conversión.
Una situación específica en la que podría ser necesario convertir datos de una página de códigos a otra es cuando los mensajes contienen nuevos indicadores de línea y se pasan entre los sistemas EBCDIC y ASCII. La conversión requerida para esta situación se describe en Conversión de EBCDIC NL en ASCII CR LF.
Conceptos relacionados
Flujos de mensajes
ESQL
Diseño de mensajes
Tareas relacionadas
Diseño de un flujo de mensajes
Definición del contenido del flujo de mensajes
Gestión de archivos ESQL
Referencia relacionada
Soporte de idioma nacional
Nodo Compute
Nodo Database
Nodo Filter
ESQL
Función CARDINALITY
Sentencia DECLARE
Sentencia SET
Sentencia WHILE
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac11620_ |