Anmelden

View Full Version : gepackte Daten in Streamfile



bettina_martin
05-04-06, 11:51
Hallo,

ist es möglich das es Probleme mit gepackten Daten (als gepackte numerische
Felder) in Streamfiles auf der AS/400 gibt ?

Wir bekommen seit neuesten eine Schnittstelle, die früher direkt in eine pysische Datei
ging, jetzt über streamfiles. Dort werden die gepackten Zahlen 'irgendwie' umgeschlüsselt, teilweise führt das in Programmen dann zum Absturz weil ungültige numerische Daten enthalten sind.

Hat da jemand eine Idee ? Liegt das am Zeichensatz ??

Fuerchau
05-04-06, 11:54
Wenn die Daten jetzt in Streamfiles ankommen müssten sie ja eigentlich in ungepacktem Format sein (als Text).

bettina_martin
05-04-06, 11:59
Wie meinst du das ?

Die Daten kommen mit 'Sonderzeichen' daher, d.h. so wie
gepackte Daten eben aussehen.

Fuerchau
05-04-06, 12:04
Dann müsstest du die Datei mittels
CPYFRMSTMF FROMSTMF('/home/myverz/myfile')
TOMBR('/qsys.lib/mylib.lib/myfile.file/myfile.mbr')
MBROPT(*REPLACE)
CVTDTA(*NONE)
ENDLINFMT(*FIXED)
TABEXPN(*NO)
in eine PF mit fester Satzlänge kopieren, von dort in die DDS-beschriebene Datei per CPYF ... FMTOPT(*NOCHK).

bettina_martin
05-04-06, 12:44
das habe ich auch so gemacht, jedoch

werden die Zahlen dann schon in dem PF mit fixer Satzlänge falsch umgeschlüsselt,
d.h. es stehen dort entweder nicht num. daten oder falsch umgeschlüsselte drinnen.

Fuerchau
05-04-06, 12:50
Dann sind die Quelldaten bereits so !
Durch CVTDATA(*NONE) erfolgt keinerlei Codewandlung.
Die Satzlänge der PF muss natürlich der erwarteten Satzlänge entsprechen.
Per DSPPFM => F10 kannst du in Hex-Sicht umschalten.
Kommt es zu Verschiebungen der Felder, stimmt die Satzlänge einfach nicht.

bettina_martin
05-04-06, 12:54
Bei CVTDATA(*NONE) werden überhaupt nur noch verstümmelte Daten
dargestellt. Bei CVTDATA(*AUTO) sieht das ganze normal aus, abgesehen von den
gepackten Daten.

Fuerchau
05-04-06, 13:51
Das ist dann wirklich ein Problem.
Da sind wohl Zeichendaten mit gepackten Daten vermischt worden. Dies lässt sich so einfach dann nicht mehr konvertieren.
Schau die die Daten erstmal über WRKLNK in Hex an.
Wenn die gepackten Daten i.O. sind und die Zeichendaten in ASCII musst du wohl oder übel mit CVTDATA(*NONE) kopieren und die Zeichendaten per QDCXLATE selber übersetzen.

Oder die Transferdatei darf eben keine gepackten Daten mehr enthalten und muss alles als Zeichendaten übergeben.

Joe
05-04-06, 15:14
Ich habe dieses Problem wie folgt gelöst:

Identische Datentabelle erstellen und die gepackten Felder
in Format ZONED ändern.
CPYF Original in diese Tabelle.
In Streamfile kopieren wie gehabt.

Dann kann es evtl noch Probleme mit dem Vorzeichenbyte bei negativen Werten geben.

Gruß
Joe

Fuerchau
05-04-06, 15:17
Eben, da ist ein CPYFRMIMPF/CPYTOIMPF schon besser.