[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    Dec 2004
    Beiträge
    204
    @Pikachu : Es gibt ja keine doofen Anforderungen sondern nur intelligente Lösungen

  2. #2
    Registriert seit
    Aug 2014
    Beiträge
    181
    Hallo Forum,

    ab 7.1 TR9 oder 7.2 TR1 geht es auch mit der Funktion LPAD in SQL. Ich habe das Beispiel von Baldur Fürchau entsprechend modifiziert
    PHP-Code:
    dcl-ds  dsmyip;
             
    myip1      zoned(3);    
             
    myip2      zoned(3);
             
    myip3      zoned(3);
             
    myip4      zoned(3);
             
    myip       zoned(3dim(4pos(1);
    end-ds;

    dcl-s   myadr      varchar(16);
    dcl-s   result     varchar(16);
    dcl-s   xi         uns(5);
    dcl-s   xp         uns(5);
    dcl-s   xs         uns(5);

    clear dsmyip;
    myadr  '48.16.0.25';
    myadr += '.';
    xs    1;

    for 
    xi 1 to 4;
      
    xp   = %scan('.':myadr:xs);
      
    myip(xi) = %dec(%subst(myadr:xs:xp-xs):3:0);
      
    xs xp 1;
    endfor;

    exec sql set :result lpad(:myip13'0'concat '.' concat
                           lpad
    (:myip23'0'concat '.' concat
                           lpad
    (:myip33'0'concat '.' concat
                           lpad
    (:myip43'0'); 
    Herzliche Grüße
    Rainer Ross

  3. #3
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Es fürhren viele Wege nach Rom und obwohl normalerweise ich derjenige bin, der sich für die SQL-Version entscheidet, würde ich an dieser Stelle bei RPG bleiben.

    Man kann auch ohne große Konvertierungen (%EditC oder SQL-Funktion) das Ergebnis mit einer entsprechenden Datenstruktur erreichen.

    Code:
    D IPAlt           S             15A   inz('71.6.129.42')               
                                                                           
    D DSIPNeu         DS                                                   
    D     Arr                             Overlay(DSIpNeu)    Dim(4)       
    D       ArrNum                   3S 0 Overlay(Arr)        inz(*Zeros)  
    D       ArrChar                  3A   Overlay(Arr)                     
    D       ArrPkt                   1A   Overlay(Arr: *Next) inz('.')     
    D   IPNeu                       15A   Overlay(DSIPNeu)                 
                                                                           
    D Index           S              3U 0                                  
    D NxtPkt          S              3U 0                                  
    D PrvPkt          S              3U 0                         
     ***********************************************************************
     /Free                                                                 
           For Index = 1 to %Elem(ArrPkt);                                 
               PrvPkt = NxtPkt;                                            
               NxtPkt = %Scan('.': IPAlt: PrvPkt+1);                       
               If NxtPkt > *Zeros;                                         
                  ArrNum(Index) = %Int(%Subst(IPAlt: PrvPkt + 1:           
                                              NxtPkt - PrvPkt - 1));       
               Else;                                                       
                  ArrNum(Index) = %Int(%Subst(IPAlt: PrvPkt + 1));         
               EndIf;                                                      
           EndFor;                                                         
                                                                           
           Dsply ('Alt: ' + IPAlt + ' Neu: ' + IpNeu);                     
                                                                           
           *INLR = *ON;                                                            
     /End-Free
    Wie man's macht ist und bleibt Geschmacksache.

    Birgitta
    Birgitta Hauser

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

  4. #4
    Registriert seit
    Dec 2004
    Beiträge
    204
    Hallo.
    Danke noch mal an alle für die interessanten Lösungswege
    Ich wünsche allen ein schönes Wochenende.
    Ralf

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.695
    Der Aufruf von SQL ist natürlich ein Overhead. Da ist "%editc(Wert:'X')" erheblich schneller.
    Ich bin aber häufiger dafür, durch "intelligente" Definition Arbeitsschritte zu erleichtern.
    Da du ja die Felder schon als Zoned definiert hast, sind diese ja bereits Editiert.
    Durch kannst myipC char(3) dim(4) pos(1); du dir den Edit sparen.
    Durch eine Template-DS, die den Punkt bereits enthält sparst du auch noch den Concat.
    Wie immer, es gibt viele Wege.
    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
    Aug 2014
    Beiträge
    181
    Hallo Forum,

    das nenne ich eine fruchtbare Diskussion um die beste Lösung. Aus allen Beiträgen habe ich etwas gelernt und wertvolle Anregungen erhalten.

    Herzlichen Dank und ein schönes Wochenende

    Rainer Ross
    www.myhofi.com
    Hotels finden - leicht gemacht

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Probier mal ein TRACEROUTE RMTSYS('071.006.129.043') RANGE(1 1) und sieh dir an, wohin die Reise geht:

    Mögliche Leitwege zu 071.006.129.043 (57.6.129.35) mit Schnittstelle *ANY werden untersucht.

Similar Threads

  1. CTE in RPGLE verwndbar?
    By ExAzubi in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 02-07-14, 14:13
  2. DEBUG RPGLE
    By Liebhoff in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 01-03-02, 21:24
  3. F-Bestimmung RPGlE
    By HoScHiE in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 12-10-01, 10:46
  4. IP Adresse
    By berti in forum NEWSboard Windows
    Antworten: 1
    Letzter Beitrag: 03-09-01, 07:27
  5. Programmgenerator RPG/RPGLE
    By Frank in forum NEWSboard Server Software
    Antworten: 0
    Letzter Beitrag: 02-09-01, 11:35

Berechtigungen

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