Anmelden

View Full Version : Druckausgabe mit Unicode



Seiten : [1] 2

KM
04-04-05, 15:52
Hallo zusammen,

habe mal wieder ein Problem mit Unicode. Und zwar habe ich eine Datei mit Unicode-Daten (alle Felder als Grafik-Felder mit CCSID 13488). Der Inhalt sind z.B. polnische und tschechische Texte. Diese möchte ich nun in eine PRTF ausgeben/drucken. Wie kann man das nun erreichen ? Ich habe bis jetzt eine PRTF erstellt, in der ich zum Test mal ein Grafik-Feld mit CCSID 13488 definiert habe. Nach dem CRTPRTF hat die PRTF jedoch seltsamerweise die CCSID 273, obwohl mein Job, durch den ich die PRTF erstellt habe, auf CCSID 1153 stand. Ich habe also keine Ahnung woher sich das System den Wert 273 holt. Ich kann diesen Wert auch nicht ändern. Beim CRTPRTF selbst kann man ja gar keine CCSID angeben. Wenn ich nun die erstellte SPOOLFILE ausdrucke, werden auch nur Zeichen aus der Codepage 273 gedruckt. Wenn ich nun Daten aus einer Datei mit CCSID 1153 ausdrucke und bei dem betreffenden Character-Feld CHRID 1153 angebe, funktioniert der Ausdruck problemlos. Den Parameter CHRID kann ich aber bei Grafik-Feldern nicht angeben. Wie kann ich mein Problem nun lösen ?
Gibt es denn eine Möglichkeit Unicode-Felder überhaupt in einer PRTF auszudrucken oder werden die Inhalte immer in eine SBCS-CCSID konvertiert ? Die DEVD des Druckers stand übrigens auch auf Codepage 1153. Theoretisch könnte ich die Unicode-Datei ja erst in eine Datei mit CCSID 1153 kopieren und dann in der PRTF mit CHRID arbeiten. Allerdings ist das erstens nicht sonderlich elegant und zweitens gibt es ja Zeichen (z.B. "mikro" oder Durchschnittszeichen), die es in der Codepage 1153 gar nicht gibt. Deshalb mein Versuch direkt Unicode-Felder als Grafik-Felder audzudrucken.

Gruß,
KM

Fuerchau
04-04-05, 17:10
Da hast du leider schlechte Karten.
Eine UNICODE-Unterstützung gibt's weder beim Drucken noch beim Bildschirm.
Die Daten müssen immer in der CHRID des Zieldruckers ausgegeben werden. Daher ist es auch leider NICHT möglich, Zeichen aus verschiedenen Sprachräumen (Latin1/2/...) in EINER Spooldatei zu drucken.
Der Drucker wird dann über die CHRID(850/852/85x) auf den entsprechenden Zeichensatz (Codepage) umgeschaltet.

Die einzige Alternative ist dann tatsächlich:
Druckprogramm als Windows-Programm mit ODBC-Zugriff !

BenderD
04-04-05, 17:37
naja, eine Ausrede gäbs ja noch, wenn der Drucker das kann und ein entsprechender Treiber das auch ansteuert, dann ginge das noch mit User ASCII, oder Entities in Printer Language einbetten, aber ich würde mir das beides nicht antun wollen.

mfg

Dieter Bender


Da hast du leider schlechte Karten.
Eine UNICODE-Unterstützung gibt's weder beim Drucken noch beim Bildschirm.
Die Daten müssen immer in der CHRID des Zieldruckers ausgegeben werden. Daher ist es auch leider NICHT möglich, Zeichen aus verschiedenen Sprachräumen (Latin1/2/...) in EINER Spooldatei zu drucken.
Der Drucker wird dann über die CHRID(850/852/85x) auf den entsprechenden Zeichensatz (Codepage) umgeschaltet.

Die einzige Alternative ist dann tatsächlich:
Druckprogramm als Windows-Programm mit ODBC-Zugriff !

KM
05-04-05, 08:36
Also ich bin jetzt zumindest soweit, dass ich Unicode-Daten als Grafik-Felder in einer PRTF drucken kann. Nur scheint es wohl so zu sein, dass die Felder beim Erstellen der SPOOLFILE von CCSID 13488 in die CCSID der PRTF (in diesem Fall 273) konvertiert werden. Kann mir jemand sagen wie ich diese ändern kann ? Ich habe in keinem Befehl einen entsprechenden Parameter gefunden.

