Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SC34-6636-02
SC34-6636-02
Note
Before using this information and the product it supports, be sure to read the general information under Notices on page
127.
Contents
Figures . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi
About this book . . . . .
Who should read this book .
Document organization . . .
Conventions used in this book
How to send your comments .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
xiii
xiii
xiii
xiv
xv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 7
. 7
. 7
. 7
. 9
. 10
. 11
. 11
. 11
. 12
. 13
. 14
. 15
. 16
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
4
5
. .
. .
. .
. .
. .
. .
. .
. .
. .
use
. .
. .
. .
. .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
21
21
22
22
23
23
24
24
24
25
25
25
25
26
iii
Journal waits . . . . . . . . .
Syncpoint waits . . . . . . . . .
Non-distributed transactions . . .
Distributed transactions . . . . .
CICS system process waits . . . .
What to do if CICS has stalled . . .
CICS has stalled during initialization
CICS has stalled during a run . .
CICS has stalled during termination
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
26
26
27
27
27
28
28
28
30
. .
. .
. .
. .
. .
. .
. .
loop
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
33
33
33
34
34
34
35
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
37
37
37
37
37
38
38
38
39
39
39
40
40
40
41
41
42
42
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
45
45
45
47
47
47
47
48
48
48
48
51
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
55
55
55
56
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Region pool . . . . . . . . . . . . . .
Determining the source of the problem . . . .
CICS system and transaction dumps . . . . .
Storage violations that affect innocent transactions .
Finding the cause of the storage violation . . .
You cannot find the cause of the storage violation
|
|
|
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
57
59
59
64
64
64
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
65
65
66
66
68
68
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
71
71
72
72
72
74
75
75
77
78
. . .
. . .
. . .
. . .
. . .
regions
. . .
. . .
. . .
. . .
. . .
. . .
. . .
.
.
.
.
.
.
.
.
.
.
.
.
81
81
81
81
82
82
82
83
83
83
83
83
84
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
85
86
87
88
88
89
89
89
90
90
91
92
94
97
97
99
99
Contents
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
103
103
104
105
105
106
107
107
107
108
108
108
109
109
109
109
109
110
110
110
111
111
111
114
114
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
117
117
118
118
118
118
120
121
121
122
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
123
123
123
123
123
124
124
124
124
124
125
125
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Notices . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Trademarks and service marks . . . . . . . . . . . . . . . . . . 128
vi
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Contents
vii
viii
Figures
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
ix
Tables
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Road map for the CICS Problem Determination Guide book . . . . . . . . . . . . . . . xiii
Conventions that are used in this book. . . . . . . . . . . . . . . . . . . . . . . xiv
Classifying the problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Sources of information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Contents of the message logs and transient data destinations . . . . . . . . . . . . . . . 8
Application debugging tools . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Common problems when using Oracle . . . . . . . . . . . . . . . . . . . . . . . 77
Types of system-trace events . . . . . . . . . . . . . . . . . . . . . . . . . . 92
CICS process-type identifiers used in tracing . . . . . . . . . . . . . . . . . . . . 94
Example problem reporting sheet . . . . . . . . . . . . . . . . . . . . . . . . 117
xi
xii
Document organization
Table 1. Road map for the CICS Problem Determination Guide book
If you want to...
Refer to...
Know what to do if you do not get the output Chapter 8, Dealing with unanticipated
that you expected
output, on page 45
Solve problems that are caused by storage
violations
xiii
xiv
Convention
Meaning
Bold
Monospace
Italics
Indicates variable values that you must provide (for example, you
supply the name of a file for file_name). Italics also indicates
emphasis and the titles of books.
<>
<Ctrl-x>
<Return>
Refers to the key labeled with the word Return, the word Enter, or
the left arrow.
C:\>
>
Entering commands
[]
{}
...
IN
OUT
Meaning
INOUT
$CICS
Indicates the full path name of the location in which the CICS
product is installed; for example, /usr/lpp/cics on AIX. If the CICS
environment variable is set to the product path name, you can use
the examples exactly as shown in this book; otherwise, you must
replace all instances of $CICS with the CICS product path name.
CICS on Open
Systems
TXSeries for
Multiplatforms
Refers collectively to the CICS for AIX, CICS for HP-UX (HP-UX
PA-RISC and HP-UX IPF), CICS for Solaris, and CICS for Windows
products.
CICS
Refers generically to the CICS for AIX, CICS for HP-UX, CICS for
Solaris, and CICS for Windows products. Other CICS products in the
CICS Family are distinguished by their operating system (for
example, IBM mainframe-based CICS for the z/OS platform).
xv
xvi
Preliminary checks
Before you go further into looking for the cause of the problem, perform the
following preliminary checks. These checks might highlight a simple cause or
narrow the range of possible causes.
When you go through the questions, note anything that is relevant to the problem.
Even if your observations do not at first suggest a cause, they can be useful if you
look at the problem in more detail later.
Do not discard information because you do not think it is correct. Corrupt data often
reveals what might be going wrong.
1. Are you the first person to have a problem invoking the CICS region?
a. Check that you have set the region up correctly.
2. Have you any messages that explain the error?
a. Check the message logs as described in Abnormal termination codes and
error messages on page 7 and refer to TXSeries for Multiplatforms
Messages and Codes for an explanation.
3. Can you reproduce the error?
a. Can you identify any application that is always in the system when the
problem occurs?
v Check for application-coding errors.
v Check whether you have defined enough memory in the three CICS
pools:
Task-Private
Task-Shared
Region
b. Check whether your CICS resource definitions are correctly defined. See
TXSeries for Multiplatforms Administration Guide for guidance on setting up
your CICS system.
c. Does the problem seem to be related to system loading? If so, the system
might be running near its maximum capacity, or it might need tuning. On all
systems except Windows, you can use ps, sar iostat, and other
operating-system utilities to find out the system loading. For more
information about optimizing CICS for Windows, see TXSeries for
Multiplatforms Administration Guide.
4. Does the error occur at specific times of day? If the error occurs at specific
times of day, the error might be dependent on system loading. Typically, peak
system loading is at mid-morning and mid-afternoon, so those are the times
when load-dependent errors are most likely to occur. If your CICS network
extends across more than one time zone, peak system loading might occur at
another time of day.
5. Is the error intermittent?
If an error is intermittent, particularly if it does not always show the same
symptoms, the problem might be more difficult to solve. In some such cases,
the transaction that caused the error might have exited from the system long
before the symptoms start to occur.
See Chapter 8, Dealing with unanticipated output, on page 45 for more
information.
6. Have any changes been made since the last successful run?
Service
a. Have you applied a patch or PTF (FixPack for Windows) to CICS?
Refer to...
If you see...
Refer to...
Refer to...
Product publications
Understand what symptom records show you Symptom records file on page 9
Find out which CICS tools can help in
debugging
Find out what to look for in transaction inputs Transaction inputs and outputs on page 15
and outputs
Keep your own documentation.
Product publications
TXSeries for Multiplatforms Installation Guide lists the publications for this product.
Information about CICS is updated regularly. Ensure that the level of any book or
online information that you use matches the level of the system or product that you
are using.
Customer forums
CICS customers and IBM support staff can access various CICS forums through
the IBM Network and the Internet. Forums can be useful sources of answers to
specific questions.
Messages are displayed in the national language that is requested in the locale. If
no language is specified, messages are displayed in the national language of the
CICS region.
When a CICS region is cold started, console.nnnnnn and CSMT are re-created. Any
information that was previously stored in these files is lost. Make a copy of
console.nnnnnn and CSMT before you restart a region after an error.
Table 5. Contents of the message logs and transient data destinations
Message file
Use
The standard output data stream and standard error data stream.
Programs and utilities that run outside the CICS runtime
environment use these to display CICS messages to their users.
The stderr stream normally goes to the terminal display, unless you
use operating-system commands to redirect the output elsewhere.
No messages that are associated with the CICS region go to the
stderr stream.
console.nnnnnn
CSMT
CCIN
Table 5. Contents of the message logs and transient data destinations (continued)
Message file
Use
v
v
v
v
v
The TIME field can be used to match a symptom record to the time of a particular
failure.
The secondary symptom data is a text record, which might contain a message
about the problem or some related data. Sometimes, this record is left blank.
The symptom record file also includes a trace-back of the functions that called the
function where the symptom record was produced.
Here is an example symptom record:
SYMPTOMS=TIME/"12/26/03 16:03:23.088332824" REGION/204621 PROD/5724A5620
LVLS/510 MOD/"@(#)conco, 10:08:50, Dec 26 2003" FUNC/ConCO_WaitForAnyAMChild
LINE/66 0 MS/010089 MSN/367 SRC/2 PRCS/0 ABCODE/
SRVID/5 PID/41000 TID/6 PROC/cicsam
SECONDARY SYMPTOMS = Last signal received by child=9
Fatal
Nonfatal
Audit
Message file
Use
10
SNA messages
See TXSeries for Multiplatforms Intercommunication Guide for details of where to
look for SNA information.
Database messages
Database messages appear in CICS console.nnnnnn, CSMT, and symrecs.nnnnnn
in addition to the log described below. The underlying DB2 SQL CONNECT,
COMMIT, and ROLLBACK error codes are propagated into the various message
logs:
Message file
Use
db2diag.log
11
If you delete any of the console.nnnnnn files, the next time that a new
console.nnnnnn file is opened, it will be with the lowest available number. No
existing console.nnnnnn files are overwritten.
CICS tools
Tool
Use
Dumps
Trace
12
Statistics
Monitoring
Tool
Use
IBM Application
Debugging
Program (CICS
for AIX only)
ANIMATOR
ACUCOBOL-GT
debugger
CICS-supplied transactions
The following CICS-supplied transactions are particularly useful for debugging.
Transaction
Use
CADB
13
Transaction
Use
CEDF
CEMT
CDCN
CMLV (On
Browsing the console.nnnnnn file at the
Windows only) server machine from any CICS terminal
connected with transaction routing.
Command-line utilities
Utility
Use
cicsddt
cicsget
cicsrlck, cicssfslock
cicssdt
cicstail
cicstcpnetname
ps (on Open
Systems only)
14
Utility
Use
df (on Open
Systems only)
Performance viewer
(on Windows only)
ppcadmin
sfsadmin
tkadmin
Use
User input at
terminal just
before a
transaction
abnormally
terminated
Terminal
output
15
Utility
Use
Transient data
and temporary
storage
queues
16
CICS server ID
CICS process ID
Thread ID
Signal that the process received
v Transaction ID
v Current program
v Trace-back of functions where the signal is raised
The trace-back files are produced in the core dump directory, which is defined by
the CoreDumpName attribute in the Region Definition (RD stanza). A message is
indicated in the console.nnnnnn file when a trace-back file is produced.
In a CICS system, an exception or a signal can be caused by CICS code, or an
application program, or by any third-party library. In any case, the trace-back file
contains enough diagnostic information for you to be able to determine the cause
for the exception.
The trace-back files are particularly important for analyzing the ASRA or ASRB
abends. The ASRA or ASRB abends are reported when an application generates an
exception or a signal. (For example, a SIGSEGV signal is generated when an
application attempts to assign a value to a NULL pointer.) CICS attempts to
generate a trace-back file. The CICS system reports an ASRA or ASRB abend in
the console.nnnnnn file. You must investigate the generated trace-back file for the
cause of the exception. In cases where you might not find a trace-back file, the
symptoms records that are in the symrecs.nnnnnn could have the trace-back of
functions. A sample trace-back file that is generated on AIX is as shown below:
*********************** TraceBack Details *************************
>>>>>>>>>>>>>>>>>>>>>>> TraceBack Header
<<<<<<<<<<<<<<<<<<<<<<<<<
17
TRANID
PROGRAM
SRVID
PID
TID
SIGNAL
:
:
:
:
:
:
ORUP
ORUP
102
43970
1
11
<<<<<<<<<<<<<<<<<<<<<<<<<
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
D06B93B0
00000061
0000F0B2
60006A6A
D06B93A8
F0D2B9B0
F0C24A68
00000000
00000000
3084F260
D06B98B8
FFFFFFFF
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
D06B9608
88222024
00000000
00000000
00000000
-------------------------------------------------------
GPR01
GPR04
GPR07
GPR10
GPR13
GPR16
GPR19
GPR22
GPR25
GPR28
GPR31
FPR01
FPR04
FPR07
FPR10
FPR13
FPR16
FPR19
FPR22
FPR25
FPR28
FPR31
MSR
LR
XER
TID
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
2FF1E920
00000000
00000000
00000000
00000000
00000000
00000004
00000000
00000000
0000003E
3084EB08
3FF00000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
0000D0B2
D06B93B0
00000000
00000000
<<<<<<<<<<<<<<<<<<<<<<<<<
-----------------------------------------------------
18
GPR02
GPR05
GPR08
GPR11
GPR14
GPR17
GPR20
GPR23
GPR26
GPR29
=
=
=
=
=
=
=
=
=
=
3084EB40
00000485
60000000
6000F3F7
00000D28
A0085B40
D5A3DD20
00000000
3084EAF8
F0045910
---------------------
FPR02
FPR05
FPR08
FPR11
FPR14
FPR17
FPR20
FPR23
FPR26
FPR29
=
=
=
=
=
=
=
=
=
=
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
00000000
---------------------
*************************
19
Terminals
Temporary storage queues (use CEBR to browse these online)
Data files and CICS journals.
v A task demands excessive storage. If the loop contains an EXEC CICS
GETMAIN SHARED request, CICS acquires storage each time the task passes
this point in the loop, as long as enough storage to satisfy the request remains
available. If the task does not also release storage with an EXEC CICS
FREEMAIN in the loop, CICS eventually becomes short on storage (SOS). You
then receive a message reporting that CICS is under stress. If no GETMAIN
SHARED storage exists, CICS raises a condition on the offending program.
v Statistics show many initiated tasks.
v Statistics show many file accesses for an individual task.
You might be able to distinguish a loop from a wait or a performance problem by
making the loop produce repetitive output. Waits and performance problems never
give repetitive output. If the loop produces no output, trace might show a repeating
pattern. If you have enough information to classify the problem as a loop, you need
to define the limits of the loop. See Chapter 6, Dealing with loops, on page 33 for
further advice.
20
21
Terminal waits
A terminal wait occurs when a task cannot start at, or does not read from, a
terminal.
If a terminal is unresponsive, showing no new output, and accepting no input, this
does not necessarily indicate a terminal wait. The task that is running on the
terminal might be waiting for another resource.
On all systems except Windows, use CEMT INQ TERMINAL to determine which
transaction is running at the terminal, then use the ps operating system command
to check whether the task is waiting.
If none of the terminals in the network is responding, and CICS has stalled, see
What to do if CICS has stalled on page 28.
Investigate the following possibilities:
v An obvious physical occurrence might be the cause the wait. For example, a
terminal user does not respond to a request for input.
v Check the CSMT log for error messages. If CICS detects an error that is
connected with terminal control, it sends a message reporting the problem to the
CSMT log and, optionally, to the console.nnnnnn file.
If a message reports a terminal error that relates to the task, the message might
indicate why the task is waiting. Look in TXSeries for Multiplatforms Messages
and Codes, for a further explanation and a description of the system action in
response to the error.
v If the terminal is installed by using autoinstall, check whether the system was
able to load the autoinstall program (DFHCHATX).
v If the terminal does not start an Automatic Transaction Initiation (ATI) task, use
CEMT to check whether ATI tasks are enabled at that terminal.
22
v Check whether the terminal is being debugged by another terminal that is using
CEDF (Execution Diagnostic Facility). If the terminal user on the CEDF terminal
is not responding to a request for input, the first terminal can appear
unresponsive.
Intersystem waits
Intersystem waits occur when the appropriate resources for communication between
CICS and a communication subsystem are not available.
In TCP/IP communication subsystems, intersystem waits occur only if no spare
application servers are available.
In SNA communication subsystems, intersystem waits occur when a user task
attempts to get a session with another CICS region, but all the sessions are in use.
The task must wait until a session is available. You can resolve this problem by
defining a greater number of sessions. You define each additional session by
adding an entry to the Communications Definitions (CD).
You can check whether a task is waiting on a TCP/IP link or an SNA link by using
the CICS monitoring facility.
If you have a problem that you have identified as an intersession or an intersystem
communication wait, investigate it in the same way in which you investigated
Terminal waits on page 22.
23
You can use the CICS monitoring facility to check whether a task is waiting for
transient data input or output.
Note: See the TXSeries for Multiplatforms Intercommunication Guide about long
running function shipping transactions. This note describes the effects of
using the EXEC CICS SYNCPOINT command with these types of
transactions.
24
25
v Ensure that transactions hold enqueues on a resource only for a short time.
v Use the NOSUSPEND option of ENQ, to ensure that if the lock is not available
immediately, the ENQ does not block, but returns with the ENQBUSY condition
code.
v Use the DeadlockTimeout attribute for transactions that use ENQ.This ensures
that if the lock cannot be obtained within a given amount of time, CICS raises an
AKCS abnormal termination code. DeadlockTimeout option has no effect when
DB2 is configured as the CICS file and queue manager.
Suspending a transaction
The CICS task control command EXEC CICS SUSPEND suspends the task for a
short time only, allowing other running transactions to use the CPU. This command
should not cause long task waits. If this appears to be the cause of a long task
wait, contact your support organization.
Journal waits
Journal waits occur when a task makes a request to a journal, but CICS cannot
satisfy the request because not enough space is available.
If a task makes a JOURNAL request without the NOSUSPEND option, and CICS
cannot satisfy the request because not enough storage is available, CICS forces
the task to wait until storage becomes available in the operating systems file
system that is associated with the specified journal.
If a task makes a JOURNAL request with the NOSUSPEND option, and CICS
cannot satisfy the request because the data volume is full, CICS returns a
NOSPACE condition to the task.
You can find out whether tasks are frequently waiting on journals, by using the
CICS monitoring facility.
Possible solutions to journal waits are:
v Increase the size of the operating system file that contains journal data. Examine
the DiskA and DiskB attributes in the Journal Definitions (JD) to identify the files
that are involved.
v Reduce the amount of journal data that is written by tasks.
v Allocate separate files for heavily used journals. This prevents heavily used
journals affecting the space that is available to other journals.
Syncpoint waits
Syncpoint waits occur when tasks issue EXEC CICS SYNCPOINT requests in
synclevel 2 conversations. The tasks are forced to wait until a syncpoint has been
taken. This involves either committing or rolling back any recoverable resources that
are involved in the transaction.
Note: See the TXSeries for Multiplatforms Intercommunication Guide about
long-running function shipping transactions. This note describes the effects of
using the EXEC CICS SYNCPOINT command with these types of
transactions.
26
Non-distributed transactions
A syncpoint wait occurs only if problems occur during attempts to communicate with
the Structured File Server (SFS).
Distributed transactions
For distributed transactions, the task that is initiating the syncpoint sends a prepare
request to remote tasks that are participating in the transaction. It then waits for a
prepared response from each of them before it begins the commit phase of the
two-phase commit procedure. Extended waits can occur in the following conditions:
v A slave transaction does not issue an EXEC CICS SYNCPOINT within a
designated time, for example:
It has not issued an EXEC CICS RECEIVE.
It does not respond correctly to the EIBSYNC flag after returning from an
EXEC CICS RECEIVE.
It is blocked on a wait of some kind.
It is blocked in a conversation with another system.
It is running slowly on a heavily loaded system.
v The two-phase commit procedure stalls because of a system failure during the
prepare or commit phases. Use the CEMT INQ TASK INDOUBT transaction to
identify tasks in this state.
You can use the CEMT INQ TASK INDOUBT transaction to detect tasks that are
waiting in the first phase of the two-phase commit process.
It is best to leave such tasks in-doubt until the remote system is restarted, so that
the syncpoint completes naturally. This avoids the condition in which some parts of
the transaction have committed and some parts have backed out. If this condition
does occur, you might need to intervene manually, for example to correct database
inconsistencies.
Alternatively, you can use CEMT SET TASK FORCEPURGE to force an outcome
(backout or commit) as determined by the Transaction Definitions (TD) entry for the
task.
27
Specific stages of initialization can have significant, but normal, delays, depending
on how CICS last terminated. For example:
v If the resource definition database is large, CICS might take some time to read in
the resource definitions.
v A user program that is listed in the StartUpProgList attribute in the Region
Definitions (RD) does not follow the strict protocols that are required by CICS.
This can cause CICS to stall. For each program that is listed, CICS displays the
following message:
ERZ010063I/0070:
If you check this output, you can detect any program that causes a problem.
v You see the following message, associated with abend code U1029:
ERZ010073E
28
If the CPU usage is low, CICS is doing very little work. Some of the possible
reasons are:
v The region is short on storage, so existing tasks are waiting for storage to
become available.
v The system is at the MaxServer limit and no new tasks can start. Existing tasks
might be deadlocked without deadlock timeout values, or be conversational and
waiting for user input. For information about waits, read Chapter 5, Dealing with
waits, on page 21.
v A CICS system error has occurred.
You can find out if any of these apply to your region by checking the following
information. For some of the investigations, you need to refer to a system dump of
the CICS region. The region might produce a system dump automatically. If it does
not, you can take a system dump, but you must be able to use CEMT to do so. If
CICS is stalled completely, you cannot. In some cases, however, you still can. For
example, if the regions MaxServer limit has been reached, but CEMT is already
running, you can use it to investigate the problem and take a system dump.
Note: A system dump itself can give the appearance of CICS being stalled. To
determine whether this is so, check the CICS log for a completed message.
On all systems except Windows, a CICS region might actually stall during a
system dump if the directory to which the dump is being written is on an
NFS file system that is unavailable. To solve this problem, you must get the
NFS file system online again.
29
MaxServer
The maximum number of application servers. If this is too low for the
region, new tasks might be unable to start.
30
If no user tasks are running in the region, one or more terminals might not
have closed. Use the CEMT transaction to see which terminals are
INSERVICE, and use CEMT SET to set them OUTSERVICE.
If these steps are unsuccessful, proceed as if you were unable to use the CEMT
transaction.
v If you cannot use the CEMT transaction:
Check whether any CICS processes for the given region are consuming CPU
time. Use pview (Windows) or ps (OpenSystems) to check the status of
processes. If the processes are consuming CPU, and an application server
appears to be looping, try to physically trace the terminal and terminate it. If
you still cannot solve the problem, the only option is to run cicsstop. and, for
all systems except Windows, run cicsnotify, passing the name of the
subsystem to be terminated.
For example, for a region named ACC, first stop all the current processes with
the cicsstop command:
cicsstop -k ACC
Use the cicsnotify command as a last resort. Do not use it the first time that
termination appears to stall.
31
32
Investigating loops
Some examples of initial symptoms that can indicate a loop are:
v Repetitive output
v Statistics show an excessive number of input and output operations
v Statistics show an excessive number of requests for storage
v An application server is using a lot of CPU time
33
The characteristics of the symptoms might indicate which transaction is causing the
loop, but to define the limits of the loop, you must use trace.
Use auxiliary trace to capture the whole loop in the trace data. If you use internal
trace, wraparound might prevent you from seeing the whole loop. See Chapter 13,
Using CICS trace, on page 85 for further information.
After you have captured the trace data, purge the looping task from the system. To
do this, find the task number of the task by using CEMT INQ TASK. Use CEMT
SET TASK PURGE or FORCEPURGE to purge the task. This causes the
transaction to terminate abnormally and produce a transaction dump of the task
storage areas.
If the loop does not contain any EXEC CICS statements, you cannot use trace to
determine the limits of the loop. Insert EXEC CICS ENTER calls into the application
code in the areas that you suspect are causing problems, and capture the trace
data again. See Chapter 13, Using CICS trace, on page 85.
34
Compiler
Debugger
Idebug
windbg/msdev
C++
Idebug
C++
windbg/msdev
35
Compiler
Debugger
COBOL
ANIMATOR
ACUCOBOL-GT
See the TXSeries for Multiplatforms Application Programming Guide for details.
36
37
You must investigate the primary cause of the problem; for example, the abnormal
termination or hang of the transaction, to ensure that it does not reoccur.
38
You can use the CICS Resource Definition Online (RDO) facility to inquire on the
Communications Definitions (CD) to determine the status of the remote region at
installation.
You can use the EXEC CICS INQ CONNECTION command to find out the
current status of the remote region.
Note also that Interval Control transactions that specify a terminal or remote
region are considered terminal and remotely initiated tasks.
39
If all the application servers are busy, it might be because all the servers are
occupied by conversational transactions that are waiting for user input. Check
through the list of running transactions to see whether this is the case.
On Windows only, application servers can consume relatively large amounts of
memory. Most performance problems are caused by shortages of memory.
Therefore, be careful not to over-allocate the application servers.
Task priority
Queued tasks requests are removed from the queue in the sequence of their
priority when the reason for their being queued is removed. After a task is queued,
its priority cannot be changed. As a result, a task remains queued if the region
receives requests for tasks with a higher priority.
If this creates a problem, you can change the priority for the task so that the next
invocation does not have the same problem. The priority of the task can be
increased, or the reason for its being queued in the first place can be relaxed. The
priority of a task is the sum of the transaction, terminal, and user priorities; the
maximum is 255.
Although some of the information is useful only to your support organization, other
information is of wider interest. The following information is included:
For each task class:
v The number of tasks that are active (running in an application server)
v The number of tasks that are queued
v The maximum number of active tasks that are allowed in the region as defined
by the ClassMaxTasks attribute in the Region Definitions
v The maximum number of tasks that are allowed to be queued
For application servers:
v The minimum that is allowed in the region. This is usually the value of the
MinServer attribute in the Region Definitions, although it might have been
changed by using CEMT SET TCLASS, and it will be 0 in a shutdown dump.
v The current number that is running in the region.
40
v The maximum that is allowed in the region. This is usually the value of the
MaxServer attribute in the Region Definitions, although it might have been
changed by using CEMT SET TCLASS.
v A list of application servers that are currently idle.
v A list of tasks, in priority sequence, that are currently queued in the region.
v A list of tasks that are currently running in the region.
Information about each task that is listed includes the task number, the transaction,
device and user ID, the task priority, the transaction class, and whether or not the
transaction is synchronous.
If the region is having bottleneck problems, and if the CEMT transaction was not
started before the bottleneck happens, it is important that you assign CEMT to a
unique transaction class. This is so that an application server is always available to
run the CEMT transaction. See the description of the ClassMaxTasks and
MaxServer attributes of the Region Definitions (RD) and the description of the
TClass attribute of the Transaction Definitions (TD) in the TXSeries for
Multiplatforms Administration Reference.
Scheduler statistics
In addition to the information that is provided in the dump, the scheduler also
provides helpful statistics. These are:
v The maximum number of tasks in region (active and queued)
v For each transaction class (1 through 10):
The class maximum value (ClassMaxTasks)
Current number of tasks that are in region
Number of times that class maximum was reached
Maximum number of tasks that was reached (active and queued)
Maximum number of tasks that is permitted (ClassMaxTasks +
ClassMaxTaskLim - 1)
Number of tasks that were purged because the permitted maximum number of
tasks were in the system.
For more information about task statistics, see the TXSeries for Multiplatforms
Administration Reference.
Short on storage
New tasks can obtain an application server even when the system is short on
storage (SOS). In this condition, tasks run, but with degraded performance.
When the SOS condition occurs, CICS sends one or other of these messages to
the console.nnnnnn file:
ERZ048001I CICS Is Under Stress - Short on Task Shared storage.
ERZ048002I CICS Is Under Stress - Short on Runtime Support storage.
If you see a repeating pattern of messages telling you that CICS is short on
storage, then it is not short on storage, a transaction might well contain a
GETMAIN/FREEMAIN loop.
If you cannot see any SOS messages in the console.nnnnnn file, you can find out
how many times CICS has raised SOS from the storage statistics.
Note:
41
42
the IdleTimeout value that is specified for the SFS server, errors can occur.
You can often solve this by increasing the value for the OpThreadPoolSize
attribute. If this does not work, it might be the fault of the transaction. If the
setting for the DeadlockTimeout attribute for the transaction is too high, you
can reduce it. If the transaction is badly designed, you can restructure it (for
example, by adding SYNCPOINTs).
43
44
Preliminary information
Before you can investigate the reasons why CICS displays unanticipated output at a
terminal, you need the following information about the transaction that is running at
the terminal and about the terminal itself:
v The identity of the transaction that is associated with the unanticipated output
v The model number of the terminal, if it is an autoinstalled terminal, to ensure that
you query the correct terminal type. You can find this from the autoinstall
message in the CSMT log.
Depending on the symptoms, you might need to use CEMT INQ TERMINAL to find
the terminals that are defined, and Resource Definitions Online (RDO) commands
to check the Terminal Definitions (WD) for the affected terminal. The most useful
attributes to check are NumLines and NumColumns in the WD entry for the
terminal. Other attributes might also be significant.
45
If your problem is similar to this example, check your application code carefully to
ensure that the application code is not sending any unintended control characters.
46
Example
In an inventory control, a warehouse has 150 items in stock. One hundred items
are sold to a customer, who is promised delivery within 24 hours. The invoice is
prepared, and this causes a transaction to be started that reads the inventory
record from an SFS or operating system file and updates it accordingly.
In the meantime, a second customer also asks for 100 items. The salesperson uses
a terminal to query the number currently in stock. The querying transaction reads
the record that the first transaction has read for update but not yet rewritten, and
returns the information that there are 150 items. This customer, too, is promised
delivery within 24 hours.
To guard against this type of error, always read for update and do not split Logical
Units of Work (LUWs).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47
No output at all
If your transaction produced no output at all, the following preliminary checks might
provide a simple explanation for the error.
48
Can you use the terminal where the transaction should have
started?
Go to the terminal on which the transaction was expected to have started, and
check whether the keyboard is locked. Press RESET if it is. Try to issue CEMT INQ
TASK from the terminal.
If you cannot issue CEMT INQ TASK from the terminal, one of these explanations
applies:
v The task that produced no output is still attached to the terminal.
v The terminal on which you made the inquiry is not in service.
v The problem is system wide.
v You are not authorized to use the CEMT transaction.
Find a terminal from which you can issue CEMT INQ TASK. If no terminal seems
to work, probably a system wide problem has occurred. Otherwise, see whether
the task you are investigating is shown in the task summary.
v If the task is shown, it is probably still attached, and either looping or waiting.
v If the task is not shown, the terminal from which you first attempted to issue
CEMT INQ TASK has a problem.
If you can issue CEMT INQ TASK from the terminal at which the transaction was
attached, one of these explanations applies:
v The transaction gave no output because it never started.
v The transaction ran without producing any output, and terminated.
v The transaction started at another terminal, and might still be in the system. If the
task is still in the system, it should be in the task summary that you got for CEMT
INQ TASK. The task might be looping or waiting, or it might be a long-running
task.
49
50
did run. A change in the file means the transaction ran. If no change occurred, that
does not necessarily mean that the transaction did not run. The transaction might
have worked incorrectly so that CICS did not make the expected changes.
Disabling the transaction: If your transaction requires a terminal, use the CEMT
transaction to disable the transaction that is under test, then initiate the transaction.
You should get this message at the terminal where it is due to run:
ERZ100025E Transaction xxxx rejected - yyyy
If you do not get this message, possibly your transaction did not start because of a
problem with that terminal.
Incorrect output
If your transaction produced no output at all, see No output at all on page 48.
You get incorrect output to a terminal if data that is the object of the transaction
becomes overwritten at some stage.
Data can be overwritten at various points in a transaction as it flows from its source;
for example a file, to a terminal. For five common reasons, data can be overwritten
when it is retrieved from a source and output to the terminal:
v Data records are incorrect or missing from the file.
v Data from the file is mapped into the program incorrectly.
v Data input at the terminal is mapped into the program incorrectly.
v Bad programming logic causes the data to be overwritten.
v Data is mapped incorrectly to the terminal.
Each of these possibilities is discussed in turn.
51
If you find invalid data in the file, possibly the program that last updated the records
that contain that data caused the error. If the records that you expected were
missing, check whether your application can handle a record not found condition.
If the data that is stored in the file is valid, the data has been overwritten after the
program read it in.
52
53
54
Task-private pool
The task-private pool contains:
v Storage that is allocated by GETMAIN from the program code of the transaction
v Storage areas that are allocated internally by CICS application server code
CICS checks for storage violations in the task-private pool when a program
explicitly calls FREEMAIN, when CICS releases storage that it allocated internally,
and when storage is reclaimed at the end of a task. If CICS detects a storage
violation, messages are written to CSMT or console.nnnnnn indicating the address
where the storage violation occurred.
One of the following messages is written to CSMT or console.nnnnnn if CICS
detects a storage violation while a transaction is executing:
55
See TXSeries for Multiplatforms Messages and Codes for further information about
a specific error message.
If a storage corruption is detected during end of task storage reclamation, you do
not get a transaction dump. However, a dump can help you determine the source of
the problem, so it is useful to force a dump. To force a transaction dump, code an
EXEC CICS DUMP command immediately before an EXEC CICS RETURN
command in the transaction program. Choose the COMPLETE or STORAGE
options for the EXEC CICS DUMP command (see the Application Programming
Reference).
Task-shared pool
The task-shared pool contains:
v Storage that is allocated by GETMAIN SHARED from the program code of the
transaction
v Storage that is allocated for maps, tables, and the common work area (CWA)
v Storage areas that are allocated internally by CICS application server code
CICS checks for storage violations in this pool by using the CICS-supplied
transaction CLAM, which performs self-consistency checking.
If CICS cannot satisfy an EXEC CICS GETMAIN SHARED request because not
enough storage is available, it does not suspend the task, but returns a condition
code to the program. If CICS cannot satisfy BMS map requests and data table
requests because not enough storage is available, it does suspend the task.
If CICS detects a storage violation, the following message is written to
console.nnnnnn and the signature string is restored. The storage area is still
available, and the region and any executing transactions continue to run:
ERZ048027E A task shared pool has been overwritten...
56
Common programming errors that can cause storage violation problems are listed
in the TXSeries for Multiplatforms Application Programming Guide.
Region pool
The region pool contains storage that is allocated by CICS to hold control blocks
and system buffers.
CICS checks for storage violations in this pool by using the CICS-supplied
transaction CLAM, which performs self-consistency checking. If CICS detects a
storage violation, one of the following messages is written to console.nnnnnn:
ERZ048020E
ERZ048021E
ERZ048022E
ERZ048023E
ERZ048024E
CICS has
CICS has
CICS has
CICS has
A region
See TXSeries for Multiplatforms Messages and Codes for further information about
a specific error message.
Storage violations in the region pool cause the CICS region to abnormally terminate
and produce a system dump. The information in the system dump can help you
determine the cause of the storage violation, but you need to inform your support
organization if a storage violation occurs.
SafetyLevel attribute
This attribute defines the degree of protection that CICS provides for programs that
are running in this region. Possible values are none, normal, and guard (CICS for
Windows only).
|
57
58
\
\
\
\
\
\
59
60
7. Following the statistics information for the region pool is a record of each
control block for each allocation in the region pool. The message or messages
that you saw in console.nnnnnn and CSMT at the beginning of this procedure
contain hexadecimal address information that shows where the storage
violation was detected. Go to the step that corresponds the message that you
saw:
v For message ERZ048020E, go to step 10.
v For message ERZ048021E, go to step 11.
v For message ERZ048022E, go to step 12.
v For message ERZ048023E, go to step 13.
v For message ERZ048024E, go to the next step.
8. ERZ048024E contains the details of a User Area address and a Region Pool
Data Block address.
Note these addresses, and go to the next step.
9. Search for the address or addresses that you have found in the control block
lists.
When you find the control block for this User Area and Region Pool Data
Block, examine the control block information and the ASCII or Hexadecimal
dump of the User Area.
At this stage, you must check the dump carefully, because contents of the
control block and the user area might be important information. Examples of
useful information are:
v Character strings or hexadecimal data that only particular transactions and
programs can write
v File records that only particular transactions can process.
Make a note of the address or addresses from the message and the
ASCII/hexadecimal dump. Retry each transaction that is in the list that was
created in step 5 on page 60.
Go to step 14.
10. ERZ048020E contains the details of the address that contains the signature
string that guards the Region Storage control area. You can search for this
address in the dump and examine the output. The output might contain data
that belongs to a specific transaction or program.
Note the address from ERZ048020E and the information that the dump shows.
Retry each transaction that is in the list that was created in 5 on page 60.
Go to step 14.
11. ERZ048021E contains the details of the address that contains the signature
string that guards the start of a Region Pool Data Block.
Note this address, and go to step 9.
12. ERZ048022E contains the details of the address that contains the signature
string that guards the end of a Region Pool Data Block. Subtract 16 bytes from
this address. This gives the address of the start of the Region Pool Data
Block.
Note this address, and go to step 9.
13. ERZ048023E indicates that the linked list address in a Region Pool Data Block
does not address the next control block in the chain. The address in the
message is the start of a Region Pool Data Block.
Note this address, and go to step 9.
14. Retry each transaction that was found at step 5 on page 60 to see whether
any transactions cause the storage violation messages.
61
You can use CEDF or application debugging tools IBM Application Debugging
Program. during this step. Use these tools to check the contents of the
program variables of the transaction; that is, to see whether the variable
contents are the same as any storage addresses that were found during the
investigation, or are the same as any data that was seen in the dump.
Occasionally, a problem is caused by the interaction between transactions. You
might need to try combinations of the active transactions to isolate this type of
problem further.
At this stage, you should have isolated the problem, and traced its cause to a
specific transaction. Investigate the transaction fully. For further information,
see the TXSeries for Multiplatforms Application Programming Guide .
If you have not isolated the problem to one transaction or a small set of
transactions, use the CICS trace facility to investigate the problem further. See
Storage violations that affect innocent transactions on page 64.
You have reached the end of this investigation.
15. Keep a copy of the system dump that was produced in the first step of this
procedure.
Restart the region with the IntrospectInterval attribute in the RD set to 1
minute. Attempt to reproduce the problem again. This run should detect the
problem within a minute of its happening, and help you determine which
transactions are running when the storage violation occurs, or is detected. If
you can successfully reproduce the problem, keep the system dump that is
produced from this run and go to step 4 on page 60.
If you cannot reproduce the problem, use the dump that you kept from the first
step in this procedure and go to step 4 on page 60.
16. Look for the string formatted system dump. This is the beginning of the
task-shared pool control area. Message ERZ048027E contains two addresses.
Look for the address that is given by Task-Shared Pool Data Block in the
dump.
The dump contains the corresponding Pool Data Block and an
ASCII/hexadecimal dump of the User Area.
At this stage, you must check the dump carefully, because the content of the
user area might be important. Examples of useful information are:
v Character strings or hexadecimal data that only particular transactions and
programs can write
v File records that only particular transactions can process
v Map and table data that only particular transactions can access
Keep a note of the address or addresses from the message and the
ASCII/hexadecimal dump. Retry each transaction that is in the list that was
created in step 5 on page 60.
Go to step 14 on page 61.
17. You must have a transaction dump that was produced in the first step of this
procedure. Format the transaction dump using cicsdfmt. View the formatted
dump file using an appropriate editing program. Go to step 18.
18. Look in the formatted transaction dump for the Task Control Area (TCA), by
searching for an occurrence of Task Control Area Header. A section that is
headed Task Control Area Task Specific part: follows the header information.
Note the transaction identifier and terminal identifier from the Task Control Area
(TCA) specific dump and the address that is given for Area Task specific part.
This information tells you which transaction was active when the storage
violation occurred.
62
63
64
65
AL
BE
AE
BUL
AUL
v The difference between the memory size, or the amount of file descriptors.
Specifies the type of memory for which the debug report is to be generated.
For this option, you can specify any one of these three values:
heap
taskprivate
Collect information for task private pool growth.
taskshared
Collect information for task shared pool growth.
66
67
generated. If you specify more than one transaction, separate the names
with a comma. If this option is not specified, debug information is collected
for all transactions.
Examples
1. To collect process heap growth information for the languages c, cpp, and java
with timestamp, set the following in the region environment file:
CICS_LEAKDEBUG="LOGDIR=/var/cics_regions/testregion/dumps/dir1 MEM=heap
LANG=c,cpp,java TIMESTAMP=ON"
2. To collect taskprivate pool growth information for the languages Micro Focus
COBOL (COBOL) and IBM COBOL, set the following in the region environment
file:
CICS_LEAKDEBUG="LOGDIR=/var/cics_regions/testregion/dumps/dir1
MEM=taskprivate LANG=COBOL,IBMCOB"
3. To collect taskshared pool growth information for all the languages and for
transactions HELL and SAMP, set the following:
CICS_LEAKDEBUG="LOGDIR=/debugout MEM=taskshared LANG=all TIMESTAMP=ON
TRAN=HELL, SAMP"
4. To collect open file descriptor growth information for the languages cpp and
cobol, set the following:
CICS_LEAKDEBUG="LOGDIR=/cics/debugout FILEDES=allowcore,minlimit=1000,
maxlimit=1100 LANG=cpp,cobol"
Sample output
If you set:
CICS_LEAKDEBUG="LOGDIR=/var/cics_regions/testregion/dumps/dir1 MEM=heap TIMESTAMP=ON LANG=all
TRAN=main"
68
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
08/21/2003
14:07:43.659510
<00019>(SEND 4320 SEND 4320)
14:07:43.660528
<00021>(LINK 4320
14:07:43.660713
{
14:07:43.660729
BE 4320 main gen
14:07:43.662584
<00027>(SEND 4320 SEND 4324) = 4
14:07:43.663579
<00029>(RETURN 4324 RETURN 4324)
14:07:43.663878
AE 4324
14:07:43.663902
} = 4
14:07:43.664026
LINK 4324) = 4
14:07:43.664228
<00031>(RETURN 4324 RETURN 4324)
14:07:43.664556
AE 4324
14:07:43.664580
} = 8
14:07:43.664694 LINK 4324) = 24
14:07:43.664871 (FREEMAIN 4324 FREEMAIN 4324)
14:07:43.665154 (GETMAIN 4324 GETMAIN 4324)
14:07:43.665426 (FREEMAIN 4324 FREEMAIN 4324)
14:07:43.665721 (LINK 4324
14:07:43.709745
[BL 4596 AL 4600
14:07:43.709769
{
14:07:43.709781
BE 4600 main /var/cics_regions/leaktest/bin/hell.gnt
14:07:43.713276
(SEND 4600 SEND 4600)
14:07:43.714545
(LINK 4604
14:07:43.714751
{
14:07:43.714768
BE 4604 main gen
14:07:43.716683
<00027>(SEND 4604 SEND 4604)
14:07:43.717616
<00029>(RETURN 4604 RETURN 4604)
14:07:43.717917
AE 4604
14:07:43.717941
}
14:07:43.718071
LINK 4604)
14:07:43.718249
(RETURN 4604 RETURN 4604)
14:07:43.718595
AE 4604
14:07:43.718619
} = 4
14:07:43.719045
BUL 4604 AUL 4604]
14:07:43.719169 LINK 4604) = 280
14:07:43.719350 (RETURN 4604 RETURN 4604)
14:07:43.719648 AE 4604
14:07:43.719672 } = 344
69
70
71
If you are using DB2 for file control, the following might be useful:
v The cicsddt utility for loading, unloading, and listing DB2 files. cicsddt shows the
database files in the context of the CICS organization. See the TXSeries for
Multiplatforms Administration Reference for details.
v Many of the errors that are generated by the DamDB code are also written out to
CSMT. Where SQL error codes are returned, these are converted to string
explanations and inserted into the messages.
72
Note:
1. Each line is prefixed with the time stamp, the product name (DB2), the
host name (in this case, bengal) and the pid that reports the problem.
Chapter 11. Dealing with database problems
73
You can use the Command Line Processor to retrieve the message and an
explanation of an sqlcode, by using the following command:
db2 ? sql1013
: Application manager
: Application server 101
: Application server 102
: Unsuccessful load of
: Abnormal termination
: CICS is performing
: Dump to SYSA0001.dmp
: Unsuccessful load of
: Abnormal termination
: CICS is performing
: Dump to SYSA0001.dmp
Informix
Informix passes all XA errors to CICS through the do_sql_error routine. They are
written as entries in the file /var/cics_regions/regionName/console.nnnnnn.
Here are some problems you might encounter involving Informix:
v XA open string contains invalid syntax.
v XA open string parameter definition wrong or incomplete.
v Switch Load file not found or available.
v Values that are defined in the onconfig file for maximum number of users or
transactions are exceeded.
Figure 6 on page 75 is an example of a /var/cics_regions/regionName/
console.nnnnnn entry when CICS tries to connect to a database but is using an
incorrect open string (the open string specifies the name of the database that all
servers accessing a particular INFORMIX-OnLine Dynamic Server system can
74
open).
ERZ080088I/0801 01/07/04 06:05:50.507599000 INFREG
22281/0001
: XA OPEN submitted
for Server 101 connected to INFO
RMIX-ONLINE using XA_OPEN string cicstest1
ERZ080088I/0801 01/07/04 06:05:50.537396000 INFREG
22307/0001
: XA OPEN submitted for
Server 102 connected to INFO
RMIX-ONLINE using XA_OPEN string cicstest1
ERZ080032E/0801 01/07/04 06:05:55.216607000 INFREG
22281/0001
: Abnormal termination
U8032. XA_OPEN was unsuccessful when opening INFORMIX-ONLINE because XA_OPEN string
cicstest1 is invalid.
ERZ010003I/0094 01/07/04 06:05:55.217147000 INFREG
22281/0001
: CICS is performing
region abnormal termination in process cicsas
ERZ052004I/0602 01/07/04 06:05:55.218042000 INFREG
22281/0001
: Dump to SYSA0001.dmp
started.
You can track the status of global transactions by using the Informix utility onstat
with the -u option. This is described in the Informix OnLine Administrators Guide.
Return codes
If you receive a -409 sql return code when a transaction is running, check whether
the INFORMIXDIR environment variable is set correctly in either or both of:
v The CICS region environment file
v The XA Open string in the CICS region XAD.stanza file, if you are using the XA
standard to connect the database.
If you receive a -349 sql return code when a transaction is running, and you are
using the XA standard to connect the database, check whether the INFORMIX
switch-load-file informxa and the transaction were compiled using the same XA
shared library. For example if the ci case insensitive library is used for the
switch-load-file, the same ci library must be used for the transaction. Do not mix
the ci case insensitive and cs case sensitive libraries.
Oracle
The Oracle XA library logs any error and tracing information to its trace file. This
information is useful in supplementing the XA error code.
The name of the trace file is:
xa_db_namedate.trc,
where db_name is the database name that you specified in the open string field
DB=db_name, and date is the date when the information was logged to the trace file.
If you do not specify DB=db_name in the open string, it automatically defaults to the
name NULL.
Note that multiple Oracle XA library RMs with the same DB field and LogDir field in
their open strings log all trace information that occurs on the same day to the same
trace file.
Figure 7 on page 76 shows an Oracle trace file in which a nonexistent user was put
into the open string:
75
Figure 9 shows the error that you might receive when you try to configure Oracle
remotely without correctly setting up the tnsnames.ora file.
ORACLE XA: Version 9.2.0.1.0. RM name = Oracle_XA.
143346.32414.0:
xaoopen: xa_info=Oracle_XA+ACC=P/cics/cics+SqlNet=txora9+SesTm=30+LogDir=/var/cics_regions
/ORAREG/dumps/dir1+DbgFl=255+DB=ORADB,rmid=0,flags=0x0
143501.32118.0:
ORA-12535: TNS:operation timed out
143501.32118.0:
xaolgn_help: XAER_RMERR; OCIServerAttach failed. ORA-12535.
143501.32118.0:
xaoopen: return -3
Figure 10 on page 77 shows how the entry in the Oracle XA trace file would appear
if you failed to grant the SELECT privilege to the V$XATRANS$ view for all Oracle
accounts that Oracle XA Library applications will use.
76
Figure 10. Oracle XA Trace Entry: SELECT Privilege Not Granted to V$XATRANS$ View
77
For more details, see the Oracle Server for Unix - Administrators Reference.
Sybase
Sybase XA-Library writes tracing information in the fully qualified file name specified
in the open string. If you do not specify the -L option and a logfile parameter,
logging is disabled.
Here are some problems you might encounter:
v XA open string contains invalid syntax.
v The connection to the database that is specified in the open string fails because
the server is not correctly set in the XA configuration file as the LRM.
v Sybase has not been started.
v User name or password not authorized to connect to the server
v Communication error in client-server configuration
v Cannot read or load Switch Load file.
Figure 11 shows the type of trace file you might receive if you use the wrong
password for user sa in the open string.
2004/01/08 12:13:57: 0x124032,00000001: [xaservermsg_cb/875] Message: Server andromeda,
Sev=14, Nr=4002; Msg: Login failed.
2004/01/08 12:13:57: 0x124032,00000001: [xaclientmsg_cb/847] Message: Nr=44, Sev=4, L=4,
O=1; Msg: ct_connect(): protocol specific layer: external error: The attempt to connect to
the server failed.
2004/01/08 12:13:57: 0x124032,00000001: [xc_connect/332] Error: Connect(andromeda) failed,
rc=0
2004/01/08 12:13:57: 0x124032,00000001: [xa_open/193] Error: Return retstat: -3
([XAER_RMERR])
rmid: 0, flags:[], info: -Usa -Pnopass -Nconnection_1 -L/tmp/lrmXA.log
Figure 11. Sybase XA Trace File: Wrong Password for User sa in Open String
78
Figure 12. CICS Console Messages: Wrong Password for User sa in Sybase Open String
If you put in your open string an lrm_name that is not an entry in the Sybase
xa_config file, you will get an entry in the CICS console message file as shown in
Figure 12 and an XA logging trace similar to that shown in Figure 13.
Figure 13. Sybase XA Trace: Wrong LRM Name in Sybase Open String
Figure 14 shows what the XA trace logging looks like when the server name that is
defined in the xa_config entry does not exist.
Figure 14. Sybase XA Trace: Wrong Server Name in Sybase xa_config File
79
80
81
v The region host is listed in the CICS_HOSTS environment variable, or the host is
specified with the cicslterm -h option.
If the terminal supports underlining, all subsequent input is underlined. After the
test, reset the underline mode:
tput rmul
82
The cicslterm client does not work with a given terminal type
Check for the following:
v The terminal type does not have enough capabilities to run the cicslterm client.
A useful capability test is to run the vi editor. If the vi command fails to start in
the usual full-screen mode, the terminal device cannot support the cicslterm
client.
v The terminfo database does not contain definitions for this terminal type.
When cicsteld does not work when started from the inetd daemon
If the cicsteld server process does not start from the inetd daemon, ensure that an
unused port has been selected to listen for cicsteld connections. This port is
specified in the /etc/services file. Then check whether the /etc/inetd.conf file
contains the appropriate line to start the cicsteld process when a connection
request is received at this port.
The inetd daemon needs to be refreshed after changes have been made to the
inetd.conf file. See the instructions in the header of inetd.conf about how to
refresh the inetd daemon.
The cicsteld.sh shell script is supplied as a basis for customizing the invocation of
the cicsteld server. Note that a maximum of five parameters can be specified in
inetd.conf; extra ones are silently discarded. If more parameters are required for
cicsteld (for example the server and client code page information), this must be
done with a shell script. Diagnostic trace can also be written to a file from within the
cicsteld.sh script to ensure that the cicsteld command is passed the correct
parameters and is running in the appropriate environment.
|
|
|
|
|
|
|
|
|
|
|
|
|
83
|
|
|
|
|
84
85
Figure 15. The CICS trace model: each CICS process is traced separately, and start-up values are stored in the
master trace area
86
Application trace is broken down into two subcategories: user trace and exec trace.
User trace tracks the TRACEID, FROM, and RESOURCE values that are specified
in any EXEC CICS ENTER commands within a transaction program. Exec trace
tracks entry and exit events in the EXEC CICS interface within a transaction
program. You can use these types of trace together or separately.
System trace, which includes product trace and debug trace, tracks events in the
CICS product code. With product trace, you can examine many types of events; for
example, entry into internal and external functions, returns from functions, and
process exits. CICS classifies events into a hierarchy of five trace levels, which you
use to distinguish the amount of trace collected. For example, trace level 0 means
collect no system trace and trace level 4 means collect all system trace.
(Table 8 on page 92 shows the trace levels and the events that they include.) You
use trace levels to indicate the kinds of events to trace for a particular CICS module
or process. For example you can trace a specific module within a single CICS
process type at one trace level and trace another module across all processes in
the region at a different level.
System trace also includes debug trace, a sixth trace level. Debug trace events are
typically meaningful only for IBM internal use; for this reason, debug trace is not
included in the standard CICS product distribution.
To trace information about the SFS Server, the PPC Gateway Server, and
PPC-TCP connections between CICS regions, you need to use the CICS Toolkit
Trace. The CICS Toolkit Trace records the activity of these servers, and of the
associated SFS and PPC Gateway client stubs in the CICS region. This facility is
described in full in the TXSeries for Multiplatforms SFS Server and PPC Gateway
Server: Advanced Administration.
87
and if tracing is enabled but no requests are made, no trace is collected. The
trace-enabling RD attributes that correspond to the types of tracing available are
shown in Figure 17.
Enabling trace
The trace-enabling RD attributes are hierarchical in nature, a feature that gives you
great control in the management of tracing. It is very easy to turn different trace
types on and off simply by setting the RD attributes. For each of the following RD
attributes, the possible values are on or off, and all of them default to off:
v TraceFlagMaster: This RD attribute enables the region-wide collection of trace. If
it is off, no trace is collected in the region, regardless of the settings of the other
trace-enabling attributes.
v TraceFlagExec: This RD attribute enables the collection of exec trace, which is a
subset of application trace. If it is off, no exec trace is collected.
v TraceFlagUser: This RD attribute enables the collection of user trace, which is a
subset of application trace. If it is off, no user trace is collected.
v TraceFlagSystem: This RD attribute enables the collection of system trace. If it
is off, no system trace is collected.
Requesting trace
Turning on all the trace-enabling RD attributes does not cause trace data to be
collected. It ensures that if a tracing request is made for that type of trace, the data
will be collected. If no tracing is requested, no trace is collected. Requests for
tracing are made through one of two mechanisms, depending on the type of tracing
that is being requested:
v To request application tracing, the application program must contain the
command EXEC CICS TRACE ON USER SINGLE. This command causes the
collection of user trace, exec trace, or both, depending on the types of
application trace that are enabled.
v To request system tracing, you place a trace specification in the master trace
area for the region. The trace specification indicates the system-trace events to
track in addition to the modules and processes in which to track them. See The
trace specification on page 92 for more information.
88
Requests for tracing are ignored if the appropriate flags are not enabled.
Application trace
You can use application trace to verify the flow of logic or to identify bottlenecks
within CICS transaction programs. Application trace consists of two subcategories:
user trace and exec trace. User trace consists of the TRACEID, FROM, and
RESOURCE values that are specified in any EXEC CICS ENTER commands within
a transaction program. Exec trace consists of entry to and return from all EXEC
CICS commands within a transaction program.
Note: Application trace information corresponds to the information that is available
through the CICS Execution Diagnostic Facility (CEDF), which is used for
debugging application programs. For information about using the CEDF, see
the TXSeries for Multiplatforms Application Programming Guide.
89
3. If you want to write the trace to the user trace file, specify this by using the
EXEC CICS TRACE ON USER SINGLE command within the transaction
program. The command turns on the writing of user and (optionally) exec trace
information to the user trace file, depending on the settings of the application
trace flags. The TraceFlagUser RD attribute must be also switched on for user
and exec trace to be written to this destination.
If you do not switch on the TraceFlagUser RD attribute and use the EXEC
CICS TRACE ON USER SINGLE command, information is not written to the
user trace file. However, in this case, if you switch the TraceFlagExec RD
attribute on, the exec trace might still be written to other destinations (buffer and
AUX on all platforms, plus the external trace on AIX).
The request is canceled automatically when the transaction program exits.
Application trace events are triggered when the CICS API command EXEC
CICS ENTER is invoked. The request to write the trace to the user trace file can
be made only from within a program; no administrative equivalent exists.
Trace records for application trace events that have no user identifier (for example,
those that run when the region starts) are stored in a special file in the
application-trace directory. The name of this file is determined by the value of the
TraceUserPublicFile RD attribute; this value defaults to cicspubl. File names
follow this pattern:
regionName.public.cicsusr
For example, the following file contains public trace for the region TJEREG2:
TJEREG2.public.cicsusr
The trace files that are generated for application trace are unformatted. They must
be formatted by using the cicstfmt utility before they can be read.
90
582
CICS Thu Jan 8 17:59:35 2004 276141590 REG01
cicsas
925754/1
....(00000000) 1658F1F2BA78148 EI> Entering EXEC CICS ENTER TRACEID (5)
584
CICS Thu Jan 8 17:59:35 2004 298699446 REG01
cicsas
925754/1
....(00000000) 1658F1F2BC7C5F4 ++ User Trace Id(5)
From
= ........ (0000000000000000)
Resource
= ........ (0000000000000000)
583
CICS Thu Jan 8 17:59:35 2004 311919429 REG01
cicsas
925754/1
....(00000000) 1658F1F2BDAAF17 EI< Returning from EXEC CICS ENTER TRACEID (5) with
EIBRESP(0), EIBRESP2(0)
582
CICS Thu Jan 8 17:59:35 2004 323828259 REG01
cicsas
925754/1
....(00000000) 1658F1F2BEBB81D EI> Entering EXEC CICS SEND FROM
(O WORLD HELLO WORLD. X4F20574F524C442048454C4C4F20574F524C442E) LENGTH (20)
583
CICS Thu Jan 8 17:59:35 2004 329938891 REG01
cicsas
925754/1
....(00000000) 1658F1F2BF475D1 EI< Returning from EXEC CICS SEND FROM
(O WORLD HELLO WORLD. X4F20574F524C442048454C4C4F20574F524C442E)
LENGTH (20) with EIBRESP(0), EIBRESP2(0)
582
CICS Thu Jan 8 17:59:35 2004 341715952 REG01
cicsas
925754/1
....(00000000) 1658F1F2C054E97 EI> Entering EXEC CICS RETURN
583
CICS Thu Jan 8 17:59:35 2004 347786637 REG01
cicsas
925754/1
....(00000000) 1658F1F2C0DFDA9 EI< Returning from EXEC CICS RETURN
with EIBRESP(0), EIBRESP2(0)
Figure 18. Fragment of a file containing application trace
Taking the first record as a sample, application-trace records consist of the following
components:
v 582: Hook ID
v CICS: The CICS product
v Thu Jan 8 17:59:35 2004: Date and timestamp value
v 276141590: Nanosecond time precision
v REG01: CICS region name
v cicsas: CICS process name
v 925754/1: Process identifier/thread identifier
v (00000000): Transaction ID in hex format
v 1658F1F2BA78148: High precision time, 64-bit time value (AIX and Windows
specific)
v EI> Entering EXEC CICS ENTER TRACEID (5): Type of event traced and related
information
System trace
System trace tracks significant events in the CICS product code. Such events in the
product are captured through product trace. Many types of events can be traced; for
example, entry into internal and external functions, returns from functions, and
process exits. The CICS trace specification allows you to specify the system-trace
events to track in addition to the modules and processes in which to track them. For
example, you can trace a class of events in a specific module within a single CICS
process type, or you can trace all events in one module across all processes in the
region.
System trace also includes debug trace. Debug trace events are typically useful
only for IBM internal use; for this reason, debug trace is not included in the
standard CICS product distribution.
91
Event type
No trace is collected
ERROR
Internal errors
EXCEPTION
INFTRERR
WARNING
Internal warnings
INFO
EVENT
EXIT
IENTRY
XENTRY
ERETURN
TRETURN
VRETURN
92
Description
Event type
Description
ERZMID
ERZHEX
Note: Trace level 5 is debug trace. This level is intended for internal use; its use
requires special resources. Users who request trace level 5 without the
additional resources will generate trace at level 4.
General syntax of the trace specification: The initial collection of system trace
is specified by the RD stanza entry TraceSystemSpec. This attribute takes a string
value, and the syntax of the string allows an administrator to define different levels
of tracing for different CICS modules and process types. The trace-specification
string consists of a quoted, comma-delimited series of trace definitions:
TraceSystemSpec="TraceDefn[,TraceDefn]"
Each trace definition consists of a left-hand side and a right-hand side separated by
an equals (=) sign: LHS=RHS. Two valid types of trace definitions exist: those that list
trace levels for CICS modules and those that list CICS process types to trace.
Trace definitions: trace levels for named modules: The first type of trace
definition, which indicates trace levels for CICS modules, has a list of CICS
modules on the left-hand side and a trace level on the right:
moduleList=traceLevel
A module list consists of one CICS module, multiple CICS modules separated by
plus (+) signs, or the special token all, which indicates that all modules should be
traced. See CICS module identifiers, on page 123 for a list of valid CICS module
names; use the names, not the numeric identifiers, in trace definitions.
The trace level is an integer between 0 and 4. A common way to manage system
trace is to set the trace specification for all modules to level 0, to turn off all tracing,
then selectively trace specific modules at appropriate levels. The trace-specification
string is case-insensitive. For example, the following are valid, equivalent trace
specifications. Both first turn off system tracing for all modules then turn on tracing,
at trace level 4, in the DAMTD, DAMTS and DAMFI modules in all processes in the
region:
TraceSystemSpec="all=0,damtd+damts+damfi=4"
TraceSystemSpec="ALL=0,DAMTD+DAMTS+DAMFI=4"
Table 9 on page 94 lists all the valid CICS process-type identifiers for use within
trace specifications.
93
ALL
Description
CICS
cics
AS
cicsas
Application server
AM
cicsam
RM
cicsrm
Recovery manager
RS
cicsrs
Recovery server
IC
cicsic
RL
cicsrl
IP
cicsip
IP listener process
SL
cicssl
LM
cicslm
OL
cicsol
NP
cicsnp
LU
cicslu
CB
cicscb
A trace specification that does not explicitly begin with the process-list trace
definition is implicitly considered to start with the trace definition proc=all. All
module-tracing trace definitions that follow a process-list trace definition apply only
to the processes that are named in the process-list definition. The following is
another valid trace specification:
TraceSystemSpec="all=0,damtd+damfi=4,proc=as,taslu=4,proc=ip+rl,suppr+comsu=4"
This trace specification collects trace records for events at trace level 4 in the
DAMTD and DAMFI modules in all processes in the region, and it additionally
traces the TASLU module at level 4 within the application-server processes, and the
SUPPR and COMSU modules at level 4 within the IP and RPC listener processes.
Note that the trace definitions that follow a proc definition add tracing to the implicit
proc=all; in the application-server processes, the DAMTD, DAMFI, and TASLU
modules are traced, and in the listener processes, the DAMTD, DAMFI, SUPPR,
and COMSU modules are traced.
94
The location of all system trace files, those that are dumped from the buffer in
addition to those that are generated by auxiliary trace, is determined by the value of
the TraceDirectorySystem attribute. The default value is /var/cics_regions/
regionName/dumps/dir1 on Open Systems and \var\cics_regions\regionName\
dumps\dir1 on Windows. This attribute can be set to any valid path.
Under this naming convention, processName is the name of the CICS process from
which the trace is generated (see Table 9 on page 94 for a list of CICS process
names), the processNumber is the identifier that is assigned by CICS, not by the
operating system. The indexCounter is a three-digit integer that indicates the
number of dumps that have occurred since the region was cold-started. These
numbers ensure that a process does not overwrite its dump files. They can also be
used to match dump files from different processes across the region; all processes
dumped at the same time will use the same index counter.
The trace files that are generated from ring buffers are unformatted. They must be
formatted by using the cicstfmt utility before they can be read.
Automatic ring-buffer dumps: CICS processes dump their ring buffers
automatically, according to the settings of certain environment variables. These
variables indicate the conditions under which processes should dump their ring
buffers:
1. CICSTRACE_DUMP_ON_ABNORMAL_EXIT dumps the ring buffer whenever a
task exits through an abnormal task-termination procedure. Set the variable to
any value; the value itself is not meaningful.
2. CICSTRACE_DUMP_ON_EXIT dumps the ring buffer whenever a task exits
through the normal or abnormal task-termination procedure. Set the variable to
any value; the value itself is not meaningful.
3. CICSTRACE_DUMP_ON_SYMREC dumps the ring buffer whenever a symrec
is recorded. Set the variable to any value; the value itself is not meaningful.
4. CICSTRACE_DUMP_ON_ABEND dumps the ring buffer whenever a symrec is
generated for one of the CICS abend codes. Set the variable to a
comma-delimited list of abend codes.
Chapter 13. Using CICS trace
95
Under this naming convention, processName is the name of the CICS process from
which the trace is generated (see Table 9 on page 94 for a list of CICS process
names), the processNumber is the identifier that is assigned by CICS, not by the
operating system; processID is the operating-system identifier. The threadID is
omitted for single-threaded processes like standalone programs; in multi-threaded
processes, trace from each thread goes into separate files. Before the files that are
inside the braces {{}} can be read, you must use the cicsfmt utility to format them.
The formatted files are generated in the following pattern:
regionName.processName.nprocessNumber.pprocessID.threadID.cicstrc.fmt
For example, the following files contain system trace for the region TJEREG2:
TJEREG2.cicsas.n102.p23374.t1.{{cicstrc}}
TJEREG2.cicsas.n102.p23374.t2.{{cicstrc}}
TJEREG2.cicsas.n102.p23384.t1.{{cicstrc}}
TJEREG2.cicsas.n102.p23384.t2.{{cicstrc}}
TJEREG2.cicsas.n103.p20628.t1.{{cicstrc}}
TJEREG2.cicsas.n103.p20628.t2.{{cicstrc}}
TJEREG2.cicsic.n4.p19714.t1.{{cicstrc}}
Under this naming convention, processName is the name of the CICS process from
which the trace is generated (see Table 9 on page 94 for a list of CICS process
names), the processNumber is the identifier that is assigned by CICS, not by the
operating system, and processID is the operating-system identifier. The threadID is
omitted for single-threaded processes like standalone programs; in multi-threaded
processes, trace from each thread goes into separate files. For example, the
following files contain system trace for the region TJEREG2:
v TJEREG2.cicsas.n102.p23374.t1.cicstrc
v TJEREG2.cicsas.n102.p23374.t2.cicstrc
v TJEREG2.cicsas.n102.p23384.t1.cicstrc
v TJEREG2.cicsas.n102.p23384.t2.cicstrc
v TJEREG2.cicsas.n103.p20628.t1.cicstrc
v TJEREG2.cicsas.n103.p20628.t2.cicstrc
v TJEREG2.cicsic.n4.p19714.t1.cicstrc
96
These files must be formatted with the cicstfmt utility before they can be viewed.
The formatted files are generated in the following pattern:
regionName.processName.nprocessNumber.pprocessID.threadID.cicstrc.fmt
The maximum size, in bytes, of auxiliary trace files is determined by the value of
the TraceMaxSizeAux RD attribute. The value can be any positive integer, and the
special value 0 (zero) is used to indicate an unlimited size. The default value is 0.
Writing trace records directly to files is not as efficient as writing them to the ring
buffer, but it can be very useful for capturing problems that occur before the ring
buffer is initialized.
start collecting system trace from a running region, issue these commands:
CECI TRACE ON
CECI TRACE SYSTEM ON
CEMT SET AUXTRACE ON
To
1.
2.
3.
stop collecting system trace from a running region, issue these commands:
CEMT SET AUXTRACE OFF
CECI TRACE SYSTEM OFF
CECI TRACE OFF
The location of all system trace files, including those created by dynamic trace
commands, is determined by the value of the TraceDirectorySystem attribute. See
Storing system trace on page 94 for more information.
97
586
CICS Wed Jan 7 14:53:45 2004 502686309 r204621 cicsas
41472/1
....(00000000) 16586C1EEB04C76
} ConTS_GetASWork
return(0, RSN_5)
585
CICS Wed Jan 7 14:53:45 2004 502710555 r204621 cicsas
41472/1
....(00000000) 16586C1EEB0555A
{ TasTA_Run
(Tranid <ORIN> (7) for user <CICSUSER> on device <CK8H>.... TermD
<0xa0085b90>, Indata <0xa0085a50>)
585
CICS Wed Jan 7 14:53:45 2004 502737031 r204621 cicsas
41472/1
....(00000000) 16586C1EEB05F06
{ StoTA_GetStorage
(0, 192, 0, 0, 2FF22108, 0, 14)
585
CICS Wed Jan 7 14:53:45 2004 502758429 r204621 cicsas
41472/1
....(00000000) 16586C1EEB066E5
{ StoMA_Alloc
(a007a4dc 200)
585
CICS Wed Jan 7 14:53:45 2004 502815134 r204621 cicsas
41472/1
....(00000000) 16586C1EEB07B9F
{ StoMA_HeapMalloc
(30353070 c8 2ff21fc0)
586
CICS Wed Jan 7 14:53:45 2004 502833951 r204621 cicsas
41472/1
....(00000000) 16586C1EEB0828F
} StoMA_HeapMalloc
return(0, RSN_4)
581
CICS Wed Jan 7 14:53:45 2004 502850346 r204621 cicsas
41472/1
....(00000000) 16586C1EEB08888
Common Storage Control Module (StoMA)
Memory Allocation Request
Size
= 200
Handle
= 0xa007a4dc
Result
= SUCCESSFUL
Memory Allocated = 0x303530b8
586
CICS Wed Jan 7 14:53:45 2004 502866624 r204621 cicsas
41472/1
....(00000000) 16586C1EEB08E86
} StoMA_Alloc
return(0x303530b8)
581
CICS Wed Jan 7 14:53:45 2004 502884875 r204621 cicsas
41472/1
....(00000000) 16586C1EEB09531
Task Related Storage Control Module (StoTA)
Memory Allocation Success
Size
= 200
Address = 0x303530b8
586
CICS Wed Jan 7 14:53:45 2004 502901515 r204621 cicsas
....(00000000) 16586C1EEB09B47
} StoTA_GetStorage
return(0, RSN_6)
585
CICS Wed Jan 7 14:53:45 2004 502926167 r204621 cicsas
....(00000000) 16586C1EEB0A456
{ StoTA_GetStorage
(D5302C10, 100, 1, 0, A007B6E8, 0, 14)
585
CICS Wed Jan 7 14:53:45 2004 502945005 r204621 cicsas
....(00000000) 16586C1EEB0AB39
{ StoMA_Alloc
(a007a4dc 108)
585
CICS Wed Jan 7 14:53:45 2004 502962680 r204621 cicsas
....(00000000) 16586C1EEB0B1B9
{ StoMA_HeapMalloc
(30353070 6c 2ff21fc0)
586
CICS Wed Jan 7 14:53:45 2004 502979395 r204621 cicsas
....(00000000) 16586C1EEB0B7D2
} StoMA_HeapMalloc
return(0, RSN_4)
41472/1
41472/1
41472/1
41472/1
41472/1
Taking the first record as a sample, system-trace records consist of the following
components:
v 585: Hook ID
v CICS: The CICS product
v Wed Jan 7 14:53:45 2004: Date and timestamp value
v 502710555: Nanosecond time precision
v R204621: CICS region name
v cicsas: CICS process name
98
99
100
Examine the trace in the area in which you expected the task to appear, to
determine why CICS did not perform the task. Remember that the tracing
options might not, after all, have been appropriate.
3. If you are storing system trace to the ring buffer, but dumps of the ring buffer do
not show the required entries, it is possible that CICS has overwritten them, or
that the process has not progressed far enough to write trace to the ring buffer.
If you suspect that the buffer has been overwritten, increase the size of the ring
buffer. See Using the trace buffer on page 95. If your process appears not to
have run long enough to write to the ring buffer, direct trace to auxiliary trace
files. See Using auxiliary trace files on page 96.
101
102
103
During start-up, CICS obtains the dump directory from the region database, and
checks whether CICS has write permission in all the dump subdirectories. If CICS
finds a nonwritable dump subdirectory, a warning message is written to the
console.nnnnnn file. If you are a system administrator, deal with this type of warning
message promptly.
Produce a CICS system dump after an ASRA SysDump(yes) or CEMT SET DUMP ON
abend
plus either PCDump(yes) or CEMT SET
DUMPOPTIONS PCDUMP plus
TransDump(yes)
104
Produce a CICS system dump after an ASRB SysDump(yes) or CEMT SET DUMP ON
abend
plus either ABDump(yes) or CEMT SET
DUMPOPTIONS ABDUMP plus
TransDump(yes)
Produce a dump of CICS resource definitions EXEC CICS DUMP
and main storage areas that are related to a
See the TXSeries for Multiplatforms
task
Application Programming Reference for
information about the options that are
available on EXEC CICS DUMP.
Produce a CICS Transaction Dump after an
ASRB abend
Formatting a dump
CICS provides a dump formatter, cicsdfmt, to convert the data that is written by the
dump facility into a form that can be written to the operating system standard
output.
cicsdfmt can be used to:
v List dump files with a particular base name, for a particular region, or in a
particular region
v Format dump files
v Delete dump files (this is useful for creating space on your file system)
See the TXSeries for Multiplatforms Administration Reference for details of the
syntax of cicsdfmt and examples of its use.
where:
aaaa
Indicates how the dump was started:
ASRA As a result of an ASRA abnormal termination.
ASRB As a result of an ASRB abnormal termination.
SYSA As a result of a SYSA abnormal termination.
SHUT From a shutdown request.
SNAP From a CEMT PERFORM SNAP DUMP request.
A four letter dumpcode
From an EXEC CICS DUMP command.
Chapter 14. Using CICS dump
105
Region dump
Transaction dump
Contents
Header
information
Title
Service levels
System global
data
106
Section
Region dump
Transaction dump
Transaction
dump
+ (might be
+
many, one after
the other)
Contents
Details of each transaction that
is in progress, including:
v Dump of the EIB
v Details of the last CICS
command that was executed
v Non-application server
processes
System trace
information
Data specified
with FROM
option of EXEC
CICS DUMP
Dump
complete
message
If
TransDumpTrace=yes
is set in the Region
definition
Dump is incomplete
Check that the last message in the dump is:
**** CICS DUMP COMPLETE (InfDU) ****
If this is not the last message, either part of the dump is missing, or the dump ran
out of file space.
Do not discard the dump immediately. The information it does contain might be
useful.
107
You did not get the correct data from a system dump
If you do not get the correct data formatted from a CICS system dump, the
following are possible reasons:
v You have used the wrong release level of the CICS dump formatting program
(cicsdfmt).
v The file data was damaged (for example, another person has manipulated the
data in the dump).
v A storage violation has corrupted dump data.
108
109
the values that are passed by the application program are shown in the output, for
example:
EXEC CICS command string:
Buffer Address = 0x2ff1e430
EXEC CICS SEND TEXT
TEXT
FROM (X20A16CB0)
LENGTH (12)
ERASE
110
The above example can be found just above this output in the dump, in the
Program Data area, because it points to a local variable in the application
program.
The next section, headed cics_args, shows more detail of the current EXEC CICS
command. If the program was prepared with the -d option on cicstran or cicstc,
the line number of the current EXEC CICS command in the application source file is
shown by the label CEDF line number. Below this the programming language is
shown, by the label Programming language.
The command is formatted with the values that the application passed to CICS.
Below this is an area headed cics_args, which is formatted output of the data
structure that is generated in the application program when it is prepared, and used
to pass the details of each EXEC CICS command to CICS when the application is
run. The item CEDF line number in this data structure gives the line number of the
most recent EXEC CICS command in the CICS source file, if the program was
prepared with the -d option on cicstc or cicstran.
111
Near the start of the dump is the following section, which shows which transaction
caused the abend and gives details of the stack at the time of the abend:
**** START OF TRANSACTION DUMP ****
Application Server id
Transaction Id
User Name
= 103
= ilad
= CICSUSER
= PinCA_StartC
= 0x29c
Called by function
from offset
= TasPR_CallApplication
= 0x758
Called by function
from offset
= TasPR_RunProgram
= 0x17c0
Called by function
from offset
= TasPR_RunProgram
= 0x17c0
Called by function
from offset
= TasPR_IRun
= 0x1bd0
Called by function
from offset
= TasTA_Exec
= 0x2ccc
Called by function
from offset
= TasTA_Run
= 0x2790
Called by function
from offset
= main
= 0xe80
The Transaction Identifier (transid) is shown (in this example it is ilad), but
because this is a C application, the current program name is not included in this
section. It occurs later in the dump. The stack details show that the current function
is named main, and it is identified as a C program by the CICS function that
called it - PinCA_StartC. APinCA_Start* function exists for each supported
language:
PinCA_StartC
PinCA_StartCpp
PinCA_StartIBMCob
PinCA_StartIBMPli
PinCA_StartCob
C applications
C++ applications
IBM Cobol applications
IBM PL/I applications
MF Cobol applications
The application programming language is also specified later in the dump. ASRA
abends can result from the wrong language support being used by CICS. This can
happen if the program filename extension is included in the Program Definition
PathNamevalue; for example, the C++ application program that is contained in the
file cppapp1.ibmcppv should have a PathName of /cppapp1. If the PathName is
set to /cppapp1.ibmcpp, it is run with C language support instead of C++ support;
this is seen in the stack, which includes PinCA_StartC instead of PinCA_StartCpp.
This problem is easily solved by removing the .ibmcpp file suffix from the PathName
value.
The Offset of current instruction (in this case 0x16c) gives the offset at which
the program was executing when the abend occurred. This is generally the last
successful instruction. The instruction that follows it is the one that generated the
112
abend. Below is a section of the assembly listing of the application that is used in
this example (illadr.lst, generated by using the -s option on cicstcl), which
includes these offsets:
61|
61|
62|
62|
62|
64|
64|
65|
65|
70|
70|
71|
000150
000154
000158
00015C
000160
000164
000168
00016C
000170
000174
000178
00017C
cal
st
l
bla
st
cal
st
cal
st
cal
st
cal
389D0000
90810078
80610074
48000003
90610070
389D0000
9081007C
3860000A
90640000
387F0000
907E0084
38600012
1
1
1
0
2
1
1
1
1
1
1
1
LR
ST4A
L4A
LDIV
ST4A
LR
ST4A
LI
ST4A
LR
ST4A
LI
gr4=gr29
c(gr1,120)=gr4
gr3=b(gr1,116)
gr3,gr4=gr3,gr4,mq",gr0",lr"
a(gr1,112)=gr3
gr4=gr29
point(gr1,124)=gr4
gr3=10
(*)long(gr4,0)=gr3
gr3=gr31
CicsArgs.DataArea(gr30,132)=gr3
gr3=18
The source line numbers are in the first column, and the hex offsets in the second
column, so it can be seen that offsets x16c and x170v are generated from source
code line number 65. The source line numbers in the assembly listing refer to the
compiler source file (filename.c for a C application, filename.Cfor C++ and
filename.cbl for IBM Cobol), not to the CICS source file. Use of the -s option on
cicstcl causes retention of the compiler source file to allow for its use in debugging.
It might be enough to examine the source code and fix the problem from this
information. However, the following section in the dump gives the values of the
general purpose registers at the time of the abend, which might be of additional
value when debugging programs. The register area in the example dump is shown
below:
General Purpose Registers set when signal raised
Buffer Address = 0xf0c3b31c
GPR0 = 2022852C
GPR1 = 2FF1EA50
GPR2 = 20848438
GPR3 = 0000000A
GPR4 = 00000000
GPR5 = 00000000
GPR6 = 02000000
GPR7 = 00000000
GPR8 = 00000000
GPR9 = 00000000
GPR10 = 00000000
GPR11 = 60000666
GPR12 = D01AA264
GPR13 = A007229C
GPR14 = 00000000
GPR15 = D2878A70
GPR16 = 00000004
GPR17 = A007211C
GPR18 = 0000010F
GPR19 = 00000000
GPR20 = A00BEC70
GPR21 = F0BEB1DC
GPR22 = F0BF3AF8
GPR23 = D052A27C
GPR24 = 20757598
GPR25 = 00000000
GPR26 = 00000001
GPR27 = 00000002
GPR28 = 20000000
GPR29 = 00000000
GPR30 = 20848450
GPR31 = D01AA408
The instruction at offset xv170is a store of the contents of register 3 into the
address in register 4. The dumped register contents above show that register 4
contains 00000000; therefore, this instruction has produced a segmentation
violation. The source code is as follows:
long * point;
point = 0;
*point = 10;
/* line number 64 */
/* line number 65 */
This is a simple example but shows the use of the dump information.
ASRA or ASRB abends are caused by an exception or a signal that is in the
application code but could leave the application server process unusable or corrupt.
For example, the application code or third-party library components might overwrite
Chapter 14. Using CICS dump
113
a section of unowned heap memory of the application server process, and make
the heap memory of the application server process unusable for further
transactions. To avoid these inconsistencies, the CICS application server process is
terminated upon an ASRA or an ASRB abend.
The transaction is terminated with an A012 abend code and a transaction dump is
produced (if TransDump=yes in the transaction definition). In this case the signal
has been caught by the Cobol Runtime and the current offset of the failing program
is given in the Cobol message, so the stack area of the CICS dump is not needed
in this case. What might be useful in the dump, however, is the Program Data
section, which contains the programs working storage. This is dumped in both hex
and ASCII format, so the use of eyecatchers in program working storage can aid in
location of particular values (see the TXSeries for Multiplatforms Application
Programming Guide).
= 101
= call
= CICSUSER
114
Called by function
from offset
= calltest
= 0x264
Called by function
from offset
= _iwz_cobol_main
= 0x58
Called by function
from offset
= PinCA_StartIBMCob
= 0x57c
Called by function
from offset
= TasPR_CallApplication
= 0x7a0
Called by function
from offset
= TasPR_RunProgram
= 0x17c0
Called by function
from offset
= TasPR_IRun
= 0x1bf0
Called by function
from offset
= TasTA_Exec
= 0x2ccc
Called by function
from offset
= TasTA_Run
= 0x2790
Called by function
from offset
= TasTA_Run
= 0x2790
Called by function
from offset
= main
= 0xe80
In this example, the transaction call runs the CICS Program calltest, which uses
the C subroutine test. The presence of the PinCA_StartIBMCob function in the
stack indicates that calltest is an IBM Cobol program; _iwz_cobol_main is an
internal COBOLroutine that is always be present when CICS is running an IBM
COBOL program.
The offset in the test function at which the error occurred is shown (0x10), and
the register values that are shown in the dump are valid for the subroutine, so they
can be used to determine the cause of the failure. Because the C subroutine is
prepared by using native compile and link commands instead of cicstcl, the
assembly listing is generated by use of the -qlist compiler option.
115
116
Severity
Problem No.
Incident No.
Problem/Enquiry
Abend/Prog CK
Incorrout
Op. Sys.
Wait
Module
Loop
Message
Performance
Other
CICS Server
Documentation available
Abend
System Dump
Compiler Output
Message
Transaction dump
Program Output
Trace
Translator Output
Other
Actions
Date
Name
Activity
Resolution
When you call, the support organization will ask you questions about your problem,
your operating environment, and the circumstances in which the problem occurs.
117
118
A copy of the environment file. This file contains the regions environment
variables such as CICSTRACE.
The contents of the data directory, including CSMT.out (or
CSMT.out.timestamp if CICS_CSMT_BACKUP=1 is set in the regions
environment file).
Any dump files that are found in the dump directory.
Note: Format any dump files by using the cicsdfmt command before running
the cicsservice tool. Ensure that these formatted files are located
within the dump directory so that the cicsservice tool picks them up.
Name the files in such a way that they are immediately identifiable as
formatted files (for instance, include the letters fmt in the name of a
formatted file).
v LPP information:
The lslpp output for software maintenance levels for all installed products,
including the base operating system.
v SFS information:
The SFS msg file.
Information about the region server and its OFDs, for example, a list of OFDs
still outstanding.
v ISC (intercommunication) information:
Copies of the /etc/services files.
SNA profiles (generated by the exportsna command).
A description of the connections to the network (generated by the netstat
command).
Diagnostic information that is written by the SNA product in the /var/sna/
directory, for example, trace, dump, and messages.
The PPC gateway message file.
The cicsservice tool uses the following default information about the working
region, environment, and output destination.
On CICS on Open Systems:
Information
Default value
Region specified on
$CICSREGION
SFS ($FILESYSTEM)
/tmp ($WORKDIR)
On Windows systems:
Information
Environment variable
Default value
%CICSREGION%
%USERNAME%
%FILESYSTEM%
SFS
119
Information
Environment variable
Default value
%WORKDIR%
%TMP%
/.:/cics/sfs/%NAME%
cicstest
%DB2DBDFT%
Running cicsservice
1. For all systems except Windows, if the path $CICS/utils/cicsservice has not
been defined, add it to your path. To do this, on a Open Systems command line,
enter:
export PATH=$PATH:$CICS_HOME/utils/cicsservice
2. Format any dump files by using the cicsdfmt command. Ensure that these
formatted files are located within the dump directory so that the cicsservice tool
picks them up. Name the files in such a way that they are immediately
identifiable as formatted files (for instance, include the letters fmt in the name
of a formatted file).
3. Format core files. If a core file is generated by a CICS process it is formatted
automatically using the showProcInfo tool. The resultant output is named
core.timestamp.fmt, and is located under the regions dump directory. However
if you find that any other core files in the regions dumps/dir1 directory have not
been formatted, you need to run the showProcInfo tool manually on the core
files, and save the output in a file named core.timestamp.fmt. Ensure that these
formatted trace files are located within the regions dump directory so that the
cicsservice tool picks them up.
4. Format trace files. If you have enabled CICS system trace or the application
trace, the generated trace files must be formatted with the cicstfmt utility. Ensure
that these formatted trace files are located within the regions dump directory so
that the cicsservice tool picks them up. The formatted trace files should be
named trace_filename.fmt.
5. Enter cicsservice.
6. From the cicsservice main menu, select the information you want to collate.
Selective collation allows you to choose whether to collect region, SFS,
ISC, or LPP information (DB2 on Windows only). If in doubt, collate everything.
Select option 3 to change the default values concerning where to collect and
store the diagnostic information. Press Enter.
7. On all systems except Windows, when cicsservice is complete, the compressed
output is stored in the output directory $WORKDIR in the file cservice.tar.Z. On
Windows only, when cicsservice is complete, the compressed output is stored in
the output directory %WORKDIR% in the file cservice.tar.
8. Contact your local service representative for the recommended way to transfer
the file to the support organization. The support organization might ask you to
transfer the file through FTP (binary mode), e-mail, or on hardware installation
media. If you have a compression utility, you may want to use it on the files you
send to your support organization.
120
The value target_file_pathname is the absolute path to the target _file. The
value files to include represents all of the files to be included in the tar file.
The output is stored in the file target_file.tar.
2. Compress the resulting tar file target_file.tar by entering the following
command:
compress target_file.tar
121
Applying a patch
1. Unpack the compressed file sent by the support organization. For example,
uncompress filename.tar.Z
tar xcf /file path.tar
2. Read the README file supplied. This file tells you which product files will be
rebuilt and how to apply the patch.
3. If the patch does not fix the problem, tell your support organization.
2. Read the README supplied. This file tells you how to apply the PTF (or
FixPack for Windows) and enables you to plan for any special actions.
3. Install the PTF (or FixPack for Windows).
4. After you have installed the PTF or FixPack:
v Do any actions that are recommended in the README.
v For all systems, run cicssetupclients as described in the TXSeries for
Multiplatforms Administration Guide.
v For all systems except Windows, run cicsmkcobol as described in the
TXSeries for Multiplatforms Administration Reference.
5. Contact your support organization if you experience any problems after you
have installed the PTF.
122
Terminal modules
11
12
18
33
62
64
97
98
99
100
123
16
17
19
Communications modules
27
28
29
30
31
32
41
42
43
44
61
63
109
Control modules
07
10
39
124
Administration modules
35
36
37
38
96
102
125
126
Notices
This information was developed for products and services offered in the U.S.A. IBM
may not offer the products, services, or features discussed in this document in other
countries. Consult your local IBM representative for information on the products and
services currently available in your area. Any reference to an IBM product, program,
or service is not intended to state or imply that only that IBM product, program, or
service may be used. Any functionally equivalent product, program, or service that
does not infringe any IBM intellectual property right may be used instead. However,
it is the users responsibility to evaluate and verify the operation of any non-IBM
product, program, or service.
IBM may have patents or pending patent applications covering subject matter
described in this document. The furnishing of this document does not give you any
license to these patents. You can send license inquiries, in writing, to:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
For license inquiries regarding double-byte (DBCS) information, contact the IBM
Intellectual Property Department in your country or send inquiries, in writing, to:
IBM World Trade Asia Corporation Licensing
2-31 Roppongi 3-chome, Minato-ku
Tokyo 106, Japan
The following paragraph does not apply to the United Kingdom or any other
country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS
DOCUMENT AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OR CONDITIONS OF NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS
FOR A PARTICULAR PURPOSE. Some states do not allow disclaimer of express
or implied warranties in certain transactions, therefore, this statement may not apply
to you.
This information could include technical inaccuracies or typographical errors.
Changes are periodically made to the information herein; these changes will be
incorporated in new editions of the document. IBM may make improvements and/or
changes in the product(s) and/or the program(s) described in this publication at any
time without notice.
Any references in this information to non-IBM Web sites are provided for
convenience only and do not in any manner serve as an endorsement of those
Web sites. The materials at those Web sites are not part of the materials for this
IBM product and use of those Web sites is at your own risk.
IBM may use or distribute any of the information you supply in any way it believes
appropriate without incurring any obligation to you.
Licensees of this program who wish to have information about it for the purpose of
enabling: (i) the exchange of information between independently created programs
Copyright IBM Corp. 1999, 2008
127
and other programs (including this one) and (ii) the mutual use of the information
which has been exchanged, should contact:
IBM Corporation
ATTN: Software Licensing
11 Stanwix Street
Pittsburgh, PA 15222
U.S.A.
Such information may be available, subject to appropriate terms and conditions,
including in some cases, payment of a fee.
The licensed program described in this document and all licensed material available
for it are provided by IBM under terms of the IBM International Program License
Agreement or any equivalent agreement between us.
Any performance data contained herein was determined in a controlled
environment. Therefore, the results obtained in other operating environments may
vary significantly. Some measurements may have been made on development-level
systems and there is no guarantee that these measurements will be the same on
generally available systems. Furthermore, some measurements may have been
estimated through extrapolation. Actual results may vary. Users of this document
should verify the applicable data for their specific environment.
Information concerning non-IBM products was obtained from the suppliers of those
products, their published announcements or other publicly available sources. IBM
has not tested those products and cannot confirm the accuracy of performance,
compatibility or any other claims related to non-IBM products. Questions on the
capabilities of non-IBM products should be addressed to the suppliers of those
products.
All statements regarding IBMs future direction or intent are subject to change or
withdrawal without notice, and represent goals and objectives only.
This information contains examples of data and reports used in daily business
operations. To illustrate them as completely as possible, the examples may include
the names of individuals, companies, brands, and products. All of these names are
fictitious and any similarity to the names and addresses used by an actual business
enterprise is entirely coincidental.
If you are viewing this information softcopy, the photographs and color illustrations
may not appear.
CICS/400
128
AIX
CICS
CICS/6000
CICS/ESA
CICS/MVS
CICS/VSE
CICSPlex
C-ISAM
Database 2
DB2
GDDM
IBM Registry
IBM
IMS
Informix
Language Environment
MVS
MVS/ESA
OS/390
OS/2
OS/400
RACF
RETAIN
RISC System/6000
RS/6000
SOM
System/390
TXSeries
TCS
VisualAge
VSE/ESA
VTAM
WebSphere
z/OS
Other company, product, and service names may be trademarks or service marks
of others.
Notices
129
130
Index
A
ABDump attribute 104
abend codes 7
abnormal termination
classification 4
codes 7
dealing with 17
dump not made when expected 108
generating dump 104
time taken to restart 42
transaction dump 103
what to look for in dump 109
ACUCOBOL-GT 13
administration changes 2
AllocateTimeout attribute 21
ANIMATOR 13, 36
checking programming logic 52
investigating loops 35
investigating storage violations 59
application design
debugging applications 35
application program
ACUCOBOL-GT 13
ANIMATOR 13
CADB transaction 13
CEBR transaction 13
CECI transaction 13
CEDF transaction 14
checking mapping from file 52
checking use of queues 16
data handling 2
debugging tools 35
EXEC CICS UNLOCK 24
EXEC CICS WRITEQ TS 24
generating dump 104
handling SQL codes 71
IBM Application Debugging Program 13
leaking storage 42
map size 46
module identifiers 123
not working as expected 47
PL/I message log 8, 9
poor programming logic 52
preliminary checks 2
restrictions on SQL 72
transaction dump 103
types of loops 33
unintended control characters 46
using dump to investigate 109
application programs
EXEC CICS GETMAIN SHARED 20
loops 19
application server
maximum server condition 22
too many servers 22
approach to problem determination 1
asynchronous scheduling 38
Copyright IBM Corp. 1999, 2008
B
Basic Mapping Support (BMS) 46
binding string, displaying 14
BMS (Basic Mapping Support)
applications not compiled with latest maps
attributes of fields 53
maps incorrect 46
modified data tag (MDT) 53
symbolic map 53
46
131
C
CADBR transaction 13
cat utility 9
category of problem 4
CCIN 8
CEBR
checking use of queues 16
investigating loops 35
investigating no task output 50
CEBR transaction 13
checking programming logic 52
CECI
checking for invalid data in a file 51
investigating loops 35
investigating no task output 50
CECI TRACE command 97
CECI transaction 13
checking programming logic 52
CEDF
effect on other terminals 22
investigating loops 35
investigating storage violations 59
investigating task output 50
CEDF transaction 14
checking programming logic 52
CEMT
cannot be used 30
checking ATI tasks 22
checking for uninstalled terminal definitions 37
checking tasks and scheduler 37
checking terminals in service 31
detecting tasks waiting 27
disabling transactions 51
enabling dump 104
generating system dump 104
increasing application servers 22
investigating tasks 49
PERFORM SNAP 104
purging a task 34
CEMT SET AUXTRACE command 97
CEMT transaction 14
changes in environment 2
changed applications 2
changes to hardware 2
changes to software 2
changes to system administration 2
CHAT transaction 30
checking access to DB2 14
checking access to SFS 14
CheckpointInterval attribute 42
checks, preliminary 2
CICS Animator Debug Configuration Transaction
(CADB) 13
CICS clients
cicslterm problems 81
CICS Command-level Interpreter (CECI) 13
CICS Execution Diagnostic Facility (CEDF) 14
CICS Master Terminal (CEMT) 14
CICS storage pools 2
CICS Temporary Storage Browse (CEBR) 13
CICS tools 12
132
D
DamDB code 72
data module identifiers 123
data overwritten 51
databases
check CICS configuration 71
check database configuration 71
checking application coding 72
checking use of 16
cicsddt utility 14
classifying the problem 4
dealing with problems 71
message logs 11
sample programs 71
SQL codes 71
using pview 71
XA support 71
DB2
check CICS configuration 71
check database configuration 71
checking access 14
checking application coding 72
cicsddt utility 71
db2diag.log 11
DeadLockTimeout attribute 26
dealing with problems 71
file control waits 24
for file control 71
problem determination 72
using ps 71
using pview 71
XA support 71
db2diag.log 11
deadlock 21
DeadLockTimeout attribute 21, 26
debugging program, IBM 35
debugging tools for applications 35
DELETEQ TD command 23
destination of dump 103
DFHCHATX, autoinstall program 22
diagnostic information, collating 118
display, unanticipated output 45
displaying binding string 14
distinguishing waits, loops, and performance
problems 19
documentation 7
dump 12
cicsdfmt 105
controlling output 104
core dump 103
data not formatted correctly 108
directory 103
file name 105
for incorrect output 48
for information about loops 34
formatting 105
IDs missing from the sequence of dumps 108
in storage violations 56
interpreting 109
investigating storage violations 57, 59
layout 106
dump (continued)
no dump produced 108
queueing 103
scheduler information 40
setting destination 103
system 103
system dump waits 25
transaction 103
unexpected output 107
user exit, UE052017 104
using 103
DumpName attribute 103
E
eliminating obvious causes 2
EMP (event monitoring point) 12
ENQ task control waits 25
enqueueing a locked resource 25
environment variables
CICSLTERM, use of 81
TERM, use of 81
environment, effect of changes 2
error messages 7
event monitoring point (EMP) 12
EXEC CICS ABEND 104
EXEC CICS DUMP 104
EXEC CICS GETMAIN SHARED 20
EXEC CICS START command 38
EXEC CICS UNLOCK command 24
checking waits for file control 24
EXEC CICS WRITEQ TS command 24
F
file control waits 24
file control, DB2 71
file descriptor leaks 65
file name, dump 105
first failure data capture 9
forcepurge 47
formatting dump 105
forums 7
G
generating dump 104
GETMAIN SHARED 20
H
hardware changes 2
heuristic damage 27
I
IBM Application Debugging Program
checking programming logic 52
using 35
13
Index
133
loops (continued)
types 33
using trace for information
lowercase characters 46
M
main memory buffer
trace entries missing 101
main storage, not enough 24
MapHeight attribute 46
maps 2
mapset, defined through RDO 2
MapWidth attribute 46
maximum server condition 22
MAXSERVER 22
MaxServer attribute 22, 39
memory leaks 65
message log file 72
message log viewer 14
message logs 7
Microsoft SQL Server 71
MinServer attribute 39
modified data tag (MDT) 53
module identifiers 123
monitoring 12
checking for journal waits 26
checking for transient data waits
checking TS queue waits 25
operating system
classifying the problem 4
OpThreadPoolSize attribute 42
Oracle
problem determination 75
output from a transaction 15
output from terminal 15
134
26
24
J
journal waits
34
35
patch 2, 121
PCDump attribute 104
performance 37
allocating application servers 40
automatic working set trimming 39
bottlenecks 37
checking the status of processes 14
classifying the problem 4
effect of ServerIdleLimit 39
IdleTimeout 42
incorrect setting of SFS attributes 42
performance (continued)
interval control delays 38
interval for consistency checking 42
maximum number of SFS requests 42
number of application servers 39
number of threads for SFS calls 42
poor performance 19
problem 20
ps utility 14
remote system status 39
short on storage 41
task class 39
task priority 40
tasks not given to scheduler 37, 38
tasks not scheduled 39
terminal status 38
using dump for information 40
using statistics for information 41
writing snapshots of the region 42
physical map 2
pools, storage 55
preliminary checks 2
network related errors 2
no previous success 2
printers
printed output wrong 45
unexpected line feeds and form feeds 46
priority, task 40
problem reporting 117
process of problem determination 1
processes, checking status of 14
program
defined through RDO 2
ps utility 14
PTF 2
PTF (program temporary fix) 121
publications 7
purging a task 34
R
random storage overrun 2
READQ TD command 23
reduced activity at terminal 19
region
application servers available 39
checking the status of processes 14
consistency checking 42
controlling trace output 87
displaying binding string 14
displaying NETNAME 14
incorrectly set attributes 42
module identifiers 125
pool 2
ps utility 14
releasing lock (cicsrlck) 14
setting task class 39
short on storage 29
stall during termination 30
stalled 19
stalls 28
region (continued)
status of remote region 39
stopping processes 31
storage pools 55
task priority 40
using dump for information 109
Region Definitions (RD)
MaxTaskCPU 34
MaxTaskCPUAction 34
region pool 2, 57
relational database managers (RDBMs) 71
repetitive output 19
reporting a problem 117
preparing information 117
sending documentation 118
reproducing the error
preliminary checks 2
resource definition
setting case for characters 46
Resource Definition Online (RDO) 2
mapset definition 2
program definition 2
transaction definition 2
resource definitions
access to region storage pool 57
CEMT transaction 14
controlling cicsrl threads 38
controlling number of application servers 39
controlling timeout value 21
controlling trace output 87
enabling dump 104
IdleTimeout 42
incorrect 29
inquiring on (cicsget) 14
maximum number of servers 22
maximum number of SFS requests 42
number of threads for SFS calls 42
setting checkpoint intervals 42
setting dump destination 103
setting map size 46
setting task class 39
terminal attributes 45
resources
definition errors 2
ResThreadPoolSize attribute 42
road map 7
RPC listener process 38
RPCListenerThreads 38
S
sample programs, database 71
scheduler statistics 41
ServerIdleLimit attribute 39
service changes 2
SFS
checking access 14
file control waits 24
IdleTimeout 42
incorrect attribute settings 42
incorrect data read from file 47
Index
135
SFS (continued)
maximum number of SFS requests 42
number of threads for SFS calls 42
syncpoint waits 27
SFS server
releasing lock (cicsrlck) 14
short on storage 20, 41
signature strings 55
SNA messages 11
SNA, intersystem waits 23
software changes 2
solution from support organization 121
sources of information
ACUCOBOL-GT 13
ANIMATOR 13
CADB 13
CCIN 8
CEBR 13
CECI 13
CEDF 14
CEMT 14
checking for intersystem waits 23
CICS tools 12
CICS-supplied transactions 13
cicsddt 14
cicsget 14
cicsgetbindingstring 14
cicsnotify 14
cicsrlck 14
cicssdt 14
cicssfslock 14
cicstail 11
cicstcpnetname 14
command-line utilities 14
CPLD 9
CPLI 8
CSMT 8
customer forums 7
database messages 11
dealing with loops 19
dump 12
error messages 7
files and databases 16
for database information 71
for intersystem waits 23
for terminal 22
IBM Application Debugging Program 13
link-edit maps 16
loops 34
monitoring 12
national language 8
product documentation 7
ps 14
queues 16
SNA messages 11
source listings 16
statistics 12
stderr 8
stdout 8
symrecs.nnnnnn file 9
tailing message files 11
136
Sybase
problem determination 78
symbolic maps 2, 53
symptom records 9
symptoms
application did not work as expected 47
CICS has stalled during a run 28
CICS region stalled 19
CICS stalls during initialization 28
CICS under stress 20
classifying the problem 5
code runs repeatedly 19
communication error 72
CPU time excessive 34
CPU usage high 19
database connection fails 72
dump output not as expected 107
file accesses excessive 20
input operations excessive 34
loops 19
low CPU usage 29
network problems 2
output missing 19
output operations excessive 34
output repetitive 19, 34
performance degraded 20
performance problems 20
priority 21
reduced terminal activity 19
short on storage 20
storage requests excessive 34
suspended tasks 21
Switch Load file problems 72
task fails to complete 19
task is waiting 19, 21
task not started 19
task suspended 19
tasks do not run 20
terminal appears to hang 37
terminal is unresponsive 22
trace output not as expected 100
transaction is delayed 37
unanticipated data in a file or user journal
unexpected return code 72
symrecs.nnnnnn file 9
synchronous scheduling 38
syncpoint waits 26
SysDump attribute 104
system dump 103
system dump waits 25
system loading 2
system process waits 27
T
tailing message files 11
task-private pool 2, 55
task-shared pool 2, 56
tasks
ATI, no output produced
autoinitiated 20
49, 51
47
tasks (continued)
class 39
demanding excessive storage 20
do not run 20
ENQ waits 25
inquiring on status 49
journal waits 26
looking at the ICE chain 51
looping 33
maximum server condition 22
module identifiers 123
not given to scheduler 38
not scheduled 37
precedence 41
priority 40
private storage pool 2
purging 34
queuing 39
shared storage pool 2
short on storage 20
SUSPEND waits 25
suspended 19, 21
syncpoint waits 26
unable to attach to the transaction scheduler
unable to schedule 39
waiting 21
waits 19
TCP/IP, intersystem waits 23
temporary storage
conditional requests for storage 24
no task output 50
unconditional requests for storage 24
waits 24
TERM environment variable, use of 81
Terminal Definitions (WD)
MaxTaskCPU 34
terminals
autoinstall program not loaded 22
checking output 15
checking user input 15
control characters in data stream 45
data not displayed 46
effect on performance 38
hang 37
incorrect mapping of data 53
incorrect output 45
message log 8
module identifiers 123
preliminary checks 2
problems with a single terminal 2
problems with multiple terminals 2
reduced activity 19
repetitive output 19
unexpected characters 46
using ATI 22
waits 22
wrong data values displayed 46
termination 30
threads, RPC listener 38
timeout 21
timing of problem 2
Index
37
137
138
transactions (continued)
innocent 64
input and output 15
interval control 38
message log 8
no output produced 48, 49
scheduled 37
suspending 26
timeout 21
using dump for information 109
using trace to investigate 50
wrong output produced 51
TransDump attribute 104
transient data
checking use of queues 16
no task output 50
waits 23
transient data queue
CCIN 8
CEBR transaction 13
CPLD 9
CPLI 8
CSMT 8
two-phase commit 27
U
UCTranFlag attribute 46
UE052017, dump request user exit 104
unanticipated output
classifying the problem 4
printed output unanticipated 45
terminal output unanticipated 45
unexpected messages 45
uppercase characters 46
user documentation 16
user exit for dump, UE052017 104
user input 15
user program 28
utilities
cat 9
cicsddt 14, 71
cicsdfmt 105
cicsget 14
cicsgetbindingstring 14
cicsnotify 14
cicsrlck 14
cicssdt 14
cicssfslock 14
cicsstop 31
cicstcpnetname 14
cicstfmt 90
DFHCHATX, autoinstall program 22
ps 14
W
waits
autoinstall program not loaded
CICS stalls 28
classification 4
22
waits (continued)
dealing with 21
definition 19
file control 24
intersystem 23
ISC 23
journal 26
maximum server condition 22
stages in resolving 21
symptoms 19
syncpoint 26
system dump 25
system process 27
task control 25
temporary storage 24
terminal 22
transient data 23
warm start
CICS stalls 28
effect on message file 10
windbg/msdev tool 35
Windows event log 9
X
XA support
71
Index
139
140
SC34-6636-02
TXSeries for Multiplatforms
Spine information:
Version 6.2
SC34-6636-02