Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

INDEX( ) String suchen

&pagelevel(3)&pagelevel

Anwendungsgebiet: String-Funktionen

Die Funktion INDEX( ) zeigt die Position eines Suchstrings im Gesamtstring an. Der Gesamtstring kann von links nach rechts oder von rechts nach links durchsucht werden; der Ergebniswert bezieht sich immer auf den Anfang des Gesamtstrings.

Format

INDEX( )

STRING = string_ausdruck1

,PATTERN = string_ausdruck2

,DIRECTION = *FORWARD / *REVERSE

,BEGIN-COLUMN = 1 / arithm_ausdruck

,END-COLUMN = *LAST / arithm_ausdruck

Ergebnistyp

INTEGER

Eingabeparameter

STRING = string_ausdruck1
Gesamtstring, der durchsucht wird.

PATTERN = string_ausdruck2
Suchstring, der im Gesamtstring gesucht wird.

DIRECTION =
Suchrichtung

DIRECTION = *FORWARD
Der Gesamtstring wird vorwärts, das heißt von links nach rechts, durchsucht.

DIRECTION = *REVERSE
Der Gesamtstring wird rückwärts, das heißt von rechts nach links, durchsucht.

BEGIN-COLUMN =
Die Suche wird vom Beginn des Gesamtstrings gesehen auf einen bestimmten Spaltenbereich beschränkt. Angegeben wird das erste Zeichen im Gesamtstring an, ab dem die Suche nach dem Suchstring beginnt.
Der durchsuchte String ist leer, wenn der Gesamtstring weniger Zeichen enthält als bei BEGIN-COLUMN angegeben sind.

BEGIN-COLUMN = 1
Die Suche beginnt ab Spalte 1, d.h. der Gesamtstring wird von Anfang an durchsucht.

BEGIN-COLUMN = arithm_ausdruck
Der Gesamtstring wird ab der angegebenen Spalte bzw. ab diesem Zeichen nach dem Suchstring durchsucht.

END-COLUMN =
Die Suche wird vom Ende des Gesamtstrings gesehen auf einen bestimmten Spaltenbereich beschränkt. Angegeben wird das letzte Zeichen im Gesamtstring an, das in die Suche einbezogen wird. Alle nachfolgenden Zeichen werden ignoriert.

END-COLUMN = *LAST
Der Gesamtstring wird bis zum Ende durchsucht.

END-COLUMN = arithm_ausdruck
Der Gesamtstring wird bis zu der angegebenen Spalte bzw. bis zu einschließlich diesem Zeichen nach dem Suchstring durchsucht.

Ergebnis

Integer
Anfangsposition des Suchstrings im Gesamtstring.
Ist der Suchstring im Gesamtstring mehrfach enthalten, zeigt „zahl“ bei Suchrichtung von links nach rechts das erste Auftreten des Suchstrings an, bei Suchrichtung von rechts nach links das Letzte.

0
Der Suchstring ist länger als der Gesamtstring, oder der Suchstring ist nicht im Gesamtstring enthalten.

Fehlermeldungen

SDP0413   NICHT ZULAESSIGE LAENGENANGABE
SDP0493   BEGIN-INDEX, END-INDEX, BEGIN-COLUMN UND END-COLUMN MUESSEN 
          GROESSER NULL SEIN
SDP0498   BEGIN-COLUMN DARF NICHT GROESSER ALS END-COLUMN SEIN 

Beispiel 1

/A = INDEX(STRING = 'ABCDE', PATTERN = 'C')
/SHOW-VARIABLE A
A = 3 
/B = INDEX(STRING = 'ABCDEABC', PATTERN = 'AB')
/SHOW-VARIABLE B
B = 1 
/C = INDEX(STRING = 'ABCDEABC', PATTERN = 'AB', DIRECTION = *REVERSE)
/SHOW-VARIABLE C
C = 6 

Beispiel 2

/STRING = '1080:0:0:0:8:800:200C:417A'
/
/WRITE-TEXT '- FROM LEFT TO RIGHT -'
/START = 1
/REPEAT 
/   WRITE-TEXT '&(START) => &(SUBSTR( STRING, START ))' 
/   START = INDEX( STRING, ':', *FORWARD, START, *LAST ) + 1
/UNTIL ( START == 1 )
/              &* AT THE LAST LOOP ITERATION
/              &* INDEX DOES NOT FIND THE ':'
/              &* AND RETURNED 0
/              &* 1 IS ADDED FROM THIS RETURNED VALUE.
/
/WRITE-TEXT '- FROM RIGHT TO LEFT -'
/END = LENGTH( STRING )
/REPEAT 
/   WRITE-TEXT '&(END) => &(SUBSTR( STRING, 1, END ))' 
/   END = INDEX( STRING, ':', *REVERSE, 1, END ) - 1
/UNTIL ( END <= 0 )
/              &* AT THE LAST LOOP ITERATION
/              &* INDEX DOES NOT FIND THE ':'
/              &* AND RETURNED 0. 
/              &* 1 IS SUBTRACTED FROM THIS RETURNED VALUE.
/
/WRITE-TEXT '- SURROUNDING CUT -'
/START = 1
/END = LENGTH( STRING )
/REPEAT
/   TEXT = '&(START):&(END) => ' // -
/          SUBSTR( STRING, START, END - START + 1 )
/   WRITE-TEXT '&(TEXT)'
/   START = INDEX( STRING, ':', *FORWARD, START, END ) + 1
/ END = INDEX( STRING, ':', *REVERSE, START, END ) - 1/UNTIL ( START > END )

Das Beispiel zeigt, wie ein String schrittweise nach Trennzeichen (hier Doppelpunkt) durchsucht und um die bereits durchsuchte Teilzeichenfolge reduziert werden kann. Die Suche und Reduzierung, die dabei in verschiedenen Richtungen (links nach rechts, rechts nach links und beidseitig) durchgeführt wird, liefert folgende Ausgabe:

- FROM LEFT TO RIGHT -
1 => 1080:0:0:8:800:200C:417A
6 => 0:0:0:8:800:200C:417A
8 => 0:0:8:800:200C:417A
10 => 0:8:800:200C:417A
12 => 8:800:200C:417A
14 => 800:200C:417A
18 => 200C:417A
23 => 417A
- FROM RIGHT TO LEFT -
26 => 1080:0:0:0:8:800:200C:417A
21 => 1080:0:0:0:8:800:200C
16 => 1080:0:0:0:8:800
12 => 1080:0:0:0:8
10 => 1080:0:0:0
8 => 1080:0:0
6 => 1080:0
4 => 1080
- SURROUNDING CUT -
1:26 => 1080:0:0:0:8:800:200C:417A
6:21 => 0:0:0:8:800:200C
8:16 => 0:0:8:800
10:12 => 0:8