Job-Netz

Job-Netze sind eine leistungsfähige Möglichkeit des JES3, mehrere Jobs parallel ablaufen zu lassen, die Ausführung aber vom Beenden anderer Jobs abhängig zu machen.

Theoretisches Beispiel

In dem folgenden Beispiel repräsentieren

  • nebeneinander liegende Kästen Jobs, die nur gleichzeitig (parallel) ausgeführt werden können, und
  • untereinander liegende Kästen Jobs, die nur nacheinander (sequentiell) ausgeführt werden können:
 
 
 
 
 
PREPARE
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
DINGE1
 
 
 
 
 
 
 
DINGE2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
CLEANUP
 
 
 
 
 

Wenn der Job PREPARE durchgelaufen ist, dürfen die Jobs DINGE1 und DINGE2 gleichzeitig laufen. Aber erst, wenn beide fertig sind, darf der Job 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 der Hold-Count auf 0, wird der Job gestartet. Darüber liegende Jobs dekrementieren den Hold-Count des darunter liegenden, d. h., sie releasen ihn.

Für unser Beispiel heißt das:

  • CLEANUP bekommt einen Hold-Count von 2. Der Job wird von DINGE1 und DINGE2 released.
  • DINGE1 und DINGE2 bekommen jeweils einen Hold-Count von 1.
  • PREPARE braucht keinen Hold-Count; der Job wird ja sofort gestartet. Allerdings released er DINGE1 und DINGE2.

In der Praxis sehen Job-Netze viel komplizierter aus; es gibt zu diesen seitenlange Diagramme.

Codierung in JCL

Wie sieht dieses Beispiel in der Job Control Language (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

Seit geraumer Zeit allerdings werden diese NETs im JES3 kaum noch genutzt, sondern sind weitgehend durch andere Ablauf-Planungs-Systeme, wie z. B. Operation Planning and Control (OPC) ersetzt worden.