- Funktionsaufruf
erg = Funktion(Para1, Para2);
Funktion2(Para1, Funktion(Para2));
erg= 1 + Fubktion()
Dies sind alles gebräuchliche Aufrufe von Funktionen. Der Aufruf einer Funktion geschieht also mit dem Namen
der Funktion direkt gefolgt von zwei runden Klammern, in denen Argumente übergeben werden können. Die Funktion
liefert dann einen Rückgabewert.
- Prozeduraufruf
CALL Subroutine
CALL Subroutine Para1, Para2, Para3
Ein Prozeduraufruf geschieht mit dem Schlüsselwort CALL. Hier werden die Parameter als eine durch Kommata
getrennte Liste übergeben.
- In Rexx entscheidet daher allein die Art des Aufrufes, ob es sich um einen prozedualen oder einen Funktionsaufruf handelt.
Dabei kann man jede Funktion, also auch die Rexx-Funktionen, auf beide Weisen aufrufen.
SAY Center(' Ueberschrift ',40, '*')
CALL Center ' Ueberschrift ', 40, '*'
SAY RESULT
Will die Prozedur (im 2. Fall) jedoch etwas zurückliefern, so wird dieser Wert in der vordefinierten Variablen
RESULT geschrieben.
- Rekursive Aufrufe von Funktionen sind erlaubt.
- Definition einer Subroutine
Name:
...
RETURN rueckgabewert;
Eine Funktions- bzw. Prozedurdefinition beginnt mit einem Label. Dies sieht genauso aus wie auch das
Label von SIGNAL. Danach folgen die Klauseln, und abgeschlossen wird sie mit RETURN mit
einem otionalen Rückgabewert.
- In Rexx kann man alle Datentypen zurückgeben. Will man eine Compound Variable x. zurückgeben, so
wird hier nur der Rumpf, also der Wert für x. zurückgegeben.
Echo:
PARSE ARG argument;
SAY argument;
RETURN;
Die übergebenen Argumente werden wie auch in der Hauptroutine mit PARSE ARG oder Arg() abgerufen.
- Sichtbarkeit und Lebensdauer von Variablen
- Funktionen und Prozeduren sollten immer nach dem Hauptprogramm definiert werden, da sonst Rexx beim Ausführen
des Programms beim ersten Auffinde eines RETURNs das Programm sofort verlassen würde. Allgemein
beendet RETURN die aktuelle Aufrufebene (z.B. eine Funktion), wogegen EXIT gleich das ganze
Programm beendet.
- Selbstdefinierte externe Funktionen
- eigene Bibliotheken