REXX (Abk. f. Restructured Extended Executor)
ist eine von Michael Cowlishaw bei IBM entwickelte Skriptsprache.
Sie stammt aus dem Großrechnerbereich (TSO), wurde aber auch in anderen Produktlinien wie OS/2 verwendet. Eine angepasste Version erfreute sich auch auf dem Amiga großer Beliebheit.
REXX ist sehr flexibel. REXX kennt keine expliziten Variablendeklarationen, und auch keine Arrays. Dennoch läßt sich eine Array ähnliche Struktur leicht dadurch erzeugen, indem Variablen indiziert werden:
DO i = 1 to 10 zahl.i = 10 - i END
Danach existieren folgende Variablen mit folgender Zuordnung: zahl.1 = 9, zahl.2 = 8, zahl.3 = 7, ...
So kann auch eine Variable, die vorher ohne Zuweisung als Wort verwendet wurde, nach der Zuweisung mit diesem Wert benutzt werden:
say hallo => "hallo" hallo = 25 say hallo => 25 hallo = "say 5 + 3" say hallo => "say 5 + 3" interpret hallo => 8 drop hallo say hallo => "hallo"
Fehler- und Ausnahmebehandlung in Rexx
Das negative Beispiel
Auch Rexx hat eine zum GOTO äquivalente Anweisung: SIGNAL. Richtig angewendet ein sehr nützlicher Befehl, zum Beispiel dann wenn man Fehler oder andere Ausnahmesituationen abfabngen will. Aber man kann damit auch unleserliche, schlecht bis gar nicht nachzuvollziehende Source-Codes erzeugen:
/* Ein Rexx-Programm */ signal definieren; ausgabe: say a signal ende; definieren: a = "hello world" signal ausgabe; ende: exit
Weblinks
- http://regina-rexx.sourceforge.net/index.html - Regina, eine Open Source Implementierung für Unix und Windows
- http://www.ibm.com/technology/NetRexx/ - NetRexx, eine REXX-Variante zum Schreiben von Java-Programmen in REXX-Syntax