(Wenn Sie einen Aufruf an eine Datums-/Zeitfunktion des Typs CURRENT_ ausgeben, ist der zurückgegebene Wert mit dem Wert identisch, der an einen anderen Aufruf in demselben Code zurückgegeben wurde. Auf diese Weise wird sichergestellt, dass Sie die Funktion durchgängig in einem einzelnen Knoten verwenden können.)
CALL CopyMessageHeaders(); Declare PutTime INTERVAL; SET PutTime = (CURRENT_GMTTIME - InputRoot.MQMD.PutTime) MINUTE TO SECOND; SET OutputRoot.XML.Test.PutTime = PutTime;
Die Ausgabenachricht hat folgendes Format (die Ist-Werte können jedoch leicht abweichen):
<Test> <PutTime>INTERVAL '1:21.862' MINUTE TO SECOND</PutTime> </Test>
Im folgenden Codefragment wird ein Zeitgeber festgelegt, der nach einem angegebenen Intervall nach dem Start der Verarbeitung ausgelöst wird und überprüft, ob diese Verarbeitung beendet wurde. Wenn die Verarbeitung während der abgelaufenen Zeit nicht beendet wurde, wird durch den Zeitgeber beispielsweise ein Prozess zur Fehlerbehebung ausgelöst.
Im Feld StartTime der Nachricht über eine Zeitlimitanforderung wird die aktuelle Zeit plus die zulässige Verzögerungszeit festgelegt, die durch eine benutzerdefinierte Eigenschaft im Nachrichtenfluss definiert ist. (Für die benutzerdefinierte Eigenschaft wurde vom Administrator eine Zeichenfolge im Format "HH:MM:SS" festgelegt.)
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;