PROPAGATE ステートメントを使用して、Compute ノード内に複数の出力メッセージを生成することができます。 生成する出力メッセージは、同じかまたは異なる内容を持つことができます。 出力メッセージは Compute ノードの 4 つの代替出力ターミナルのいずれか、または Label ノードに送信することもできます。
例えば、Compute ノードが受け取った入力メッセージのコピーを 3 つ作成し、1 つを Compute ノードの標準 Out ターミナルに、1 つを Compute ノードの最初の代替 out1 ターミナルに、および 1 つを Label ノードの ThirdCopy に送信したい場合は、
以下の ESQL をコーディングします。
SET OutputRoot = InputRoot; PROPAGATE; SET OutputRoot = InputRoot; PROPAGATETO TERMINAL 'out1'
; SET OutputRoot = InputRoot; PROPAGATETO LABEL 'ThirdCopy';
SET OutputRoot = InputRoot; PROPAGATE DELETE NONE; SET OutputRoot = InputRoot; PROPAGATE TO TERMINAL 'out1' DELETE NONE; SET OutputRoot = InputRoot; 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; PROPAGATEDELETE NONE; PROPAGATE; RETURN FALSE;
3 つの PROPAGATE ステートメントによって、3 つの出力メッセージが生成されます。 最後の RETURN FALSE ステートメントはノードを終了しますが、最終出力メッセージを伝搬しません。 最終の PROPAGATE ステートメントは、ノードがメモリーをこの段階で解放しなければならないので、DELETE NONE 文節を組み込みません。