REXX: Variablen

Aus Wikibooks

Wechseln zu: Navigation, Suche
Nuvola apps bookcase 1.svg REXX

[Bearbeiten] Einleitung

Die Programmiersprache REXX kennt keine Typendeklaration.

Wenn eine Variable noch keinen Wert zugewiesen bekommen hat, also uninitialisiert ist, verhält sie sich wie ein in Großbuchstaben geschriebener String:

say hallo => HALLO

Erst mit der Initialisierung ändert sich das:

hallo = 25
say hallo             =>  25
hallo = "say 5 + 3"
say hallo             =>  say 5 + 3

Durch die Anweisung drop wird eine Variable deinitialisiert und vergessen.

hallo = "Guten Morgen"
say hallo              =>  Guten Morgen
drop hallo
say hallo              =>  HALLO

Werden in REXX Variablen mit Zahlen initialisiert – oder mit Strings, die sich als Zahl interpretieren lassen –, läßt sich mit ihnen rechnen:

a = 25
b = '17'
say a + b => 42
say a - b => 8
say a * b => 425

Um Stringverkettungen vorzunehmen, wird daher ein eigener Operator benötigt:

say a || b => 2517

[Bearbeiten] Stems

Stems haben in vielerlei Hinsicht Ähnlichkeiten mit Arrays:

do i = 1 to 10
   zahl.i = 10 - i
end
zahl.0 = i - 1     /* => 10; per Konvention */

do i = 1 to zahl.0
   say i')' zahl.i
end i

Danach existieren folgende Variablen mit folgender Zuordnung: zahl.1 = 9, zahl.2 = 8, zahl.3 = 7 ... Per Konvention wird unter dem Index 0 die Anzahl der gespeicherten Elemente abgelegt. Mit drop zahl. können dann alle elf Variablen der Form zahl.i mit einem Schlag entfernt werden.

Nicht jeder Index muß verwendet werden; nicht zugewiesene Variablen belegen keinen Speicherplatz. Der folgende Code erzeugt ein spärlich besetztes Array:

a = 2
do 5
   b = 2*a-1
   p.a = b
   a = b
end

Nach dem Ablauf existieren folgende Variablen mit folgender Zuordnung: p.2 = 3, p.3 = 5, p.5 = 9, p.9 = 17, p.17 = 33.


Diese Art der Variablen wird als Stem-Variablen bezeichnet; der erste Teil einschließlich des ersten Punkts wird als Stem bezeichnet, der Rest als Tail. Der Tail kann auch aus mehreren Symbolen bestehen, die durch Punkte voneinander getrennt werden; auf diese Weise können auch mehrdimensionale Arrays realisiert werden. Die Werte der verwendeten Symbole können beliebig sein; sie sind durchaus nicht auf Zahlen beschränkt.

Persönliche Werkzeuge