Your Browser is not longer supported

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

{{viewport.spaceProperty.prod}}

TAC-PRIORITIES - specify priorities of the TAC classes

With the TAC-PRIORITIES control statement you specify the method to be used to control job processing in this UTM application. This means that you specify the criteria used to start jobs for transaction codes that are assigned a TAC class.

You can also specify these criteria using the TAC-PRIORITIES statement or the TACCLASS statement.

A TAC class consists of a subset of the generated transaction codes of the application. The dividing of transaction codes into TAC classes is done in the TAC statement with the TACCLASS= operand.
If the TACCLASS operand is not specified, then dialog TACs are not assigned a TAC class and asynchronous TACs are not assigned asynchronous TAC class 16.

You can specify the following in particular with TAC-PRIORITIES:

  • That the distribution of processes amongst the TAC classes is to be done according to priorities. You must not issue any TACCLASS statements in this case.

  • The algorithm to be used to distribute the available processes of the application amongst the dialog and asynchronous TAC classes.
    Operands: DIAL-PRIO and ASYN-PRIO

  • The maximum number of processes of the application that are allowed to process jobs to dialog TAC classes.
    Operand: FREE-DIAL-TASKS

Specifying priorities for the TAC classes

In priority control you can select between absolute, relative or equal priorities for dialog jobs and for asynchronous jobs. The control of job processing of dialog and asynchronous jobs is done separately from each other.

Jobs for dialog TACs that are not assigned any TAC class are processed regardless of the priorities set for dialog jobs. These jobs are always started immediately after they are received from the transport system.

The number of the TAC class plays a role for absolute and relative priorities. Jobs to TAC classes with a low number have a higher priority that jobs to TAC classes with a higher number. This means that for dialog TAC classes, TAC class 1 has the highest priority and TAC class 8 the lowest priority. For asynchronous TAC classes, TAC class 9 has the highest priority and TAC class 16 the lowest priority.

When absolute priorities are used, processes of the application that are free and available for processing the TAC classes are always assigned the TAC class with the highest priority, i.e. 1 or 9, as long as there are jobs waiting for this TAC class.

Only after there are no more jobs waiting in the TAC class with the highest priority are jobs waiting for the TAC class with the next lowest priority processed.

If you want to prevent jobs waiting for a TAC class with a lower priority from not being processed for a long time, then you should use relative priorities.

When relative priorities are used, jobs from TAC classes with higher priority are processed more often than jobs from TAC classes with lower priority.

When matching priorities are used, then the same number of jobs from each TAC class are processed as long as there are waiting jobs available.

Limiting the number of processes that process jobs to TAC classes

You can limit the number of processes that process jobs of a TAC class when using priority control for the TAC classes to keep some processes free for administrative tasks or internal jobs.

You limit the number of processes for the dialog TAC classes relative to the total number of processes using the FREE-DIAL-TASKS operand.
With MAX ASYNTASKS=(atask_number,...) you limit the number of processes for asynchronous TAC classes.

This limit is the same, however, for all asynchronous and for all dialog TAC classes.

Transaction codes that start program unit runs with blocking calls

When the TAC-PRIORITIES statement is used, transaction codes with blocking calls (e.g. the KDCS call PGWT) can be assigned any TAC class as long as the TASKS-IN-PGWT operand of the MAX statement is generated with a value > 0. You must generate TAC PGWT=YES for these transaction codes.

If no TACCLASS statement or TAC-PRIORITIES statement is issued in the generation although the TACCLASS parameter was specified for at least one TAC statement, then the default values of the TACCLASS statement are applied. TAC priorities are not used in this case. See the TACCLASS description on "TACCLASS - define the number of processes for a TAC class" for more information.

You will find a detailed description of the TAC classes and priority control in chapter “Job control - priorities and process limitations”.

TAC-PRIORITIES 

[  DIAL-PRIO={ ABS | REL | EQ } ] 
[ ,ASYN-PRIO={ ABS | REL | EQ } ] 
[ ,FREE-DIAL-TASKS = number ]

DIAL-PRIO =

Specifies according to which priority free processes will be distributed amongst the dialog TAC classes with waiting jobs. Waiting dialog jobs can only arise when more jobs are obtained from the job bourse at a specific time than there are processes available for the dialog TAC classes. The jobs are then written to the job queues of the transaction codes from which they will then be read out and processed according to their priority by the processes that become free.

    ABS

Absolute priority:
A free process is always assigned the TAC class with the highest priority (TAC class 1) as long as there are jobs waiting for this TAC class. TAC classes with lower priority are only serviced if there are no more jobs waiting in all TAC classes with higher priority.

    REL

Relative priority:
Free processes are assigned TAC classes with higher priority more often than TAC classes with lower priority as long as there are jobs waiting for the TAC classes with higher priority. If jobs are available for all dialog TAC classes, then a free process will be assigned TAC class 1 twice as often as TAC class 2, and TAC class 2 will be assigned processes twice as often as TAC class 3, etc.

    EQ

Equal priority:
As long as there are jobs available, all TAC classes are services equally often. This equal distribution can be interrupted if a TAC class does not have any jobs waiting for a while or when program unit runs with blocking calls (e.g. the KDCS call PGWT) often arise.

Default: EQ

ASYN-PRIO= 

Specifies according to which priority processes will be distributed amongst the asynchronous TAC classes with outstanding asynchronous jobs or interrupted asynchronous jobs.

If the maximum number of simultaneously open asynchronous services is reached (set in MAX ASYNTASKS=(...,service_number)), then no more asynchronous jobs are started. An interrupted open asynchronous service is selected according to its priority and resumed.

    ABS

Absolute priority:
A free process is always assigned the TAC class with the highest priority, i.e. TAC class 9, as long as there are asynchronous jobs or interrupted asynchronous jobs waiting for this TAC class.
Free processes only process the jobs of a TAC class with a lower priority when there are no more outstanding or interrupted asynchronous jobs in the message queues of all TAC classes with higher priority.

    REL

Relative priority:
Free processes are assigned TAC classes with higher priority more often than TAC classes with lower priority as long as there are outstanding or interrupted jobs waiting for the TAC classes with higher priority. If jobs are available for all TAC classes, then a free process will be assigned TAC class 9 twice as often as TAC class 10, and TAC class 10 will be assigned processes twice as often as TAC class 11, etc.

    EQ

Equal priority:
As long as there are jobs available, all TAC classes are services equally often. This equal distribution can be interrupted if a TAC class does not have any jobs waiting for a while or when program unit runs with blocking calls (e.g. the KDCS call PGWT) often arise.

Default: EQ

FREE-DIAL-TASKS=number


With FREE-DIAL-TASKS you limit the total number of processes that may process jobs to dialog TAC classes relative to the number of all processes of the application. In number you specify the minimum number of processes of the application that are to be reserved for processing jobs that do not belong to any dialog TAC class.

The maximum number of processes that may simultaneously process asynchronous jobs is not limited by FREE-DIAL-TASKS= . The MAX operand ASYNTASKS=atask_number is provided for this purpose.

Minimum value: 0 (no limit)
Maximum value: TASKS - 1 (TASKS from the MAX statement)
Default value: 1

Example
TASKS=7 and ASYNTASKS=2 was set in the MAX statement. FREE-DIAL-TASKS=3 is generated in the TAC-PRIORITIES statement. The application is operated with six processes. A maximum of three processes may process jobs in TAC classes 1 through 8 then. A maximum of two processes can process jobs in TAC classes 9 through 16. One process is reserved for dialog jobs that are not assigned a TAC class.