REXX: Bibliotheken
Einleitung
BearbeitenWie in den meisten Programmiersprachen kann man auch in REXX eigene Funktionen schreiben. Es lassen sich auch externe Bibliotheken erstellen. Egal ob es sich um eine eigene Funktion innerhalb des Programms handelt, oder um eine externe Bilbliothek, der Aufruf ist immer:
call funktionsname parameter
eigene Funktionen innerhalb des Programms
BearbeitenAls Beispiel ein Programm zur Ausgabe der Fakultät. Die eigentliche Berechnung der Fakultät findet in der selbstgeschriebenen Funktion statt.
/* Ein Rexx-Programm */ signal on syntax say "Bitte gib eine Zahl >= 0 ein" pull n do while n >= 0 say "die Fakultät zu" n "ist" fakultaet(n) say "Bitte gib eine Zahl >= 0 ein" pull n end exit 0 fakultaet: procedure arg n select when n = 0 then return 1 when n = 1 then return 1 otherwise return n * fakultaet(n-1) end syntax: say 'Keine Zahl' exit 1
Externe Bibliothek
BearbeitenEine externe Bibliothek muß erst in das Programm hinzugeladen werden. Das bewirkt die Anweisung:
call load 'datei'
/* Ein REXX-Programm */ call load 'convert.r' do forever pull zahl pull base call d2n zahl,base say zahl'='result end
Die externe Bibliothek ist nicht ablauffähig. Um auf diesen Umstand hinzuweisen, kann man der Bibliothek zwei Zeilen an den Anfang stellen:
say 'Only a Library!' exit 1
Diese zwei Zeilen bewirken, das beim Starten der Bibliothek eine Meldung ausgegeben wird, daß es sich bei der ausgeführten Datei um eine Bibliothek handelt. Das exit 1 beendet dann die Datei. Beim Aufruf mit call load aus einem REXX-Programm haben diese beiden Zeilen keine Auswirkungen.
/* REXX-Programm */ say 'Only a Library!' exit 1 /* */ /* */ D2N: procedure arg n,b /* initialisierung */ z='0123456789ABCDEFGHIJKLMNOPQRSTUVW' conv = nstart = n DO WHILE n > 0 p = n // b conv = substr(z,(p+1),1)||conv n = n % b END /* Ausgabe der Konversion in der Form: 23 = (10111)2 */ return conv