[NEWSboard IBMi Forum]
  1. #1
    cicero22 Besucher/Guest

    Hausnummer selektieren

    Hallo *ALL!

    Hat jemand von Euch eine Idee oder Listing oder Vorschlag NUR die Hausnummer aus der Strasse zu entnehmen. Gerne per SQL - gerne aber auch in ILE RPG. Natürlich gibt es so paar Geschichten wie z.B. Gersprenzweg 1a oder Mühlenstr. 17-21 oder Neuendorfer Strasse 26/4. Naja - die Aushahmen halt.

    Viele Grüsse aus dem sonnigen Nürnberg

    dirk

  2. #2
    Registriert seit
    Dec 2000
    Beiträge
    99
    Hallo Dirk,

    ich würde es so angehen:
    Den Strassennamen in Token unterteilen
    (Funktion strtok in Q2CLE); das erste Token, das mit 0-9 anfängt, wäre dann die
    Hausnummer.

    Gruss aus dem ebenfalls sonnigen Darmstadt

    Torsten

  3. #3
    Registriert seit
    Jul 2002
    Beiträge
    151
    Das mit dem 1 Token das numerisch beginnt, ist nicht so optimal,
    siehe "Straße des 17. Juni 102" das letzte wäre vielleicht besser?
    Auch "Hof 3 Gebäude 5" bringt Probleme.
    Ich habe aber auch keine Idee das maschinell besser zu machen. Zumindest nicht mit einem einzigen Befehl.
    Gruß Holger

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

    Haus-Nummer

    Hallo Dirk,

    mit einem einzigen Statement klappt das nicht!
    Hier ist ein Beispiel für eine Funktion, die die Haus-Nr. ermittelt.
    (ab Release V5R1M0)
    Einige Sonderfälle sind abgefangen für andere Sonderfälle kannst Du ja die Funktion modifizieren.

    Prototyp:
    PHP-Code:
    D HausNummer      PR            10A                          
    D   PPStr                             like
    (Str) const 
    PHP-Code:
    P HausNummer      B                                                       
                                                                              
     
    Procedure Interface                                                    
    D HausNummer      PI            10A                                       
    D   PPStr                             like
    (Str) const                   
      
     * 
    Hilfs-Felder                                                                        
    D RtnHausNr       S             10A                                       
    D Index           S              3U 0                                     
                                                                              
     
    Ermitteln Haus-Nr.                                                    
     /
    Free    
         
    if %CheckR(' 'PPStr) = %Len(PPStr);    
            Return *
    Blanks;                       
         Endif;                                   
                                                                    
       
    Monitor;                                                               
         For 
    Index = %Scan(' 'PPStr1to %CheckR(' 'PPStr)              
                                          
    by %Scan(' 'PPStrIndex+1)-Index;
                                                                              
           If    %
    Subst(PPStrIndex+11) >= '0'                             
             
    and %Subst(PPStrIndex+11) <= '9';                            
             
    RtnHausNr = %Subst(PPStrIndex+1: %CheckR(' 'PPStr) - Index); 
           EndIf;   
                                                                     
           if  %
    Scan(' 'PPStrIndex 1) > %CheckR(' 'PPStr);   
               Return 
    RtnHausNr;                                     
           Endif;                                                    
                                                                     
         EndFor;                                                     
                                                                     
       
    on-Error;                                                     
         Return *
    Blanks;                                             
       
    EndMon;                                                       
                                                                     
         Return *
    Blanks;                                             
     /
    End-Free                                                       
                                                                     
    P HausNummer      E 
    Die Funktion liefert für folgende Beispiele folgende Ergebnisse:
    PHP-Code:
    TestInSerT 234  --> 234
    TestInsert 1A   
    --> 1A
    TEST Ins 4
    /25b  --> 4/25B
    Test 2 x        
    --> 2 x
    T e s t 13245   
    --> 12345
    TestinsertABCDE 
    --> *Blanks
    TESTInsert A23  
    --> *Blanks
    TestI           
    --> *Blanks
    Test XY z 23a4  
    --> 23a4 
    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

Similar Threads

  1. Selektieren Sätze im LF-File
    By malzusrex in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 19-05-03, 13:48

Berechtigungen

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