Mit den folgenden drei Operatoren läßt sich die Bitfolge, die der erste Operand im Speicher darstellt mit der Bitfolge des zweiten Operanden vergleichen:
<operator> |
Bedeutung |
O |
Bits sind 1 |
Z |
Bits sind 0 |
M |
Bits sind 0 und 1 |
Der zweite Operand muß vom Typ X sein. Der Vergleich findet über die Länge des zweiten Operanden statt. Der erste Operand wird nicht nach Typ X konvertiert.
Die Operatoren erfüllen folgende Funktionen:
O (Bits sind One)
Der logische Ausdruck
<f> O <hex>
ist erfüllt, wenn die in <hex> mit 1 gefüllten Bitpositionen auch in <f> mit 1 gefüllt sind. In Bezug zu
Mengenoperationen mit Bitfolgen ist dieser Vergleich gleichbedeutend zur Abfrage, ob die durch <f> dargestellte Menge eine Obermenge der durch <hex> dargestellten Menge ist.Z (Bits sind Zero)
Der logische Ausdruck
<f> Z <hex>
ist erfüllt, wenn die in <hex> mit 1 gefüllten Bitpositionen auch in <f> mit 0 gefüllt sind.
M (Bits sind Mixed)
Der logische Ausdruck
<f> M <hex>
ist erfüllt, wenn mindestens eine der in <hex> mit 1 gefüllten Bitpositionen in <f> mit 1 und mindestens eine mit 0 gefüllt ist.
REPORT demo_log_expr_bits .
DATA: text(1) TYPE c VALUE 'C',
hex(1) TYPE x,
i TYPE i.
hex = 0.
DO 256 TIMES.
i = hex.
IF text O hex.
WRITE: / hex, i.
ENDIF.
hex = hex + 1.
ENDDO.
Die Listenausgabe sieht folgendermaßen aus:
00 0
01 1
02 2
03 3
40 64
41 65
42 66
43 67
In diesem Beispiel wird die Bitfolge des Zeichens 'C' mit allen hexadezimalen Zahlen HEX zwischen '00' und 'FF' (255 im Dezimalsystem) mit Hilfe des Operators O verglichen. Der Dezimalwert von HEX wird mit Hilfe der automatischen Typkonvertierung während der Zuweisung von HEX zu I ermittelt. Ist der Vergleich wahr, erscheinen die hexadezimale Zahl und ihr Dezimalwert auf dem Bildschirm. Die folgende Tabelle zeigt die Bitfolgen dieser Zahlen.
Hexadezimal |
Dezimal |
Bitfolgen |
00 |
0 |
00000000 |
01 |
1 |
00000001 |
02 |
2 |
00000010 |
03 |
3 |
00000011 |
40 |
64 |
01000000 |
41 |
65 |
01000001 |
42 |
66 |
01000010 |
43 |
67 |
01000011 |
Die Bitfolge des Zeichens 'C' ist bei der hier verwendeten Plattform durch seinen ASCII-Code 67 festgelegt. Es erscheinen genau die Zeichen in der Listenausgabe, bei denen die gleiche Bitposition mit 1 gefüllt ist, wie in der Bitfolge von 'C'. Die Bitfolge 01000011 ist die Obermenge dieser Bitfolgen.