REXX: Befehlsumfang
Erscheinungsbild
Übersicht der REXX-Anweisungen (unvollständig)
[Bearbeiten]REXX-Anweisungen | ||
---|---|---|
address umgebung ausdruck | zum Ausführen von Anweisungen außerhalb der REXX-Umgebung | address CMD 'DIR *.*' |
arg Argumentstring | Auswertung per Kommandozeile übergebener Argumente; Abkürzung für parse upper arg Argumentstring |
arg n k |
arg Argument1 [, Argument2][…] | Auswertung an eine Funktion oder Prozedur übergebener Argumente; Abkürzung für parse upper arg Argument1[, Argument2][…] |
arg n, k |
call prozedur | Aufruf einer prozedur | call binkoeff n, k |
call on bzw. off Bedingung | schaltet die Überwachung der Bedingung ein oder aus (mit Rückkehr) | call on error |
call load 'bibliothek' | Eine externe Bibliothek laden | call load 'mathe.r' |
do | Alle möglichen Arten von Schleifen | |
drop variable | variable löschen | drop a |
exit | veranlasst das Programm sich zu beenden | |
if log. Ausdruck then anweisung | Selektionsbefehl | if a > 0 then a = a + 1; else a = -a |
interpret ausdruck | ausdruck wird wie eine REXX-Anweisung behandelt | interpret "a=5*(4+b)" |
iterate | Sprung zum nächsten Schleifendurchlauf, entsprechend dem continue anderer Sprachen | |
leave | Verlassen einer Schleife, entsprechend dem break anderer Sprachen | |
nop | Leeranweisung, die nichts macht | |
numeric digits / form / fuzz [Wert] | Festlegungen für arithmetische Operationen | numeric digits 20 |
options ausdruck | nimmt spezielle Einstellungen vor | |
parse | Analyse von Eingaben und Variablen (Vorlaufinformation) | |
procedure | nur direkt nach einer mit call angesteuerten Marke zulässig (Funktions- oder Prozeduraufruf); erzeugt einen Namespace für lokale Variablen | |
pull variable | liest eine Zeichenkette von der aktuellen Standardqueue oder (wenn diese leer ist) der Tastatur ein (Abkürzung für parse upper pull ) |
pull eingabe |
push ausdruck | ausdruck wird der aktuellen Standardqueue übergeben, die in diesem Fall als Stack funktioniert (LIFO) | |
queue ausdruck | ausdruck wird der aktuellen Standardqueue übergeben (FIFO) | |
return ausdruck | kehrt zur aufrufenden Stelle zurück und übergibt ggf. den optional angegeben Wert | |
say ausdruck | ausdruck wird auf dem Bildschirm ausgegeben | say "Hallo Welt!" |
select; when Bedingung then Anweisung; […] [otherwise Anweisungen;] end | Mehrfachverzweigung | |
signal label | Äquivalent zu goto label | |
signal on bzw. off Bedingung | Schaltet die Überwachung der Bedingung ein bzw. aus (ohne Rückkehr) | signal on break |
trace Abkürzung | steuert die Debugging-Ausgaben | trace ?i , trace off
|
Übersicht der REXX-Funktionen (unvollständig)
[Bearbeiten]REXX-Funktionen | ||
---|---|---|
address() | gibt die Umgebung zurück | z. B.: address() == 'DOS' |
arg(n) | gibt das n-te Argument zurück (im Falle der Kommandozeile ist n == 1) | console = arg(1) |
arg() | gibt die Anzahl der übergebenen Argumente zurück | console = arg(1) |
charin("dateiname") | holt ein Zeichen aus dem Eingabestrom | zeichen = charin("semmel.txt") |
charout() | schreibt ein Zeichen in den Ausgabestrom | |
chars() | gibt die Anzahl der noch verfügbaren Zeichen im Eingabestrom aus | |
date() | gibt je nach Option Tages- bzw. Datumsangaben zurück. | |
linein("dateiname") | Liest eine ganze Zeile aus einer Datei ein | zeile = linein("semmel.txt") |
lineout("dateiname",ausdruck) | ausdruck wird in Datei geschrieben | lineout("semmel.txt",eumel) |
lines() | gibt die Anzahl der noch vollständigen Zeilen im Eingabestrom aus | |
queued() | gibt die Anzahl ungelesenen Einträge in der aktuellen Standardqueue aus | |
rxqueue("Kommando"[, "Name"]) | Erzeugt oder setzt eine benannte Queue bzw. fragt ihren Namen ab | |
Stringfunktionen | ||
length(string) | liefert die Länge eines Strings zurück | x = length("abc") => x = 3 |
substr(string,position,zeichenzahl) | Ein Teilstring aus string | x = substr("abcde",2,3) => x = bcd |
word(string,wert) | gibt das n.te Wort des String aus | a = word("polyglotte Katze",2) => Katze |
words(string) | gibt die Anzahl der Wörter des Strings aus | a = words("Hallo Leute") => 2 |
mathematische Funktionen | ||
abs(zahl) | liefert den vorzeichenlosen Teil einer Zahl zurück | abs(-3) => 3 |
bitand() | Bitweises UND | |
bitor() | Bitweises ODER | |
bitxor() | Bitweises XOR (exklusives Oder) | |
random(u,o,s) | liefert eine zufällige Zahl in den Grenzen von u und o zurück. u,o und s sind optional | |
C2D() | Wandelt Zeichen in ASCII-Code (dezimal) um | |
C2X() | Wandelt Zeichen in ASCII-Code (hexadezimal) um | |
D2C() | Wandelt Dezimalzahlen in Zeichen um | |
D2X() | Wandelt Dezimalzahlen in Hexadezimalzahlen um |
Übersicht der REXX-Operatoren (unvollständig)
[Bearbeiten]Vergleichsoperatoren
[Bearbeiten]Rexx verfügt über zwei Klassen von Vergleichsoperatoren, die exakt (z. B. ==
) oder
numerisch (=
) vergleichen. Im zweiten Fall werden zunächst etwaige Rand-Blanks entfernt, weil diese für die Interpretation als Zahl nicht von Bedeutung sind.
Rexx unterstützt eine große Zahl von Varianten, wobei allerdings „nicht“ nicht, wie in manchen Sprachen üblich, durch das Ausrufungszeichen, sondern durch das mathematische Zeichen für „nicht“ (¬
), ersatzweise den Backslash ausgedrückt wird (das Ausrufungszeichen gehört zum Zeichenvorrat für Bezeichner!)
Vergleichs-Operatoren | Beispiel | Ergebnis | |
---|---|---|---|
exakt gleich | == |
"1 " == 1 |
0 |
numerisch gleich | = |
"1 " = 1 |
1 |
nicht exakt gleich | ¬== \== |
"1 " \== 1 |
1 |
numerisch ungleich | <> ¬= \= |
"1 " \= 1 |
0 |
exakt größer | >> |
30 >> "4 " |
0 |
numerisch größer | > |
30 > "4 " |
1 |
exakt größer oder gleich | >== ¬<< \<< |
30 >== "4 " |
0 |
numerisch größer oder gleich | >= ¬< \< |
30 >= "4 " |
1 |
exakt kleiner | << |
30 << "4 " |
1 |
numerisch kleiner | < |
30 < "4 " |
0 |
exakt kleiner oder gleich | <== ¬>> \>> |
30 <<= "4 " |
1 |
numerisch kleiner oder gleich | <= ¬> \> |
30 <= "4 " |
0 |
sonstige Operatoren
[Bearbeiten]Die Operatoren +, -, * und / werden nicht extra aufgeführt.
REXX-Operatoren | ||
---|---|---|
** | Potenz | 4**3 == 64 |
% | ganzzahlige Division | 11%3 == 3 |
// | Rest-Operator (Modulo) | 11//3 == 2 |
& | logisches UND | a & b => wahr, wenn a und b wahr sind |
| | logisches ODER | a | b => wahr wenn a oder b wahr ist |
&& | logisches XOR | a && b => wahr, wenn entweder a oder b wahr ist, aber nicht beide gleichzeitig |
|| | Stringverkettung (Konkatenation) | "bär"||"tiger" = "bärtiger" |