PDA

View Full Version : OPTRA S - AS/400 ESC Sequ. RPG



Fessler
11-02-04, 18:20
Hallo!
Ich möchte aus einem RPG III Pgm. einen OPTRA S händisch Druckersequenzen senden! z.B. Papierladen Ansteuerung, usw.
Dies soll nicht über ein PRTF mit DRAWER geschehen!

Wer kann mir bitte die ESC Sequenz des Druckers sagen, bzw. mir eine Listung aller Möglichkeiten geben die der Drucker versteht?

Danke

Helmut

PS: mein Kunde will den "Teuren" Drucker umbedingt weiter verwenden, und es dürfen wie gesagt keine PRTF zur anwendung kommen.

Sven Schneider
12-02-04, 21:26
Zur Ausgabe von Steuerzeichen direkt an den Drucker ohne Codewandlung musst du im RPG-Programm den SCS-Transparentdruckbefehl 03 Hex benutzen.

D. h. du musst dir einen String mit folgendem Aufbau zusammenbasteln und per O-Karten ausgeben :

1-Stelle X'03' (03 Hex)
2- Stelle (Länge des nachfolgenden Strings in Hex)
3-x Stelle, der eigentliche String bzw. in deinem Fall die ESC-Sequenz.

Die Steuerzeichen bekommst du z.B. mit :

RTVWSCST DEVTYPE(*TRANSFORM) MFRTYPMDL(*LEXOPTRAS) SRCMBR(LEXOPTRAS) SRCFILE(QGPL/QTXTSRC)

Einfach in der erstellten Source nach DRAWER suchen, hinter DATA steht die ESC-Sequenz.
Diese musst du dann natürlich als Hex-Code in den String stellen.

Warum du das allerdings nicht mit OVRPRTF regeln willst ist mir nicht klar, denn zumindest die QSYSPRT als PRTF musst du ja schon verwenden, auch wenn du O-Karten benutzt.
Mit benutzerdefinietem Open/Close in Verbindung mit OVRPRTF kannst du auch innerhalb eines Programms die Fachansteuerung ändern.

Oder arbeitest du mit den Print-Manager-API's direkt?!

Sven


Sven

Fessler
13-02-04, 06:43
Nein nicht in allen Routinen!

Aber in den Kunden Anpassungen wurden mit O Karten gearbeitet. (alt S/36 Zyklus) diese routinen konnte ich ich bis dato noch nicht umstellen, muss aber die Fachansteuerung und Barcode dor einbauen (leider).

danke für deinen tip, denke das das funktioniert!


gruss helmut

Fuerchau
13-02-04, 07:57
Das wird so nicht ganz funktionieren, da immer noch eine EBCDIC-ASCII-Umwandlung stattfindet.
Du benötigst
1. die Angabe RPLUNPRT(*NO) damit x'03' nicht durch Leerzeichen ersetzt wird.
2. die Länge kann von x'01' bis x'FF' (01-255) variieren. Dieses Zeichen wird aber auch von EBCDIC in ASCII umgesetzt.

Funktionieren kann das nur mit PRTF und einem Zeichenfeld mit DDS-Schlüsselwort TRNSPY (Transparent), da sonst die Zeichen verfälscht werden.

Sven Schneider
16-02-04, 17:22
@Fuerchau:
Das ist so nicht korrekt, es findet keine Konvertierung statt.
RPLUNPRT(*NO) ist aber trotzdem notwendig.

Der Befehl "ASCII Transparent-Druck" X'03' ist Bestandteil des SCS-Befehlssatzes.
Dieser wird korrekt von folgenden Funktionen gehandhabt :

- HPT
- Twinax-5250-Terminal (zumindest Orginal IBM)
- CA- Druckeremu

Im Prinzip ist X'03' für O-Karten das Gegenstück zu TRNSPY für PRTF-DDS.
Eine Analyse des Druckdatenstroms zeigt dies.

@Fessler
Da du noch mit RPG II (S/36) arbeitest musst du BITON/BITOF verwenden um die entsprechednen Hex-Codes zu erzeugen.
Siehe Bsp. :
http://www-912.ibm.com/s_dir/slkbase.NSF/0/3788b4d775308174862565c2007d473e?OpenDocument

Sven