Anfang des Inhaltsbereichs

Unterprogramme beenden Dokument im Navigationsbaum lokalisieren

Ein Unterprogramm endet normalerweise bei Erreichen der ENDFORM-Anweisung. Ein Unterprogramm kann aber auch vorher durch die Anweisungen EXIT oder CHECK beendet werden. Auch bei Beendigung durch EXIT oder CHECK wird der aktuelle Wert der Ausgabeparameter des Unterprogramms (CHANGING-Parameter mit Wertübergabe) an die entsprechenden Aktualparameter übergeben.

EXIT beendet ein Unterprogramm ohne Bedingungen. Das aufrufende Programm nimmt die Verarbeitung nach der Anweisung PERFORM wieder auf.

Beispiel

REPORT demo_mod_tech_exit.

PERFORM terminate.

WRITE  'Ende'.

FORM terminate.
  WRITE '1'.
  WRITE '2'.
  WRITE '3'.
  EXIT.
  WRITE '4'.
ENDFORM.

Die Ausgabe sieht so aus:

1 2 3 Ende

Das Unterprogramm TERMINATE wird nach der dritten WRITE-Anweisung beendet.

CHECK beendet ein Unterprogramm unter Bedingungen. Ist der logische Ausdruck der CHECK-Anweisung unwahr, wird das Unterprogramm beendet und das aufrufende Programm nimmt die Verarbeitung nach der Anweisung PERFORM wieder auf.

Beispiel

REPORT demo_mod_tech_check.

DATA: num1 TYPE i,
      num2 TYPE i,
      res  TYPE p DECIMALS 2.

num1 = 3. num2 = 4.
PERFORM divide USING num1 num2 CHANGING res.

num1 = 5. num2 = 0.
PERFORM divide USING num1 num2 CHANGING res.

num1 = 2. num2 = 3.
PERFORM divide USING num1 num2 CHANGING res.

FORM divide USING    n1 TYPE any
                     n2 TYPE any
            CHANGING r  TYPE any.
  CHECK n2 NE 0.
  r = n1 / n2.
  WRITE: / n1, '/', n2, '=', r.
ENDFORM.

Die Ausgabe sieht so aus:

         3 /          4 =           0.75

         2 /          3 =           0.67

In diesem Beispiel wird das Unterprogramm DIVIDE während des zweiten Aufrufs durch CHECK verlassen, da der Wert von N2 gleich 0 ist.

Wenn die Anweisungen EXIT oder CHECK innerhalb von Unterprogrammen in Schleifen stehen gelten sie für die Schleifen und nicht für das Unterprogramm. EXIT und CHECK brechen Schleifen unterschiedlich ab (siehe Schleifen), verhalten sich beim Beenden von Unterprogrammen aber identisch.

 

 

 

Ende des Inhaltsbereichs