Gruß,
KM

kuempi von stein
05-04-05, 09:06
Also ich bin jetzt zumindest soweit, dass ich Unicode-Daten als Grafik-Felder in einer PRTF drucken kann. Nur scheint es wohl so zu sein, dass die Felder beim Erstellen der SPOOLFILE von CCSID 13488 in die CCSID der PRTF (in diesem Fall 273) konvertiert werden. Kann mir jemand sagen wie ich diese ändern kann ? Ich habe in keinem Befehl einen entsprechenden Parameter gefunden.

Gruß,
KM
OVRPRTF CHRID(13488 nnnnnn) oder so?

k.

KM
05-04-05, 09:21
Nein, ich meinte ja nicht die CHRID, sondern die CCSID. Ich habe inzwischen auch herausgefunden wie man die bei einer PRTF ändert. Dazu muß man die CCSID der physischen Source-Datei ändern und dann die PRTF nochmal erstellen.
Jetzt habe ich also bei der PRTF, der DEVD und in meinem Job die CCSID auf 1153 gesetzt aber trotzdem werden die polnischen Zeichen des Unicode-Feldes offenbar in Codepage 273 konvertiert.
Ich glaube ich lasse das jetzt bleiben. Es gibt scheinbar keine Lösung dafür.

Gruß,
KM

Fuerchau
05-04-05, 09:24
Nochmal:
CCSID 13488 funktioniert NICHT in PRTF/DSPF, auch nicht mit OVRxxx.

Es ist ganz klar, dass du ggf. für jedes Feld die CHRID der Daten benennen musst.
Die CHRID ist im Gegensatz zur CCSID die grafische Darstellung des Codes, während die CCSID die interne Wertigkeit des Codes wiedergibt.

Wenn du nun 13488 drucken willst, so musst du wissen, welchen Inhalt die Daten haben um ein Feld mit der passenden CHRID auszuwählen. Diese CHRID muss allerdings vom Drucker über das WSCST in eine entsprechende Codesequenz umgesetzt werden können um den Zeichensatz des Druckers auszuwählen.

Die PRTF behält natürlich die Default-CCSID, was aber rein gar nichts mit der späteren grafischen Darstellung zu tun hat.

Wenn du also westeuropäisch drucken willst musst du halt CHRID 850 drucken, bei osteuropäisch 852 usw.
Die AS/400 unterstützt da selbständig aber auch rein gar nichts !!!

KM
05-04-05, 09:40
CCSID 13488 funktioniert NICHT in PRTF/DSPF, auch nicht mit OVRxxx.

Stimmt so jetzt nicht ganz. Denn ausdrucken kann ich ja die Felder mit CCSID 13488 in der PRTF. Nur werden die halt mit dem deutschen Zeichensatz ausgedruckt.


Es ist ganz klar, dass du ggf. für jedes Feld die CHRID der Daten benennen musst.

Das geht ja leider nicht, da bei Grafik-Feldern das Schlüsselwort CHRID nicht erlaubt ist.


Wenn du nun 13488 drucken willst, so musst du wissen, welchen Inhalt die Daten haben um ein Feld mit der passenden CHRID auszuwählen.

Den Inhalt kenne ich ja. Nur wie gesagt geht das Schlüsselwort CHRID nicht bei 13488.

Gruß,
KM

Fuerchau
05-04-05, 09:57
Du kannst eben das Feld nicht mit Typ Grafik ausdrucken, da es ja keine Grafik-Daten sind !
Ausserdem:
Wie hast du die Felder denn im RPG definiert, bzw. wie verwendest du diese denn ?

Wenn du die Daten als Grafik einliest (im RPGLE als 13488) kannst du sie mittels CDRCVRT von Unicode in die jeweilige SBCS-CCSID übersetzen und in das entsprechende PRTF-Feld mit der passenden CHRID schieben.

http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/apis/CDRCVRT.htm

KM
06-04-05, 15:45
Danke für die Info. Das API werde ich mal testen.

Gruß,
KM