PROPAGATE문을 사용하여 Compute 노드에서 다중 출력 메시지를 생성할 수 있습니다. 생성된 출력 메시지에는 동일하거나 다른 컨텐츠가 포함될 수 있습니다. Compute 노드의 네 가지 대체 출력 터미널 중 하나 또는 Label 노드로 출력 메시지를 보낼 수도 있습니다.
예를 들면, Compute 노드에서 수신한 입력 메시지의 사본을 세 개 작성하고
하나는 Compute 노드의 표준 "Out" 터미널로, 또 하나는
Compute 노드의 첫 번째 대체 "out1" 터미널로, 나머지 하나는
Label 노드 "ThirdCopy"로 송신
하려면
다음 ESQL을 코딩하십시오.
SET OutputRoot = InputRoot; PROPAGATE; SET OutputRoot = InputRoot; PROPAGATETO TERMINAL 'out1'
; SET OutputRoot = InputRoot; PROPAGATE TO LABEL 'ThirdCopy';
SET OutputRoot = InputRoot; PROPAGATE DELETE NONE; SET OutputRoot = InputRoot; PROPAGATE TO TERMINAL 'out1' DELETE NONE; SET OutputRoot = InputRoot; PROPAGATE TO LABEL 'ThirdCopy';
출력 버퍼를 초기화하지 않으면, 빈 메시지가 생성되고 메시지 플로우가 오류를 감지하여 예외를 생성합니다.
또한 전달하는 각 출력 메시지에 대한 출력 메시지 버퍼에 모든 필수 메시지 헤더를 복사하는지 확인하십시오.
각 메시지를 전달하기 전에 출력 메시지 컨텐츠를 수정하려면, 원하는 변경을 수행하는 적절한 ESQL을 코드화한 후 PROPAGATE문을 코딩하십시오.
생성하려는 마지막 출력 메시지의 컨텐츠를 설정하고 이 메시지를 Compute 노드의 최종 조치로 전달할 경우에는, 최종 PROPAGATE문을 포함시키지 않아도 됩니다. Compute 노드의 디폴트 조치가 종료 시 출력 버퍼의 컨텐츠를 전달하는 것입니다. 이것은 모듈 구조에 최종 명령문으로 포함되는 RETURN TRUE문에서 구현됩니다.
예를 들면, 세 개의 입력 메시지 사본을 생성하고 더 이상의 조치를 수행하지 않으려면 이 코드를 RETURN TRUE문 바로 앞에 넣으십시오.
SET OutputRoot = InputRoot; PROPAGATE DELETE NONE; PROPAGATE DELETE NONE;
또는, 다음을 RETURN TRUE에서 RETURN FALSE로 변경하여 노드의 디폴트 작동을 수정할 수도 있습니다.
SET OutputRoot = InputRoot; PROPAGATE DELETE NONE; PROPAGATEDELETE NONE; PROPAGATE; RETURN FALSE;
세 개의 PROPAGATE문으로 세 개의 출력 메시지가 생성됩니다. 최종 RETURN FALSE문은 노드를 종료하지만 최종 출력 메시지를 전달하지는 않습니다. 최종 PROPAGATE 문에는 DELETE NONE 절이 포함되지 않습니다. 노드가 이 단계에서 메모리를 릴리스해야 하기 때문입니다.