DFHSKM (Programm zur Verwaltung von Teilaufgaben)

Ein DFHSK-Makro ruft DFHSKM auf, um die Ausführung einer Routine im Rahmen einer Unteraufgabe des Betriebssystems zu veranlassen. DFHSKM wählt eine Unteraufgabe aus, um die Anfrage auszuführen, es sei denn, der Anrufer hat eine bestimmte Unteraufgabe angegeben.

DFHSKM bestimmt, ob die Teilaufgabe nicht funktionsfähig ist, noch nicht begonnen wurde oder ausgeführt wird. Die Unteraufgabe wird als "nicht funktionsfähig" bezeichnet, wenn sie sich selbst beendet hat oder nicht angehängt werden konnte. Wenn die Unteraufgabe nicht funktionsfähig ist und der Benutzer SYNC=YES im DFHSK-Makro codiert hat, wird die Anfrage synchron verarbeitet, d. h. DFHSKM führt die Anfrage unter CICS® (TCB) aus.

Wenn die Unteraufgabe noch nicht begonnen hat, hängt DFHSKM CICS an, die den Einstiegspunkt von DFHSKC zur Ausführung angibt. DFHSKM wartet dann auf eine ECB im Subtask-Steuerbereich (SKA) für die Subtask und fährt fort, wenn die ECB von DFHSKC gepostet wird, was anzeigt, dass die Subtask initialisiert wurde.

DFHSKM erstellt dann ein Arbeitsablaufelement (WQE), das die im Rahmen einer Teilaufgabe auszuführende Arbeit darstellt. Die WQE wird der Arbeitswarteschlange für die Teilaufgabe hinzugefügt. Wenn die Arbeitsbeschreibung ECB der Teilaufgabe veröffentlicht wird, was bedeutet, dass Arbeit zu erledigen ist, gibt DFHSKM eine Warteanweisung für die Arbeitsbeschreibung ECB in der WQE aus. Diese EZB wird gebucht, wenn die WQE von der Teilaufgabe verarbeitet wurde. DFHSKM gibt die Kontrolle an den Anrufer zurück und gibt das Ergebnis der Verarbeitung an.

Wenn die Unteraufgabe, die den WQE verarbeitet, vor dem Abschluss fehlschlägt, wird DFHSKM informiert und versucht, die Anforderung synchron auszuführen, wenn der Aufrufer dies angegeben hat.

Wenn CICS beendet wird, gibt es ein DFHSK CTYPE=TERMINATE-Makro aus, um den Subtasking-Mechanismus zu beenden. DFHSKM setzt in jedem Kontrollbereich für Unteraufgaben (im statischen Speicher von DFHSKP) eine Flagge, die anzeigt, dass die Unteraufgabe beendet werden sollte. DFHSKM postet dann die Teilaufgabe ECB, um die Teilaufgabe zu signalisieren, diese Flagge zu untersuchen.

DFHSKM wird auch bei der Verarbeitung von aufgeschobenen Arbeitselementen (DWE) aufgerufen.

Wenn DFHSKM beschließt, eine WQE synchron zu verarbeiten, wird die Kontrolle an die vom Aufrufer angegebene Routine übergeben. Diese Routine wird möglicherweise nicht normal abgeschlossen. Damit DFHSKM die WQE nicht verliert, weil die Aufgabe abgebrochen wurde, erstellt es eine DWE mit der Adresse der WQE. Wenn die Aufgabe abends, fügt der DWE-Prozessor die WQE der freien Warteschlange hinzu.