Generar varios mensajes de salida

Puede utilizar la sentencia PROPAGATE para generar varios mensajes de salida en el nodo Cálculo . Los mensajes de salida que genere puede tener el mismo o un contenido diferente. También puede dirigir mensajes de salida a cualquiera de los cuatro terminales de salida alternativos del nodo Cálculo o a un nodo de Etiqueta .

Acerca de esta tarea

Por ejemplo, para crear tres copias del mensaje de entrada recibido por el nodo Cálculo y enviar una al terminal de salida estándar del nodo Cálculo , una al primer terminal Out1 alternativo del nodo Cálculo y una al nodo de Etiqueta ThirdCopy, codifique el ESQL siguiente:

SET OutputRoot = InputRoot;
PROPAGATE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1';
SET OutputRoot = InputRoot;
PROPAGATE TO LABEL 'ThirdCopy';
En el ejemplo anterior, el contenido de OutputRoot se restablece antes de cada PROPAGATE, porque, por omisión, el nodo borra el almacenamiento intermedio de mensaje de salida y reclama la memoria cuando se completa la sentencia PROPAGATE. Un método alternativo consiste en indicar al nodo que no borre el mensaje de salida en las dos primeras sentencias PROPAGATE, para que el mensaje esté disponible para direccionarse al siguiente destino. El código para conseguir este resultado es:
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE TO TERMINAL 'out1' DELETE NONE;
PROPAGATE TO LABEL 'ThirdCopy';

Si no inicializa el almacenamiento intermedio de salida, se genera un mensaje vacío y el flujo de mensajes detecta un error y genera una excepción.

Asimismo, asegúrese de que copia todas las cabeceras de mensajes en el almacenamiento intermedio de mensajes de salida para cada mensaje de salida que propague.

Si desea modificar el contenido del mensaje de salida antes de propagar cada mensaje, codifique el ESQL adecuado para realizar los cambios que desee antes de codificar la sentencia PROPAGATE.

Si configura el contenido del último mensaje de salida que desea generar y lo propaga como la acción final del nodo Cálculo , no tendrá que incluir la sentencia PROPAGATE final. La acción predeterminada del nodo Cálculo es propagar el contenido del almacenamiento intermedio de salida cuando termina. Esto lo implementa la sentencia RETURN TRUE incluida como la sentencia final del esqueleto del módulo.

Por ejemplo, para generar tres copias del mensaje de entrada y no realizar ninguna acción adicional, incluya este código inmediatamente antes de la sentencia RETURN TRUE:

SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;

Alternativamente, puede modificar el comportamiento predeterminado del nodo modificando RETURN TRUE por RETURN FALSE:

SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;
PROPAGATE;
RETURN FALSE;

Tres sentencias PROPAGATE generan tres mensajes de salida. La sentencia RETURN FALSE final hace que el nodo finalice pero no propague un mensaje de salida final. Observe que la sentencia PROPAGATE final no incluye la cláusula DELETE NONE, porque el nodo debe liberar la memoria en esta etapa.