-
Zunächst mal erstellt Du eine Datenwarteschlange über CRTDTAQ DTAQ(MYDTAQ). Dann fügst Du der Ausgabewarteschlange die Datenwarteschlange mit CHGOUTQ OUTQ(MYOUTQ) DTAQ(MYDTAQ) hinzu.
Das folgende Programm verarbeitet dann die Datenwarteschlangeneinträge, die von OS/400 dort eingestellt werden, insofern eine neue Spoolfile in die Ausgabewarteschlange gestellt wird. Dieses Programm sollte im Batch laufen.
PHP-Code:
*
* FORMAT EINES EINTRAGES DER DATENWARTESCHLANGE
*
DARCSPLF DS 128
D $$FUNCTION 10A FUNCTION
D $$RCDTYPE 2A RECORD TYPE
D $$QUALJOB 26A QUALIFIED JOBNAME
D $$JOBNAM 10A OVERLAY($$QUALJOB : 1) JOB-NAME
D $$JOBUSR 10A OVERLAY($$QUALJOB : 11) JOB-USER
D $$JOBNBR 6A OVERLAY($$QUALJOB : 21) JOB-NUMBER
D $$SPLFNAM 10A SPOOLFILE NAME
D $$SPLFNBR 8B 0 SPOOLFILE NUMBER
D $$OUTQ 10A OUTPUT QUEUE
D $$LIBOUTQ 10A LIBRARY OUTPUT QUEUE
*
* API FEHLERMELDUNGEN
*
D $$ERRCOD DS
D $$BYTPRO 1 4B 0 INZ(128)
D $$BYTAVA 5 8B 0 INZ(*ZERO)
D $$EXCID 9 15A INZ(*BLANKS)
D $$RSRVD 16 16A INZ(*BLANKS)
D $$EXCDTA 17 144A INZ(*BLANKS)
*
*-------------------------------------------------------------------------------------------*
*
* ÜBERGABEPARAMETER FÜR API 'QRCVDTAQ'
*
C QRCVDTAQ PLIST
C PARM 'ARCSPLF' P1_DTAQ 10 --> DATA QUEUE
C PARM '*LIBL' P1_LIBDTAQ 10 --> LIBRARY
C PARM P1_LNGDTA 5 0 <-- LENGTH OF DATA
C PARM P1_DTA 128 <-- DATA
C PARM -1 P1_WAIT 5 0 --> WAIT TIME
*
*-------------------------------------------------------------------------------------------*
*
C DOU $$FUNCTION = '*END'
* EINTRAG AUS DER DATENWARTESCHLANGE 'ARCHIVIERUNG DRUCKDATEIEN' EMPFANGEN
C CALL 'QRCVDTAQ' QRCVDTAQ
* DATEN IN DIE FORMAT-DATENSTRUKTUR ÜBERTRAGEN
C MOVE P1_DTA ARCSPLF
* NUR EINTRÄGE FÜR DRUCKDATEIEN VERARBEITEN
C IF $$FUNCTION = '*SPOOL'
... Meine Aktionen ...
C ENDIF
C ENDDO
* PROGRAMMENDE
C SETON LR
Mit dem folgenden Programm wird dann das obige Batchprogramm beendet.
PHP-Code:
*
* ÜBERGABEPARAMETER FÜR API 'QSNDDTAQ'
*
QSNDDTAQ PLIST
PARM 'ARCSPLF' P1_DTAQ 10 --> DATA QUEUE
PARM '*LIBL' P1_LIBDTAQ 10 --> LIBRARY
PARM 128 P1_LNGDTA 5 0 <-- LENGTH OF DATA
PARM '*END' P1_DTA 128 <-- DATA
*
*-------------------------------------------------------------------------------------------*
*
* ARCHIVIERUNG DRUCKDATEIEN BEENDEN
CALL 'QSNDDTAQ' QSNDDTAQ
* PROGRAMMENDE
SETON LR
PS
Das Programm habe ich vor einer Ewigkeit geschrieben.
Frank Hildebrandt
-
Danke Frank.
wenn ich das aber im batch laufen lasse, müssen die spools ja im "gesavt" werden.
Am liebsten wäre mir, wenn das als Überwachungsprogramm irgendwo laufen würde.
Gruß
-
Das Programm sollte schon im Batch laufen. Dazu noch folgende Info wie das ganze Thema abläuft.
1. Das Programm läuft im Batch und wartet über den QRCVDTAQ darauf einen Eintrag aus der Datenwarteschlange zu empfangen und zu verarbeiten. Solange kein Eintrag in der Datenwarteschlange steht verbraucht das Programm auf keine Prozessorzeit.
2. Eine Spoolfile wird in die entsprechende Ausgabewarteschlange gestellt. OS/400 stellt daraufhin einen Eintrag zu dieser Spoolfile in die Datenwarteschlange.
3. Nachdem ein Eintrag in der Datenwarteschlange steht, übergibt OS/400 diesen Satz dem Batchprogramm.
4. Das Batchprogramm empfängt diesen Satz und kann diesen dann verarbeiten.
Die ganze Verarbeitung läuft asynchron ab. D.h. viele Jobs können einen Eintrag in die Ausgabewarteschlange und dadurch auch in die Datenwarteschlange stellen. Nur ein Programm (Das Batchprogramm) verarbeitet die Einträge in der Datenwarteschlange.
Das zweite Programm, das ich gepostet habe sorgt dafür, dass das erste Programm im Bedarfsfall auch sauber beendet werden kann. Ansonsten könnte man es nur über einen ENDJOB OPTION(*IMMED) beenden, da der QRCVDTAQ ansonsten bis zum Sankt Nimmerlein Tag auf einen Eintrag in der Datenwarteschlange warten würde.
Frank Hildebrandt
-
Naja, man kann beim QRCVDTAQ im Parameter Wait eine Wartezeit in Sekunden angeben (-1 = unendlich).
Läuft der Timer ab, kann man per RTVJOBA den ENDSTS prüfen und den Job beenden.
Wenn dann das Subsystem beendet wird, endet auch der Überwachungsjob.
Das Batch-Programm sollte per ADDPJE in ein aktives Subsystem eingebracht werden. Man kann auch eine Anzahl gleichzeitiger Job's angeben (Parallelverarbeitung).
Der DTAQ-Eintrag wird erst im Status RDY erstellt und zwar jedes Mal. Wenn also z.B. von SAV/HLD in RDY freigegeben wird, erscheint ggf. ein neuer Eintrag !
Die DTAQ sollte eine Satzlänge von 128 Bytes haben (CRTDTAQ).
-
 Zitat von Fuerchau
