Anmelden

View Full Version : prüfen ob Job schon läuft



Seiten : [1] 2

muadeep
26-05-10, 07:12
guten morgen *all

kennt jemand eine Möglichkeit, zu prüfen, ob ein bestimmter Job schon läuft!

Erklärung:
ich habe ein Programm (sagen wir mal PgmA), welches von einem anderen Pgm. an die JobQ "QBATCH" übergeben wird.
Hier kommt es vor, dass in dieser OutQ schon andere Job's (die nicht's mit diesem zu tun haben => "FIFO") stehen, bzw. noch laufen.
Es kann jetzt sein, dass genau dieses PgmA noch mal an eine andere JobQ z.B. "QBACHT2"übergeben wird.

meine Frage:
ist es möglich zu Beginn dieses Pgm's zu prüfen (API, CMD, etc.), ob schon ein PgmA läuft?

mwithake
26-05-10, 07:23
Über die API QUSRJOBI lässt sich das ermitteln.

andreaspr@aon.at
26-05-10, 07:32
Du kannst es auch mit dem CHKACTJOB RPG-Source probieren:
http://www.neroni.it/Scaricabili/JAC2.txt

BenderD
26-05-10, 07:58
... das ist beides nicht Wasserdicht (da könnten 2 gerade am prüfen sein und legen dann beide los). Sowas regelt man über Sperrobjekte oder Satzsperren in einer Datenbank, man holt sich dann als erstes eine Sperre, die dann bei Jobende verschwindet, oder vorher freigegeben werden kann.

D*B

Fuerchau
26-05-10, 08:17
Was aber das Problem nicht löst, wenn der 1. Job in der JOBQ noch wartet.
Hier könnte der Job sich selber prüfen.
Sobald die von Dieter erwähnte Sperre aktiv ist, kann der 2. Job sich ja sofort wieder beenden, wenn eine gleichzeitige Verarbeitung nicht erlaubt ist.
So wird zwar ggf. zuviel submitted, aber was macht das schon.
Laufen die Jobs nämlich hintereinander, merkt's sowieso keiner.
Doppelte Verarbeitung verhindert man ggf. über Satzflags oder Existenzprüfung des Ergebnisses.

BenderD
26-05-10, 08:27
... die aber nicht zum prüfen gegen doppelte Ausführung herangezogen werden dürfen, da sie erst bei erfolgreichem Ende gesetzt werden dürfen, sonst verhungert der ganze Kram, wenn ein Job abbricht.

D*B



Doppelte Verarbeitung verhindert man ggf. über Satzflags oder Existenzprüfung des Ergebnisses.

muadeep
26-05-10, 08:36
mit diesem Programm PgmA werden bestimmte Daten per FTP an einen externen FTP-Server übertragen.

Mein Problem ist hier:
die FTP-Befehle schreibe ich in ein und die selbe Datenbank!

es kommt jetzt von Zeit zu Zeit vor, dass, falls der Job in "QBATCH" noch steht und der Job in "QBATCH2" schon läuft, die Daten in der FTP-Protokolldatei für den Job in "QBATCH" nicht mehr stimmen. :-(

Fuerchau
26-05-10, 08:42
Dann würde ich die Scriptdatei in die QTEMP kopieren, per OVRDBF auf die QTEMP verweisen und dann den FTP starten.
Dann benötigst du keine Sperren, es sei denn, es soll die selbe Datei übertragen werden.

Alternativ kannst du auch eine FTP-JOBQUEUE anlegen, einem Subsystem zuweisen und per JOBD ansteuern um sicherzustellen, dass die FTP-Jobs nur nacheinander laufen.

muadeep
26-05-10, 08:47
Jobs in JobQ und QTEMP funktioniert das?

Fuerchau
26-05-10, 09:01
Diese Frage verstehe ich nun gar nicht.
Was hat eine JOBQ mit QTEMP zu tun ?

Du erstellst eine JOBQ mit CRTJOBQ.
Per ADDJOBQE ordnest du diese einem Subsystem zu.
Per CRTJOBD erstellst du eine JOBD, die du wiederum obiger JOBQ zuordnest.

Beim SBMJOB für deine FTP's gibst du dann diese JOBD mit.

Die QTEMP betrifft nur deine STDIN/STDOUT für den FTP.