Vergleiche zwischen Zeichenketten 

Ähnlich wie es spezielle Anweisungen für die Verarbeitung von Zeichenketten gibt, können spezielle Vergleiche mit Zeichenketten der Typen C, D, N und T durchgeführt werden. Folgende Operatoren vergleichen Zeichenketten:

<operator>

Bedeutung

CO

enthält nur

CN

enthält nicht nur

CA

enthält irgendein

NA

enthält kein

CS

enthält Zeichenkette

NS

enthält Zeichenkette nicht

CP

enthält Muster

NP

enthält Muster nicht

Bei diesen Vergleichen werden keine Konvertierungen durchgeführt, sondern die Zeichen der Zeichenketten interpretiert. Die Operatoren haben folgende Funktionen:

CO (Contains Only)

Der logische Ausdruck

<f1> CO <f2>

ist erfüllt, wenn <f1> nur Zeichen aus <f2> enthält. Der Vergleich berücksichtigt Groß-/Kleinschreibung. Nachfolgende Leerzeichen werden nicht ignoriert. Ist der Vergleich wahr, enthält das Systemfeld SY-FDPOS die Länge von <f1>. Ist er falsch, enthält SY-FDPOS den Offset des ersten Zeichens von <f1>, das nicht in <f2> enthalten ist.

CN (Contains Not only)

Der logische Ausdruck

<f1> CN <f2>

ist erfüllt, wenn <f1> nicht nur Zeichen aus <f2> enthält. Der Vergleich berücksichtigt Groß-/Kleinschreibung. Nachfolgende Leerzeichen werden nicht ignoriert. Ist der Vergleich wahr, enthält SY-FDPOS den Offset des ersten Zeichens von <f1>, das nicht in <f2> enthalten ist. Ist der Vergleich falsch, enthält das Systemfeld SY-FDPOS die Länge von <f1>.

CA (Contains Any)

Der logische Ausdruck

<f1> CA <f2>

ist erfüllt, wenn <f1> mindestens ein Zeichen aus <f2> enthält. Der Vergleich berücksichtigt Groß-/Kleinschreibung. Ist der Vergleich wahr, enthält SY-FDPOS den Offset des ersten Zeichens von <f1>, das auch in <f2> enthalten ist. Ist er falsch, enthält SY-FDPOS die Länge von <f1>.

NA (contains Not Any)

Der logische Ausdruck

<f1> NA <f2>

ist erfüllt, wenn <f1> kein Zeichen aus <f2> enthält. Der Vergleich berücksichtigt Groß-/Kleinschreibung. Ist der Vergleich wahr, enthält das Systemfeld SY-FDPOS die Länge von <f1>. Ist er falsch, enthält SY-FDPOS den Offset des ersten Zeichens von <f1> das in <f2> entalten ist.

CS (Contains String)

Der logische Ausdruck

<f1> CS <f2>

ist erfüllt, wenn <f1>, die Zeichenkette <f2> enthält. Nachfolgende Leerzeichen werden ignoriert und der Vergleich berücksichtigt keine Groß-/Kleinschreibung. Ist der Vergleich wahr, enthält SY-FDPOS den Offset von <f2> in <f1>. Ist er falsch, enthält das Systemfeld SY-FDPOS die Länge von <f1>.

NS (contains No String)

Der logische Ausdruck

<f1> NS <f2>

ist erfüllt, wenn <f1> die Zeichenkette <f2> nicht enthält. Nachfolgende Leerzeichen werden ignoriert und der Vergleich berücksichtigt keine Groß-/Kleinschreibung. Ist der Vergleich wahr, enthält das Systemfeld SY-FDPOS die Länge von <f1>. Ist er falsch, enthält SY-FDPOS den Offset von <f2> in <f1>.

CP (Contains Pattern)

Der logische Ausdruck

<f1> CP <f2>

ist erfüllt, wenn <f1> das Muster <f2> enthält. Ist <f2> vom Typ C, können Sie folgende Maskenzeichen innerhalb von <f2> verwenden:

Nachfolgende Leerzeichen werden ignoriert und der Vergleich berücksichtigt keine Groß-/Kleinschreibung. Ist der Vergleich wahr, enthält SY-FDPOS den Offset von <f2> in <f1>. Ist er falsch, enthält das Systemfeld SY-FDPOS die Länge von <f1>.

Um anzuzeigen, daß ein Zeichen innerhalb von <f2> exakt verglichen werden soll, kann man das Fluchtsymbol # setzen. Mit Hilfe des Fluchtsymbols # kann man folgende Zeichen suchen:

NP (contains No Pattern)

Der logische Ausdruck

<f1> NP <f2>

ist erfüllt, wenn <f1> das Muster <f2> nicht enthält. Innerhalb von <f2> können die gleichen Maskenzeichen und Fluchtsymbol verwendet werden wie beim Operator CP.

Nachfolgende Leerzeichen werden ignoriert und der Vergleich berücksichtigt keine Groß-/Kleinschreibung. Ist der Vergleich wahr, enthält das Systemfeld SY-FDPOS die Länge von <f1>. Ist er falsch, enthält SY-FDPOS den Offset von <f2> in <f1>.

DATA: f1(5) TYPE c VALUE <f1>,

      f2(5) TYPE c VALUE <f2>.

IF f1 <operator> f2.
   WRITE: /  'Vergleich wahr, SY-FDPOS=', sy-fdpos.
ELSE.
   WRITE: /  'Vergleich falsch, SY-FDPOS=', sy-fdpos.
ENDIF.

Die folgende Tabelle enthält eine Übersicht darüber, welche Ergebnisse man bei der Ausführung dieses Programms erhält, je nachdem welche Operatoren und Werte der Felder F1 und F2 verwendet werden.

<f1>

<operator>

<f2>

Ergebnis

SY-FDPOS

'BD   '

CO

'ABCD '

wahr

5

'BD   '

CO

'ABCDE'

falsch

2

'ABC12'

CN

'ABCD '

wahr

3

'ABABC'

CN

'ABCD '

falsch

5

'ABcde'

CA

'Bd   '

wahr

1

'ABcde'

CA

'bD   '

falsch

5

'ABAB '

NA

'AB   '

falsch

0

'ababa'

NA

'AB   '

wahr

5

'ABcde'

CS

'bC   '

wahr

1

'ABcde'

CS

'ce   '

falsch

5

'ABcde'

NS

'bC   '

falsch

1

'ABcde'

NS

'ce   '

wahr

5

'ABcde'

CP

'*b*'

wahr

1

'ABcde'

CP

'*#b*'

falsch

5

'ABcde'

NP

'*b*'

falsch

1

'ABcde'

NP

'*#b*'

wahr

5