PDA

View Full Version : CL: Kann man Status eines Jobs abfragen?



Seiten : [1] 2 3

hs
21-01-03, 08:52
Gibt es eine Möglichkeit, in einem CL festzustellen, ob ein bestimmter Job aktiv ist oder auf DLYW steht?

Danke für eure Antworten
HS

TARASIK
21-01-03, 10:03
Hallo,
wenn Du Deine Emailadresse gibst, kann ich ein Beispielprogramm zumailen.

gruss TARASIK

Newbie
21-01-03, 11:26
Hallo hs,

du kannst in einem CL einen wrkactjob mit outpunt(*print) machen.
Dann ließt du die Spoolfile in eine Datei ein und kannst über die Substringfunktion die Stelle auslesen und dann wieterverarbeiten.

Hoffe dir bringt das was.

hs
21-01-03, 12:49
@Newbie:
Meinst du so:
1. wrkactjob mit output(*print)
2. cpysplf in Datei

Wie bekomme ich im CL dann den Status in eine CL-Variable, die ich dann abfragen kann? Geht es direkt mit substring im CL oder brauche ich dafür eine Hilfs-QRY, die mir aus der komplette Zeile den Status selektiert?

Danke
HS

Newbie
22-01-03, 09:31
Hallo,

also du definierst eine Variable
DCL VAR(&STAUS) TYPE(*CHAR) LEN(5)
und eine Datei die du anglegt hast.
DCLF FILE(Bibliothek/Filename)
Dann kommt der
WRKACTJOB OUTPUT(*PRINT)

CPYSPLF FILE(QPDSPAJB) TOFILE
(Bibliothek/Filename) + SPLNBR(*LAST)

Dann ließt du die Datei in Schleife ein mit RCVF, das mußt du in Schleife machen, denn Sonst bekommst du nur den ersten Eintrag.
Vor dem einlesen mußt du die Stellen zählen an denen der Stauts steht.
über Substring weißt du dann der Variable &Status den Wert zu
CHGVAR VAR(&STATUS) VALUE(%SST(Filename abStelle wievielStellen))

Gruß René

Fuerchau
22-01-03, 10:19
Es geht auch komfortabler, wenn man sich mit System-API's auskennt:

QUSLJOB listet alle Job's nach auswählbaren Kriterien in ein USRSPC-Objekt.
Nachzulesen im Handbuch "OS/400 Workmanagement API's".

Für den Zugriff aus USRSPC-Objekte gibt es auch entsprechende API's, Handbuch "OS/400 Objekt-API's".

Zu finden auf der CD "Online-Library" oder bei publib.boulder.ibm.com

hs
22-01-03, 10:31
@Fuerchau:
Kenne mich leider nicht mit API aus. Außerdem haben wir V3.7, da gab es diese vermutlich noch gar nicht?

@Newbie:
Ich habe das CL mal getestet, klappt soweit einwandfrei mit einer Einschränkung:

Wenn der Status "RUN" gewesen ist, dann möchte ich 1 min warten und dann wieder von vorne beginnen, d.h. DLYJOB, WRKACTJOB wieder in Datei, diese auslesen mit RCVF etc.
Jetzt habe ich das Problem, dass ich nicht weiß, wie ich die Ausgabedatei nach Einlesen des letzten Satzes wieder schließen kann.
TFRCTL oder CLOF gingen nicht.

Gruß
HS

RobertMack
22-01-03, 11:45
Hallo HS,

falls Dein PGM im Batch läuft, gibt's einen workaround: es könnte sich nach einem DLYJOB selbst erneut submitten und beenden ...

Gruß Robert

RobertMack
22-01-03, 11:51
... oder Du packst die Leseschleife in ein eigenes CL, CALL X PARM(&STS), müsste auch gehen ...

Fuerchau
22-01-03, 12:57
Diese API's gibt es bereits seit V3R1, also keine Panik.

Das mit dem WRKACTJOB und Spoolausgabe ist zwar sehr schön, kann aber mitunter die Systemlast erheblich einschränken.
Versuchs mal im Dialog und beobachte die Auslastung des eigenen Job's.
Ausserdem listet WRKACTJOB alle Jobs auf.
Mit den API's kann man die Art der Jobs einschränken, ausserdem sind sie erheblich schneller.