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.