Anwendungsgebiet: String-Bearbeitung
Die Funktion EXTRACT-FIELD( ) trennt von einem Eingabe-String ein Feld ab.
Format
EXTRACT-FIELD( ) |
STRING = string_ausdruck ,FIELD-NUMBER = arithm_ausdruck ,FIELD-SEPARATOR = *ANY-BLANKS / string_ausdruck |
Ergebnistyp
STRING
Eingabeparameter
STRING = string_ausdruck
Bezeichnet einen Eingabe-String.
FIELD-NUMBER = arithm_ausdruck
Bezeichnet die Feldnummer.
FIELD-SEPARATOR =
Gibt den Separator an. Separatoren sind nicht Teil des abgetrennten Felds.
FIELD-SEPARATOR = *ANY-BLANKS
Der Defaultwert bezeichnet ein oder mehrere Leerzeichen.
(Die Angabe ' *' (zwei Leerzeichen vor dem *) wird kompatibel unterstützt).
FIELD-SEPARATOR = string_ausdruck
string_ausdruck ist der Separator.
string_ausdruck muss hier allerdings ein einfacher regulärer Ausdruck sein (siehe dazu Handbuch „POSIX Kommandos“ [18]).
Ergebnis
Abgetrenntes Feld als String. Gibt es das angegebene Feld nicht, liefert die Funktion einen Leerstring.
Fehlermeldung
SDP0472 DIE OPERANDEN STRING UND FIELD-SEPARATOR DUERFEN KEIN NULLBYTE (X'00') ENTHALTEN SDP0474 SYNTAXFEHLER IN REGULAEREM AUSDRUCK FUER OPERAND FIELD-SEPARATOR SDP0485 'FIELD-NUMBER' MUSS GROESSER NULL SEIN
Beispiele
Beispiel 1
/DECLARE-VARIABLE mylist(TYPE=*STRING),MULTIPLE-ELEMENT=*LIST /mylist = 'Pencil 100',WRITE-MODE=*EXTEND /mylist = 'Table 5',WRITE-MODE=*EXTEND /mylist = 'Lamp 20',WRITE-MODE=*EXTEND /mylist = 'Paper 75',WRITE-MODE=*EXTEND /mylist = 'DVD 1000',WRITE-MODE=*EXTEND /mylist = 'Envelope 1500',WRITE-MODE=*EXTEND /FOR x = *LIST(mylist) / article = EXTRACT-FIELD(STRING=x,FIELD-NUMBER=1) / quantity = EXTRACT-FIELD(STRING=x,FIELD-NUMBER=2) / WRITE-TEXT '&quantity of &article are available' /END-FOR
Ausgabe:
100 of Pencil are available 5 of Table are available 20 of Lamp are available 75 of Paper are available 1000 of DVD are available 1500 of Envelope are available
Beispiel 2
/A=EXTRACT-FIELD(STRING='field1,field3,field4',FIELD-NUMBER=3,FIELD-SEPARATOR=',') /SHOW-VARIABLE A A = field4