Prozeduren 

Aufgerufenen Prozeduren, also Unterprogramme, Funktionsbausteine und Methoden, laufen immer im gleichen internen Modus wie das aufrufende Programm.


Unterprogramme

Unterprogramme werden mit der Anweisung

PERFORM <subr>[(<prog>)] ...

aufgerufen. Ohne den Zusatz (<prog>) handelt es sich um einen internen Aufruf. Das Unterprogramm liegt im aufrufenden Programm und muß nicht geladen werden.

Mit dem Zusatz (<prog>) handelt es sich um einen externen Aufruf. Das Unterprogramm liegt im Programm <prog>. Beim Aufruf wird das gesamte Programm <prog> in den internen Modus des Aufrufers geladen, falls es nicht schon zuvor geladen wurde. Das hinzugeladene Programm liegt in der Programmgruppe des Aufrufers. Nur falls das Unterprogramm in einer Funktionsgruppe liegt, bildet es eine neue Zusatzprogrammgruppe. Die Zugehörigkeit zu einer Programmgruppe entscheidet darüber, welche Schnittstellen-Arbeitsbereiche und Bildschirme eine extern aufgerufenenes Unterprogramm verwendet. Da diese Zuordnung sich dynamisch ändern kann, sollten externe Unteprogrammaufrufe vermieden werden.

Funktionsbausteine

Funktionsbausteine werden mit der Anweisung

CALL FUNCTION <func> ...

aufgerufen. Funktionsbausteinaufrufe sind in der Regel extern, es sei denn ein Funktionsbaustein wird in seiner Funktionsgruppe aufgerufen. Beim Aufruf wird die gesamte Funktionsgruppe des Funktionsbausteins in den internen Modus des Aufrufers geladen, falls sie nicht schon zuvor geladen wurde. Die Funktionsgruppe bildet im internen Modus zusätzlich zur Hauptprogrammgruppe eine neue Zusatzprogrammgruppe mit eigenen Schnittstellen-Arbeitsbereichen und Bildschirmen. Funktionsgruppen sind also besser zur Kapselung von Daten und Bildschirmen geeignet als externe Unterprogrammaufrufe.

Methoden

Methoden werden mit der Anweisung

CALL METHOD [<ref>->|<class>=>]<meth> ...

aufgerufen. Ohne die Bezeichner <ref> oder <class> handelt es sich um einen internen Aufruf in der eigenen Klasse. Die Klasse muß nicht erneut geladen werden.

Mit den Bezeichnern wird die Methode einer bestimmten Klasse entweder über eine Objektreferenz <ref> oder über den Klassennamen <class> aufgerufen. Beim Aufruf wird der gesamte Class-Pool der Methode in den internen Modus des Aufrufers geladen, falls er nicht schon zuvor geladen wurde. Der Class-Pool bildet im internen Modus eine neue Zusatzprogrammgruppe, die keine Daten und Bildschirme mir dem Aufrufer teilt und in der keine externen Unterprogramme aufgerufen werden können.

Aufgerufene Prozeduren verlassen

Aufgerufene Prozeduren können mit den Anweisungen

EXIT.

und

CHECK <logexp>.

programmgesteuert verlassen werden.