Naja, man kann beim QRCVDTAQ im Parameter Wait eine Wartezeit in Sekunden angeben (-1 = unendlich)
Stimmt. Daran habe ich jetzt selber nicht gedacht.
 Zitat von Fuerchau
Läuft der Timer ab, kann man per RTVJOBA den ENDSTS prüfen und den Job beenden.
Wäre eine Möglichkeit die Beendigung mit OPTION(*CNTRLD) abzufragen. Würde ich dann nutzen, wenn der QRCVDTAQ in einem CL läuft. Wenn er in einem RPG läuft würde ich folgendes machen.
PHP-Code:
* Feststellen, ob der Job beendet werden soll
c ShtDn 01
c If *IN01 = *On
... Beende das Programm
c EndIf
Frank Hildebrandt
Similar Threads
-
By SL in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 07-12-06, 10:46
-
By cbe in forum NEWSboard Drucker
Antworten: 6
Letzter Beitrag: 29-06-06, 15:32
-
By phil.sebastian in forum NEWSboard Drucker
Antworten: 1
Letzter Beitrag: 23-05-06, 12:08
-
By chrhu in forum NEWSboard Drucker
Antworten: 6
Letzter Beitrag: 10-05-06, 13:02
-
By Jörg Schmidt in forum NEWSboard Drucker
Antworten: 6
Letzter Beitrag: 04-05-06, 09:50
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks