View Full Version : 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!
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
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
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
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