Zum Inhalt springen

REXX: Befehlsumfang

Aus Wikibooks

Ü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"