-
gepackte Zahl aus String holen
Hi Profis,
gibt es eine 'einfache' Möglichkeit eine gepackte Zahl numerisch aus einem string zu holen?
Ich habe : einen String, 128 byte
Die Startpos. des gepack Numerischen Felders,
Die Endepos. des gepackt Numerischen Feldes sowie
die Anzahl Nachkommastellen
Das ganze soll in ein 15,6 Feld Numerisch
einer ne Idee
Danke
ILEMax
-
Du könntest versuchen, eine DS darüber zu legen und die stelle von/bis als Packed-Zahl zu definieren.
-
Sofern die Position des gepackten Feldes immer gleich ist, ist eine Datenstruktur die einfachste Lösung.
Eine andere Lösung wäre, den String in Hex zu konvertieren, die numerischen Werte mittels Substring zu selektieren und in das entsprechende Format konvertieren.
Mit der SQL-Funktion HEX können die HEX-Werte ermittelt werden.
Bei dieser Methode ist allerdings darauf zu achten, dass im letzten Halbbyte das Vorzeichen ausgegeben wird (F/D). Dieses Vorzeichen muss richtig interpretiert werden.
Birgitta
-
Eine DS drüber geht nicht, da der String sich 150 - 200 mal ändert und immer andere Startpos / Längen hat.
@B.Hauser
Wie meinst du das mit
den String in Hex zu konvertieren, die numerischen Werte mittels Substring zu selektieren und in das entsprechende Format konvertieren.
%subst(Hexstring:1:länge-1) muß ich wie konvertieren ?
Gruß
Euer ILEMax
-
... geht nicht gibts nicht!
Code:
d huddle ds qualified
d maybePacked 1 8p 6
d modder s 8 inz(x'0000000000000000')
/free
monitor;
huddle = %subst(shudder:start:length);
// Glück gehabt, jetzt stehts in huddle.maybePacked drin
on-error;
// das konnt ja nix werden
endmon;
/end-free
wenn shudder zu kurz ist, muss man links noch die passende Länge modder davor pappen.
D*B
der schon wieder mit Brechreiz kämpfen muss
Zitat von ILEMax
Eine DS drüber geht nicht, da der String sich 150 - 200 mal ändert und immer andere Startpos / Längen hat.
@B.Hauser
Wie meinst du das mit
%subst(Hexstring:1:länge-1) muß ich wie konvertieren ?
Gruß
Euer ILEMax
-
Kurze Erläuterung zum Prob.
ich bekomme demnächst mind. 150 unterschiedliche Dateien geliefert.
Der Aufbau ist ein String
Zu jeder Datei gibt es eine Zusatz Datei
die quasi die interne DDS ist.
Jede Datei ist immer wieder anders.
Ich wollte erst aus der 'quasi DDS' eine DS machen und immer das PGM zur Laufzeit neu wandeln, das darf ich aber so nicht lösen. Ich soll die Feldinhalte so aus dem String holen.
daher ...
Wenn ich davon ausgehe das mein String in shudder steht, wofür brauch ich dann modder ?
Gruß
Max
-
... wenn das Feld in shudder immer die "richtige" Länge hat, brauchst du das nicht;
D*B
Zitat von ILEMax
Kurze Erläuterung zum Prob.
ich bekomme demnächst mind. 150 unterschiedliche Dateien geliefert.
Der Aufbau ist ein String
Zu jeder Datei gibt es eine Zusatz Datei
die quasi die interne DDS ist.
Jede Datei ist immer wieder anders.
Ich wollte erst aus der 'quasi DDS' eine DS machen und immer das PGM zur Laufzeit neu wandeln, das darf ich aber so nicht lösen. Ich soll die Feldinhalte so aus dem String holen.
daher ...
Wenn ich davon ausgehe das mein String in shudder steht, wofür brauch ich dann modder ?
Gruß
Max
-
Das Feld in shudder ist alles mögliche.
daher kann ich mit der 'richtigen' länge z.zt. nix anfangen.
Von 1 bis 15 ist alles möglich (ja wirklich, 1 Stelle gepackt gibt es !)
Muß ich dann huddle1 bis huddle8 definieren mit der Unterdefinition 1 1 p,
1 2 p ... bis 1 8 p ?
nochmal Danke
Max
-
... deswegen heißt das ja shudder, aber du muss ja zumindest wissen wie lang (in Byte) das entsprechende Feld ist:
huddle = %subst(modder:1:8-length)
+ %subst(shudder:start:length);
D*B
Zitat von ILEMax
Das Feld in shudder ist alles mögliche.
daher kann ich mit der 'richtigen' länge z.zt. nix anfangen.
Von 1 bis 15 ist alles möglich (ja wirklich, 1 Stelle gepackt gibt es !)
Muß ich dann huddle1 bis huddle8 definieren mit der Unterdefinition 1 1 p,
1 2 p ... bis 1 8 p ?
nochmal Danke
Max
-
Ok, danke, das versuch ich
super.
Schönen Jahreswechsel
(an alle )
Euer
ILEMax
-
Zitat von ILEMax
@B.Hauser
Wie meinst du das mit
%subst(Hexstring:1:länge-1) muß ich wie konvertieren ?
Gruß
Euer ILEMax
z.B. so:
Code:
/Free
Exec SQL Set :MyHexString = substr(Hex(:MyString), StartPos*2, Laenge*2-1);
/End-Free
Birgitta
-
Vielleicht so, aber ohne Gewähr!
PHP-Code:
DALPHA DS
DPACK0 15P 0
DPACK1 15P 1 OVERLAY(PACK0)
DPACK2 15P 2 OVERLAY(PACK0)
DPACK3 15P 3 OVERLAY(PACK0)
DPACK4 15P 4 OVERLAY(PACK0)
DPACK5 15P 5 OVERLAY(PACK0)
DPACK6 15P 6 OVERLAY(PACK0)
DPACK S 15P 6 INZ
DHEX0 S INZ(*ALLX'00') LIKE(ALPHA)
DTEXT S 128A INZ(X'ABCDEF987654321DEF')
DSTART S 5P 0 INZ(4)
DLEN S 1P 0 INZ(5)
DNK S 1P 0 INZ(2)
D
C EVAL ALPHA = %SUBST(HEX0:1:%LEN(ALPHA)-LEN)
C + %SUBST(TEXT:START)
C SELECT
C NK WHENEQ 0
C *ZERO ADD PACK0 PACK
C NK WHENEQ 1
C *ZERO ADD PACK1 PACK
C NK WHENEQ 2
C *ZERO ADD PACK2 PACK
C NK WHENEQ 3
C *ZERO ADD PACK3 PACK
C NK WHENEQ 4
C *ZERO ADD PACK4 PACK
C NK WHENEQ 5
C *ZERO ADD PACK5 PACK
C NK WHENEQ 6
C *ZERO ADD PACK6 PACK
C OTHER
C MOVE *ZERO PACK
C ENDSL
C SETON LR
Similar Threads
-
By e_sichert in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 07-11-06, 15:25
-
By edig in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 07-07-06, 10:51
-
By codierknecht in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 03-07-06, 15:25
-
By antonkuh in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 24-04-06, 10:37
-
By rebe in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 19-05-05, 16:34
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