This section contains a general description of the parameters and data that can be passed to UTM when calling KDCADMI.
More detailed information concerning how to assign data to the identification area, selection area, data area and fields of the parameter area for individual operations can be found in section "KDCADMI operation codes".
The following symbols have the following meanings:
--> The field is an input field. You can pass information to UTM using this field.
<-- The field is an output field. UTM returns information to the administration program in this field.
Parameter area
You can instruct UTM to perform a specific operation using the parameter area. The opcode, subopcode1 and subopcode2 fields are provided for this purpose. In the obj_type field, you specify the object type of the target object.
After processing, UTM stores the return code and the length of the data returned in the parameter area. You can determine if the call was successful or not from the return code.
The parameter area is defined as followed by the structure kc_adm_parameter:
struct kc_adm_parameter |
|
Input fields in the kc_adm_parameter structure (hereafter indicated using the -->character) that are not used must always be set to binary zero. The version, version_data and opcode fields must contain data every time KDCADMI is called.
The fields in the data structure have the following meanings:
-->version
Designates the version of the program interface used by the user program.
The version of the program interface indicates the variant of the program interface and the layout of the parameter areas passed at call time. You must explicitly specify the version of the program interface on each call of KDCADMI. So far, only KC_ADMI_VERSION_1 has been defined as a version.
If the variant of the program interface is modified in a subsequent version then the version of the program interface is increased. If the extensions are compatible and you would like to continue to use the existing program interface in the new openUTM version then you do not need to adapt your existing administration programs and can continue to specify the version of the interface as KC_ADMI_VERSION_1. If you want the administration program to use the new program interface then you must adapt your programs and specify the program interface version of the current openUTM version in version.
The interface is designed to be source-compatible across multiple openUTM versions.
<--retcode
In the retcode field, UTM returns the code of the function call.
There are general and function-specific return codes.
The general return codes can be returned by all functions. They are described in "Return codes".
The function-specific return codes only occur in connection with certain program interface calls, and they are listed in the relevant call descriptions.
If the entire length of data in the parameter area cannot be accessed, then the KDCS return code in the return area of the communication area for the service processing the KDCADMI call is assigned '70Z', the KCRCDC return code is assigned 'A100', and the service is aborted with PEND ER.
The retcode field must be assigned the constant KC_RC_NIL before the function is called.
-->version_data
Version of the data structures used.
The version of the data structures determines the layout of the data structures used. You must specify the value of version_data explicitly for each KDCADMI call. In openUTM V7.0, the constant KC_VERSION_DATA_11 should be used for version_data.
KC_VERSION_DATA (without suffix) always refers to the current version of the data structures. Programs that want to benefit from the source compatibility of the interface should not use the constant KC_VERSION_DATA, but for version_data should always specify the version constant KC_VERSION_DATA_xx for the interface version for which the program was written. KC_VERSION_DATA_11 is the version valid for openUTM V7.0, while KC_VERSION_DATA_10 refers to the version valid for openUTM V6.5 for example.
If the layout of the data structures is modified to remain object-compatible, KC_VERSION_DATA is not increased and the program units can run in the new UTM version.
If the layout of the data structures changes in a way that is incompatible in an openUTM version, for example if the data structures receive new fields and therefore become larger, then the version number of the data structure is incremented. The constants KC_VERSION_DATA and KC_VERSION_DATA_10 are defined in the same include file as the data structures. Because the interface is source-compatible, program units must be only recompiled in this case.
-->opcode, subopcode1, subopcode2
In these fields you tell UTM which action to execute. The opcode field must be assigned a value each time KDCADMI is called. This field determines which operation will be executed. In the subopcode1 and subopcode2 fields, you can specify in more detail what action should be taken depending on the value of opcode.
The values you will need to use for opcode to execute certain operations are summarized in the following table. The operation codes indicated by a (*) are socalled standard operations that are explained in more detail in the section "Data structures for object and parameter types".
Function | Value of opcode |
Replace the entire application program. | KC_CHANGE_APPLICATION |
Create a UTM dump | KC_CREATE_DUMP |
Create a new object in the configuration | KC_CREATE_OBJECT (*) |
Create KDCDEF control statements online | KC_CREATE_STATEMENTS |
Delete an object, i.e. remove it from the configuration | KC_DELETE_OBJECT (*) |
Generate, activate, delete or read RSA key pairs for data encryption ot the communication with clients | KC_ENCRYPT |
Query information on objects and application parameters. | KC_GET_OBJECT (*) |
Only in UTM cluster applications: | KC_LOCK_MGMT |
Modify object properties or application parameters | KC_MODIFY_OBJECT (*) |
Only in UTM cluster applications: | KC_ONLINE_IMPORT |
Roll back transaction in PTC state. | KC_PTC_TA |
Only on BS2000 systems: | KC_SEND_MESSAGE |
Terminate an application run. | KC_SHUTDOWN |
Establish connections to printers for which messages have been queued. | KC_SPOOLOUT |
Carry out an operation on the system log file SYSLOG. | KC_SYSLOG |
Update the IP address of an individual or of all communication partners. | KC_UPDATE_IPADDR |
Switch to the next generation of the user log file(s) | KC_USLOG |
The information you may or must supply in the other fields of the parameter area and in the identification area, selection area and data area are dependent on the opcode passed. For each operation code (value of opcode), section "Calling the KDCADMI functions" contains a description of the operations that can be carried out and of the information that the data area must contain to be passed to UTM in order to carry out these operations. The list is ordered alphabetically according to the operation code.
-->obj_type
The obj_type field must contain either the type of the target object or the type of the application parameter whose value is queried or is to be changed.
The object or parameter types that you can enter depend on which operation you require, and therefore on the values in the opcode, subopcode1 and subopcode2 fields
The two tables below contain the objects and parameter types that are supported for the standard operations in UTM. Standard operations are:
Display
Create
Modify
Delete
The column “opcode” in the table contains the operation codes for which each object type or parameter type can be specified. The following abbreviations are used:
CRE for KC_CREATE_OBJECT (Create)
DEL for KC_DELETE_OBJECT (Delete)
GET for KC_GET_OBJECT (Show)
MOD for KC_MODIFY_OBJECT (Modify)
Object types
Object type | Value of obj_type | opcode |
Abstract syntax for communication via OSI TP | KC_ABSTRACT_SYNTAX | GET |
OSI | KC_ACCESS_POINT | GET |
Application context for communication via OSI | KC_APPLICATION_CONTEXT | GET |
Names for the local application that were generated with KDCDEF (in a BCAMAPPL statement or in MAX APPLINAME) | KC_BCAMAPPL | GET |
Only on BS2000 systems: Names of the Character Sets (CHAR-SET Statement) | KC_CHARACTER_SET | GET |
Names and properties of a node application in a UTM cluster application | KC_CLUSTER_NODE | GET, MOD |
Connections for distributed processing via LU6.1 | KC_CON | GET, CRE, |
Database connection | KC_DB_INFO | GET, MOD |
Only on BS2000 systems: | KC_EDIT | GET |
Global secondary storage areas for KDCS program units used to exchange data between services (GSSB) | KC_GSSB | GET |
Names and properties of the HTTP descriptors (HTTP-DESCRIPTOR Statement) | KC_HTTP_DESCRIPTOR | GET |
Keysets for the application. Keysets determine the access privileges of clients and users accessing services and LTERM partners. | KC_KSET | GET, |
Load modules of a UTM application on BS2000 systems or the shared objects/DLLs of a UTM application on Unix, Linux or Windows systems | KC_LOAD_MODULE | GET, MOD |
LPAP partner for connecting partner applications for distributed processing via LU6.1 | KC_LPAP | GET, MOD |
Sessions for distributed processing via LU6.1 | KC_LSES | GET, |
Local transaction codes for services provided by partner applications for distributed processing via LU6.1 or OSI TP | KC_LTAC | GET, |
LTERM partner for connecting clients and printers | KC_LTERM | CRE, DEL, |
User-defined message module | KC_MESSAGE_MODULE | GET |
Only on BS2000 systems: | KC_MUX | GET, MOD |
Associations with partner applications for distributed processing via OSI TP | KC_OSI_ASSOCIATION | GET |
Connections for distributed processing via OSI TP | KC_OSI_CON | GET, MOD |
OSI-LPAP partner for connecting partner applications for distributed processing via OSI TP | KC_OSI_LPAP | GET, MOD |
Transactions in PTC state | KC_PTC | GET |
Program units of the UTM application and VORGANG exits | KC_PROGRAM | CRE, DEL, |
Clients and printers. | KC_PTERM | CRE, DEL, |
Temporary queues | KC_QUEUE | GET |
Allocation of UTM function keys | KC_SFUNC | GET |
Properties of sign-on procedure | KC_SIGNON | GET |
IP subnets | KC_SUBNET | GET |
Transaction codes for local services and | KC_TAC | CRE, DEL, |
TAC classes for the application | KC_TACCLASS | GET, MOD |
LTERM pools for the application | KC_TPOOL | GET, MOD |
Transfer syntax for communication via OSI TP | KC_TRANSFER_SYNTAX | GET |
User IDs of the application, including queues | KC_USER | CRE, DEL, |
User IDs of the application including their queues (optimized access for UTM cluster applications) | KC_USER_FIX, | GET |
Parameter types
Parameter type | Value of obj_type | opcode |
Current statistics values on the capacity utilization of a UTM cluster application | KC_CLUSTER_CURR_PAR | GET, |
Properties of a UTM cluster application (e.g. name of the cluster filebase, node application monitoring settings) as well as current settings (e.g. number of started node applications) | KC_CLUSTER_PAR | GET, |
Current settings of the application parameters and statistics concerning the application capacity utilization | KC_CURR_PAR | GET, |
Parameters for diagnosis and UTM Accounting | KC_DIAG_AND_ACCOUNT_PAR | GET, |
Data for dynamic configuration: | KC_DYN_PAR | GET |
Application name, KDCFILE name and maximum values for the application, such as the size of the cache, size and number of storage areas for KDCS program units, and the maximum number of processes permitted for the application | KC_MAX_PAR | GET, |
Name, type and format of a user-specific message destination | KC_MSG_DEST_PAR | GET |
Current page pool assignment | KC_PAGEPOOL | GET |
General information on the generated temporary queues: maximum number of queues, maximum number of messages for a queue, behavior of full queues. | KC_QUEUE_PAR | GET |
System parameters: | KC_SYSTEM_PAR | GET |
Process parameters for the application: | KC_TASKS_PAR | GET, |
Application timer | KC_TIMER_PAR | GET, |
Global values for distributed processing, except for the timer defined for distributed processing | KC_UTMD_PAR | GET |
Data structures for object and parameter types
For each of the object and parameter types associated with the standard operations, a data structure is provided in the header file kcadminc.h with which you can pass object properties and/or parameter values to UTM or get them from UTM. There are also corresponding data structures for some of the operations that do not form part of the standard operations. The data structures are described in section "Data structures used to pass information". The names of the data structures are created as follows:
The data structure "typ_str" belongs to the object or parameter type "TYP". For example, the data structure kc_user_str belongs to KC_USER, and kc_max_par_str to KC_MAX_PAR.
A similar principle applies to non-standard operations. E.g. the data structure kc_application_par_str belongs to the operation code KC_APPLICATION_PAR.
-->obj_number
Number of objects for which the required operation is to be carried out. In obj_number you specify the number of objects about which UTM is to supply information when information is requested (KC_GET_OBJECT).
<--number_ret
UTM returns the actual number of objects for which the operation was carried out in number_ret.
-->id_lth
In the id_lth field you must specify the length of the identification area identification_area passed in the call.
If no identification area is passed, then id_lth=0 must be specified.
-->select_lth
In the select_lth field you must specify the length of the data structure that is passed to UTM in the selection area selection_area.
If no selection area is passed, then select_lth=0 must be specified.
-->data_lth
In the data_lth field you must specify the length of the data area data_area passed in the call or in which UTM shall return data.
If no data will be passed in the data area, then data_lth=0 must be specified.
<--data_lth_ret
UTM returns the actual length of the data returned in the data area in the data_lth_ret field.
Identification area
The identification area identification_area is used to identify the target object for the administration operation. All objects within a group of a certain object type must be uniquely identified by their object_name.
The following union is provided for passing the object name using the identification area.
union kc_id_area |
|
Whether or not an object in the identification area needs to be uniquely specified depends on the function called.
The object name must be specified as follows in order to uniquely identify it:
For the object types KC_CON an KC_PTERM, you must pass the triplet name, processorname and bcamappl-name as the object name to UTM using the union field long_triple of type kc_long_triple_str. Here name is the name of the object (for example the PTERM name), processor-name is the name of the computer on which the object is located, and bcamappl-name is the name of the local application via which the connection between the object and the application is established.
struct
char p_name[8];
char pronam[64];
char bcamappl[8];
For the object type KC_MUX on BS2000 systems, you must pass the triplet name, processor-name and bcamappl-name as the object name to UTM using the union field triple of type kc_triple_str. Here name is the name of the object, processor-name is the name of the computer on which the object is located, and bcamappl-name is the name of the local application via which the connection between the object and the application is established.
struct
char p_name[8];
char pronam[8];
char bcamappl[8];
For an LTERM pool (object type KC_TPOOL) you must pass the LTERM prefix, from which the names of the LTERM partners in the LTERM pool can be created, as the object name. The LTERM prefix must be passed to UTM using the kc_name8 union field.
For the object type KC_TACCLASS you must pass the TAC class number as the object name using the kc_name2 union field if the function call applies to a particular TAC class. Otherwise specify binary 0 to indicate that the call applies to all TAC classes.
For the object type KC_DB_INFO you must adopt the identification of the database (db_id) as the object name in the union element kc_name2 if the function call is to be valid for a particular database. db_id is a number and represents the databases in the order in which they were generated in the KDCDEF run.
For load modules, shared objects, DLLs (object type KC_LOAD_MODULE) and program units (KC_PROGRAM), pass the name specified at generation using the kc_name32 union field.
For the object type KC_SFUNC (UTM function keys) you must pass the short description of the function key as the object name in the union element kc_name4.
For the function KC_PTC_TA (roll back a transaction in PTC state), you must fill the union element kc_ptc_id_str with the values from the structure ptc_ident. You can get the content of ptc_ident by first calling KC_GET_OBJECT with object type KC_PTC.
The data structure kc_ptc_id_str is defined as follows:
struct kc_ptc_id_str
char vg_indx[10];
char vg_nr[10];
char ta_nr_in_vg[5];
For the remaining object types, pass the object name specified at generation using the kc_name8 union field if the function call applies for a particular object. Otherwise specify binary 0 to indicate that the call applies to all objects of this type.
If the identification area is not supported for a call, then you must set the area address to the null pointer. You must then set id_lth=0 in the parameter area.
Selection area
In the selection area you can pass a data structure containing selection criteria to UTM when querying information (operation code KC_GET_OBJECT). UTM then returns only the names and properties of the objects of the specified object type which meet the selection criteria.
The selection criteria must be passed in the data structure defined in kcadminc.h for that object type (obj_type). In the data structure you must set the search values for the fields to be used for selection.
Example
You would like to query information on which user IDs are currently signed on as users or clients. To do this, you specify the value 'Y' in the connect_mode field in the data structure kc_user_str in the selection area.
If several selection criteria are specified simultaneously, then only those objects meeting all of the selection criteria will be returned. The remaining fields in the structure must be set to binary zero. The selection criteria that can be used in a search can be found in the description of KC_GET_OBJECT starting from section "Selection area" in chapter "KC_GET_OBJECT - Query information".
If you want to pass selection criteria, then when calling KDCADMI, you must pass the address of the selection area and, in the select_lth field in the parameter area, specify the length of the data structure passed in the selection area.
If the selection area is not used for a call, then you must set the &selection_area area address to the null pointer. You must then set select_lth=0 in the parameter area.
Data area
The data area is used to pass object properties, parameter values and information to or from UTM. The structure of the data depends on the operation code and on the type of the target object.
If data is to be passed in the data area during a KDCADMI call, then you must pass the address of the data area and set the data_lth field of the parameter area to the length of the data structure passed in the data area.
If information is queried which is to be stored in the data area, then you must, when calling KDCADMI, pass the address of the data area you have provided to store the return data and set the data_lth field of the parameter area to the length of this data area.
If the data area is not used in a call, then you must pass the null pointer as the address of the area. You must then set data_lth=0 in the parameter area.
The data area must not exceed 16 MB.