PDA

View Full Version : cpytoimpf



K_Tippi
06-06-12, 13:07
Hallo Gemeinde,
ich steh auf dem Schlauch und brauche Hife.
ich muss eine DB datei ins IFS kopieren.
Die IFS Datei soll Codepage 819 haben und eine Satzlänge von 128 Byte (genau wie die DB)

Mit cpytiimpf bekomme ich aber 131 Byte. Damit bekomme ich die Datei nicht über den EDI Monitor übertragen, es werden genau 128 Byte von der Gegenstelle erwartet :-(

hat einer einen Tipp wie ich die Datei im ifs hinbekomme?

Danke im Voraus

Fuerchau
06-06-12, 13:16
Das Problem bei CPYTOIMPF ist, dass der Dezimalpunkt und das Vorzeichen mit ausgegeben werden, da ja im Wesentlichen CSV-Formate erstellt werden.
Ich vermute jetzt einfach mal, dass du Dezimalfelder hast.

Hier musst du leider ein Progrämmchen schreiben und die Daten in eine Binär-PF (CCSID 65535 mit 1 Feld) ausgeben.
Dann kannst du die Daten per CPYTOSTMF ausgeben.

Sollte das nicht das Problem sein, beschreib mal welche Daten denn zuviel sind.

K_Tippi
06-06-12, 13:32
Die DB Datei hat nur ein Feld mit 128 Byte, (VDA Format) also keine Dezimalfelder.
Nach dem Copy zeigt er mir im IFS (wrklnk "5" ) 131 Byte an.
Unser EDI Partner hat mir mtgeteilt, dass die Datei zu lang ist und von seinem System abgelehnt wird. Es sind am Satzende 3 (?) Byte zu viel. RCDDLM ist *CRLF angegben, ich denke genau das ist zu viel.

hier der CPY
CPYTOIMPF FROMFILE(RW0511PF) TOSTMF(&PLNKD) +
STMFCCSID(819) RCDDLM(*CRLF) +
DTAFMT(*FIXED) STRDLM(*NONE)





Klaus

Fuerchau
06-06-12, 14:53
Dann würde ich als RCDDLM(*EOR) verwenden (ohne CRLF, Sätze ohne Satztrenner hintereinander).
Per WRKLNK kannst du die Daten ja auch in HEX ansehen.

K_Tippi
14-06-12, 07:33
*CRLF war richtig jedoch hatte der EDI Konverter einen falschen Parameter.

Klaus

bofrost
14-06-12, 08:46
Wenn ich dateien ins IFS ohne Formatänderung übernehmen will (z.b DTAUS, DTAZV) verwende ich einfach die QSH:

/usr/bin/iconv -f 1141 -t 1252 /QSYS.LIB/$1.LIB/$2.FILE/$3.MBR > $1.$2.$3.ASCII

Allerdings werden hier garkeine Zeilenumbrüche eingefügt.

Grüße