angelone
21-09-12, 17:36
Hallo zusammen,
ich verzweifel langsam mit meinen blöden russischen Ausdrucken hier.
Die Lösung ist sicher einfach.
Ich komm nur nicht drauf.
Ich habe ein RPG Programm, das einen Lieferschein druckt.
Neben den normalen Sachen, die man dort so drauf hat soll auch ein Feld mit der russischen Artikelbezeichnung gedruckt werden.
Diese Bezeichnung habe ich in einer Datei mit ein paar CHAR Feldern und einem GRAPHIC Feld in dem die kyrillischen Daten stehen.
CREATE TABLE LIB123.DAZ63P (
AZFIRM CHAR(3) CCSID 273 NOT NULL DEFAULT '' ,
AZNILA CHAR(2) CCSID 273 NOT NULL DEFAULT '' ,
AZARTN CHAR(30) CCSID 273 NOT NULL DEFAULT '' ,
AZZTN1 CHAR(15) CCSID 273 NOT NULL DEFAULT '' ,
AZZTN2 CHAR(15) CCSID 273 NOT NULL DEFAULT '' ,
AZBZRU GRAPHIC(200) CCSID 13488 NOT NULL DEFAULT '' )
RCDFMT DAZ63F1;
Ich hab die Daten dort per JDBC SQL reingeschrieben und die sind dort auch tatsächlich angekommen.
Per SQL von meinem Rechner und per System i Navigator kann ich sie sehen.
Per strsql im 5250 gehts nicht, der Emulator kann kein Unicode vermute ich mal.
Mein Testsystem hier ist auf V5R4 mit QCCSID 65535.
Meine Job-CCSID ist 273.
Mein Drucker ist als Remote-Outq über *IP angebunden und es handelt sich um einen Kyocera FS2020D mit PCL6.
TRANSFORM(*NO) und MFRTYPMDL(*HPII)
Ein *PRT Device gibts dazu nicht.
Jetzt hab ich ein Printerfile mit dem Positionsformat hier:
A R D632102
A SPACEB(002)
A ZPPOSI 3S 0O 2
A SPACEB(001)
A ZPARTN 15A O +2
A ZPBEZ1 30G O +1CCSID(1200 *CONVERT 15)
A ZPZTEU 11A O +1
A ZPHELA 3A O +1
A ZPMENG 8S O +7
A ZPNGEW 8S 2O 85
A ZPTGEW 8S 2O 97
A ZPLTNO 10A O +4
A ZPPANO 10A O +2
A ZPBEZ2 30A O 23
A SPACEB(001)
A ZPZTRU 11A O +1
Das ist meine Positionszeile und in ZPBEZ1 sollte die russische Bezeichnung aus meiner Datei (AZBZRU) oben stehen.
Im Programm fülle ich diese Zeile so:
c clear d632102
c z-add znposi zpposi
c eval ZPARTN=%trim(azartn)
c eval ZPBEZ1=%char(azbzru)
c eval ZPBEZ2=%trim(tzbez2)
c eval ZPZTEU=%trim(tzztnr)
c eval ZPHELA=*blanks
c eval ZPMENG=0
c eval ZPNGEW=0
c eval ZPTGEW=0
c eval ZPLTNO=*blanks
c eval ZPPANO=*blanks
c eval ZPZTRU=%trim(azztn2)
c write d632102
Auf dem Ausdruck ist dann alles drauf, nur die kyrillischen Zeichen wurden durch Bindestriche ersetzt.
Die Anzahl der Striche stimmt, Leerzeichen sind auch da, nur ists halt nicht kyrillisch (siehe http://bit.ly/QI5XLE).
Jetzt frag ich mich, was zu tun ist und worans liegt.
Liegts am Programm, am Printerfile, an der Druckerdefinition oder am Drucker selber?
Hat wer eine Idee?
ich verzweifel langsam mit meinen blöden russischen Ausdrucken hier.
Die Lösung ist sicher einfach.
Ich komm nur nicht drauf.
Ich habe ein RPG Programm, das einen Lieferschein druckt.
Neben den normalen Sachen, die man dort so drauf hat soll auch ein Feld mit der russischen Artikelbezeichnung gedruckt werden.
Diese Bezeichnung habe ich in einer Datei mit ein paar CHAR Feldern und einem GRAPHIC Feld in dem die kyrillischen Daten stehen.
CREATE TABLE LIB123.DAZ63P (
AZFIRM CHAR(3) CCSID 273 NOT NULL DEFAULT '' ,
AZNILA CHAR(2) CCSID 273 NOT NULL DEFAULT '' ,
AZARTN CHAR(30) CCSID 273 NOT NULL DEFAULT '' ,
AZZTN1 CHAR(15) CCSID 273 NOT NULL DEFAULT '' ,
AZZTN2 CHAR(15) CCSID 273 NOT NULL DEFAULT '' ,
AZBZRU GRAPHIC(200) CCSID 13488 NOT NULL DEFAULT '' )
RCDFMT DAZ63F1;
Ich hab die Daten dort per JDBC SQL reingeschrieben und die sind dort auch tatsächlich angekommen.
Per SQL von meinem Rechner und per System i Navigator kann ich sie sehen.
Per strsql im 5250 gehts nicht, der Emulator kann kein Unicode vermute ich mal.
Mein Testsystem hier ist auf V5R4 mit QCCSID 65535.
Meine Job-CCSID ist 273.
Mein Drucker ist als Remote-Outq über *IP angebunden und es handelt sich um einen Kyocera FS2020D mit PCL6.
TRANSFORM(*NO) und MFRTYPMDL(*HPII)
Ein *PRT Device gibts dazu nicht.
Jetzt hab ich ein Printerfile mit dem Positionsformat hier:
A R D632102
A SPACEB(002)
A ZPPOSI 3S 0O 2
A SPACEB(001)
A ZPARTN 15A O +2
A ZPBEZ1 30G O +1CCSID(1200 *CONVERT 15)
A ZPZTEU 11A O +1
A ZPHELA 3A O +1
A ZPMENG 8S O +7
A ZPNGEW 8S 2O 85
A ZPTGEW 8S 2O 97
A ZPLTNO 10A O +4
A ZPPANO 10A O +2
A ZPBEZ2 30A O 23
A SPACEB(001)
A ZPZTRU 11A O +1
Das ist meine Positionszeile und in ZPBEZ1 sollte die russische Bezeichnung aus meiner Datei (AZBZRU) oben stehen.
Im Programm fülle ich diese Zeile so:
c clear d632102
c z-add znposi zpposi
c eval ZPARTN=%trim(azartn)
c eval ZPBEZ1=%char(azbzru)
c eval ZPBEZ2=%trim(tzbez2)
c eval ZPZTEU=%trim(tzztnr)
c eval ZPHELA=*blanks
c eval ZPMENG=0
c eval ZPNGEW=0
c eval ZPTGEW=0
c eval ZPLTNO=*blanks
c eval ZPPANO=*blanks
c eval ZPZTRU=%trim(azztn2)
c write d632102
Auf dem Ausdruck ist dann alles drauf, nur die kyrillischen Zeichen wurden durch Bindestriche ersetzt.
Die Anzahl der Striche stimmt, Leerzeichen sind auch da, nur ists halt nicht kyrillisch (siehe http://bit.ly/QI5XLE).
Jetzt frag ich mich, was zu tun ist und worans liegt.
Liegts am Programm, am Printerfile, an der Druckerdefinition oder am Drucker selber?
Hat wer eine Idee?