The UTM Diagarea is a task-specific trace area in which all events are logged. This area thus contains all the events that occurred immediately before a service or application aborted.
The UTM Diagarea is written cyclically. Two cycles are separated by a dividing line comprising '=' characters and blanks. The newest entry is above the dividing line and the oldest entry is below the dividing line. Every entry is 136 long. The total number of entries that can be accommodated by the UTM Diagarea depends on the UTM generation parameter MAX TRACEREC
.
The following types of entries are written to the UTM Diagarea:
UTM records (type
KDCS
)UTM records of type KDCS are written when the following events occur:
a KDCS call in a program unit or
an internal call to the UTM system code or
- a call to the administration programming interface or
an internal PEND ER call by openUTM (system PEND ER) in response to a serious error.
Additional trace information is written for calls from the administration interface (KDCS-opcode=ADMI), see section "Administration DIAGAREA".
If a PEND ER is issued by the system, then the entry in bytes 22- 57 contains an error text.
UTM records when starting and terminating user-specific event exits:
FORMAT exit program (types FOXS and FOXE)
INPUT exit program (types INXS and INXE)
- START exit program (types STXS and STXE)
VORGANG exit program (types VGXS and VGXE)
- HTTP exit program (Typ HTXS und HTXE)
UTM records to identify the service (type
VGID
)A VGID record is written to the UTM Diagarea every time a program unit is started and when a PGWT call returns.
- FORM records (type
FHCL
)
A FORM record is written on a call to a formatting system.
- UTM records when HTTP functions are called (type HTTP )
A HTTP record is written when a HTTP function is called.
Header for the records in the UTM Diagarea
Every record starts with a header containing the following information:
Byte | Meaning | |
dec. | hexadec. | |
0-1 | 00-01 | Count of the current entries in the DIAGAREAs (UTM and DB) |
2-5 | 02-05 | Type identifications (KDCS, VGID, INXS, INXE, STXS, STXE, VGXS, VGXE, ITRC, HTXS , HTXE, HTTP, FOXS, FOXE, FHCL) |
6-7 | 06-07 | Currently not used (preset to ’= =’) |
8-15 | 08-0F | Time stamp |
Structure of the header
As of byte 16, the content of the records depends on the record type.
Structure of the UTM Diagarea for a KDCS call from a program unit
Byte | Field name and meaning | |||||||
dec. | hexadec. | |||||||
16-19 | 10-13 | KCOP:1 | user operation code: INIT, MGET, MPUT, etc. | |||||
internal operation code: see "table KCOP" | ||||||||
20-21 | 14-15 | KCOM: operation modification | ||||||
22-23 | 16-17 | KCLA: area length or queue level (in the case of QCRE) or | ||||||
24-25 | 18-19 | KCLM: message length or | ||||||
26-33 | 1A-21 | KCRN: reference name | ||||||
MCOM call | ||||||||
34-41 | 22-29 | KCMF:format name or edit profile name | KCPOS: | |||||
42-43 | 2A-2B | KCDF: screen function, see "table KCDF" | KCNEG: | |||||
DPUT/DADM | DGET | QCRE | PADM | APRO | ||||
44 | 2C | KCMOD: mode | KCQTYP: | KCQMODE: | KCACT: action (ON/OFF/CON/DIS) | KCPI: | ||
45-47 | 2D-2F | KCTAG: days | empty | empty | ||||
48-49 | 30-31 | KCSTD: hours | KCADRLT: | |||||
50-51 | 32-33 | KCMIN: minutes | KCCOMID: | |||||
52-53 | 34-35 | KCSEC: seconds | KCOF: | |||||
54 | 36 | KCQTYP: | ||||||
55-57 | 37-39 | empty | empty | |||||
58-89 | 3A-59 | KCRFELD in KCKBC: KB return information areasee "table KCDF" | ||||||
92-95 | 5C-5F | Return address to the program unit (the address points to a position after the KDCS call in the program unit) | ||||||
96-99 | 60-63 | Address of the user data area (2nd parameter of the KDCS call) | ||||||
100-103 | 64-67 | Service index | ||||||
104-111 | 68-6F | KCLOGTER in KCKBC: LTERM name | ||||||
112-119 | 70-77 | KCBENID in KCKBC: name of the current user ID |
Structure of an entry of the UTM Diagarea for a KDCS call
1If KCOP=INFO (bytes 16-19) and in the event of operation modification KCOM=CK (bytes 20-21), the message area of the logged call is written to the next entry of the UTM Diagarea at a length KCPAC. This information is of interest for diagnostic purposes, as it logs the call to be checked.
2 The 64 bit specifications only apply to Unix, Linux and Windows systems.
The following entries are possible in the KCDF field (bytes 42-43; screen function):
Contents KCDF, | Symbolic | Meaning |
0000 | ----- | no screen function |
0001 | KCREPL | clear screen and output format |
0001 | KCRESTRT | screen restart after PEND RS |
0002 | KCERAS | erase unprotected fields |
0004 | KCALARM | BEL function |
0008 | KCREPR | local printer output |
For internal calls from openUTM, the following codes are entered in the KCOP field:
KCOP contents | Situation in which this entry was written | Entries in subsequent fields |
STRT | Start of UTM application program, beginning of start handling in the UTM system code | No entry |
WAIT | UTM process is waiting in the system code for the next request | No entry |
CONT | Continuation in UTM system code after execution of formatting or a DB action via KDCROOT or after the INPUT exit is called | KCRCCC, KCRCKZ and KCRCDC only. for INPUT exit: |
NOOP | Buffer area of MESSAREA must be emptied (only possible when event monitor is switched on) | - - - |
ADMI | UTM administration action | UTM internal interface |
Structure of KCRFELD
Byte | Field name and meaning | ||||
dec. | hexadec. | ||||
58-59 | 3A-3B | KCRDF: screen function return | |||
60-61 | 3C-3D | KCRLM: actual length of the message | |||
INFO CK call | MGET call | SIGN ON call | |||
62 | 3E | KCRINFCC: | KCVGST: | KCRSIGN1: | |
63 | 3F | KCTAST: | KCRSIGN2: | ||
64 | 40 | empty | |||
65 | 41 | empty | KCRMGT: message type | ||
66-68 | 42-44 | KCRCCC: KCDS return code | |||
69 | 45 | KCRCKZ: identifier: P (productive or live operation application), | |||
70-73 | 46-49 | KCRCDC: internal return code | |||
74-81 | 4A-51 | KCRMF: return of the format identifier , edit profile or the abstract syntax | |||
82-89 | 52-59 | KCRPI: service identification return |
UTM Diagarea after a call of the INPUT exit
After the INPUT exit is called, openUTM enters the most important parameters that the exit receives or sets (KCPAC) in the KDCS record:
Byte | Field name and meaning | |
dec. | hexadec. | |
16-19 | 10-13 | KCOP: "CONT" is entered here |
20-25 | 14-19 | empty |
26-33 | 1A-21 | KCIFCH: first 8 characters of input |
34-35 | 22-23 | KCICVST: service status: "ES"/"ET"/"RS"/"EC |
36-37 | 24-25 | KCIFKEY: value of F key: 1,...,24 |
38-39 | 26-27 | KCIKKEY: value of K key: 1,...,14 |
40-41 | 28-29 | KCICFINF: information about control fields: "UN"/"NO"/"ON"/"MO" |
42-49 | 2A-31 | KCINTAC/KCINCMD: next TAC to be started or next user command |
50-51 | 32-33 | KCICCD: code for effect of input: "ER"/"CC"/"SC"/"ST"/"CD" |
52 | 34 | KCICUT: truncate TAC: "Y"/"N" |
53 | 35 | --- |
54-57 | 36-39 | KCIERRCD: error info for data display terminal |
58-... | 3A-... | the following is not relevant for diagnostics |
Structure of an UTM Diagarea entry after a call of the INPUT exit
Error texts in UTM Diagarea after SYSTEM PEND ER
To allow more rapid diagnosis in the event of a SYSTEM-PEND ER, the corresponding line of the UTM Diagarea contains a printable error text in bytes 22-57.
The following table contains a list of all error texts, plus the relevant cause of the error, the module where the PEND ER occurred and the type of error involved (system error or user error).
The error texts marked with *) appear only on BS2000 systems and the values marked with **) appear only on Unix, Linux and Windows systems.
Error text | Cause, module | Error type |
APPL. PROGRAM DOES NOT EXIST | No indicator (KCRARA) for a program unit existed when program unit started (70Z with KR01). | System error |
APPL. PROGRAM WITHOUT PEND | Program unit run was not terminated with PEND. (84Z) | User error |
ASYNC. PROGRAM NOT FOUND | Asynchronous program no longer available (program may have been exchanged). PEND ER dump follows with 70Z and KR02. | User error |
ERROR IN "START-TP" OF LGCON | The language connection module supplied an incorrect return code when program unit was started. | System error |
KB END LABEL OVERWRITTEN | The KB in the application program is greater than specified in the UTM generation (70Z with KR04). | User error |
SPAB END LABEL OVERWRITTEN | The SPAB in the application program is greater than specified in UTM generation (70Z with KR05). | User error |
KCRCCC >= 70Z AFTER UTM SVC | UTM SVC set KCRCCC in KB header to >= 70Z | User/system error |
ROOTDATA CODE INVALID **) | UTM SVC set ROOTDATA CODE to an invalid value | System error |
ERROR ROUTINE XT... ENTERED **) | A signal with the number ...(in KDCRTDI) occurred. | User/system error |
ERROR ROUTINE EXIT ENTERED **) | An illegal exit() call (COBOL: STOP RUN statement) was recognized while a program unit was running; see also under return code KCRCDC= EXIT. | User error |
ERR IN STXIT-ROUTINE OF LGCON *) | During STXIT handling, an faulty return code was supplied by the Language Connection Module. | User/system |
STXIT WITH XT.. ENTERED *) | A STXIT with weight .. occurred. | System error |
DB ERRORCODE = TA_CHAIN_RSET | The database connection module supplied return code' TA_CHAIN_RSET' . | System error |
KDCS CALL IN VORGANG EXIT | An illegal KDCS call was made in the VORGANG exit program. | User error |
VORGANGEXIT PROGRAM NOT LOADED | The VORGANG exit program is not loaded. | User error |
KDCS CALL IN FORMAT EXIT *) | An illegal KDCS call was made in the FORMAT EXIT program. | User error |
DATABASE DOWN AT USER DB CALL | The database was no longer connected at the time of the CALL to the database from the application program unit. | User/ |
ILLEGAL RTCODE FROM DBCON | The database connection module supplied an illegal error code. | System error |
NO DB CALL ALLOWED IN SIGN-ON | The sign-on service has issued an illegal DB-USER-CALL | User error |
PROGRAM INDEX = 0 INVALID **) | UTM SVC set an invalid program index. | System error |
DYNAM. PROGRAM LOADING FAILED *) | An error occurred when loading a program. | User/system |
Error texts in UTM Diagarea after SYSTEM PEND ER
Service identification entry (type VGID)
Byte 32-Bit | Byte: 64-Bit **) | Meaning | ||
dec. | hexadec. | dec. | hexadec. | |
16 | 10 | 16 | 10 | Service ID |
17 | 11 | 17 | 11 | Session counter |
18-19 | 12-13 | 18-19 | 12-13 | Transaction counter in the service |
20-23 | 14-17 | 24-31 | 18-1F | Service counter |
24-27 | 18-1B | 32-39 | 20-27 | Sum of USED and ERROR for the current TAC |
28-31 | 1C-1F | 40-47 | 28-2F | Length of the global transaction identifier (GTRID) of the XID |
32-35 | 20-23 | 48-55 | 30-37 | Length of the branch qualifier (BQUAL) of the XID |
36-115 | 24-73 | 56-137 | 38-89 | The first 80 bytes of the XID data *) |
116-117 | 74-75 | 138-139 | 8A-8B | Index to the program table |
118-119 | 76-77 | 140-141 | 8C-8D | Index of the service exit in the program table |
120-127 | 78-7F | 142-149 | 8E-95 | Name of the transaction code that started the service |
128-135 | 80-87 | 150-157 | 96-9D | Name of the current transaction code |
Structure of the service identification entry
*) For details on XID, GRTID and BQUAL, please refer to the corresponding XA specification
**) only valid for Unix, Linux and Windows systems
VORGANG exit entry (types VGXS and VGXE)
Byte 32-Bit | Byte: 64-Bit **) | Meaning | ||
dec. | hexadec. | dec. | hexadec. | |
16 | 10 | 16 | 10 | Service ID |
17 | 11 | 17 | 11 | Session counter |
18-19 | 12-13 | 18-19 | 12-13 | Transaction counter in the service |
20-23 | 14-17 | 24-31 | 18-1F | Service counter |
24-27 | 18-1B | 32-39 | 20-27 | Sum of USED and ERROR for the current TAC |
28-31 | 1C-1F | 40-47 | 28-2F | Length of the global transaction identifier (GTRID) of the XID |
32-35 | 20-23 | 48-55 | 30-37 | Length of the branch qualifier (BQUAL) of the XID |
36-115 | 24-73 | 56-137 | 38-89 | The first 80 bytes of the XID data *) |
116-117 | 74-75 | 138-139 | 8A-8B | Index to the program table |
118-119 | 76-77 | 140-141 | 8C-8D | Index of the service exit in the program table |
120-127 | 78-7F | 142-149 | 8E-95 | Name of the transaction code that started the service |
128-135 | 80-87 | 150-157 | 96-9D | Name of the SERVICE exit program |
Structure of the SERVICE exit entry
*) For details on XID, GRTID and BQUAL, please refer to the corresponding XA specification
**) only valid for Unix, Linux and Windows systems
FORMAT exit entry (types FOXS and FOXE)
Byte | Meaning | |
dec. | hexadec. | |
16-31 | 10-1F | String FORMATEXIT |
32-39 | 20-27 | Program name of the FORMAT exit |
40-47 | 28-2F | Format name |
48-63 | 30-3F | Type of formatting as a character string (e.g. OUTPUTFORMATTING) |
Structure of the FORMAT exit entry
INPUT exit entry (types INXS and INXE)
Byte | Meaning | |
dec. | hexadec. | |
16-31 | 10-1F | String INPUT-EXIT-FORM or INPUT-EXIT-USER or INPUT-EXIT-LINE |
32-39 | 20-27 | Program name of the INPUT exit |
40-47 | 28-2F | The first 8 characters of the input message |
48-55 | 30-37 | Format name |
56-63 | 38-3F | TAC name |
64-65 | 40-41 | Status |
66-67 | 42-43 | F key |
68-69 | 44-45 | K key |
70-71 | 46-47 | Control field |
72-79 | 48-4F | Lterm name |
80-87 | 50-57 | User name |
88-119 | 58-77 | (Not used) |
120-127 | 78-7F | Next TAC or command |
128-129 | 80-81 | Continuation code |
130 | 82 | CUT TAC |
131 | 83 | (Not used) |
132-135 | 84-87 | Error code |
Structure of the INPUT exit entry
START exit entry (types STXS and STXE)
Byte | Meaning | |
dec. | hexadec. | |
16-31 | 10-1F | String START-EXIT-# |
32-39 | 20-27 | Program name of the START exit |
40-47 | 28-2F | String STARTUP (fixed name of the TAC) |
48-63 | 30-3F | Indicator, if the first process or the follow-up process is the string |
Structure of the START exit entry
HTTP exit entry (Typ HTXS und HTXE)
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
16 | 10 | 16 | 10 | Opcode: HTTP_GET_EXIT = 1, HTTP_PUT_EXIT = 2 |
17 | 11 | 17 | 11 | Returncode: OK = 0; ROOT_INT_PEND_ER = 1 |
18 | 12 | 18 | 12 | Returncode of the HTTP exit |
19 | 13 | 19 | 13 | InOut indicator: I/O |
20-23 | 14-17 | 24-31 | 18-1F | Pointer to KDCS parameter area |
24-27 | 18-1B | 32-35 | 20-23 | KDCS operation code |
28-29 | 1C-1D | 36-37 | 24-25 | Counter for successfully read MGET message parts |
30-31 | 1E-1F | 36-39 | 26-27 | Length of remaining message part (nach RCCC=02Z) |
32-33 | 20-21 | 40-41 | 28-29 | Index of HTTP exit program |
34-35 | 22-23 | 42-43 | 2A-2B | |
36-51 | 24-33 | 44-59 | 2C-3B | HTTP info structure (see INIT PU) |
52-55 | 34-37 | 64-71 | 40-47 | Pointer to MGET structure information |
56-59 | 38-3B | 72-79 | 48-4F | Number of message parts from the MGET structure information |
60-63 | 3C-3F | 80-87 | 50-57 | Pointer to current message part |
Structure of the HTTP exit entry
**) only valid for Unix, Linux and Windows systems
HTTP function entry (Typ HTTP)
The structure of the HTTP record depends on the called function. Each record starts with the following structure.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
16-47 | 10-2F | 16-47 | 10-2F | Alphanumeric n ame of the HTTP function, e.g. kcHttpGetHeaderByName |
48-95 | 30-5F | 48-95 | 30-5F | Alphanumeric return code of the HTTP function, e.g. KC_HTTP_OK (0) |
96-99 | 60-63 | 96-99 | 60-63 | Sedecimal return code of the HTTP function |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpGetHeaderCount contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Number of HTTP header fields of the HTTP request |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpGetHeaderByIndex contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Number of HTTP header fields of the HTTP request |
104-107 | 68-6B | 112-119 | 70-77 | Index of the requested HTTP header field |
108-111 | 6C-6F | 120-127 | 78-7F | Address of the buffer for the name of the HTTP header |
112-115 | 70-73 | 128-135 | 80-87 | Length of the buffer for the name of the HTTP header |
116-119 | 74-77 | 136-143 | 88-8F | Length of the name of the HTTP header |
120-123 | 78-7B | 144-151 | 90-97 | Address of the buffer for the value of the HTTP header |
124-127 | 7C-7F | 152-159 | 98-9F | Length of the buffer for the the value of the HTTP header |
128-131 | 80-83 | 160-167 | A0-A7 | Length of the value of the HTTP header |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpGetHeaderByName contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Address of the name of the HTTP header |
104-107 | 68-6B | 112-119 | 70-77 | Length of the name of the HTTP header |
108-111 | 6C-6F | 120-127 | 78-7F | Address of the buffer for the value of the HTTP header |
112-115 | 70-73 | 128-135 | 80-87 | Length of the buffer for the value of the HTTP header |
116-119 | 74-77 | 136-143 | 88-8F | Length of the value of the HTTP header |
**) only valid for Unix, Linux and Windows systems
The HTTP record of functions kcHttpGetMethod, kcHttpGetPath, kcHttpGetScheme, kcHttpGetVersion, and kcHttpGetQuery contain the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Address of the buffer for the return value of the fu nction |
104-107 | 68-6B | 112-119 | 70-77 | Length of the buffer for the return value of the function |
108-111 | 6C-6F | 120-127 | 78-7F | Length of the return value of the function , e.g. of the HTTP path |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpGetMsg contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Addresse of the address of the HTTP message body |
104-107 | 68-6B | 112-119 | 70-77 | Address of the HTTP message body |
108-111 | 6C-6F | 120-127 | 78-7F | Length of the HTTP message body |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpPutHeader contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Address of the name of the HTTP header |
104-107 | 68-6B | 112-119 | 70-77 | Address of the value of the HTTP header |
108-121 | 6C-79 | 120-127 | 78-7F | First 14 characters of the name of the HTTP header |
122-135 | 7A-87 | 128-135 | 80-87 | First 14 characters of the value of the HTTP header |
**) only valid for Unix, Linux and Windows systems
Der HTTP-Record der Funktion kcHttpPutStatus contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | status code |
104-107 | 68-6B | 112-119 | 70-77 | Address of the reason phrase |
108-135 | 6C-87 | 120-147 | 78-93 | First 28 characters of the reason phrase |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpPutMsg contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Address of the given message fragment |
104-107 | 68-6B | 112-119 | 70-77 | Length of the given message fragment |
108-111 | 6C-6F | 120-127 | 78-7F | Address of the address for the accumulated HTTP message body |
112-115 | 70-73 | 128-135 | 80-87 | Address for the length of the accumulated HTTP message body |
116-119 | 74-77 | 136-143 | 88-8F | Address of the accumulated HTTP message body |
120-123 | 78-7B | 144-151 | 90-97 | Length of the accumulated HTTP message body |
124-127 | 7C-7F | 152-159 | 98-9F | Size of the buffer for the accumulated HTTP message body |
**) only valid for Unix, Linux and Windows systems
The HTTP record of function kcHttpPercentDecode contains the following additional information.
Byte 32-Bit | Byte 64-Bit **) | Meaning | ||
dez. | hexadez. | dez. | hexadez. | |
100-103 | 64-67 | 104-111 | 68-6F | Requested type of normalization |
104-107 | 68-6B | 112-119 | 70-77 | Address of the message to be normalized |
108-111 | 6C-6F | 120-123 | 78-7B | Length of the message to be normalized |
112-115 | 70-73 | 124-131 | 7C-83 | Address for the length of the normalized message |
116-119 | 74-77 | 132-135 | 84-87 | Length of the normalized message |
120-122 | 78-7A | 136-139 | 88-8B | in case of error: erroneous characters |
**) only valid for Unix, Linux and Windows systems
FORM-Record in the UTM Diagarea
Each time a call is issued to the format handling system via the IUTMFORM interface, a record is written to the UTM Diagarea.
Byte | Meaning | |
dec. | hexadec. | |
16 | 10 | IUTMFORM operation code |
17 | 11 | IUTMFORM return code |
18-21 | 12-15 | IUTMFORM info return code |
22-24 | 16-18 | Status information following IUTMFORM call |
25 | 19 | Format type |
26-27 | 1A-1B | Blanks (reserved for extensions) |
28-29 | 1C-1D | Device feature prior to IUTMFORM call (see KCDF) |
30-31 | 1E-1F | Printer acknowledge bytes |
32-39 | 20-27 | Terminal characteristics (see TSTAT macro) |
40-41 | 28-29 | Maximum length of (last) passed message |
42-43 | 2A-2B | Actual length of (last) message supplied following call |
44-47 | 2C-2F | Language ID and territory ID |
48-55 | 30-37 | Name of character set for USER or LTERM |
56-63 | 38-3F | Name of character set for format |
64-71 | 40-47 | Name of (last) transferred format |
72-79 | 48-4F | Name of (last) supplied format |
80-83 | 50-53 | Address of (last) transferred message area |
84-87 | 54-57 | Address of (last) transferred cursor |
Structure of the FORM record in the UTM Diagarea