PDA

View Full Version : Gepackte Numerische Werte im Charakterfeld



Michael/400
18-10-07, 08:53
in meiner Datei gibt es ein Feld (8Stellen Character) das numerische gepackte Werte enthät(angeblich 18 Stellen mit 2 Nachkommastellen), dass sieht dann so aus im Query:

FELD
­;æ
­e­
bd
a@

Wie kann ich das entpacken und einen lesbaren Wert daraus machen?

cbe
18-10-07, 11:05
Hallo,

auf der AS400 heißt gepackt, dass je Byte 2 Ziffern untergebracht wird, sowie 1 halbes Byte für das Vorzeichen.

18,2 verstehe ich als 16 Vor- und 2 Nachkommastellen, dies wäre gepackt in 10 Byte unterzubringen, also nicht in einem 8-stelligen CHAR.

Vielleicht meinst Du aber auch Binär?

Dann ich es mit einer Datenstruktur versuchen, wo ein Binär- und das betreffende Char-Feld überlagert sind.
Die RPG-Syntax habe ich aber nicht im Kopf.

Oder ich habe es auch schon gemacht, ein Unterprogramm aufzurufen, wo ich ein char-Feld übergebe und der Eingangsparameter aber numerisch definiert ist. Dann wird die Typprüfung umgangen. (Unschön, würde ich nur als letzte Rettung machen)

Zuerst aber solltest Du das tatsächliche Format herausfinden.

Hoffe das hilft Dir.

Gruß
Christian

Michael/400
18-10-07, 11:57
Angeblich ist es ja binär. Aber damit kann ich noch weniger anfangen wie mit gepackt. Was ist denn 18.2 binär?

cbe
18-10-07, 17:10
keine Ahnung, hier könnte ich nur raten. Das sollte aber derjenige sagen können der die Daten liefert.

Fuerchau
18-10-07, 20:43
Wenn ich mir die Darstellung so betrachte, handlet es sich wohl um eine "intern" beschriebene Datei und mit der kann Query überhaupt nichts anfangen.

Hier hilft ggf. nur noch SQL:

Mit "select hex(feld) from file" mal die interne Darstellung prüfen.

Oder per DSPPFM FILE und F11 auf Hex-Sicht umschalten.

Wenn man weiß, wie die Daten zu verarzten sind, hilft dann ausschließlich SQL:

select
dec(substr(hex(feld), 19, 0) / 100 * case substr(hex(feld), 20, 1) when 'D' then -1 else 1 end
from myfile

AS400.lehrling
20-10-07, 06:42
Wenn ich mir die Darstellung so betrachte, handlet es sich wohl um eine "intern" beschriebene Datei und mit der kann Query überhaupt nichts anfangen.

Ist das nicht schonn Antik:p

Ich bin zwar erst dabei RPG zu lehrnen aber seit RPG4 werden doch extern beschriebene dateien verwendet, weil die performance und flexibilität besser ist als bei intern beschriebenen.

Gruß AS400.lehrling

Fuerchau
20-10-07, 09:39
DAS würde aber Query erkennen und auch korrekt auswerten.

Für interne Dateien gabs noch die IDDU-Verzeichnisse, so dass Query über IDDU auch intern beschriebene Dateien auswerten konnte.

Interne Dateien gibt's meist noch aus Altanwendungen, insbesonders RPGII-Anwendungen (/36?) die halt immer noch laufen.

E305GL
31-01-08, 10:38
ob dateien intern oder extern definiert sind ist E30 egal, ob die daten gepackt in einem *char feld enthalten sind oder nicht ist egal ebenso für listauswertungen etc. über das e30-dictionary kann unabhängig der DDS und ohne diese zu ändern nach herzenslust mit den unterschiedlichen datenformate/-typen experimentiert werden ohne z.B. einen 5250-Sitzungsfehler zu produzieren:)