Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

KDCTCL - Change number of processes of a TAC class

It only makes sense to call the command KDCTCL, if jobs are processed in your application using a “limited number of processes for TAC classes”, i.e. no TAC-PRIORITIES statement is generated (see the openUTM manual “Generating Applications”).

With KDCTCL you can:

  • get information on the current settings for the TAC classes. To do this, enter KDCTCL without the operands TASKS and TASKSFREE.

  • change the maximum number of processes that can process TACs of a TAC class at the same time. You can only change this value if the KDCDEF generation of your application does not contain the TAC-PRIORTIES statement.

    The number of processes that you can allow for individual TAC classes is limited by the maximum number of processes defined in the MAX statement during the KDCDEF generation (operands TASKS, ASYNTASKS and TASKS-IN-PGWT).
    If you enter a higher number of processes, KDCTCL is rejected.

    After the KDCTCL, the actual number of processes set for processing TACs of a TAC class may be smaller than the value set with KDCTCL. The actual number of processes depends on the current number of processes for the entire application (set with the start parameter TASKS or by administration, e.g. using KDCAPPL).

You can define the maximum number of processes for a TAC class in one of two ways: either by entering the number of processes allowed to process TACs in one TAC class at the same time (TASKS operand); or by entering the minimum number of processes in the application that are to be kept available for processing the TACs in other TAC classes (TASKSFREE operand). The following section explains the difference between TASKS and TASKSFREE:

  • When you use TASKS, the maximum number of processes available to the specified TAC class is independent of the number of processes currently available for the entire application program. This means that the number of processes in the TAC class remains constant even if the number of processes in the entire application is reduced. This applies until such time as the number of processes in the TAC class and the number in the entire application are identical.

    The use of the TASKS operand can (in extreme cases) cause processes in one TAC class to hinder those in all other TAC classes.

  • When you use TASKSFREE, the maximum number of processes available to the specified TAC class depends, in the dynamic context, on the number of processes currently available for the entire application program. The reserve number specified in TASKSFREE is always kept free for processes in other TAC classes.

    The maximum number of processes for one TAC class is then obtained in the following manner:

    • Dialog TAC classes (1 - 8): current number of all processes available for dialog TACs in the entire application program (TASKS), less the number in TASKSFREE, but at least one process

    • Asynchronous TAC classes (9 -16): current number of all processes available for asynchronous TACs in the entire application program (TASKS), less the number in TASKSFREE.


Effect in UTM cluster applications

In UTM cluster applications, KDCTCL applies locally in the node.


Period of validity of the change

This change does not remain in force beyond the end of the application. The available number of processes is determined by the most recent KDCTCL call entered.


KDCTCL       CLASS=tacclass

             [ ,{ TASKS=number_tasks | TASKSFREE=number_tasks } ]


For administration using message queuing you must enter KDCTCLA.

CLASS=tacclass

Number of the TAC class for which the number of processes should be changed. For tacclass you can enter a number between 1 and 16 (1 <= tacclass <= 16).

TASKS=number_tasks

May only be specified if no priority control is generated for the application, i.e. if the application is generated without TAC-PRIORITIES.

Specifies how many processes in the application are allowed to process TACs in TAC class tacclass at the same time.
With TASKS you define the absolute number of processes for a TAC class.

Minimum value of number_tasks:
For dialog TACs (class 1-8) number_tasks must be >= 1. Otherwise dialog services would be locked and the users on the terminal would have to wait until services were released again.

For asynchronous TACs (class 9-16), number_tasks must be =0.

Maximum value of number_tasks:
The permitted maximum value for number_tasks depends on the following factors:

  • On whether the TAC class was generated with PGWT=YES or with PGWT=NO.
    PGWT=YES means that the program units in the TAC class can run with lock calls (e.g. KDCS call PGWT).

  • On the values for TASKS, TASKS-IN-PGWT and ASYNTASKS generated statically in the KDCDEF control statement MAX.

See the following table for the permitted value ranges for TASKS.


TAC class

PGWT=

Permitted maximum value

1 - 8 (dialog TACs)

NO

TASKS *)

YES

TASKS-IN-PGWT *)

9 - 16 (asynchronous TACs)

NO

ASYNTASKS *)

YES

The smaller of the values:
ASYNTASKS and *)
TASKS-IN-PGWT *)


*) As generated statically in the KDCDEF control statement MAX

TASKSFREE=number_tasks

May only be specified if no priority control is generated for the application, i.e. if the application is generated without TAC-PRIORITIES.

In TASKSFREE you specify how many processes of the application are to be reserved for processing other TAC classes than the one specified.

If number_tasks is greater than the number of processes available to the entire application program, the following occurs:

  • if tacclass is a dialog TAC class, one process remains available for processing its TACs;

  • if tacclass is an asynchronous TAC class, the number of processes available to it = 0.

Minimum value of number_tasks: 0

Maximum value of number_tasks:
The permitted maximum value for number_tasks depends on the statically generated values for TASKS and ASYNTASKS in the KDCDEF control statement MAX.

See the following table for the permitted value ranges for TASKSFREE.


TAC class

PGWT=

Permitted maximum value

1 - 8 (dialog TACs)

NO

TASKS - 1 *)

YES

TASKS - 1 *)

9 - 16 (asynchronous
TACs)

NO

ASYNTASKS *)

YES

ASYNTASKS *)


*) As statically generated in the KDCDEF control statement MAX

Output from KDCTCL

If you enter KDCTCL without TASKS or TASKSFREE, you are only shown the currently set values. Otherwise, the output for the specified TAC class shows you the new and old process numbers. Output is displayed on the administrator terminal.

TACCLASS      TASKS        TASKS-FREE
             NEW    OLD      NEW    OLD
tac-class    number number   number number


Explanation of the output

TACCLASS           

Number of the TAC class

TASKS

Absolute number of processes available for processing the TACs in this TAC class. If you called KDCTCL ... TASKSFREE=, the following value is displayed:

Process number currently set for the application - TASKFREE

TASKS-FREE

Number of processes kept free for other TAC classes. If you entered KDCTCL ... TASKS=, the output of TASKS-FREE is always 0 to show that you made an absolute entry for this TAC class.

Example

The following table illustrates the impact of various changes to the number of processes:


Dialog TACs

Asynchronous TACs

Action

CURRENT TASKS

TASKS FREE

TASKS

CURRENT TASKS

TASKS FREE

TASKS

Initial status

4

0

3

3

0

3

Change TASKS-FREE 0 --> 2

4

2

2

3

2

1

Change CURRENT TASKS reduced by 2

2

2

1

1

2

0

CURRENT-TASKS
This represents the maximum number of processes that can currently be used at the same time for the application (dialog TACs) or the maximum number of processes that can currently process asynchronous jobs at the same time (asynchronous TACs).

TASKS
Designates the appropriate maximum number of processes for the specified TAC class.

TASKS-FREE
Designates the number of processes reserved for the other TAC class.