View Full Version : Barcode EAN128
Hallo Forum,
auf ein Formular soll mit einem IPDS-Drucker ein EAN128-
Barcode gedruckt werden. Der gleiche Barcode wird auf einem
speziellen Barcodedrucker auf Palettenetiketten gedruckt.
Vor die Zeichenfolge (Datenbezeichner und Nutzzeichen) habe ich
das FNC1 (8F), danach das SPZ gesetzt und in der Printerfile
mit BARCODE(CODE128) ausgegeben.
Das SPZ habe ich aus FNC1 und Zeichenfolge errechnet.
Der Barcode stimmt aber im hinteren Bereich, unmittelbar vor dem
Stopzeichen, nicht mit dem Barcode der Etiketten überein. Die
Etiketten werden richtig eingelesen, der Barcode auf dem Formular nicht.
Kann jemand weiterhelfen?
Im Voraus schon mal Danke.
Herbert
daniel.ritzmann@waser.ch
04-08-03, 13:50
Hi Joe
Ich hatte mal ein ähnliches Problem. Bei mir hing es mit dem Fehlen des Parameters CHECK-DIGIT im Printerfile-Schlüsselwort BARCODE zusammen.
Versuchs doch einfach mal mit der Angabe (Wert 02) von diesem Parameter:
BARCODE(CODE128 ......... X '02')
(siehe DDS-Reference unter BARCODE)
Gruss
Daniel
Danke Daniel,
bin bis 18.8. im Urlaub. Werde es dann probieren und
Feedback geben.
Gruß Herbert
Hallo Daniel,
leider ist das Problem mit der Prüfziffer X'02' nicht gelöst.
Der Barcode hat vor dem Stopcode mehr Zeichen als der
Code aus dem Etikettendrucker (der ist richtig).
Bitte weiter um Hilfe.
Gruß
Herbert
Schau Dir mal folgenden Link an:
http://www.strichcodeservice.at/zeichensatz_code128.htm
Die Berechnung des Prüfzeichens erfolgt mit dem ASCII-Wert und nicht mit dem EBCDIC-Wert. Du musst also erst eine Übersetzung in ASCII durchführen, die PZ berechnen und das Ergebnis wieder in EBCDIC. Dies gilt auch für das FNC.
Für die Codewandlung kannst du QDCXLATE verwenden, du musst nur noch die richtige Tabelle wählen (WRKTBL *ALL, und dann nach Q273337xxx suchen, wobei xxx für den ASCII-Code steht).
PS:
Vielleicht berechnet ja die AS/400 die Prüfziffer automatisch, dann versuche es mal mit der Angabe X'00'/X'01' statt X'02'.
Ich habe nun selbst die Anforderung bekommen, EAN128 zu drucken. Mit folgender Einstellung funktioniert es einwandfrei:
DDS: PTBARC 8 BARCODE(CODE128 4 *NOHRI X'02')
RPG: X'8F' CAT BCINFO PTBARC P
Ich berechne KEINE Prüfziffer, sondern dies macht das System selber.
Hallo Forum,
dank Eurer Unterstützung, insbesondere von Fuerchau, kann ich die Lösung der Aufgabe "EAN128" hier aufzeigen.
Es handelt sich bei den Nutzdaten um die NVE (Nummer der Versandeinheit). Die Grunddaten stehen in meinem Fall in einer Palettendatei (wg. der Größe) und werden von Palette zu Palette um eine lfd.Nr. ergänzt. Diese Daten werden mit einer Prüziffer (Modulo 10 mit der Gewichtung 31313131..... .) ergänzt und ergeben die komplette NVE.
Vor die NVE wird das Kennzeichen FNC1(x'8F') und der Datenbezeichner (DB=00) gestellt.
Kompletter String:
FNC1 DB NVE
Die Ausgabe in der Printerfile wie vorstehend von Fuerchau beschrieben.
Danke an alle Helfer
Herbert
Hallo zusammen!
ich bin im Moment auch gerade dabei einen NVE Code über die AS400 zu basteln. Wäre es vielleicht möglich mir den
RPG-Code sowie den DDS-COde zukommen zu lassen?
Besten Dank im Voraus
Hans Zuther
Hallo Herr Fürchau,
vielen Dank für die Antwort. Leider komme ich jetzt erst dazu darauf zu antworten.
Ich habe mir den Artikel angeschaut. Können Sie mir bei den folgenden Feldern weiterhelfen?
BCINFO (wie groß ist das Feld und mit was wird des befüllt)
PTBARC (das gleiche)
mfg
Hans Zuther
PTBARC ist das DDS-Feld in der PRTF dass den Barcodeinhalt darstellt.
BCINFO ist die NVE-Nummer, die gedruckt werden soll.
Da ich das gerade für einen anderen Kunden auch drucke ergibt sich halt folgender Aufbau zum Drucken:
Die NVE-Nummer ist ein 18-Stelliges numerisches Feld, wobei die 18. Stelle die Prüfziffer Modulo 10 ist.
'00' ist die EAN128-Info für NVE (siehe Wikipedia zum Thema EAN128).
PTBARC = X'8F' + '00' + %editc(NVENR:'X')
Damit ergibts sich für PTBARC ein 21-stelliges Zeichenfeld.
Ich hoffe, die Modulo 10-Berechnung hast du gelöst.