PDA

View Full Version : ASCII <-> EBCDIC über FTP?



Hirschfeld
06-01-04, 10:21
Hallo Zusammen!

Habe folgendes Problem:
Ich hole mit dem AS/400-FTP-Client Daten von einem Windows-Rechner (ASCII, Textformat) ab. Bei der Konvertierung von ASCII in EBCDIC (Download: PC -> AS/400) mit der Standard-CCSID 00819 werden aber die Umlaute falsch umgesetzt! Der Transfer in die andere Richtung (Upload: AS/400 -> PC) mit der gleichen CCSID funktioniert aber einwandfrei! Schon komisch...

Hat einer 'ne Ahnung, welche CCSID für eingehende Daten ich einstellen muss, damit die Umlaute auch richtig umgesetzt werden?

Danke und Gruß,
Jascha

Fuerchau
06-01-04, 10:26
Die Frage ist hier, ob die Daten, die Du zur AS/400 schickst auch tatsächlich 819 (ANSI) sind ?
Vielleicht ist die Quelle ja 850 (ASCII) ?

Unter Windows sieht man den Unterschied nicht immer (je nach Windows-Version). Schaue ich mir die Daten mit Notepad an oder in einer DOS-Box (e.g. EDIT) kann es schon zu Unterschieden kommen.

Hirschfeld
06-01-04, 13:25
Ja, die Daten liegen tatsächlich als ANSI vor!

Folgender Test:

1. - Textdatei unter Windows (Notepad) erstellen:
http://www.hidatec.de/down/windows.jpg

2. - Textdatei unter DOS angucken:
http://www.hidatec.de/down/dosbox.jpg

3. - FTP-Transfer auf die AS/400:
http://www.hidatec.de/down/ftp.jpg

4. - Das Ergebnis auf der AS/400:
http://www.hidatec.de/down/as400.jpg

Das komische ist nur, dass die Umsetztung beim Versenden der Daten (FTP = PUT oder APPEND) richtig funktioniert...

Gruß,
Jascha

hozi
06-01-04, 14:48
Hallo Jascha,
versuch's mal mit dem get im binary-format,
Gruß
HoZi

Hirschfeld
06-01-04, 15:02
hmm. die daten liegen im zwar im textformat vor, hab's aber eben doch nochmal im BINARY-Modus probiert.

klappt auch nicht. sieht dann noch viel wilder aus:
http://www.hidatec.de/down/binary.jpg

Sven Schneider
06-01-04, 15:30
So wie das aussieht(Notepad/Edit) ist das eine ANSI-Datei.

Schau dir mal die CCSID der erstelltem STMF auf der AS/400 an.
CCSID sollte 1252 (ANSI) sein, ist aber wahrscheinlich 819 oder 850.

Außerdem kannst du ja mal bei einer STMF mit CCSID 819 mit dem Befehl EDTF/DSPF und F-Taste F15 versuchen die CCSID in 1252 tempörar zu ändern.
Hier sieht man dann auch, ob die zugeordnete CCSID der STMF mit dem tatsächlichen Dateninhalt übereinstimmt.


Also folgende Vorgehensweise :

vorher STMF mit CCSID 1252 erstellen
(erzeugen Dummy-Datei mit z.B. CPYTOSTMF ...STMFCODPAG(*STDASCII) )
dann mit FTP get ... (replace

oder in der FTP-Sitzung/im FTP-Script

type C 1252

eingeben.

Die Übertragung wird dann von ASCII (819) (oder EBCDIC) in ANSI (1252) geändert.

Außerdem folgende Überlegungen :
Mit dem Commands CHGFTPA (wirkt global) oder FTP (nur für den Aufruf) kannst du auch den Paramter CCSID in z.B. 1252 ändern.
Dies wirkt sich dann auf den FTP-Befehl ASCII aus.
Die dort angegeben CCSID wird dann verwendet.
Auslieferungsstandard ist CCSID 819.


Sven

Fuerchau
07-01-04, 08:57
So wie es aussieht überträgst du die Daten in eine neue PF-Datei !
Diese erhält automatisch die CCSID des Job's, in diesem Fall des FTP-Batch-Jobs. Überprüfe mal deinen Systemwert QCCSID ob der nicht auf 65535 steht, ändere diesen auf 273.

Alternativ kannst du auch eine PF erstellen (per DDS oder SQL, nicht per "CRTPF RCDLEN(xxx)") die eine CCSID (z.B. 273) erhält und in diese überträgst du dann mittels "put .... (replace".

Dass die Daten beim Empfang korrekt übertragen werden liegt wohl daran, dass deine Quell-PF eine gültige CCSID (273) enthält, so dass korrekt in ANSI übersetzt werden kann.

@sven

CCSID 1252 geht nur, wenn in eine IFS-Datei übertragen wird. Wenn die Daten dann jedoch weiterverarbeitet werden müssen, erfolgt wieder ein CPYFRMSTMF der ggf. das CCSID-Problem wieder aufwirft.

Hirschfeld
07-01-04, 10:37
HEUREKA!
danke für den tip! - die CCSID des FTP-Jobs ist das problem gewesen! ich habe jetzt eine PF via DDS mit der CCSID 273 erzeugt.
und siehe da: "Glücksrad" bleibt "Glücksrad"!

danke nochmal für die schnelle und kompetente hilfe!!

gruß,
jascha