Die Anweisung SPLIT zerlegt eine Zeichenkette in zwei oder mehrere Zeichenketten:
SPLIT <c> AT <del> INTO <c1> ... <cn>.
Das Feld <c> wird nach den Trennzeichen <del> durchsucht. Die Teile vor und nach den Trennzeichen werden in die Zielfelder <c1> ... <cn> gestellt.
Um alle Teile in verschiedene Zielfelder stellen zu können, benötigt man eine ausreichende Anzahl von Zielfeldern. Anderenfalls wird das letzte Zielfeld mit dem Rest des Feldes <c> gefüllt und enthält auch noch Trennzeichen.
Wenn alle Zielfelder so lang sind, das kein Teil abgeschnitten werden muß, wird SY-SUBRC auf 0 gesetzt, sonst auf 4.
DATA: string(60) TYPE c,
p1(20) TYPE c VALUE '++++++++++++++++++++',
p2(20) TYPE c VALUE '++++++++++++++++++++',
p3(20) TYPE c VALUE '++++++++++++++++++++',
p4(20) TYPE c VALUE '++++++++++++++++++++',
del(3) TYPE c VALUE '***'.
string = ' Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5'.
WRITE string.
SPLIT string AT del INTO p1 p2 p3 p4.
WRITE / p1.
WRITE / p2.
WRITE / p3.
WRITE / p4.
Ausgabe:
Part 1 *** Part 2 *** Part 3 *** Part 4 *** Part 5
Part 1
Part 2
Part 3
Part 4 *** Part 5
Der Inhalt der Felder P1 ...P4 wird vollständig überschrieben und die Felder werden am Ende mit Leerzeichen aufgefüllt.
Eine Zeichenkette kann auch in die Zeilen einer internen Tabelle zerlegt werden:
SPLIT <c> AT <del> INTO TABLE <itab>.
Die Anweisung fügt für jeden Teil der Zeichenkette der Tabelle <itab> eine neue Tabellenzeile hinzu.