HintergrundWAIT UNTIL Dieses Dokument in der Navigationsstruktur finden

 

Syntax

WAIT UNTIL log_exp [UP TO sec SECONDS].

Zusatz:

... UP TO sec SECONDS

Wirkung

Diese Variante der Anweisung WAIT ist nur zur Verwendung nach einem asynchronen RFC mit Callback-Routinen vorgesehen. Sie unterbricht die Programmausführung so lange das Ergebnis des logischen Ausdrucks log_exp falsch ist. Für log_exp kann ein beliebiger logischer Ausdruck angegeben werden. Wenn das Ergebnis von log_exp falsch ist, wartet das Programm bis eine Callback-Routine einer zuvor asynchron aufgerufenen Funktion ausgeführt wurde und überprüft dann den logischen Ausdruck erneut. Wenn das Ergebnis des logischen Ausdrucks wahr ist oder die Callback-Routinen aller zuvor asynchron aufgerufenen Funktionen ausgeführt wurden, wird die Programmausführung mit der auf WAIT folgenden Anweisung fortgesetzt.

Zusatz

... UP TO sec SECONDS

Wirkung

Mit der Angabe UP TO wird die Programmunterbrechung auf maximal die in sec angegebenen Sekunden begrenzt. Für sec wird ein Datenobjekt vom Typ f erwartet, das eine positive Zahl enthalten muss. Spätestens nach Ablauf der angegebenen Zeit wird die Programmausführung mit der auf WAIT folgenden Anweisung fortgesetzt.

Systemfelder

Die Anweisung WAIT führt zu einem Wechsel des Workprozesses, was mit dem Heraus- und Hereinrollen aller geladenen Programme verbunden ist. Aus diesem Grund sollte die Zeit in sec nicht kleiner als eine Sekunde gewählt werden, um das System nicht mit zu häufigen Wechseln des Workprozesses zu belasten.

Bei jeder Verwendung der Anweisung WAIT wird ein Datenbank-Commit abgesetzt. Aus diesem Grund darf WAIT nicht zwischen Open-SQL-Anweisungen verwendet werden, die einen Datenbank-Cursor öffnen oder schließen.

Es gibt auch eine Variante der Anweisung WAIT, die unabhängig vom asynchronen RFC verwendet werden kann.

Ausnahmen

Unbehandelbare Ausnahmen

  • Ursache: Undefinierter Zustand der WAIT-Anweisung

    Laufzeitfehler: WAIT_ILLEGAL_CONTROL_BLOCK

  • Ursache: Negative Zeitangabe für sec.

    Laufzeitfehler: WAIT_ILLEGAL_TIME_LIMIT