Anwendungsgebiet: String-Bearbeitung
Die Funktion REPLACE( ) überschreibt oder ersetzt einen Teilstring innerhalb eines Strings durch einen anderen String. Dabei kann der ursprüngliche String sowohl länger als auch kürzer werden.
Format
REPLACE( ) |
STRING = string_ausdruck1 ,START = 1 / zahl ,REPLACE = string_ausdruck2 ,SUPPRESSED-LENGTH = *REPLACE-LENGTH / zahl |
Ergebnistyp
STRING
Eingabeparameter
STRING = string_ausdruck1
Bezeichnet den String, in dem ein Teilstring ersetzt werden soll.
START = 1 / zahl
Bezeichnet die Position, ab der der (Eingabe-)String überschrieben wird; „zahl“ ist ein positiver Integer-Wert bzw. ein arithmetischer Ausdruck, der zu einem positiven Integer-Wert ausgewertet wird.
REPLACE = string_ausdruck2
Bezeichnet den String, der ab der Startposition eingesetzt wird.
SUPPRESSED-LENGTH =
Gibt an, ob string_ausdruck2 Teile des (Eingabe-)Strings überschreibt oder ersetzt.
SUPPRESSED-LENGTH = *REPLACE-LENGTH
Ab der bei START=.. angegebenen Position werden die folgenden Zeichen durch string_ausdruck2 überschrieben (in der Länge von string_ausdruck2). Gibt es im ursprünglichen String nicht genügend Zeichen zum Überschreiben, werden die restlichen Zeichen von string_ausdruck2 angefügt.
SUPPRESSED-LENGTH = zahl
Bezeichnet die Anzahl von Zeichen, die ab der bei START=.. angegebenen Position unterdrückt werden und für die string_ausdruck2 eingesetzt wird. Ist die angegebene Anzahl ungleich der Länge von string_ausdruck2, hat der Ergebnis-String nicht mehr die gleiche Länge wie der ursprüngliche String.
Ergebnis
Geänderter String
Fehlermeldung
SDP0412 START-POSITION AUSSERHALB MOEGLICHEN BEREICHS SDP0413 NICHT ZULAESSIGE LAENGENANGABE
Beispiele
/A = 'ABCDEFGHIJ' /B = REPLACE(STRING = A, REPLACE = '**') /SHOW-VARIABLE A A = ABCDEFGHIJ /SHOW-VARIABLE B B = **CDEFGHIJ /C = 10 /B = REPLACE(STRING = A, START = C, REPLACE = 'KLMN') /SHOW-VARIABLE B B = ABCDEFGHIKLMN /B = REPLACE(STRING = A, START = 0, REPLACE = '**') SDP0412 START-POSITION AUSSERHALB MOEGLICHEN BEREICHS SDPO431 FEHLER 'SDPO412' IN BUILTIN-FUNCTION 'REPLACE' SDP0239 FEHLER WAEHREND DER AUSWERTUNG DER RECHTEN SEITE DER ZUWEISUNG /A = REPLACE(STRING = A, REPLACE = '****') /SHOW-VARIABLE A A = ****EFGHIJ
Die letzte Zuweisung an die Variable B führt zum Fehler SDP0412, da bei START kein korrekter Wert angegeben wurde.
/WHILE (INDEX(TESTSTRING,X'00') > 0) / TESTSTRING = REPLACE(TESTSTRING,INDEX(TESTSTRING,X'00'),X'40') /END-WHILE
Innerhalb der Variablen TESTSTRING werden alle X’00’ durch Leerzeichen (X’40’) ersetzt.
Beispiele mit dem Operanden SUPPRESSED-LENGTH=..
/A = 'I am the king of the replace()' /B1= 'developer' "REPLACE" /B2 = REPLACE (A,10,B1,4) " 10th position is 'k' " /SHOW-VAR B2 B2 = I am the developer of the replace() /C1 = 'not ' "INSERT" /C2 = REPLACE (A,6,C1,0) " 6th position is 't' " /SHOW-VAR C2 C2 = I am not the king of the replace() /D1 = 'replacement' "OVERWRITE (like before)" /D2 = REPLACE (A,22,D1) " 22th position is 'r' " /SHOW-VAR D2 D2 = I am the king of the replacement