-
Suchen/Ersetzen?
Hallo zusammen,
wie realisiere ich am schnellsten eine Suchen/Ersetzen Funktion in einer physischen Datei auf der AS400?
Im konkreten Fall möchte ich in einem Feld der Datei z-B. den Eintrag BRF 20-00-001/002 durch BRF 20-00-001 ersetzen. Leider sind die Einträge immer unterschiedlich lang, z.B. git es auch EF 20-00-001/002.
D.h. ich suche immer '001/002' und will dieses durch '001' ersetzen.
Geht das mit 'Bordmitteln' direkt auf der AS400?
Gruß
Matthias
Gruss
Matthias Hayn
-
Sofern der zu ersetzende String in dem Feld immer an fester Position steht, geht es mit SQL-Mitteln: etwas wie folgt:
1) STRSQL(Sitzung starten)
2) Update LIB/FILE
SET FELD = substr(FELD, 1 , 10)!!
"001"!!substr(FELD,18, 3)
where substr(Feld, 11, 7) = "001/002"
/*Kommentar: sofern 001/002 immer an z. B. Position 11 stehen würde und das Feld 20 Stellen lang wäre */
Ansonsten wüßte ich nur den Weg über ein z. B. Cobolprogramm, daß die Datei Satzweise liest und mit dem wunderbar komfortablen Befehl INSPECT REPLACING arbeitet.
Vielleicht hilft's weiter.
Gruß
Klaus
-
Es geht auch mit SQL aber etwas komplizierter:
update myfile
set feld= substr(feld, 1, posstr(feld, '001/002') - 1) concat '001'
where feld like '%001/002%'
-
Die Funkion posstr ist nicht schlecht, aber was macht man mit der restlichen Zeichenkette hinter dem zu ersetzenden Wert?
-
update myfile
set
feld=substr(feld, 1, posstr(feld, 'ab') - 1) concat '**' concat
substr(feld, posstr(feld, 'ab') + 2, 100 - posstr(feld, 'ab') + 2)
where feld like '%ab%'
das feld ist in diesem fall 100 zeichen lang
die 2 ist in dem fall die länge des strings der ersetzt wird
gruß ronald
[Dieser Beitrag wurde von malzusrex am 10. Juli 2002 editiert.]
-
Danke Ronald, ist schön, an den Problemen anderer mitzuarbeiten und mitzulernen. Den posstr kannte ich in dieser Form bisher nicht.
Gruß
Klaus
-
Hallo!
Sicher läßt sich das Suchen/Ersetzen-Problem am schnellsten per SQL lösen, aber da ich immer auch nach einer RPG-Lösung ausschau halte, verweise ich auf http://www.netshare400.com/cgi-bin/D...&mbr=F.REPLACE . Kennt jemand für RPG noch eine bessere Lösung?
Freundliche Grüße
Matthias
PS: Danke an alle, die hier immer wieder tolle Tips posten.
-
Hallo zusammen,
eine einfache Methode um in RPG einen String zu ersetzen ist die Built-In-Function %Replace.
Anbei ein kleines Beispiel:
D $TextIn S 50 inz('Anfangs-Wert')
D $TextOut S 50 inz(*Blanks)
C eval $TextOut = %Replace('End': $TextIn: 1: 7)
C eval $TextOut = %Replace('End': $TextIn:
C %Scan('Anfangs': $TextIn):
C %len ('Anfangs'))
Das Ergebnis ($TextOut) ist jeweils 'End-Wert'
B.Hauser
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks