[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jul 2005
    Beiträge
    2

    Find/Replace eines Text-Strings mit RPG

    Hallo zusammen,

    eine ganz einfache Frage, aber da ich schon länger nicht mehr auf AS/400 programmiert habe, kriegs ich einfach nicht hin.

    Aufgabenstellung ist:
    einem RPG-Programm sollen per Parameter ein Text-String, der Such- und der Replace-String übergeben werden. Dann soll im Text-String gesucht und der Replace-String ersetzt werden.
    Alternative Variante bzw. Erweiterung: Die Sätze einer Datei sollen sequentiell durchgelesen werden und die Textstrings nach obiger Methode ersetzt werden, dann entweder upgedatet oder noch besser in ein neues Member ausgegeben werden.

    Ich denke dies wurde in der Vergangenheit bereits mehrfach gelöst. Vielleicht hat jemand eine simple Lösung dafür.

    Grüsse,
    Rudolf.

  2. #2
    Registriert seit
    Aug 2001
    Beiträge
    2.875

    %Replace

    Was ist Dein Problem das Suchen und Ersetzen?

    Dies kann relativ einfach mit der Built-in-Funktion %Replace() bewerkstelligt werden.

    %Replace(NeuerString: StartPosition: LängeAlterString)

    Es wird jeweils nur das erste Vorkommen ersetzt. Wenn also alle Vorkommen ersetzt werden müssen, muss eine Schleife programmiert werden.

    Im folgenden Beispiel wird 'ABC' durch 'ZXYDE' ersetzt.
    PHP-Code:
    D Text50          S             50A   inz(*Blanks)    
    D MyString        S             10A   varying         
    D NewString       S             10A   varying         
    D Position        S              5U 0                 
     
    *---------------------------------------------------------
     /
    free                                                                        
        Text50      
    'ABCxyABCvwABC123ABC50';                                    
        
    Dsply Text50;                                                             
        
    MyString    'ABC';                                                      
        
    NewString   'ZXYDE';                                                    
        
    Position    1;                                                          
                                                                                  
        
    DoW  %Scan(MyStringText50Position) <> *Zeros;                         
             
    Text50   = %Replace(NewStringText50:                               
                           %
    Scan(MyStringText50Position): %Len(MyString));    
             
    Dsply Text50;      
        
    Enddo;                                                                    
                                                                                  
        
    Dsply Text50;     
        *
    INLR = *ON;                                                       
     /
    End-Free 
    Falls Du bereits auf Release V5R3M0 bist, kannst Du auch die SQL-Funktion REPLACE verwenden, die alle Vorkommen ersetzt.
    PHP-Code:
    c/EXEC SQL   Set :Text50 Replace(:Text50, :MyString, :NewString)
    C/END-EXEC 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  3. #3
    Registriert seit
    Jul 2005
    Beiträge
    2

    %Replace

    Hallo Birgitta,
    das ging ja schnell mit Deiner Antwort. Dies ist ganau das was ich brauche.
    Jetzt muss ich nur noch ein einfaches I/O-Programm schreiben, satzweise eine Source-Datei durchlesen und bestimmte Strings austauschen. Dann noch ein CLP darüber und fertig. Das krieg ich gerade noch hin.

    Besten Dank.
    Rudolf.

Similar Threads

  1. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 21:51
  2. Bibliotheksliste in RPG IV abfragen
    By timeless in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-01-07, 12:04
  3. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  4. RPG goes Web
    By jth in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-12-06, 11:13

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •