PDA

View Full Version : Falsche CCSID bei schreiben IFS-Textdatei



elmaro
09-08-07, 13:30
Hallo Forum, :confused:
es ist wie verhext, versuche eine Textdatei auf das IFS zu stellen (diese sollte dann aus Windows heraus gelesen werden können), und kriege immer die CCSID 273 rauf, obwohl ich beim open diese mitgebe. Der Inhalt ist dann natürlich auch EBCDIC...

Pgm:

eval oflag = oflag=O_CREAT+O_WRONLY+O_TEXTDATA
eval path = '/home/TEST/X1.dat' + ZeroBin
eval fd = open(pathptr: oflag: 511:1252)

Danach ein Write und ein close --> CCSID ist immer 273

was mache ich hier falsch ?

danke für eure hilfe....

Fuerchau
09-08-07, 15:20
Der "Open" öffnet leider im Binary-Format.
Versuche es mit "fopen()".

Bruno Jakob
10-08-07, 07:03
Oder erstelle die Datei vorher mit dem qsh-Befehl touch unter Angabe der korrekten CCSID.

Bruno

elmaro
10-08-07, 08:23
Hallo Bruno, fuerchau,

danke für die Tips, habe das Problem jetzt folgendermassen gelöst:
im open-befehl habe ich jetzt die CCSID für file UND open angegeben, dann ist die Textdatei auf Windows lesbar.

eval flag=O_CREAT+O_RDWR+O_CCSID+ O_TEXTDATA+O_TEXT_CREAT+O_EXCL
eval mode=S_IRUSR+S_IWUSR+S_IXUSR

eval cp_file = 367
eval cp_open = 37

eval fd = open(pathptr:flag:mode:cp_file:cp_open)

** schreiben
eval buf='hallo1' + X'0D25'
callp write(fd: bufpointer: %LEN(%TRIMR(buf)))

callp close(fd)


Wenn jetzt die Umwandlungstabelle gefunden wird, geht das super !

Ist eigentlich die codepage 367 OK, weil alle von der 1252 reden, für die habe ich aber keine conversion-table gefunden....

Fuerchau
10-08-07, 11:14
367 ? Kenn ich nicht.
1252 ist Windows CP für ANSI.
037 ist USA-Englisch.

Sind deine Dateien ggf. 273 !?
Prüfe vor allem auf Umlaute und Sonderzeichen.

Normalerweise gibts Umwandlungstabellen von 273->1252.

elmaro
16-08-07, 07:49
Hallo Fuerchau,
sorry für die späte Antwort, bin gerade im Urlaub.
Unsere Dateien sind durchwegs CCSID 273.

Lt. Wikipedia:
Many European languages use the EBCDIC (http://www.newsolutions.de/wiki/EBCDIC)-encoded CCSID 37 (http://www.newsolutions.de/wiki/CCSID_37). CCSID 367 (http://www-306.ibm.com/software/globalization/ccsid/ccsid367.jsp) is identical to ASCII (http://www.newsolutions.de/wiki/ASCII). CCSID 819 (http://www-306.ibm.com/software/globalization/ccsid/ccsid819.jsp) is identical to ISO 8859-1 (http://www.newsolutions.de/wiki/ISO_8859-1). CCSID 923 (http://www-306.ibm.com/software/globalization/ccsid/ccsid923.jsp) is identical to ISO 8859-15 (http://www.newsolutions.de/wiki/ISO_8859-15). CCSID 1208 (http://www-306.ibm.com/software/globalization/ccsid/ccsid1208.jsp) is identical to UTF-8 (http://www.newsolutions.de/wiki/UTF-8).

Habe das anfangs mit 1252 versucht, dann hatte ich einen Programmabruch mit der Meldung: Umsetzung nicht möglich.

Mit der 367 klappt das.
Danke für deine Antworten.