시간 간격 계산

이 ESQL 예는 입력 WebSphere MQ 메시지를 입력 큐에 넣는 시점과 현재 Compute 노드에서 처리되는 시점 간의 시간 간격을 계산합니다.

(CURRENT_ DateTime 함수를 호출할 경우 리턴된 값이 동일 노드의 다른 호출로 리턴된 값과 동일합니다. 이를 통해 단일 노드 내에서 함수를 일관되게 사용할 수 있습니다.)

 CALL CopyMessageHeaders();
 Declare PutTime INTERVAL;

 SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND;
 
 SET OutputRoot.XML.Test.PutTime = PutTime;

출력 메시지에는 형식이 있습니다(실제 값은 다를 수 있음).

<Test>
 <PutTime>INTERVAL &apos;1:21.862&apos; MINUTE TO SECOND</PutTime>
</Test>

다음 코드 스니펫은 처리가 완료되었는지 확인하기 위해 처리 시작에서 지정된 간격이 경과한 후 트리거 되는 타이머를 설정합니다. 경과 시간 내에 처리가 완료되지 않으면 타이머가 시작되어 일부 복구 처리가 트리거될 수도 있습니다.

시간 종료 요청 메시지의 StartTime 필드는 현재 시간에 허용되는 지연 시간을 더한 값으로 설정됩니다. 지연 시간은 플로우에서 사용자 정의 등록 정보에 의해 정의됩니다. (사용자 정의 등록 정보는 관리자가 "HH:MM:SS" 형식의 문자열로 설정했습니다.)

DECLARE StartDelyIntervalStr EXTERNAL CHARACTER '01:15:05';

	CREATE PROCEDURE ValidateTimeoutRequest() BEGIN

		-- Set the timeout period
		DECLARE timeoutStartTimeRef REFERENCE TO OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime;
		IF LASTMOVE(timeoutStartTimeRef)
			THEN
			-- Already set
		ELSE
			-- Set it from the UDP StartDelyIntervalStr 
			DECLARE startAtTime TIME CURRENT_TIME + CAST(StartDelyIntervalStr AS INTERVAL HOUR TO SECOND)  ;
			-- Convert "TIME 'hh.mm.ss.fff'" to hh.mm.ss format 
       -- needed in StartTime field
			DECLARE startAtTimeStr CHAR;
			SET startAtTimeStr = startAtTime;
			SET startAtTimeStr = SUBSTRING(startAtTimeStr FROM 7 FOR  8);
			SET OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime = startAtTimeStr;
		END IF;
	END;
관련 개념
메시지 플로우 개요
메시지 맵핑 개요
관련 태스크
메시지 플로우 개발
ESQL 개발
DateTime 값에 숫자 연산자 사용
관련 참조
내장 노드
ESQL 참조
ESQL INTERVAL 데이터 유형
ESQL 숫자 연산자
ESQL 연산자 우선순위 규칙
CAST 함수
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac16755_