PROPAGATE ステートメントを使用して、Compute ノード内に複数の出力メッセージを生成することができます。 生成する出力メッセージは、同じかまたは異なる内容を持つことができます。 出力メッセージは Compute ノードの 4 つの代替出力ターミナルのいずれか、または Label ノードに送信することもできます。
例えば、Compute ノードで受信される入力メッセージのコピーを 3 つ作成し、その 1 つを Compute ノードの標準 Out ターミナルに、1 つを Compute ノードの最初の代替 Out1 ターミナルに、さらに 1 つを Label ノードの ThirdCopy に送信するには、以下の ESQL をコーディングします。
SET OutputRoot = InputRoot;
PROPAGATE;
SET OutputRoot = InputRoot;
PROPAGATE TO TERMINAL 'out1';
SET OutputRoot = InputRoot;
PROPAGATE TO LABEL 'ThirdCopy';
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE TO TERMINAL 'out1' DELETE NONE;
PROPAGATE TO LABEL 'ThirdCopy';
出力バッファーを初期化しない場合、空のメッセージが生成され、メッセージ・フローがエラーを検出して例外をスローします。
また、伝搬する各出力メッセージごとに、すべての必要なメッセージ・ヘッダーを出力メッセージ・バッファーに確実にコピーします。
各メッセージを伝搬する前に出力メッセージの内容を変更したい場合には、 PROPAGATE ステートメントをコーディングする前に適切な ESQL をコーディングして変更を行ってください。
生成したい最後の出力メッセージの内容をセットアップし、それを Compute ノードの 最後のアクションとして伝搬する場合には、最後の PROPAGATE ステートメントを組み込む必要はありません。 Compute ノードのデフォルトのアクションで、終了する際に出力バッファーの内容が伝搬されます。 この機能は、モジュール・スケルトン内の最後のステートメントとして組み込まれる RETURN TRUE ステートメントによって実装されます。
例えば、入力メッセージのコピーを 3 つ生成し、その後何もアクションを実行しない場合には、そのコードを RETURN TRUE ステートメントの直前に組み込みます。
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;
Alternatively, you can modify the default behavior of the node by changing RETURN TRUE to RETURN FALSE:
SET OutputRoot = InputRoot;
PROPAGATE DELETE NONE;
PROPAGATE DELETE NONE;
PROPAGATE;
RETURN FALSE;
3 つの PROPAGATE ステートメントによって、3 つの出力メッセージが生成されます。 最後の RETURN FALSE ステートメントはノードを終了しますが、最終出力メッセージを伝搬しません。 最終の PROPAGATE ステートメントは、ノードがメモリーをこの段階で解放しなければならないので、DELETE NONE 文節を組み込みません。