Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

TACCLASS - Prozess-Anzahl für TAC-Klassen festlegen

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

tacclass 
    ,{ TASKS=number1 | TASKS-FREE=number2 } 
  [ ,PGWT={ NO | YES } ]

tacclass

Nummer der TAC-Klasse, für die die Prozess-Anzahl festgelegt werden soll. Folgende TAC-Klassen können angegeben werden:

  • die Dialog-TAC-Klassen 1 - 8.
  • die Asynchron-TAC-Klassen 9 - 16

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.
Es hängt nur von der Zahl number1 der erlaubten Prozesse ab, wie stark die Verarbeitung einer TAC-Klasse gedrosselt wird und somit TACs anderer Klassen schneller bearbeitet werden. Diese Drosselung kann für eine TAC-Klasse nur wirken, wenn die Zahl number1 kleiner ist als die Anzahl der laufenden Prozesse der Anwendung.

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:


Klasse 1 - 8
Dialog-TACs
Klasse 9 - 16
Asynchron-TACs

Minimalwert

PGWT=NO

PGWT=YES

PGWT=NO

PGWT=YES

1

1

0

0

Maximalwert

TASKS *)

TASKS-IN- PGWT *)

ASYNTASKS*)

der kleinere der Werte: ASYNTASKS, *) TASKS-IN- PGWT*)

*) wie in der MAX-Anweisung angegeben

Pflichtoperand, wenn TASKS-FREE= nicht angegeben wird.

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

  • Dialog-TAC-Klassen:
    wieviele Prozesse der UTM-Anwendung mindestens für die Verarbeitung von TACs anderer Klassen freigehalten werden sollen,

  • Asynchron-TAC-Klassen:
    wieviele der Prozesse, die für Asynchron-Aufträge zugelassen sind (MAX ...,ASYNTASKS=), mindestens für die Verarbeitung von TACs anderer Asynchron-TAC-Klassen freigehalten werden sollen.

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:


Klasse 1 - 8
D
ialog-TACs
Klasse 9 - 16
Asynchron-TACs

Minimalwert

1

1

Maximalwert

TASKS-1 *)

ASYNTASKS *)

*) 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)
gibt an, ob in dieser TAC-Klasse Teilprogramme ablaufen dürfen, die blockierende Aufrufe enthalten, z.B. KDCS-Aufruf PGWT.
(PGWT, siehe openUTM-Handbuch „Anwendungen programmieren mit KDCS“ und openUTM-Handbuch „Konzepte und Funktionen“).

    YES

In dieser TAC-Klasse sind blockierende Aufrufe zulässig.
PGWT=YES darf nur generiert werden, wenn MAX ...,TASKS-IN-PGWT!=0 definiert wurde. Die Angabe von PGWT=YES ist höchstens für eine Dialog-TAC-Klasse und eine Asynchron-TAC-Klasse zulässig. Teilprogramme, die PGWT-Aufrufe enthalten, müssen diesen TAC-Klassen zugeordnet werden.

  • CPI-C-Teilprogramme:

    Soll ein CPI-C-Teilprogramm Dialog-Conversations unterhalten, bei denen das Senderecht durch den Aufruf Set_Send_Type mit send_type=CM_SEND_AND_PREP_TO_RECEIVE oder durch Aufruf von Receive im Zustand Send auf den Conversation-Partner übertragen wird, so muss der Transaktionscode dieses CPI-C-Teilprogramms einer TAC-Klasse zugeordnet werden, die mit PGWT=YES generiert ist, beispielsweise:

    MAX TASKS=2
    MAX TASKS-IN-PGWT=1
    TACCLASS 1,TASKS=1,PGWT=YES
    TAC CPIC1,PROGRAM=xyz,API=(XOPEN,CPIC),TACCLASS=1

  • XATMI-Teilprogramme:

    Sobald in einer XATMI-Anwendung sowohl Requests als auch Conversational Services enthalten sind, müssen mindestens zwei Tasks gestartet werden und es muss eine TAC-Klasse generiert werden, fürdie PGWT-Aufrufe erlaubt sind. Ein Service ist immer an die Task gebunden. Bei einer Anwendung, die ausschließlich Request/Response-Services enthält, ist dies nicht notwendig.

    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