(Quando você faz uma chamada para a função de data/hora CURRENT_, o valor retornado é idêntico ao valor retornado a outra chamada no mesmo nó. Isso assegura que você possa utilizar a função consistentemente dentro de um único nó.)
CALL CopyMessageHeaders(); Declare PutTime INTERVAL; SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND; SET OutputRoot.XML.Test.PutTime = PutTime;
A mensagem de saída possui o formato (embora os valores reais sejam variados):
<Test> <PutTime>INTERVAL '1:21.862' MINUTE TO SECOND</PutTime> </Test>
O trecho de código a seguir configura um cronômetro, a ser acionado após um intervalo especificado do início do processamento, para verificar se o processamento foi concluído. Se o processamento não tiver sido concluído dentro do tempo decorrido, o disparo do cronômetro pode, por exemplo, acionar algum processamento de recuperação.
O campo StartTime da mensagem de pedido de tempo limite está configurado para a hora atual, além do período de retardo permitido, que é definido por uma propriedade definida pelo usuário no fluxo. (A propriedade definida pelo usuário foi configurada como uma cadeia no formato "HH:MM:SS" pelo administrador).
DECLARE StartDelyIntervalStr EXTERNAL CHARACTER '01:15:05'; CREATE PROCEDURE ValidateTimeoutRequest() BEGIN -- Configurar o tempo limite DECLARE timeoutStartTimeRef REFERENCE TO OutputRoot.XMLNSC.Envelope.Header.TimeoutRequest.StartTime; IF LASTMOVE(timeoutStartTimeRef) THEN -- Já configurado ELSE -- Configure-o a partir da UDP StartDelyIntervalStr DECLARE startAtTime TIME CURRENT_TIME + CAST(StartDelyIntervalStr AS INTERVAL HOUR TO SECOND); -- Converter "TIME 'hh.mm.ss.fff'" para o formato hh.mm.ss -- necessário no campo StartTime 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;