Dieser Abschnitt enthält eine Liste integrierter ARexx-Befehle in alphabetischer Reihenfolge. Die Syntax jedes Befehls sehen Sie jeweils rechts vom Befehlsschlüsselwort.
Dieser Befehl gibt eine Host-Adresse für vom Interpreter ausgegebene Kommandos an. Unter einer Host-Adresse versteht man den Namen des Message-Ports einer Anwendung, an den ARexx-Kommandos gesendet werden. ARexx verwaltet zwei Host-Adressen: einen aktuellen und einen vorhergehenden Wert. Immer wenn Sie eine neue Host-Adresse angeben, wird diese zum aktuellen Wert und die bisher aktuelle Adresse zur vorhergehenden. Der bis dahin vorhergehende Wert wird gelöscht. Die Host-Adressen sind Bestandteil der Speicherumgebung eines Programms und überdauern auch interne Funktionsaufrufe. Die aktuelle Adresse kann mit der integrierten Funktion ADDRESS() aufgerufen werden.
Das Schlüsselwort ADDRESS - alleine angegeben - schaltet vom aktuellen auf den vorhergehenden Host um, bei wiederholter Ausführung würde also zwischen den zwei Host-Adressen hin- und hergeschaltet.
ADDRESS {Zeichenfolge | Symbol} macht die/das angegebene Zeichenfolge/Symbol zur neuen Host-Adresse. Der Wert der Zeichenfolge bzw. des Symbols ist also das Token selbst. Bei Namen von Message-Ports wird zwischen Groß- und Kleinschreibung unterschieden. Ein Programmkommando an den Message-Port MeinPort müßte also wie folgt aussehen:
Werden die einfachen Anführungszeichen weggelassen, sucht ARexx nach dem Message-Port MEINPORT und gibt eine Fehlermeldung aus. Die aktuelle Host-Adresse wird zur vorhergehenden. Ein auf die Zeichenfolge bzw. das Symbol folgender Ausdruck wird ausgewertet, das Ergebnis wird an den angegebenen Host gesendet. Aktuelle und vorhergehende Adresse bleiben unverändert. Auf diese Weise kann ein einzelnes Kommando an einen externen Host ausgegeben werden, ohne daß die Host-Adressen davon berührt werden Der Rückgabewert des Kommandos wird behandelt wie der einer Kommandoklausel.
Bei Angabe von ADDRESS [VALUE] Ausdruck verwendet ARexx das Resultat des Ausdrucks als neue Host-Adresse (d.h. die bisher aktuelle Adresse wird zur vorhergehenden). Das Schlüsselwort VALUE kann weggelassen werden, wenn das erste Token des Ausdrucks weder ein Symbol noch eine Zeichenfolge ist. Beispiel:
ADDRESS /*Wechsel zwischen
aktueller und vorhergehender Adresse.*/
ADDRESS edit *Die neue Host-Adresse lautet EDIT.*/
ADDRESS edit `top' /*An den Anfang gehen.*/
ADDRESS VALUE edit in /*Eine neue Host-Adresse berechnen.*/
ARG ist eine Kurzform des Befehls PARSE UPPER ARG. Damit können eine oder mehrere dem Programm zur Verfügung stehende Argumentzeichenfolgen abgerufen und den Variablen in der Schablone zugeordnet werden. Die Anzahl der verfügbaren Argumentzeichenfolgen hängt davon ab, ob das Programm als Kommando oder als Funktion aufgerufen wurde. Kommandoaufrufe verfügen in der Regel nur über eine Argumentzeichenfolge, Funktionen können dagegen bis zu 15 aufweisen. Die Argumentzeichenfolge werden durch den Befehl ARG nicht verändert. ARG gibt Großbuchstaben zurück. Beispiel:
ARG erstes,zweites /*Argument abrufen*/
Struktur und Verarbeitung von Schablonen werden im Abschnitt zum Befehl PARSE auf Seite 4-14 kurz beschrieben.
Der Befehl BREAK dient dazu, den Bereich eines DO-Befehls oder einer INTERPRETierten Zeichenfolge zu verlassen. Er ist nur in einem solchen Kontext gültig. Wird er innerhalb einer DO-Anweisung verwendet, wird die innerste DO-Anweisung, die den Befehl BREAK enthält, verlassen. Im Gegensatz dazu wird mit dem verwandten Befehl LEAVE nur eine iterative (d.h. sich wiederholende) DO-Anweisung verlassen. Beispiel:
DO /*Block beginnen*/
IF a>3 THEN BREAK /*Fertig?*/
a = a + 1
y.a = name
END /*Block beenden*/
Der Befehl CALL dient zum Aufrufen einer internen oder externen Funktion. Der Funktionsname wird durch das Symbol- oder Zeichenfolge-Token angegeben. Alle darauf folgenden Ausdrücke werden ausgewertet und werden zu Argumenten der aufgerufenen Funktion. Der von der Funktion zurückgegebene Wert wird der Sondervariablen RESULT zugeordnet. Es gilt nicht als Fehler, wenn keine Ergebniszeichenfolge zurückgegeben wird. In diesem Fall wird die Variable RESULT gelöscht, d.h. ihre Initialisierung wird mittels der Anweisung DROP rückgängig gemacht.
Die Verbindung zur Funktion wird zum Zeitpunkt des Aufrufs dynamisch hergestellt. Bei der Suche nach einer aufgerufenen Funktion hält ARexx eine bestimmte Reihenfolge ein. Beispiel:
CENTER ist die aufgerufene Funktion. Die Ausdrücke werden ausgewertet und als Argumente an CENTER weitergeleitet.
|
DO [[Var=Ausdr]|[Ausdr] [TO Ausdr] [BY Ausdr]] [FOR Ausdr] [FOREVER] [WHILE Ausdr | UNTIL Ausdr] |
Mit der Anweisung DO wird eine Befehlsgruppe eingeleitet, die als zusammengehöriger Block ausgeführt wird. Der Bereich des Befehls DO umfaßt alle Anweisungen bis zu und einschließlich eines möglichen Befehls END.
Wenn auf den Befehl DO kein Unterschlüsselwort folgt, wird der Block einmal ausgeführt. Durch Angabe von Unterschlüsselwörtern kann die Ausführung eines Blocks wiederholt werden, bis eine Endebedingung eintritt. Eine iterative (wiederholte) DO-Anweisung wird manchmal auch als Schleife (engl. loop) bezeichnet, da ARexx sozusagen mit einem "Looping" an eine bereits durchlaufene Stelle im Programm zurückkehrt, um einen Befehl nochmals auszuführen. Der Befehl DO setzt sich aus folgenden Komponenten zusammen:
Progamm 12. Iteration.rexx
/*Beispiele für DO*/
LIMIT = 20; nummer = 1
DO i=1 to LIMIT for 10 WHILE nummer < 20 nummer = 1 * nummer
SAY "Iteration" i "nummer=" nummer
END
nummer = nummer/3.345; i = 0
DO nummer for LIMIT/5
i = i + 1
SAY "Iteration" i "nummer=" nummer
END
Die Ausgabe wird hier mit erläuternden Kommentarzeilen gezeigt, die am Bildschirm natürlich nicht erscheinen würden.
Iteration 1 Nummer = 1 /* 1
* 1 = 1 */
Iteration 2 Nummer = 2 /* 2 * 2 = 2 */
Iteration 3 Nummer = 6 /* 3 * 2 = 6 */
Iteration 4 Nummer = 24 /*4 * 6 = 24 */
Iteration 1 Nummer = 7.17488789 /* 24/3.345 = 7.17488789 */
Iteration 2 Nummer = 7.17488789 /* Nummer bleibt gleich */
Iteration 3 Nummer = 7.17488789 /* limit/5 = 20/5 = 4 */
Iteration 4 Nummer = 7.17488789 /* Operation wird 4 mal wiederholt */
|
Ist auch ein FOR-Grenzwert vorhanden, wird der ursprüngliche Ausdruck dennoch ausgewertet, muß aber keine positive ganze Zahl ergeben. |
Die angegebenen Variablensymbole werden auf den Stand vor ihrer Initialisierung rückgesetzt. Auf diesem Stand entspricht der Wert der Variablen dem Variablennamen selbst. Es liegt kein Fehler vor, wenn eine Variable, die nicht mehr initialisiert ist, mit dem Befehl DROP gelöscht wird. Wird ein Stammsymbol mit DROP gelöscht, werden damit auch die Werte aller vom Stammsymbol abgeleiteten zusammengesetzten Symbole gelöscht. Beispiel:
a = 123 /*a einen Wert zuordnen
*/
DROP a b /*Werte von A und B löschen (mit DROP) */
Say a b /*Resultat ist: A B.*/
|
|