Show TOC Anfang des Inhaltsbereichs

Obsolete Anweisungen für Zeichenketten  Dokument im Navigationsbaum lokalisieren

AchtungDie folgenden Anweisungen sind obsolet und stehen nur noch aus Gründen der Kompatibilität zu Releases vor 4.6 bzw. 6.10 zur Verfügung. Die Anweisungen können in älteren Programmen noch gefunden werden, sollten aber nicht mehr verwendet werden.

Durchsuchen mit SEARCH

Die Anweisung SEARCH ist der Vorgänger für die Anweisung FIND, die es ab Release 6.10 gibt.
SEARCH sollte vor Release 7.0 nur noch für Funktionen verwendet werden, die nicht durch die Anweisung FIND abgedeckt werden. Dazu gehören insbesondere  Suchmuster mit speziellen Zeichen.

Seit Release 7.0 sind die Funktionen von SEARCH bis auf das Markieren des gefundenen Musters (Zusatz AND MARK) durch die Einführung von regulären Ausdrücken in der Anweisung FIND abgedeckt. Falls notwendig, kann das Markieren nach dem Finden eines Musters durch Offset-/Längenzugriff selbst programmiert werden.

Im Gegensatz zu FIND kann SEARCH keine Groß- und Kleinschreibung unterscheiden und ist bei großen zu durchsuchenden Texten wesentlich langsamer.

Beispiel

Die Punkte und Sterne bezeichnen spezielle Muster, deren Regeln in der Schlüsselwortdokumentation beschrieben sind.

DATA string(30) TYPE c VALUE 'This is a little sentence.'.

WRITE: / 'Searched', 'SY-SUBRC ', 'SY-FDPOS'.
ULINE /1(26).

SEARCH string FOR 'X'.
WRITE: / 'X', sy-subrc UNDER 'SY-SUBRC',
               sy-fdpos UNDER 'SY-FDPOS'

SEARCH string FOR 'itt   '.
WRITE: / 'itt   ', sy-subrc UNDER 'SY-SUBRC',
                   sy-fdpos UNDER 'SY-FDPOS'

SEARCH string FOR '.e .'.
WRITE: / '.e .', sy-subrc UNDER 'SY-SUBRC',
                  sy-fdpos UNDER 'SY-FDPOS'.

SEARCH string FOR '*e'.
WRITE: / '*e ', sy-subrc UNDER 'SY-SUBRC',
                sy-fdpos UNDER 'SY-FDPOS'.

SEARCH string FOR 's*'.
WRITE: / 's* ', sy-subrc UNDER 'SY-SUBRC',
                sy-fdpos UNDER 'SY-FDPOS'.

Listenausgabe:

SEARCHED SY-SUBRC SY-FDPOS

X            4        0

itt          0       11

.e .         0       15

*e           0       10

s*           0       17

Beispiel

DATA: TYPE c (30) TYPE c VALUE 'This is a fast first example.',
      pos TYPE i,
      off TYPE i.

WRITE / string.

SEARCH string FOR 'ft' ABBREVIATED.
WRITE: / 'SY-FDPOS:', sy-fdpos.

pos = sy-fdpos + 2.
SEARCH string FOR 'ft' ABBREVIATED STARTING AT pos AND MARK.
WRITE / string.
WRITE: / 'SY-FDPOS:', sy-fdpos.
off = pos + sy-fdpos -1.
WRITE: / 'Off:', off.

Listenausgabe:

This is a fast first example.

SY-FDPOS:    10

This is a fast FIRST example.

SY-FDPOS:    4

Off:        15

Es ist hier zu beachten, dass zum Offset sy-fdpos 2 addiert werden muss und die Suche an dieser Position pos begonnen werden muss, um nach Auffinden des Wortes 'fast' das zweite Wort zu finden, das 'ft' enthält. Andernfalls würde das Wort 'fast' erneut gefunden. Der Offset von 'first' bezogen auf den Anfang des Feldes string wird aufgrund von pos und sy-fdpos errechnet.

Teile von Zeichenketten mit MOVE – PERCENTAGE zuweisen

Die folgende Variante der MOVE-Anweisung funktioniert nur bei Feldern des Typs c:

MOVE c1 TO c2 PERCENTAGE p [RIGHT].

Der Prozentsatz p des Feldes c1 wird von der linken Seite links- oder rechtsbündig (falls mit der Option RIGHT angegeben) nach c2 kopiert.

Der Wert von p kann eine Zahl zwischen 0 und 100 sein. Die von f1 zu kopierende Länge wird auf die nächste Ganzzahl auf- oder abgerundet.

Wenn eines der Argumente der Anweisung nicht den Typ c hat, wird der Parameter PERCENTAGE ignoriert.

Beispiel

DATA c1(10) TYPE c VALUE 'ABCDEFGHIJ',
     c2(10) TYPE c.

MOVE c1 TO c2 PERCENTAGE 40.

WRITE c2.

MOVE c1 TO c2 PERCENTAGE 40 RIGHT.

WRITE / c2.

Listenausgabe:

ABCD      

      ABCD

Feldinhalte mit REPLACE WITH ersetzen

Mit der Anweisung REPLACE werden Zeichenketten in Feldern durch andere Zeichenketten ersetzt.

REPLACE str1 WITH str2 INTO c [LENGTH len].

 

REPLACE sub_string WITH new INTO dobj
                   [IN {BYTE|CHARACTER} MODE]
                   [LENGTH len].


Die Anweisung sucht im Feld c nach dem ersten Vorkommen der ersten len Positionen des Suchmusters str1. Ist keine Länge angegeben, so wird das Suchmuster str1 in seiner vollen Länge gesucht.

Dann ersetzt die Anweisung das erste Vorkommen von str1 im Feld c durch die Zeichenkette str2. Wenn eine Länge len angegeben wurde, wird nur der entsprechende Teil des Suchmusters ersetzt.

Wenn der Rückgabewert des Systemfeldes sy-subrc 0 ist, so bedeutet das, dass str1 in c gefunden und durch str2 ersetzt wurde. Ein anderer Rückgabewert zeigt an, dass nichts ersetzt wurde. str1, str2 und len können Variablen sein.

Beispiel

DATA: t(10) TYPE c VALUE 'abcdefghij',
      string LIKE t,
      str1(4) TYPE c VALUE 'cdef',
      str2(4) TYPE c VALUE 'klmn',
      str3(2) TYPE c VALUE 'kl',
      str4(6) TYPE c VALUE 'klmnop',
      len TYPE i VALUE 2.

string = t.
WRITE string.

REPLACE str1 WITH str2 INTO string.
WRITE / string.

string = t.
REPLACE str1 WITH str2 INTO string LENGTH len.
WRITE / string.

string = t.
REPLACE str1 WITH str3 INTO string.
WRITE / string.

string = t.
REPLACE str1 WITH str4 INTO string.
WRITE / string.

Ausgabe:

abcdefghij

abklmnghij

abklmnefgh

abklghij

abklmnopgh

Das Feld stringwird in der letzten Zeile rechts abgeschnitten wird. Das Suchmuster 'cdef' (Länge 4) wird durch 'klmnop' (Länge 6) ersetzt. Dann wird der Rest des Feldes string bis zum Ende aufgefüllt.

Ende des Inhaltsbereichs