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 |