PDA

View Full Version : gepackte Zahl aus String holen



Seiten : [1] 2

ILEMax
28-12-10, 09:44
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

ExAzubi
28-12-10, 19:25
Du könntest versuchen, eine DS darüber zu legen und die stelle von/bis als Packed-Zahl zu definieren.

B.Hauser
29-12-10, 08:02
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

ILEMax
29-12-10, 08:46
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

BenderD
29-12-10, 10:01
... 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

ILEMax
29-12-10, 10:26
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

BenderD
29-12-10, 10:43
... 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

ILEMax
29-12-10, 10:51
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

BenderD
29-12-10, 11:19
... 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

ILEMax
29-12-10, 11:26
Ok, danke, das versuch ich
super.
Schönen Jahreswechsel
(an alle :) )

Euer
ILEMax