Anmelden

View Full Version : Name der Spooldatei auf PC übertragen



Seiten : 1 2 [3]

Fuerchau
16-09-09, 12:33
OK, das ist ein wenig kompizierter.
Da du nicht weißt, wann der Druck denn tatsächlich erfolgt, musst du den obigen Vorschlag SNDNETSPLF aufgreifen.

Hierzu richtest du einen User ein (nicht anmeldefähig) dem du die gewünschte OUTQ zuordnest.
Zusätzlich benötigt dieser eine "Adresse" über WRKDIRE, ausserdem musst du noch SNADS einrichten ;).

Wenn dein Spool dann fertig erstellt ist, musst du einen SNDNETSPLF an diesen User ausführen. Damit kopierst du den Spool und er gelangt in die OUTQ.

Für SNDNETSPLF muss allerdings der aktuelle User auch einen WRKDIRE-Eintrag haben, sonst darf er nicht senden.
Ggf. funktioniert auch das Programm, wenn es mit *OWNER erstellt ist und der Eigner einen WRKDIRE-Eintrag hat, bin mir aber nicht sicher.
Wenn das nicht funktioniert, musst du allerdings weitere API's bemühen.
Per QSYGETPH/QSYSETPH kann man kurzfristig auf einen anderen User umschalten und dann den SNDNETSPLF durchführen.

Die Alternative ist noch etwas komplizierter.
An eine OUTQ kann man eine DTAQ hängen. Immer wenn ein Eintrag RDY wird, gibts einen Eintrag in der DTAQ.

Ein Batchprogramm (Autostart, Prestart) kann per QRCVDTAQ diese Einträge lesen (Spoolname/Job/Nr sind enthalten) und den SNDNETSPLF ausführen.
Dieser Batchjob sollte dann unter obigem User laufen (man kann auch an sich selber senden).

Vorteil der letzteren Lösung:
Man muss kein Druck erzeugendes Programm anpassen!
Man kann beliebige OUTQ's an die DTAQ hängen. Da der SNDNETSPLF ggf. etwas dauern kann (je nach Größe des Spool), kann man mehrere PJ's zur Überwachung starten, so dass keine Spools verloren gehen (nach RDY wird gedruckt und ohne SAV gelöscht, das kann schon mal schnell gehen).

Dieses Verfahren verwenden wir i.Ü. zur Spoolarchivierung.

thommy
16-09-09, 13:34
Liebe mitglieder,
zunächst vielen Dank.Werde mir mal den Vorschlag von Fürchau zu Gemüte führen.
VG
Thommy

Andreas Herzfeldt
16-09-09, 17:03
Hallo thommy,

Du kannst auch folgendes Lösung verwenden : Wie von Fürchau beschrieben, der OUTQ eine DTAQ zuordnen, diese dann per CALL QRCVDTAQ auslesen und mit den empfangen Spooldateiwerten folgendes machen.
1) CPYSPLF in eine temporäre Datei mit Steuerzeichen *FCFC 2) Auf z.B. QSYSPRT einen OVRPRTF mit den Angaben des zweiten Druckers machen, ebenfalls mit Steuerzeichen *FCFC 3) CPYF der temporären Datei an QSYSPRT
4) Überschreibung mit DLTOVR löschen.

Falls Du dazu weitere Infos brauchst, einfach im Formum posten oder mail an herzfeldta@toepfer.com

Andreas

Fuerchau
17-09-09, 08:23
Das geht aber nur mit SCS-Spools, bei AFPDS bzw. IPDS gehen wesentlichen Informationen verloren.
Ausserdem muss man ja ggf. noch CPI/LPI/PAGRTT/CHRID o.ä. Parameter mitnehmen.
Da ist SNDNETSPLF auf jeden Fall sicherer.

jgv
18-09-09, 16:24
Ein Spoolfile kann auch kopiert werden, in dem das Original-Spoolfile in ein UserSpace hinein gestellt wird und von dort wieder in ein neues Spoolfile ausgegeben wird. Dazu sind APIs des OS vorhanden. Bei Bedarf stelle ich gerne ein Beispielprogramm zur Verfügung.

Gruss

Jan

Fuerchau
18-09-09, 16:28
Siehe auch folgenden Link:
Code400.com, iSeries, OS/400 (http://www.code400.com/cpyfrmsplf.php)