En este se describe una tarea de ejemplo que cambia los caracteres de nueva línea (NL) en un mensaje de texto por los pares de caracteres de retorno de carro (CR) y salto de línea (LF).
Esta conversión puede ser útil si los mensajes de una plataforma EBCDIC (por ejemplo, utilizando CCSID 1047) se envían a una plataforma ASCII (por ejemplo, utilizando CCSID 437). Los problemas pueden surgir porque el carácter hexadecimal '15' EBCDIC se convierte al carácter hexadecimal '7F? ASCII no definido. No existe ningún correspondiente punto de código para el carácter NL en la página de códigos ASCII.
En este ejemplo, se crea un flujo de mensajes que interpreta el mensaje de entrada como mensaje en el dominio BLOB. Éste se pasa a un nodo ResetContentDescriptor para restablecer los datos para un mensaje en el dominio MRM. El mensaje se denomina msg_nl (un conjunto de elementos de repetición de serie de caracteres delimitados por caracteres EBCDIC NL). Se ha utilizado un nodo Compute para crear una salida basándose en otro mensaje del dominio MRM denominado msg_crlf (un conjunto de elementos de serie de caracteres de repetición delimitados por pares CR LF). El dominio de mensajes se vuelve a cambiar por BLOB en otro nodo ResetContentDescriptor. Este flujo de mensajes se muestra a continuación.
En las siguientes instrucciones se muestra cómo crear los mensajes y configurar el flujo de mensajes.
-- Declare local working variables DECLARE I INTEGER 1; DECLARE J INTEGER CARDINALITY(InputRoot.*[]); -- Loop to copy all message headers from input to output message WHILE I < J DO SET OutputRoot.*[I] = InputRoot.*[I]; SET I=I+1; END WHILE; -- Set new output message type which uses CRLF delimiter SET OutputRoot.Properties.MessageType = 't_msg_crlf'; -- Loop to copy each instance of string1 child within message body SET I = 1; SET J = CARDINALITY("InputBody"."string1"[]); WHILE I <= J DO SET "OutputRoot"."MRM"."string1"[I] = "InputBody"."string1"[I]; SET I=I+1; END WHILE;
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
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 MQInput
Nodo MQOutput
Nodo ResetContentDescriptor
ESQL
Sentencia DECLARE
Sentencia SET
Sentencia WHILE
Mnemotécnico de TDS
Avisos |
Marcas registradas |
Descargas |
Biblioteca |
Soporte |
Información de retorno (feedback)
![]() ![]() |
ac11630_ |