Anfang des InhaltsbereichsVergleiche zwischen Bitfolgen Dokument im Navigationsbaum lokalisieren

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.

Beispiel

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.

Ende des Inhaltsbereichs