REXX: Variablen
Aus Wikibooks
[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.