Mit den Operatoren O, Z und M (siehe Schlüsselwortdokumentation) lässt sich die Bitfolge, die der erste Operand im Speicher darstellt mit der Bitfolge des zweiten Operanden vergleichen.
Achtung! Das folgende Programm wird in Unicode-Systemen nicht mehr unterstützt. 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.