(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 '1:21.862' 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;