Anmelden

View Full Version : Rausfinden ob ein Job nicht läuft?



Seiten : [1] 2 3

katdom
09-09-17, 07:23
Guten Morgen : ),

ich habe da mal eine Frage, gibt es eine Möglichkeit mittels RPG rauszufinden ob ein Job auf der IBM i nicht läuft?

Wir haben bei uns verschiedene Jobs zur Datenverarbeitung laufen und manchmal kommt es vor das diese Jobs nicht laufen. Zum Beispiel wenn manuell in unsere nächtliche Verarbeitung eingegriffen wird.

Dies möchte ich nun abfangen da diese Jobs das A und O bei uns sind. Gibt es da so eine Art API oder eventuell auch eine Prozedur eines IBM i Gurus ?

Ich stelle mir das momentan so vor das ich ein RPG schreibe welches z.B. alle 15 Min prüft ob ein Job mit Name X in dem Subsystem Y vorhanden ist, falls nicht sollen N Mitarbeiter per E-Mail benachrichtigt werden.

Bin für jede Info dankbar ; )

Liebe Grüße

BenderD
09-09-17, 07:48
... da gibt es bessere Methoden:
- der unkaputtbare: JOBQ mit einem Job in die sich dein Programm als erstes selber submitted
- der selbständige: als erstes eine Exithandler registrieren (API CEE4RAGE) der wird bei Programmende immer noch ausgeführt.

Natürlich muss man dafür sorgen, dass kritische Programme nicht auf MSG wait hängenbleiben und bei RCVDTAQ etc. darf kein endlos wait eingestellt sein.

D*B

B.Hauser
09-09-17, 14:11
Hast Du Dir die User Defined Table Function Active_Job_Info() schon einmal angeschaut?
ACTIVE_JOB_INFO table function (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzajq/rzajqudfactivejobinfo.htm)

Das folgende SQL-Statement, das Du einfach in embedded SQL einbindest bringt einen Satz zurück, sofern der Job im Subsystem aktiv ist, ansonsten wird kein Satz zurückgegeben:

Select *
from Table(Active_Job_Info(SUBSYSTEM_LIST_FILTER => 'YOURSBS',
JOB_NAME_FILTER => 'YOURJOBNME')) x;


Birgitta

Fuerchau
09-09-17, 17:02
Nun, ich denke eher daran, dass ein Job aus irgendwelchen Gründen aus der Verarbeitung herausgenommen wurde.
Um also festzustellen, ob ein Job überhaupt gelaufen ist, dient wohl eher DSPLOG.
Für jeden gestarteten und beendeten Job gibt es entsprechende Einträge mit Namen des Jobs.
Und bestimmt gibt es auch ein API dazu.
nun muss man nur prüfen, ob ein gewünschter Eintrag innherhalb einer erwarteten Zeit (+/- x Minuten) vorkommt.

katdom
09-09-17, 17:35
Hast Du Dir die User Defined Table Function Active_Job_Info() schon einmal angeschaut?
ACTIVE_JOB_INFO table function (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzajq/rzajqudfactivejobinfo.htm)

Das folgende SQL-Statement, das Du einfach in embedded SQL einbindest bringt einen Satz zurück, sofern der Job im Subsystem aktiv ist, ansonsten wird kein Satz zurückgegeben:

Select *
from Table(Active_Job_Info(SUBSYSTEM_LIST_FILTER => 'YOURSBS',
JOB_NAME_FILTER => 'YOURJOBNME')) x;


Birgitta

Ich danke dir : )
Genau so etwas habe ich gesucht, einfach nur Info ob Job aktiv oder nicht. Werde mir das anschauen und dann ein wenig rumspielen : P

Auch an die anderen ein Danke für die Mühe

Wünsche allen noch ein schönes Wochenende!

Liebe Grüße

malzusrex
09-09-17, 17:59
Hast Du Dir die User Defined Table Function Active_Job_Info() schon einmal angeschaut?
ACTIVE_JOB_INFO table function (https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzajq/rzajqudfactivejobinfo.htm)

Birgitta

Ab wann gab/gibt es diese Funktion?

Ich habe/hatte so was immer über API gelöst. Allerdings ging es bei mir darum zu prüfen ob irgend ein Job auf MSGW steht.

Gruß
Ronald

B.Hauser
10-09-17, 07:44
Wann die Funktion genau eingeführt wurde, weiß ich nicht. Sie steht jedoch mit entsprechendem PTF (SF99701 Level 34) auch unter Release 7.1 zur Verfügung.

Birgitta

Fuerchau
10-09-17, 23:36
Nun, wie die Funktion schon beschreibt, listet sie nur aktive Jobs auf und basiert auf demselben API wie WRKACTJOB.
Damit kann man natürlich prüfen, ob ein Job gerade jetzt nicht läuft, aber nicht, ob er überhaupt zur vorgesehenen Zeit gelaufen ist.
Je nach Anzahl Jobs im System und Dauer des Jobs, der abgefragt wird, kann alleine die 2malige Abfrage des API's hintereinander trotzdem dazu führen, dass der Job nicht erwischt wird, da er zu kurz läuft.

Was die ganzen neuen SQL-Funktionen angeht so sind sie alle der Ablösung des iSeries Navigators geschuldet, der das ganze mit API's erledigte. Und es kommen anscheinend ständig neue dazu.

Pikachu
11-09-17, 08:59
Läuft der Job die ganze Nacht durch oder wird er auch mal fertig?


Ich stelle mir das momentan so vor das ich ein RPG schreibe welches z.B. alle 15 Min prüft ob ein Job mit Name X in dem Subsystem Y vorhanden ist, falls nicht sollen N Mitarbeiter per E-Mail benachrichtigt werden.

katdom
12-09-17, 16:02
Normalerweise läuft der Job von morgens bis Abends(von Ende Nachtverarbeitung bis start Sicherung),
aber es kommt gelegentlich vor das die Nachtverarbeitung auf einen Fehler läuft, dann werden die nachfolgenden Jobs entweder nicht gestartet oder die Jobs werden nochmal manuell morgens beendet damit die Nachtverarbeitung nochmal laufen kann.

So oder so wird dann oft vergessen die Jobs noch einmal zu starten, und um zu verhindern das dies erst am Nachmittag (oder gar nicht : P ) auffällt eben die E-Mail die eine Info gibt.