Zeitintervall berechnen

In diesem ESQL-Beispiel wird das Zeitintervall berechnet, das zwischen der Einreihung einer WebSphere MQ-Eingabenachricht in die Eingabewarteschlange und der Zeit liegt, zu der sie im aktuellen Rechenknoten verarbeitet wird.

(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 &apos;1:21.862&apos; 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;
Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Nachrichtenzuordnungen - Übersicht
Zugehörige Tasks
Nachrichtenflüsse entwickeln
ESQL erstellen
Numerische Operatoren mit Werten für Datum und Uhrzeit (DATETIME) verwenden
Zugehörige Verweise
Integrierte Knoten
ESQL-Referenz
ESQL-Datentyp INTERVAL
Numerische ESQL-Operatoren
Regeln zur Vorrangstellung für ESQL-Operatoren
CAST-Funktion
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac16755_