[NEWSboard IBMi Forum]

Thema: chekr in rpg

  1. #1
    Registriert seit
    Aug 2007
    Beiträge
    243

    chekr in rpg

    Folgendes Problem: Bekomme aus einer angelieferten csv-Datei in einem Feld Titel, Vorname, Nachname geliefert und soll den Nachnamen filtern.

    Datenformatbeispiel:
    "Mag. vorname nachname "
    "vorname nachname "

    Wie bekomme ich den Nachnamen in rpg am besten in ein eigenes Feld?

    Da ich diese Funktion in einem alten RPGIII Programm einbauen muss, bitte um Info, wie das in RPGIII am besten zu lösen geht.

    Danke im Voraus für die Hilfe.

  2. #2
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Moin,

    Du kannst das Feld als Tabelle definieren und in Schleife von hinten das 1 Feld <> Blank suchen
    danach, ebenfals rückwärts, das 1 Blank

    Probleme machen dann nur noch:

    Hans Dieter Meyer --> Meyer
    Magret Möller Schulz --> Möller Schulz

    Gruß
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  3. #3
    Registriert seit
    Aug 2007
    Beiträge
    243
    So eine Lösung wollte ich eben vermeiden. Ich dachte, es geht auch irgendwie mit CHEKR

  4. #4
    Registriert seit
    May 2002
    Beiträge
    1.121
    Das ganze bekommst du nur mit "unschärfe" hin. Wenn Titel, Vorname, Nachname immer nur ein Wort sind, dann also Anregung eventuell so:
    PHP-Code:
    d Text            s            500    Inz'Dr.Hugo Müller' )
    d Nachname        s             50                           
    d                                                            
    d Index           s             10  0                        
     
    /free                                                       
       
    For Index = %Len( %TrimText )) downto 1;                
        If %
    SubSt( %TrimText ): Index 1) = ' ';              
          
    Leave;                                                 
        EndIf;                                                   
       EndFor;                                                   
       
    Nachname = %SubStTextIndex+150-Index);              
       *
    InLr = *on;                                              
     /
    end-free 
    Hat der Nachname zb. ein von oder was in der Art, dann geht es mit dem Beispiel nicht mehr.

    Gruß
    Ronald

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    CHEKR oder CHECK erwarten eine Byteliste der gültigen Zeichen.
    Du kannst also mühsam eine Tabelle aller Zeichen (Groß/Klein/Umlaute) erstellen, wobei gerade Umlaute und Sonderzeichen CCSID-relevant sind und nicht im Code vorkommen sollten.
    Außerdem prüft der Befehl jedes Byte gegen jedes Byte der Tabelle.

    Der einfachste Weg ist wirklich eine Schleife und sicherlich auch der schnellste.
    Die obige Schleife musst du halt nur nach RPGIII konvertieren.

    Ggf. kann man ja per SCAN schon mal den Aufsetzpunkt für das 1. Blank ermitteln.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Oct 2013
    Beiträge
    171
    Ja, Programmieren ist halt doch Arbeit. :-)
    Die C-Funktion "strtok" könnte hier etwas helfen, ihr sind die Anzahl der Blanks zwischen Worten egal.
    Hier löst der Autor eine sehr ähnliche Aufgabe: http://www.mcpressonline.com/program...in-rpg-iv.html

  7. #7
    Registriert seit
    Jun 2001
    Beiträge
    1.975
    Ich will ja nicht meckern, aber ...
    Da ich diese Funktion in einem alten RPGIII Programm einbauen muss, bitte um Info, wie das in RPGIII am besten zu lösen geht.

    Empfehle programmer400 jedoch die Funktionalität aus zu lagern und einen der Pgm Bsp's zu verwenden
    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  8. #8
    Registriert seit
    Aug 2007
    Beiträge
    243
    Danke für die Tipps, habs mit einer Schleife gelöst.

Berechtigungen

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