Mit der Steueranweisung TACCLASS legen Sie fest, nach welchem Verfahren die Auftragsbearbeitung in dieser UTM-Anwendung gesteuert werden soll. Das heißt, Sie legen die Kriterien fest, nach denen Aufträge für Transaktionscodes, die einer TAC-Klasse zugeordnet sind, von openUTM gestartet werden sollen.
Die Festlegung dieser Kriterien kann alternativ mit der TACCLASS-Anweisung oder der TAC-PRIORITIES-Anweisung erfolgen.
Eine TAC-Klasse besteht dabei aus einer Teilmenge der generierten Transaktionscodes der Anwendung. Die Aufteilung der TACs in TAC-Klassen wird in der TAC-Anweisung mit dem Operanden TACCLASS= vorgenommen.
Indem Sie mindestens eine TACCLASS-Anweisung generieren, legen Sie fest, dass die Auftragsbearbeitung in Ihrer Anwendung durch die Beschränkung der Prozesszahl für die einzelnen TAC-Klassen gesteuert wird. Sie dürfen dann keine TAC-PRIORITIES-Anweisung absetzen.
In der TACCLASS-Anweisung legen Sie fest, wie viele Prozesse der UTM-Anwendung gleichzeitig für die TACs einer TAC-Klasse arbeiten dürfen. Darüber hinaus können Sie im Operanden PGWT festlegen, ob in Teilprogrammläufen, die von Transaktionscodes der TAC-Klasse gestartet werden, blockierende Aufrufe (z.B. der KDCS-Aufruf PGWT) zulässig sind oder nicht. Sie dürfen nur einer Dialog- und einer Asynchron-TAC-Klasse die Eigenschaft PGWT=YES, d.h. blockierende Aufrufe sind erlaubt, zuordnen.
Die Zahl der Prozesse einer TAC-Klasse, die Sie in der TACCLASS-Anweisung festlegen, kann der Administrator verändern. Details siehe openUTM-Handbuch „Anwendungen administrieren“.
Mit der TACCLASS-Anweisung können Sie beeinflussen, wie die UTM-Anwendung durch Teilprogramme einzelner TACs belastet werden darf. Sie können z.B. verhindern, dass langlaufende Teilprogramme die Anwendung blockieren. Werden Asynchron-Vorgänge bei der verteilten Verarbeitung verwendet, dann können Sie verhindern, dass alle Prozesse der Anwendung, die für Asynchron-Verarbeitung zur Verfügung stehen, gleichzeitig durch diese Vorgänge belegt werden.
Standardwerte
Alle TAC-Klassen werden bei der KDCDEF-Generierung implizit erzeugt, wenn Sie einen Transaktionscode mit der Anweisung TAC ...,TACCLASS= oder mit TACCLASS eine TAC-Klasse generieren.
Setzen Sie keine TAC-PRIORITIES-Anweisung ab, dann sollten Sie für jede verwendete TAC-Klasse eine TACCLASS-Anweisung schreiben. In diesem Fall ordnet openUTM den TAC-Klassen, für die keine TACCLASS-Anweisung abgesetzt wird, die Minimalwerte für TASKS und TASKS-FREE zu. Für TAC-Klassen mit PGWT=YES müssen Sie dann immer TACCLASS-Anweisungen absetzen!
Wenn Sie keine TAC-Klassen verwenden, d.h. es ist in keiner TAC-Anweisung der Operand TACCLASS= angegeben und es gibt weder eine TACCLASS- noch TAC-PRIORITIES-Anweisung, dann gilt:
Dialog-TACs werden ohne Einschränkung verarbeitet.
Für Asynchron-TACs gilt als Einschränkung die Prozess-Anzahl, die im Startparameter ASYNTASKS angegeben wird. Dieser Wert kann durch die Administration geändert werden.
Ein ausführliche Beschreibung über TAC-Klassen und Prioritätensteuerung finden Sie im Abschnitt "Auftragssteuerung - Prioritäten und Prozessbeschränkung" |
|
|
tacclass | Nummer der TAC-Klasse, für die die Prozess-Anzahl festgelegt werden soll. Folgende TAC-Klassen können angegeben werden:
Sie ordnen einen Transaktionscode dieser TAC-Klasse zu, indem Sie in der entsprechenden TAC-Anweisung TACCLASS=tacclass angeben. Eine Asynchron-TAC-Klasse dürfen Sie nur angeben, wenn Sie in MAX ...,ASYNTASKS einen Wert ungleich 0 generieren. Asynchron-Transaktionscodes, die keiner TAC-Klasse zugeordnet sind, werden automatisch in die TAC-Klasse 16 eingeordnet. Die Nummer der TAC-Klasse ist keine Priorität, sondern nur eine Bezeichnung für die TAC-Klasse. | |||||||||||||||||||
TASKS= | number1 gibt an, wieviele Prozesse der Anwendung höchstens gleichzeitig für die TACs dieser Klasse arbeiten dürfen. Die erlaubten Werte für TASKS= sind abhängig vom Wert des Operanden PGWT und der Operanden TASKS, TASKS-IN-PGWT und ASYNTASKS der MAX-Anweisung. Die erlaubten Wertebereiche für TASKS=number1 entnehmen Sie bitte der Tabelle:
*) wie in der MAX-Anweisung angegeben Wenn Sie für eine Dialog-TAC-Klasse TASKS=0 angeben, ersetzt openUTM diesen Wert automatisch durch 1. Die Summe der Angaben bei TASKS= in den einzelnen TACCLASS-Anweisungen darf größer sein als die maximal zulässige Anzahl von Prozessen der Anwendung (MAX ...,TASKS=). | |||||||||||||||||||
TASKS-FREE= | number2 Im Operanden TASK-FREE wird festgelegt für
Gegenüber der Verwendung des Parameters TASKS bietet TASKS-FREE den Vorteil, dass bei einer Änderung der gesamten Prozessanzahl der Anwendung im laufenden Betrieb die Anzahl der für eine TAC-Klasse erlaubten Prozesse dynamisch angepasst wird. Die erlaubten Werte für TASKS-FREE=number2 sind abhängig vom Wert der Operanden TASKS und ASYNTASKS der MAX-Anweisung. | |||||||||||||||||||
Die erlaubten Wertebereiche für TASKS-FREE= entnehmen Sie bitte der Tabelle:
*) wie in der MAX-Anweisung angegeben Pflichtoperand, wenn TASKS= nicht angegeben wird. Wenn Sie TASKS-FREE=0 angeben, ersetzt openUTM diesen Wert automatisch durch 1. | ||||||||||||||||||||
PGWT= | (program wait) | |||||||||||||||||||
YES | In dieser TAC-Klasse sind blockierende Aufrufe zulässig.
| |||||||||||||||||||
NO | Teilprogramme, die blockierende Aufrufe enthalten, sind in dieser TAC-Klasse nicht zulässig. Standard: NO Erst wenn in den Message Queues der Dialog-TAC-Klassen keine Aufträge mehr zwischengespeichert sind, werden blockierende Aufrufe für Asynchron-TACs abgearbeitet. |
Beispiel
In der folgenden Tabelle wird dargestellt, wie sich die Angabe von TASKS-FREE unter entsprechenden Rahmenbedingungen auf die einer TAC-Klasse zur Verfügung stehenden Prozesszahlen auswirkt.
In der Spalte CURRENT TASKS ist die jeweils aktuelle maximale Zahl der Prozesse aufgeführt, die der UTM-Anwendung zur Verfügung stehen. CURRENT ASYNTASKS enthält die jeweils aktuelle Obergrenze für Prozesse zur Bearbeitung von asynchronen Vorgängen. Die anwendungsglobalen Maximalwerte für CURRENT TASKS bzw. CURRENT ASYNTASKS werden mit den Operanden TASKS bzw. ASYNTASKS der MAX-Anweisung festgelegt. Während des Anwendungslaufs können die aktuellen Werte im Rahmen dieser Obergrenze dynamisch mit den Operanden TASKS bzw. MAXASYN des KDCAPPL-Kommandos geändert werden.
Die Spalte DIALOG enthält die Anzahl von Prozessen, die maximal für eine bestimmte DIALOG-TAC-Klasse zur Verfügung steht, wenn für diese TAC-Klasse TASKS-FREE=nn angegeben wurde.
Die Spalte ASYNCH enthält die Anzahl von Prozessen, die maximal für eine bestimmte Asynchron-TAC-Klasse zur Verfügung steht, wenn für diese TAC-Klasse TASKS-FREE=number2 angegeben wurde.
CURRENT TASKS | CURRENT ASYNTASKS | TASKS-FREE | DIALOG | ASYNCH |
10 | 9 | 2 | 8 | 7 |
6 | 6 | 2 | 4 | 4 |
3 | 3 | 2 | 1 | 1 |
2 | 2 | 2 | 1 | 0 |
1 | 1 | 2 | 1 | 0 |
10 | 5 | 3 | 7 | 2 |
6 | 5 | 3 | 3 | 2 |