Die Job-Steuerung (Auftragssteuerung) ermöglicht eine differenzierte und damit rationellere Steuerung von Jobs. Dabei sind vor allem zwei Eigenschaften der Job-Steuerung von Bedeutung:
Die Jobs können in Job-Klassen eingeteilt werden.
Job-Klassen beschreiben ein Job-Profil und sind ein Ordnungsbegriff für Jobs, die in bestimmten Eigenschaften und Merkmalen übereinstimmen.
Die Job-Klassen werden Job-Schedulern zugeordnet.
Die Job-Klassen werden von der Systembetreuung max. 16 Job-Schedulern zugeordnet, wobei die Job-Scheduler unterschiedliche Strategien verfolgen können und entscheiden, welcher Job zum Start freigegeben wird.
Die System-Job-Klasse $SYSJC ist fest dem System-Job-Scheduler $SYSJS zugeordnet.
Im Normalfall werden alle von den Job-Schedulern zum Start freigegebenen Jobs vom Klassen-Scheduler sofort der Task-Steuerung zum Start übergeben.
Nach Aufhebung einer Überlastsituation oder einer Speichersättigung werden die Jobs der Job-Klasse bevorzugt, deren Klassenoptimum noch nicht erreicht ist und die die höchste Dringlichkeit besitzt (abhängig von der Anzahl bereits in der Job-Klasse laufender Jobs und dem Klassengewicht). Der Klassen-Scheduler bildet die Schnittstelle zur Task-Steuerung. Er fällt die Entscheidung, ob ein zum Start freigegebener Job tatsächlich abläuft.
Bild 17: Komponenten der Job-Steuerung
Unterstützung des zentralen Kalenders durch das JMS
Die Startzeitpunkte von Batch-Jobs können über symbolische Daten aus dem zentralen Kalender von BS2000 angegeben werden. Dazu dient ein weiterer neuer Typ von Batch-Job: der Kalender-Job. Somit sind folgende drei Typen definiert:
der Termin-Job | ist ein einmalig ablaufender Batch-Job, dessen Startzeitpunkt von einer Zeitangabe des Benutzers abhängig ist. |
der Repeat-Job | ist ein Wiederholungs-Job, dessen Wiederholungszyklus von einer Benutzerangabe (Repeat-Attribut) abhängig ist. |
der Kalender-Job
| ist entsprechend seiner Eigenschaft ein Termin-Job mit dem Start-Attribut *AT(...), der jedoch nach Vorgabe eines Kalenders wiederholt werden kann. |
Der erste Ablauf und die folgenden Wiederholungen eines Kalender-Jobs werden vom System gleich behandelt. Das System unterscheidet nicht – wie bei Repeat-Jobs – in „Current“ und „Next Image“ eines Kalender-Jobs.
Alle Abläufe eines Kalender-Jobs haben die gleiche TSN. Damit ist eine bessere Identifizierung und Überwachung des Kalender-Jobs möglich. Die einzelnen Abläufe werden jeweils bis zum Erreichen des Startzeitpunkts vom Job-Scheduler verwaltet: Am Ende der Terminierung des Vorgängers wird der Nachfolger eingerichtet (gleiche TSN) und dem Scheduler mit dem Start-Attribut *AT(...) und der nächsten Startzeit des symbolischen Datums aus dem Kalender übergeben.
Die Möglichkeiten zur Angabe des Startzeitpunkts richten sich nach den Vorgaben des zentralen Kalenders (z.B. ist der Wiederholungszyklus nur auf Tage und nicht auf Stunden bezogen). Siehe dazu das Handbuch „CALENDAR“ [7].
Im Gegensatz zu Repeat-Jobs können Kalender-Jobs mit Hilfe von Monitor-Jobvariablen (MONJVs) überwacht werden. Die MONJV bleibt für die gesamte Lebensdauer des Kalender-Jobs geöffnet. Zusammen mit der gleichbleibenden TSN ist somit jederzeit der Zugriff auf den Job über die MONJV gewährleistet.
Ausgefallene Wiederholungen eines Kalender-Jobs werden – entsprechend den einfachen Termin-Jobs – mit dem abgelaufenen Startdatum nachgeholt. Anschließend wird aus dem Kalender der nächste Startzeitpunkt ermittelt.
Mit Hilfe des Operanden LIMIT der Kommandos ENTER-JOB und MODIFY-JOB ist eine Begrenzung der Lebensdauer eines Kalender-Jobs möglich. Limit-Überschreitungen die sich z.B. durch ausgefallene Wiederholungen oder Verzögerungen im Scheduler ergeben, werden jedoch zugelassen.
Die Lebensdauer kann ebenfalls durch das Setzen eines Ablaufzählers begrenzt werden. Ist das Limit erreicht, wird der gesamte Wiederholungs-Job beendet.
Kommando | Bedeutung |
CANCEL-JOB 1 | Benutzer-Job abbrechen |
CHANGE-TASK-PRIORITY 1 | Job- oder Task-Priorität eines Dialog-, Batch- oder Druck-Jobs ändern |
ENTER-JOB | Kommandofolge, die in einer ENTER-Datei als Batch-Job gespeichert ist, unter Angabe von Job-Klasse und Job-Priorität starten |
ENTER-PROCEDURE | Kommandofolge starten, die in einer Prozedur als Batch-Job gespeichert ist |
EXIT-JOB | die Task beenden |
FORCE-JOB-CANCEL | Benutzer-Job abbrechen |
HOLD-JOB | Benutzer-Job in den Wartezustand versetzen |
HOLD-JOB-CLASS | Job-Klasse in den Wartezustand versetzen |
HOLD-JOB-STREAM | Job-Stream und Job-Scheduler in den Wartezustand versetzen |
MODIFY-JOB 1 | Eigenschaften eines Benutzer-Jobs ändern |
MODIFY-JOB-CLASS | Grenzen und Gewichtung von Job-Klassen ändern |
MODIFY-JOB-OPTIONS | Die mit ENTER-JOB, SET-LOGON-PARAMETERS und MODIFY-JOB-OPTIONS eingestellten Werte ändern |
MODIFY-JOB-STREAM | Ablaufpriorität der Stream-Task und stream-spezifische Parameter ändern |
MODIFY-JOB-SWITCHES | Einstellung von Auftragsschaltern ändern |
MOVE-JOBS | Job-Beschreibungen exportieren bzw. importieren |
RESUME-JOB | Wartezustand eines Benutzer-Jobs aufheben |
RESUME-JOB-CLASS | Wartezustand einer Job-Klasse aufheben |
RESUME-JOB-STREAM | Wartezustand von Job-Stream und Job-Scheduler aufheben |
SET-LOGON-PARAMETERS | Einleiten eines Dialog- oder Batch-Jobs unter Angabe von Job-Klasse bzw. Job-Priorität |
SHOW-JOB-CLASS | Informationen über Job-Klassen-Attribute; |
SHOW-JOB-OPTIONS | Informationen über die mit ENTER-JOB, SET-LOGON-PARAMETERS und MODIFY-JOB-OPTIONS eingestellten Werte anfordern |
SHOW-JOB-STATUS 1 | Informationen über einen Benutzer-Job anfordern |
SHOW-JOB-STREAM | Beschreibung aller Job-Streams anfordern |
SHOW-SYSTEM-STATUS | Informationen über Job-Klassen und Job-Streams anfordern |
SHOW-USER-ATTRIBUTES | Berechtigung zu den verschiedenen Job-Klassen abfragen |
SHOW-USER-STATUS 1 | Informationen über Gruppen von Benutzer-Jobs anfordern |
START-JMP | Programm zur Rekonstruktion von ENTER-JOB-Kommandos starten |
START-JOB-STREAM | Job-Stream und Job-Scheduler starten |
STOP-JOB-STREAM | Job-Stream und Job-Scheduler beenden |
Makro | Bedeutung |
DJINF | DSECT oder Datenbereich für den Makro JINF erstellen |
ENTER | ENTER-Job abarbeiten |
JINF | Job-Daten anfordern |
JMGDJP | DSECT oder Datenbereich für den Makro JMGJPAR erstellen |
JMGJPAR | Job-Parameter anfordern |
JOBINFO | Job-Daten ausgewählter Jobs anfordern |
JSATTCH | Job-Scheduler mit dem JMS verbinden |
JSDETCH | Job-Scheduler vom JMS lösen |
JSEXPCT | JSS-Ereignisse anfordern |
JSINFO | Stream-Parameter abfragen |
JSRUNJB | Job zum Start übergeben |
JSWAKE | Zeitereignis für Job-Scheduler initiieren |
LGOFF | Job beenden |
SWITCH | Benutzer- und Auftragsschalter abfragen und verändern |
TMODE | Auftrags-Attribute abfragen |
Tabelle 25: Schnittstellenübersicht zur Job-Steuerung
1 Durch diese Kommandos können auch Batch-Jobs bearbeitet werden, die von der aufrufenden Benutzerkennung erzeugt wurden, aber unter einer fremden Benutzerkennung ablaufen