Vergleiche zwischen Bitfolgen 

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.