Job-Netz
aus Wikipedia, der freien Enzyklopädie
Job-Netze sind eine leistungsfähige Möglichkeit von JES3, mehrere Jobs parallel ablaufen zu lassen, die Ausführung aber vom Beenden von anderen Jobs abhängig zu machen.
Hier ein Beispiel, nebeneinanderliegende Kästen repräsentieren Jobs die gleichzeitig ausgeführt werden können, untereinanderliegende müssen auf ihre darüberliegenden warten:
+---------+ | PREPARE | +---------+ | | +---------------+ +-------------+ | | V V +----------+ +----------+ | DINGE1 | | DINGE2 | +----------+ +----------+ | | +---------------+ +-------------+ | | V V +---------+ | CLEANUP | +---------+
Wenn der Job PREPARE durchgelaufen ist, dürfen also DINGE1 und DINGE2 gleichzeitig laufen, aber erst wenn beide fertig sind, darf CLEANUP gestartet werden.
Wie lässt sich das realisieren? Man gibt diesem Job-Netz einen Namen, zum Beispiel TESTNET. Jeder Job bekommt gleichzeitig einen Hold-Count; ist dieser Hold-Count auf 0, wird der Job gestartet. Darüberliegende Jobs dekrementieren den Hold-Count des darunterliegenden also, sie Releasen ihn.
Für unser Beispiel hieße das:
- CLEANUP bekommt einen Hold-Count von 2.
- CLEANUP wird von DINGE1 und DINGE2 Released
- DINGE1 und DINGE2 bekommen jeweils einen Hold-Count von 1
- PREPARE braucht keinen Hold-Count, es wird ja sofort gestartet. Allerdings released er DINGE1 und DINGE2
Wie sieht das in JCL aus?
- Für PREPARE:
//*NET NETID=TESTNET,RELEASE=(DINGE1,DINGE2)
- Für DINGE1 und DINGE2 jeweils:
//*NET NETID=TESTNET,RELEASE=(CLEANUP),NHOLD=1
- Für CLEANUP:
//*NET NETID=TESTNET,NHOLD=2
Solche Job-Netze sehen in der Praxis viel komplizierter aus; es gibt zu diesen seitenweise Diagramme.
Seit geraumer Zeit, allerdings werden diese "NET's" im JES3 kaum noch genutzt, sondern sind durch andere Ablauf-Planungs-Systeme wie z. B. Operation Planning and Control (OPC) weitgehend ersetzt worden.