Die EGL-Anweisung exit bietet einen sofortigen Exit aus einer Funktion oder einem Codeblock (bzw. aus einem Teil einer Funktion oder eines Codeblocks), die/der durch eine bedingte Anweisung oder eine Schleifenanweisung gesteuert wird.
Wenn Sie keinen Änderungswert angeben, überträgt exit die Steuerung aus dem zuletzt begonnenen Codeblock (der von einer Anweisung des Typs case, for, forEach, if, openUI oder while gesteuert wird) heraus. Wenn sich die exit-Anweisung nicht innerhalb einer Schleife befindet, überträgt sie die Steuerung aus der zuletzt begonnenen Funktion heraus.
Diese Änderungswerte sind besonders wirkungsvoll, wenn Sie verschachtelte Schleifen verwenden; vgl. Sie das erste Beispiel im Abschnitt "Beispiele" weiter unten. Wenn Sie einen dieser Änderungswerte nicht innerhalb einer Schleife des angegebenen Typs angeben, zeigt EGL einen Gültigkeitsfehler an.
Der Änderungswert program gibt die Steuerung an das Programm zurück, von dem das gerade ausgeführte Programm aufgerufen wurde. In einem aufgerufenen Programm bewirkt exit program, dass das in der Folge zuvor aktive Programm wieder aufgerufen wird. In einem Hauptprogramm beendet 'exit program' die Ausführungseinheit.
Der Änderungswert rununit beendet eine Folge aufgerufener Programme. Wenn Programm A das Programm B aufruft und das Programm B gibt exit program aus, wird die Steuerung an Programm A zurückgegeben. Wenn Programm B aber exit rununit ausführt, wird auch Ausführungseinheit A beendet. In einem Hauptprogramm hat exit rununit dieselbe Wirkung wie exit program.
exit program (sysVar.returnCode);
exit program (myCustomer.customerNumber);
EGL stellt außerdem einen Änderungswert stack für die Kompatibilität mit älteren VisualAge Generator-Programmen zur Verfügung. Verwenden Sie diesen Änderungswert nicht, wenn Sie neue Programme entwickeln. Kontrollieren Sie den Programmablauf vielmehr strikter, indem Sie eine Ausnahmebedingung auslösen. Weitere Informationen finden Sie unter "Ausnahmebedingungsbehandlung". Der Änderungswert stack gibt die Steuerung direkt an die Hauptfunktion zurück. In dem Prozess entfernt EGL alle Verweise auf die Zwischenfunktionen im Laufzeitstack, der die Abfolge der Funktionen von der Hauptfunktion bis zur aktuellen Funktion enthält. Wenn die Hauptfunktion eine Funktion mit out- oder inOut-Änderungswerten aufgerufen hat, stehen der Hauptfunktion die aktuellen Werte dieser Argumente nach der Anweisung exit stack zur Verfügung. Wenn Sie den Änderungswert stack in der Hauptfunktion verwenden, geht die Steuerung einfach an die nächste Anweisung in der Folge über (auch dann, wenn Sie einen Kennsatz angeben).
Wenn Sie den Änderungswert stack verwenden, können Sie einen Kennsatz (Label) als Sprungziel angeben, wenn Sie zur Hauptfunktion zurückkehren. EGL bietet diese Funktionalität nur für die Kompatibilität mit migrierten Programmen. Verwenden Sie keine Kennsätze (Labels) oder goTo-Anweisungen in neuem Code, weil sie nicht den Standards der strukturierten Programmierung entsprechen.

Weitere Informationen zu Rückgabewerten finden Sie in returnCode.
Ausführliche Informationen hierzu finden Sie unter sysVar.returnCode.
// Ausgabe der ersten 100 Kunden mit Saldo ungleich null
while (getCustomer() != 0)
for(i from 1 to 100 by 1)
if (myCustomer.customerBalance == 0)
exit for;
end
printBalance(myCustomer);
end
end
Hier gibt die Anweisung exit for die Steuerung an die erste Anweisung while zurück, sodass wieder eine Schleife begonnen wird. Ohne den Änderungswert for bricht die Anweisung exit die Anweisung if ab und kehrt zur for-Schleife zurück.
Ein Gültigkeitsfehler tritt auf, wenn Sie einen Blocktyp für den Exit angeben und sich die exit-Anweisung nicht innerhalb der angegebenen Schleife befindet.
Die Anweisung exit muss in derselben Funktion enthalten sein wie der angegebene Block. D. h., wenn Sie functionA aus einer while-Schleife aufrufen und functionA enthält keine eigenen while-Schleifen, können Sie keine Anweisung exit while in die Funktion aufnehmen.
| Plattform | Problem |
|---|---|
| JavaScript-Generierung | Rich-UI unterstützt die folgenden Varianten der Anweisung exit (aber nur diese): exit for, exit if, exit while und exit case. |