PDA

View Full Version : IFS-File mit RPG-Progr geschrieben: keine Umlaute



HerbertW
08-06-10, 07:49
Hallo,

ich lese per RPG eine AS400 Datei (CCSID 273) und schreibe Datenauszüge davon in eine Textdatei im Filesystem QNTC.
(mit Scott Klements IFS-SRVPGM)

Das funktioniert alles prima. Wenn man jedoch die Textdatei mit Notepad öffnet, werden die Umlaut nicht richtig dargestellt.

Hier die Anweisung im RPG zum Anlegen der Datei:


fd = open( %trim(filename)
: O_CREAT + O_EXCL + O_CCSID + O_WRONLY
+ O_TEXTDATA + O_TEXT_CREAT
: S_IWUSR + S_IRUSR+S_IRGRP+S_IROTH
: 273
: 0 );

Der vierte Parameter hat keine Wirkung. Egal was anstelle der 273 eingetragen wird, das Ergebnis ist immer gleich.


Hat jemand eine Idee?


Gruß
Herbert

Fuerchau
08-06-10, 07:53
Die Ziel-CCSID sollte eher 1252 (ANSI) sein. Das klappt aber solange nicht, wie die Job-CCSID noch auf 65535 (HEX) steht.

HerbertW
08-06-10, 08:27
Ich habe die JOB-CCSID auf 273 gestellt und die Ziel-CCSID auf 1252
Ergebnis: unverändert, keine Umlaute

2.Versuch
wie oben, jedoch die Textdatei im Filesystem /Root (auf AS400) ablegen.
Ergebnis: einwandfrei! Umlaute vorhanden.

3. Versuch
wie Versuch 2, jedoch JOB-CCSID auf 65535 lassen.
Ergebnis: einwandfrei! Umlaute vorhanden.

Es scheint am QNTC-Filesystem zu liegen, wo die Datei auf einen Windows-Server geschrieben wird.

Muss ich auf /Root ausgeben und dann die Datei zum Zielserver kopieren, oder kann man es noch irgendwie drehen, ohne Umweg über /root gleich auf dem richtigen Server auszugeben?

BenderD
08-06-10, 09:07
...das ist ja auch nur die halbe Sache. Die Datei muss nach der Erstellung geschlossen werden und dann nochmal mit TEXTDATA geöffnet werden.

D*B

HerbertW
08-06-10, 09:24
Den o_text_creat gibt es seit V5R2
Es geht dann in einem Aufwasch.

Wenn ich es aber so mache. dann ist es auch nicht besser:

fd = open(pathfile:
O_CREAT+O_WRONLY+O_CCSID:
S_IWUSR+S_IRUSR+S_IRGRP+S_IROTH:
1252) ;

callp close(fd);

fd = open(pathfile:
O_WRONLY+O_TEXTDATA);

Egal wie, auf QNTC keine Umlaute.

Man kann auch nicht per CPY-Befehl von /root nach /qntc kopieren. Entweder geht es gar nicht, wegen CPFA098 (Die CCSID der Zieldatei konnte nicht mit der CCSID der
Quellendatei abgeglichen werden. )
oder, wenn man TOCODEPAGE(*STDASCII) angibt, dann gehen die Umlaute verloren.

Fuerchau
08-06-10, 11:30
QNTC unterstützt keine CCSID.
Erstelle die Datei am Besten in /Home/MyVerz und kopiere sie anschliessend ins QNTC.
Hier geht es je nach Release manchmal nur mit QSHELL CMD('cp /fromdir/file /todir').

HerbertW
08-06-10, 15:30
Vielen Dank für den Hinweis mit QSHELL.

Hat funktioniert.