REXX: Mathematisches und logisches
Mathematische Grundoperationen
[Bearbeiten]- Addieren:
a = 2+3 ==> a == 5 a = 2++3 ==> a == 5
- Multiplizieren:
a = 2*3 ==> a == 6
- Subtrahieren:
a = 2-3 ==> a == -1 a = 2--3 ==> a == 5
- Division:
a = 2 / 3 ==> a == 0.66667
- Potenzieren:
Um bn zu berechnen benutzt man b**n
a = 2**3 ==> a == 8
Modulo
[Bearbeiten]Man kann nicht alles so teilen, daß gebrochene Zahlen herauskommen; wenn man zum Beispiel 33 Eier auf 4 Personen aufteilen will, ohne die Eier zu zerteilen, so bleibt ein Ei übrig. Die Aufteilung ist in diesem Fall 8 Eier pro Person, und 1 Ei, das man nicht aufteilen kann. Die Operationen heißen Div (ganzzahlige Division) und Modulo und werden in REXX durch die Symbole % und // repräsentiert:
- Div
a = 33 % 4 ==> a == 8
- Mod
a = 33 // 4 ==> a == 1
In der Praxis benötigt man die Modulo-Operation sehr oft für Datumsberechnungen, z.B. 26.01.2006 war ein Mittwoch. Der 27.04.2006 ist genau 90 Tage später. 90 // 7 = 6 (90:7=84 Rest 6) Daraus folgt, Mittwoch + 6 Tage = Dienstag
Bit-Funktionen
[Bearbeiten]Die folgenden drei Funktionen vergleichen die Zeichen bitweise. Ein Bit kann dabei den Zustand 0 oder 1 haben. Jeweils 8 Bit zusammengefasst ergeben ein Zeichen. Das Zeichen "A" hat zum Beispiel den entsprechenden binären Code 01000001 (x2b(c2x('A'))).
- bitand(a,b)
Beispiel: 01011010 und 01101101 ergeben 01001000
a = bitand("Z","m") ==> a == "H"
- bitor(a,b)
Beispiel: 01011010 und 01101101 ergeben 01111111
a = bitor("Z","m") ==>
- bitxor(a,b)
Beispiel: 01011010 und 01101101 ergeben 00110111
a = bitor("Z","m") ==> "7"
Um diese Operationen mit dezimalen Zahlen benutzen zu können, muß man sie vorher und nachher konvertieren:
a = D2C(5) b = D2C(9) x = C2D(bitand(a,b)) ==> x == 1 y = C2D(bitor(a,b)) ==> y == 13 z = C2D(bitxor(a,b)) ==> z == 12
Logische Operatoren
[Bearbeiten]Die logischen Operatoren AND (&), OR (|) und XOR (ausschließliches Oder, &&) verlangen und liefern die exakten Werte 0 (falsch) oder 1 (wahr). Es findet keine „Kurzschlussauswertung“ statt: enthält ein logischer Ausdruck mehrere Funktionsaufrufe, so werden alle Aufrufe tatsächlich ausgeführt, auch wenn sich der Wert des Ausdrucks nicht mehr ändern kann.