-
@Pikachu : Es gibt ja keine doofen Anforderungen sondern nur intelligente Lösungen
-
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(3) dim(4) pos(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(:myip1, 3, '0') concat '.' concat lpad(:myip2, 3, '0') concat '.' concat lpad(:myip3, 3, '0') concat '.' concat lpad(:myip4, 3, '0');
Herzliche Grüße
Rainer Ross
-
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
-
Hallo.
Danke noch mal an alle für die interessanten Lösungswege 
Ich wünsche allen ein schönes Wochenende.
Ralf
-
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.
-
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
-
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
-
By ExAzubi in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 02-07-14, 14:13
-
By Liebhoff in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 01-03-02, 21:24
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 12-10-01, 10:46
-
By berti in forum NEWSboard Windows
Antworten: 1
Letzter Beitrag: 03-09-01, 07:27
-
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
-
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