[NEWSboard IBMi Forum]
  1. #1
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005

    Druckausgabe mit Unicode

    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

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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 !
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Mar 2002
    Beiträge
    5.287
    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

    Zitat Zitat von Fuerchau
    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 !
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  4. #4
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    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

  5. #5
    Registriert seit
    Aug 2004
    Beiträge
    923

    ovrprtf

    Zitat Zitat von KM
    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.

  6. #6
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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 !!!
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  8. #8
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    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

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    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/iserie...is/CDRCVRT.htm
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Danke für die Info. Das API werde ich mal testen.

    Gruß,
    KM

  11. #11
    KM is offline [professional_User]
    Registriert seit
    Apr 2003
    Beiträge
    1.005
    Ich habe mir jetzt so beholfen, dass ich die Daten der Unicode-Datei in RPG einlese und mit der BIF %CHAR in Character-Felder konvertiere, die ich zuvor in meiner PRTF mit CHRID definiert habe. Vorher muß ich natürlich noch einen OVRPRTF mit der betreffenden CHRID machen. Das funktioniert jetzt zumindest für polnisch und tschechisch wunderbar. Bei russisch klappt's noch nicht. Aber das liegt sicher am Drucker, der kein kyrillisch kann. Bei der Anzeige von DSPFs funktioniert's übrigens genauso.

    Gruß,
    KM

    PS: Ich habe dann zwar immernoch das Problem, dass manche Sonderzeichen in der Codepage 1153 bzw. 1154 nicht existieren. Aber das geht halt nicht anders.

Similar Threads

  1. Verkleinerte Druckausgabe Kyocera KM5050
    By Peet in forum NEWSboard Drucker
    Antworten: 5
    Letzter Beitrag: 21-10-06, 07:23
  2. AFPDS Druckausgabe mit DUPLEX(*NO)
    By martikx in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 30-05-05, 14:22
  3. Unicode?
    By miro in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 13-10-04, 12:47
  4. iSeries und UNICODE
    By KM in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 03-09-04, 11:46
  5. Query Manager Problem Druckausgabe
    By svente in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 03-06-04, 15:45

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •