Ab der Version 2.0 gehört die Scriptsprache
REXX mit zum Lieferumfang von OS/2.
REXX hat seine Wurzeln im Großrechnerbereich und wurde von IBM nach OS/2
protiert. Sie lässt sich durch das hinzufügen von zusätzlichen
Libraries (
DLLs) beliebig erweitern womit man Sie als alternative zu einem Shell-Skript einsetzen, aber auch eigene Anwendungen mit ihr erstellen kann.
REXX ist eine strukturierte Programmiersprache sie sehr einfach zu erlernen und zu lesen ist und wurde auf viele Plattformen portiert. Wie
PERL hat
REXX seine Stärke in der
Stringverarbeitung.
Ein
REXX Programm kann mit jedem beliebigen Text-Editor erstellt werden. In der ersten Zeile muss immer ein Kommentar /* ... */ stehen, damit die OS/2 Shell erkennt, dass es sich um ein
REXX Skript handelt.
REXX kennt 23 Instruktionen und einen Datentyp, den
String. Variablen sind Typenlos und der Inhalt einer Variable kann sich im Laufe des Programms bzw. bei der Programmausführung beliebig ändern.
REXX kennt keine Arrays, dafür können Variablen eine oder mehrere, durch einen "." getrennte Endungen haben mit denen man sich Ein- bzw. Mehrdimensionale dynamische
Hashtables mit der gleichen Funktion eines Arrays erzeugen kann. Ich möchte hier einen kurzen Auszug aus dem Grund-Wortschatz von
REXX Funktionen geben:
- IF ... THEN ... ELSE
Die Anweisung prüft, ob die Bedingung die hinter IF steht wahr ist. Ist dies der Fall, wird die Anweisung ausgeführt, die hinter THEN steht. Ist die Bedingung falsch, wird die Anweisung ausgeführt, die hinter ELSE steht.
- SELECT WHEN ... THEN ... WHEN ... THEN ... OTHERWISE ... END
Die Anweisung SELECT fasst mehrere Bedingung zusammen. Jede Bedingung wird durch eine WHEN geprüft. Ist diese Bedingung wahr wird die hinter den THEN stehende Anweisung ausgeführt. Es ist möglich, dass mehrere Bedingungen wahr sind. In diesem Fall werden deren Anweisung ebenfalls ausgeführt. In dem Fall, dass keine Bedingung wahr ist, wird die Anweisung hinter OTHERWISE ausgeführt.
- DO (FOREEVER, UNTIL, WHILE, X=Y TO Z) ... LEAVE ... END
Die Anweisung DO kann alleine und in Kombination mit den Bedingungen die in Klammern angeführt sind angewendet werden.
DO FOREEVER ist eine Endlosschleife die unendlich durchlaufen wird.
DO UNTIL ist eine Schleife, die solange durchlaufen wird bis die Bedingung hinter UNTIL erfüllt/wahr ist.
DO WHILE ist eine Schleife die solange durchlaufen wird die die Bedingung hinter WHILE nicht mehr erfüllt/wahr ist.
DO X=Y TO Z ist die klassische FOR ... NEXT Schleife. X bekommt einen Startwert Y und iteriert zu Z. Hat X den Wert von Z erreicht wird die Schleife verlassen.
Die Anweisung LEAVE kann innerhalb der DO-Schleife aufgerufen werden. Der Aufruf führt dazu, dass die DO Schleife verlassen wird.
- ARG
Diese Anweisung liest ein oder mehrere Argumenten ein, die zusammen mit dem REXX Programmaufruf eingegeben wurden.
- PARSE
Liest einen oder mehrere Strings von der Tastatur ein und ordnet diese Variablen zu.
- SAY "..." "..."
Gibt einen oder mehre Strings oder Ausdrücke aus.
- CALL
Mit CALL kann eine REXX Sub-Routine aufgerufen werden. Der Name der Sub-Routine definiert sich aus dem Namen des LABELS das unmittelbar über dem Funktionsaufruf von PROCEDURE steht. Mit dem Funktionsaufruf können optional auch eine Reihe von Argumenten mitgegeben werden.
- PROCEDURE ... EXPOSE ... ARG ... RETURN
Die Funktion PROCEDURE kann direkt hinter einem definierten LABEL angegeben werden. Innerhalb dieser Sub-Routine können neue Variablen definiert werden, die nur in dieser Routine ihre Gültigkeit haben. Der Routine können wie einem REXX Programm Argumente (ARG) übergeben werden, mit die die Routine arbeiten kann. Mit der Anweisung RETURN wird die Sub-Routine wieder verlassen. Mit EXPOSE kann man externe Variablen definieren die innerhalb der Sub-Routine modifiziert werden können.
- SYMBOL
Prüft ab eine Symbol oder Variable eine gültige Zuordnung bzw. Definition besitzt. Die Funktion gibt BAD, VAR oder LIT zurück. Mit dieser Funktion kann man z.B. überprüfen, ob eine Variable schon eine gültige Initialisierung besitzt. Eine uninitialisierte Variable gibt immer ihren eigenen Namen als Inhalt zurück.
- EXIT
Verlässt das laufende Programm.
Unter OS/2 gibt es die
GUI Anwendung
PMREXX mit der man sich im Detail die Ausgaben eines
REXX- Programms anschauen und Debuggen kann. Das Programm wird nicht standardmäßig Installiert und muss über die
Installationsoption nachinstalliert werden, wenn man keine OS/2- Vollinstallation ausgewählt hat. Darüber hinaus gibt es unter OS/2 die Möglichkeit auch
GUI-Anwendungen mit
REXX zu erstellen. Das
VREXX Toolkit stellt hierfür die entsprechenden Funktionen zur Verfügung.
Watcom VX-REXX ist eine Visuelle Entwicklungsumgebung, mit der man seine sein Presentation Manager Anwendungen über eine
GUI zusammen klicken kann. Hiermit wird auch heute noch an eComStation entwickelt. Leider gibt es diese Entwicklungsumgebung nur als Demo-Version zum Download. Wer sich fragt, wo REXX heute noch eingesetzt wird, findet
hier einen ausführlichen Artikel.
[UPDATE] Und dann gibt es noch DrDialog den man bei
Hobbes und
OS2 Site herunterladen kann. Mit dieser REXX-Entwicklungsumgebung lassen sich ebenfall GUI-Anwendungen unter OS/2 Warp erstellen. Ein ausführliche 14teilige Anleitung und eine Einführung in REXX hat Thomas Klein für den Voice-Newsletter erstellt. Es folgen die Links auf die einzelnen Teile:
(Danke an Warpcafe für den Tip)