You are on page 1of 137

CICS

Performance
Toolkit

x © Xephon plc July 2002


© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 1
Preface

CICS Performance Toolkit is a compilation of performance-related articles published recently in


CICS Update, Xephon’s monthly technical journal for CICS specialists. As well as covering
performance monitoring and tuning, CICS Update provides practical information, code, and advice
on back-up and recovery, security, integrity, the user interface, ways of making the life easier for
CICS end users and application and systems programmers, systems internals, and a variety of other
topics of interest to CICS specialists and of value to their installations.

You can find out more about CICS Update here:


http://www.xephon.com/cicsf
Subscribers to CICS Update are able to download Acrobat PDF versions of all past issues from
January 2000 onwards – including the issues in which these articles were first published.
It’s only fair, therefore, that, if you now decide to subscribe to CICS Update, you shouldn’t have
to pay for these articles again. We have set up an e-mail autoresponder that will give you a discount
equivalent to the price you paid for this Report (it may not be precisely the same because of currency
variations, but it’s as close as we can get it). To get your discount voucher, please send an e-mail
to credit@xephon.com with cics-cpt as the subject (or just click here).
We hope you find the CICS Performance Toolkit valuable in its own right, but we’ll be even happier
if we can welcome you as a subscriber to CICS Update!
Trevor Eddolls
Editor

Disclaimer
Readers are cautioned that, although the information in this report is presented in good faith, neither
Xephon nor the organizations or individuals that supplied information in this Report give any warranty
or make any representations as to the accuracy of the material it contains. Neither Xephon nor the
contributing organizations or individuals accept any liability of any kind howsoever arising out of the
use of such material. Readers should satisfy themselves as to the correctness and relevance to their
circumstances of all advice, information, code, JCL, and other contents of this report before making
any use of it.

Published by
Xephon
27-35 London Road
Newbury
Berkshire RG14 1JL
England
Telephone: 01635 38342
From USA: 01144 1635 38342

© Xephon plc 2002. All rights reserved. None of the text in this publication may be reproduced, stored in a retrieval
system, or transmitted in any form or by any means, without the prior permission of the copyright owner.
Subscribers are free to copy any code reproduced in this publication for use in their own installations, but may
2not sell such code or Xephon
© 2002. incorporate it in any
UK telephone commercial
01635 33848, fax product. No part
01635 38345. USA of this publication
telephone mayfax
(303) 410 9344, be (303)
used438
for 0290.
any
form of advertising, sales promotion, or publicity without the written permission of the publisher.
Contents

2 Preface
3 Contents
5 Health check-up for the CICS subsystem
A periodic ‘health check’ of older CICS applications helps to identify performance
problems, allowing pro-active maintenance to take place before serious problems
occur.
CICS shutdown statistics, gathered using the IBM-supplied DFHSTUP utility, can be
used to examine file request information, decide which files are good candidates for
LSRPOOLS, check transaction manager statistics (eg MAXTASKS), check storage
manager statistics (DSA and EDSA usage), look at temporary storage usage, find
buffer full conditions and waits on archive, and identify redundant programs/
transactions.
9 A simple program to monitor CICS task storage
This program monitors a task’s storage usage in the Dynamic Storage Area (DSA) and
Extended Dynamic Storage Area (EDSA). This helps systems programmers to
investigate and determine which task is using up storage in the DSA or EDSA.
The program shows all the displayable tasks plus their user IDs, and the storage used in
the DSA and EDSA. It makes use of CICS SPI commands ‘inquire task list’ and
‘inquire task storage’.
13 Tuning AOR/FOR traffic in CICS/TS 1.2
CICS Version 5 (in CICS/Transaction Server Version 1) provides a significant
enhancement over CICS 4.1 in the area of ISC and MRO connection and session
terminal names. This article supplies a number of tuning tips.
20 CICS ISC/MRO session monitoring
Upgrading from CICS/ESA Version 4.1 to CICS/TS Version 1.3 can lead to problems
with sessions remaining acquired when previously they were released.
This article contains a program, which refreshes itself every three minutes, and allows
users to monitor the status of the MRO/ISC connections for the CICS region,
especially the connection which is losing the sessions.
A second program monitors the connection and releases/re-acquires the connections.
The transaction is a long-running one with the program waiting for five minutes between
checking the connection status and REL/ACQ actions. The program also checks for
CICS shutdown status and terminates itself upon CICS termination.
31 Monitoring system logger activity online
An important task when running CICS/TS is to monitor the logger set up for CICS.
IBM provides the batch program IXGRPT1, and CICS systems programmer should be

Continued ...

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 3


very familiar with this program in order to understand whether CICS’s system logs,
DFHLOG and DFHSHUNT, are well defined and tuned.
Many people find it difficult to interpret IXGRPT1 output and to understand the figures
and the critical situations. This article contains program IXGRPTC (C stands for CICS)
and program IXGSMF8 to overcome this problem.
61 Monitoring CICS activity
This article describes how to keep an on-line and historical view of all the system and
application activities in the CICS session, which are written to an application and/or
CICS transient data. This process is done almost automatically.
These activities are archived onto a monthly tape while CICS is running, ensuring that
each month has its own tape, and to ensure data continuity when CICS is terminated or
cancelled.
80 Buried treasure in the CICS TRACE TABLE
CICS trace is the primary tool for application and system debugging. It is a series of
data entries, written in chronological order, that document the state of various system
resources and activities.
There are a number of very useful CICS trace entries that can be used to provide a
great deal of helpful information, provided you know what to look for within the
(potentially) vast amount of trace data that CICS can generate. This article highlights a
number of such trace entries, explaining when they were introduced, what they can offer
you, and the trace options required to generate them.
91 Collecting DB2ENTRY statistics and tuning the CICS
attachment facility
This article is for sites where the production CICS Transaction Server is experiencing
contention and the TCBLIMIT parameter is reaching its maximum value. If the CICS
TS experiences poor response times in spite of there being only a few transactions
active, the only way to overcome the problem seems to be to de-activate and then re-
activate the CICS Transaction Server.
This article offers a solution by modifying the values of TCBLIMIT, THREADLIMIT,
and MAXOPENTCBS, and reassigning the dedicated threads in the order in which
they were to be used again (REUSED) for several transactions. In this way, the CICS
Transaction Server region assigns fewer TCBs, consumes less CPU, and improves the
response time.
The transaction IDBE helped greatly in determining the appropriate values for the CICS
parameters.
111 Understanding CICS Monitoring and Statistics data
CICSPlex SM provides information about CICS runtime resources via two
components, namely OPERATIONS and MONITORING. OPERATIONS resources
are obtained from the Managed Address Space (MAS) at the point in time when the
request is made. MONITORING resources are obtained from the MON data cache at
the point in time the request is made.
The article contains details of tables showing attributes that have processing properties
other than NONE, REPLace.

4 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Health check-up for the CICS subsystem

There are numerous CICS applications successfully executing around the


globe. A periodic ‘health check’ of these online applications can help
identify performance problems and you can perform pro-active maintenance
before these start posing serious problems for the application or use more
than the required amount of system resources to get the work done.
A few things listed here can help you do a quick check-up of your CICS
system. This can also help you identify both problems that already exist and
potential problems.
CICS shutdown statistics form the basis for our action. There is a wealth
of information available in the shutdown statistics that can be harvested to
analyse and ensure optimal performance of the CICS subsystem.
Shutdown statistics can be gathered using the IBM-supplied CICS utility,
DFHSTUP, which uses the CICS SMF record (SMF 110) to analyse the
information and report it. For a complete description of this utility refer
to the CICS Operations and Utility Guide.
This article does not discuss database-related issues (databases other than
VSAM files) as a part of the CICS system health check because these form
a separate topic by themselves.

FILE REQUEST INFORMATION


As we all know, no I/O is the best I/O. In this section of the CICS shutdown
statistics, a key figure to watch out for is the number of EXCP requests on
the file. All files with high EXCP counts are likely to be performance
bottlenecks. The top 20-30 percent of the files with the highest EXCP
count should be carefully examined for the type of access requests (get/
browse/update/add/delete). Some files are used just for add requests. In
many cases, it so happens that these are defined as VSAM KSDS clusters,
which have an additional overhead of maintaining an index. Not only that,
if the records being added are not written in ascending key sequence then
excessive I/Os result because of CI and CA splits. For better performance
these should be allocated as VSAM ESDS clusters using NSR access and
‘number of strings=1’.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 5


Files showing a high number of CI and CA splits should be analysed to
arrive at an initial loading strategy to minimize the splits and/or alter the
CI size and FREESPACE parameters. Although shutdown statistics do not
provide the CI/CA split information, LISTCAT can be used to gather this
information. Information should also be gathered for unused alternate
indexes. If the path shows a high EXCP count but no get/browse requests,
it is likely to be redundant. At one of the installations where I worked, I
found an alternate index was being built but was not used because of a
change in functionality. Such alternate indexes should be reviewed with
developers to find out whether they are needed by the application or not.
If not, they should be removed.
Small and heavily read files are good candidates for data tables.
Waits on strings/buffers on critical files can also lead to serious performance
problems and appropriate buffers/strings should be increased to minimize
the waits.

LSRPOOLS AND DATA TABLES


Files with a high read to write ratio with fairly random access are good
candidates for LSRPOOLS. Files with a low read to write ratio should not
be allocated to LSRPOOLS. LSR buffers for these files would have to be
externalized and therefore these would not show any major improvement
by using LSRPOOL buffers. Using the information from the file request
statistics above, those files to be placed in the LSRPOOL can be identified
and the LSRPOOL can be allocated appropriately for the files. The
LSRPOOL look-aside ratio is the key thing to watch out for. It is calculated
using following formula:
Look-aside ratio = Look asides /(Look-asides + Buffer reads)

The closer to 1.00 the better it is. The look-aside ratio forms the basis for
tuning the LSRPOOLS. The look-aside ratio goes up if the buffer size is
increased. Of course as real storage is a constrained resource, there is an
upper limit to the number of buffers that can be assigned to the LSRPOOL.
Because the look-aside ratio is no exception to the law of diminishing
returns, adding more pools beyond a certain point is not fruitful. Separate
buffers for data and indexes are recommended for large files with semi-
random access so that the data control intervals do not monopolize the LSR

6 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
buffers by discarding the index control intervals. Separate buffers would
reduce I/O for a frequently used index CI. Alternatively, compound buffers
can be used by standardizing the CI sizes of data and index components of
the VSAM cluster. Small and heavily read files can be defined as data tables
because the path length to read a record from a data table is smaller than
that from an LSRPOOL.

TRANSACTION MANAGER
Take a look at the transaction manager statistics. Things are not in good
shape if we see that the MAXTASKS limit is being reached frequently.
Transactions would queue up when the MAXTASK limit is reached. The
gravity of the problem depends on how many times the MAXTASK limit
is hit. Ideally this should be 0, but for some applications an occasional
occurrence of this may not be a major concern. However, if this occurs in
a CICS region during non-peak activity periods then it certainly needs
attention. The remedy would be to increase MAXTASK appropriately in
the SIT.

STORAGE MANAGER
Storage manager statistics show us the current limit and maximum usage
of the DSA and the EDSA. The appropriate DSA limit should be increased
if the peak utilization is approaching the maximum limit. Not doing so
could result in CICS releasing storage cushions, which means spending
CPU cycles on non-application work, impacting performance. Time
cushions released show up in the storage manager statistics and should
ideally be 0, however having this at 0 is not sufficient. A healthy system
would never run with a nearly 100 percent-utilized DSA or the EDSA.
What if you implement new functionality, which adds a few more programs
and a couple of additional files (which means more access control blocks)
resulting in increased utilization of the EDSA? The CICS region may now
go short on storage. It would therefore be nice to ensure that the above
situation does not arise by having sufficient buffers for the DSA/EDSA,
and monitoring it after every implementation.

TEMPORARY STORAGE AND TRANSIENT DATA QUEUES


Temporary storage is mainly used by applications as a scratch pad area, but

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 7


at many installations one sees all the TSQs allocated to auxiliary storage.
If the statistics indicate a zero or very low utilization of main storage then
there is a potential for performance improvement by moving the non-
recoverable TSQs to MAIN storage, thereby reducing I/Os to an auxiliary
dataset. If the statistics show too many queue extensions, it means that
CICS is spending its resources doing ‘non-application’ work like GETMAIN
and FREEMAIN. Should this happen at your installation, SIT parameter
TSMGSET should be appropriately increased to reduce queue extensions.
Watch out for buffer or string waits on the queues, if any. These waits can
be eliminated/minimized by increasing the number of buffers/strings
allocated.

JOURNALS
Important statistics to look out for are the buffer full condition and waits
on archive. If the buffer full condition occurs, the buffer size should be
increased in the journal control table. If waits on archive are experienced,
consider increasing the log size or reducing the archival frequency; verify
that, if the logs are archived to tape, tape mounts are performed quickly.
Also have a look at the service class or dispatching priority (depending on
whether the system is running in WLM goal mode or ICS/IPS configuration)
of the journal job. If this is very low, the job may not get the required
resources during busy hours. Care should also be taken not to make it too
high or CICS response may suffer when the journal job executes.

REDUNDANT PROGRAMS/TRANSACTIONS/TERMINALS
Some programs/transactions become redundant over a period of time.
Examining the ‘attach count’ can identify these (which would be 0 for
unused transactions) in the TRANSACTION STATISTICS, and check the
‘times used’ count in the PROGRAM details. If too many of these are
around, then they should be removed from the CICS system tables and CSD
because these could result in increased ‘non-application’ resource usage
in terms of real storage to hold these entries and CPU cycles to search table
entries.
Pranav Sampat
Cognizant Technology Solutions (USA) © Xephon 2002

8 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
A simple program to monitor CICS task storage

The purpose of this simple program is to monitor a task’s storage usage


in the Dynamic Storage Area (DSA) and Extended Dynamic Storage Area
(EDSA). In development systems, where CICS regions are prone to
problems such as task looping or short on storage conditions, this program
can come in handy if you do not have any monitoring tools running.
The program will show all the displayable tasks that are in the system with
their user IDs, and the storage used in the DSA and EDSA, by testing
whether the address of the storage is 24-bit or 31-bit. This can help systems
programmers to investigate and determine which task is chewing up
storage in the DSA or EDSA.
This program makes use of CICS System Programming Interface (SPI)
commands ‘inquire task list’ and ‘inquire task storage’, and needs to be
compiled with the translation option SP. Below is a sample of the output:
TRANS TASKNO USERID DSA (K) EDSA (K)
CONL ØØØØØØ23 CICDOCM ØØØØØØØØ ØØØØØØ2Ø
COIØ ØØØØØØ25 CICDOCM ØØØØØØØØ ØØØØØØ19
COIE ØØØØØØ27 CICDOCM ØØØØØØØØ ØØØØØØ3Ø
OMEG ØØØØØØ32 CICDOCM ØØØØØØØ2 ØØØØØØØØ
CSKL ØØØØØØ33 CICDOCM ØØØØØØØØ ØØØØØØ13
OMEG ØØØØØØ34 CICDOCM ØØØØØØØ2 ØØØØØØØØ
SØØ2 ØØØØØ2Ø1 OPERHLZ ØØØØØØ5Ø ØØØØØØ27
SØØ3 ØØØØØ2Ø4 OPERHLZ ØØØØØØ45 ØØØØØØ27
CSTG ØØØØØ777 SUPPHKX ØØØØØØØ1 ØØØØØØØ7

DISPSTOR
*ASM XOPTS(SP)
TITLE 'Display tasks storage used in DSA and EDSA'
* AUTHOR : Kah Soon HO
PRINT NOGEN
EJECT
DFHEISTG DSECT
*
R4 EQU 4
R5 EQU 5
R6 EQU 6
R7 EQU 7

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 9


R8 EQU 8
R9 EQU 9
SPACE 1
EJECT
DISPSTOR CSECT ,
DISPSTOR AMODE 31
DISPSTOR RMODE ANY
EXEC CICS INQUIRE TASK LIST +
LISTSIZE(N) +
SET(R6) +
RESP(RESP)
CLC RESP,DFHRESP(NORMAL) Was there a problem?
BNE FAILQUIT Yes. Take the error exit.
SPACE 1
L R5,N No. Get the number of tasks.
LTR R5,R5 Are there any tasks?
BZ RETURN No, so start the next phase.
XR R4,R4 Clear R4
M R4,SIZE Calculate size of getmain to
ST R5,STGSIZE save task list
EXEC CICS GETMAIN +
SET(R7) +
FLENGTH(STGSIZE) +
INITIMG('_')
CLC RESP,DFHRESP(NORMAL) Was there a problem?
BNE FAILQUIT Yes. Take the error exit.
ST R7,TLIST Store new address for task list
L R5,N No. Get the number of tasks.
STLIST DS ØH
MVC Ø(4,R7),Ø(R6) Copy task list to new address
A R6,=F'4' Move on to the next task
A R7,=F'4' Move on to the next task
BCT R5,STLIST Loop back if there is more to do
SPACE 1
MVC DISPLAY,=CL79' '
MVC DISPLAY(9),=CL9'TRANS '
MVC DISPLAY+8(8),=CL9'TASKNO '
MVC DISPLAY+17(8),=CL9'USERID '
MVC DISPLAY+26(8),=CL9'DSA (K) '
MVC DISPLAY+35(8),=CL9'EDSA (K)'
EXEC CICS SEND TEXT FROM(DISPLAY) LENGTH(79) FREEKB ERASE +
ACCUM PAGING RESP(RESP)
CLC RESP,DFHRESP(NORMAL) If everything is OK..
BNE FAILQUIT Yes. Take the error exit.
L R6,TLIST Get address of task list
L R5,N No. Get the number of tasks.
TASKLOOP DS ØH
MVC TASKNO,Ø(R6) Store the task number.
* get the task details.

10 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
EXEC CICS INQUIRE +
TASK(TASKNO) +
FACILITY(FAC) +
TRANSACTION(TRAN) +
USERID(USER) +
RESP(RESP)
CLC RESP,DFHRESP(NORMAL) Is the task still there?
BNE TASKEND No. next task
EXEC CICS INQUIRE STORAGE +
NUMELEMENTS(ENUM) +
ELEMENTLIST(R7) +
LENGTHLIST(R8) +
TASK(TASKNO) +
RESP(RESP)
CLC RESP,DFHRESP(NORMAL) If everything is OK..
BNE FAILQUIT Yes. Take the error exit.
SPACE 1
ST R7,ELIST store address of element & ...
ST R8,LLIST length list
L R9,ENUM set element number as counter
L R4,HEXØ initialize r4, DSA & EDSA
ST R4,DSA
ST R4,EDSA
ADDLOOP EQU *
CLC ADDR24,Ø(R7) is it a 24bit address ?
BL EDSAADD no then branch .
L R4,Ø(R8) yes then add the storage ...
A R4,DSA to DSA
ST R4,DSA
B ADDEND
EDSAADD EQU *
L R4,Ø(R8) yes then add the storage ...
A R4,EDSA to EDSA
ST R4,EDSA
ADDEND EQU *
A R7,=F'4' move to next byte
A R8,=F'4'
BCT R9,ADDLOOP counter loop
*
L R8,HEXØ
L R9,DSA
D R8,HEX1Ø24 convert to number of K
CVD R9,DSAK
UNPK DSA#,DSAK convert to text
OI DSA#+7,C'Ø' force X'FØ'
*
L R8,HEXØ
L R9,EDSA
D R8,HEX1Ø24 convert to number of K

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 11


CVD R9,EDSAK
UNPK EDSA#,EDSAK convert to text
OI EDSA#+7,C'Ø' force X'FØ'
*
UNPK TASKNO#,TASKNO format the task..
OI TASKNO#+7,X'FØ'
MVC DISPLAY,=CL79' '
MVC DISPLAY(4),TRAN
MVC DISPLAY+8(L'TASKNO#),TASKNO#
MVC DISPLAY+17(L'USER),USER
MVC DISPLAY+26(L'DSA#),DSA#
MVC DISPLAY+35(L'EDSA#),EDSA#
EXEC CICS SEND TEXT FROM(DISPLAY) LENGTH(79) FREEKB ERASE +
ACCUM PAGING RESP(RESP)
CLC RESP,DFHRESP(NORMAL) If everything is OK..
BNE FAILQUIT Yes. Take the error exit.
SPACE 1
TASKEND DS ØH
A R6,=F'4' Move on to the next task
BCT R5,TASKLOOP Loop back if there is more to do
* End of task list
L R7,TLIST Get address of task list
EXEC CICS FREEMAIN DATAPOINTER(R7)
B RETURN
SPACE 1
***********************************************************************
* Abnormal return
***********************************************************************
FAILQUIT DS ØH
MVC DISPLAY,=CL79' '
MVC DISPLAY(16),=CL16'TRANSACTION FAIL'
EXEC CICS SEND TEXT FROM(DISPLAY) LENGTH(79) FREEKB ERASE +
ACCUM PAGING RESP(RESP)
RETURN EXEC CICS SEND PAGE
EXEC CICS RETURN
SPACE 3
***********************************************************************
* Data area
***********************************************************************
LTORG
RESP DS F
N DS F Number of task
TASKNO DS F
TASKNO# DS D
ENUM DS CL8 Storage element
ELIST DS F'Ø' Element list
LLIST DS F'Ø' Storage length list
TLIST DS F'Ø' Task list
DSA DS F'Ø'
EDSA DS F'Ø'
HEX1Ø24 DC XL4'ØØØØØ4ØØ'

12 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
HEXØ DC XL4'ØØØØØØØØ'
DSAK DS D
EDSAK DS D
DSA# DS CL8' '
EDSA# DS CL8' '
ADDR24 DC XL4'ØØFFFFFF' Highest 24-bit address
STGSIZE DS F Size of getmain
SIZE DC F'4'
TRAN DS CL4' '
FAC DS CL4' '
USER DS CL8' '
DISPLAY DC CL79' '
END DISPSTOR

Kah Soon Ho
Senior Systems Support Analyst
Public Bank (Malaysia) © Xephon 2002

Tuning AOR/FOR traffic in CICS/TS 1.2

INTRODUCTION
CICS Version 5 (in CICS/Transaction Server Version 1) provides a
significant enhancement over CICS 4.1 in the area of ISC and MRO
connection and session terminal names. Version 5 allows the systems
programmer to quickly analyse and tune the ‘width’ and the ‘breadth’ of
the connections for the optimal traffic size. This eliminates some transaction
queueing and also dramatically reduces the number of GETMAINs and
FREEMAINs during function shipping.

BACKGROUND
Prior to CICS 4.1.0, entering a one- or two-character prefix on the session
definitions for MRO connections was required. This prefix would be used
as the first one or two bytes of the TCTTE name. In other words, it was the
prefix of the name of the ‘terminal’ used for that session between the two
CICS regions in question. CICS would come up with the rest of the name

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 13


by using the following simple algorithm: start with the prefix and count
up by 1 (in decimal). If the prefix was ‘A’ then the terminals could run from
‘A1’ to a maximum of ‘A999’. If the prefix was ‘AA’ then they could run
from ‘AA1’ to ‘AA99’ (the names are all four bytes; blanks are padded if
necessary). For example, assume you had an FOR connected to an AOR
with the following session definitions: SENDCount=4 ,
RECEIVECount=4, SENDPfx=F, and RECEIVEPfx=A. When looking
at the TCTs in your FOR using your monitor or in the summary report from
the SMF statistics (what everyone still calls ‘shutdown stats’), you would
find eight terminals involved in the communication from this FOR to that
AOR – A1 through A4 (Receives) and F1 through F4 (Sends).
There was only one problem with this refinement. The prefix picked could
cause CICS to create an MRO ‘terminal’ name that was a duplicate of a real
3270 device. Installation, of course, would not occur and a problem would
be created. Therefore you needed yet another naming convention to keep
track of, as well as possibly having to add code to your terminal autoinstall
exit in order to avoid such collisions.
With CICS 4.1.0, picking a send and receive prefix was no longer required.
You could let the system default to a SENDPfx of ‘>’ and a RECEIVEPfx
of ‘<’. The terminal naming algorithm also changed. It became bizarre.
The terminal names currently employed by CICS connections when you
allow the default prefixes ‘>’ for SEND and ‘<’ for RECEIVE start with
‘>AAA’, then ‘>AAB’, then ‘>AAC’, etc, until the number of SEND
sessions are used up. If you had a SENDCount of 4, then the first SEND
session would be ‘>AAA’ and the last SEND session would be ‘>AAD’.
The first RECEIVE session would be ‘<AAE’ followed by ‘<AAF’ until
you finished the RECEIVEs. If you finished them and ended with ‘<AAK’,
then the next connection installed would have as its first SEND session the
terminal ‘>AAL’ and so on. The possibility of a duplicate terminal name
is greatly reduced. Determining which terminals go where in a busy FOR
that is connected to many AORs is difficult because the terminals are all
listed alphabetically on the summary report, corresponding to the order in
which the connections were installed. You must therefore determine the
order in which the connections were installed in your region in order to
identify to which AOR the terminals belong on the summary report.

14 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
DISCUSSION
IBM has enhanced the CICS SMF statistics with Transaction Server. Figure
1 shows the left-hand side of the terminal section of the summary report.

CICS 5.2.Ø Statistics Utility Program


Summary Report
___________________________________________________
Terminal
_________
Term Terminal Acc Conn …
ID LUname Type Meth ID …
___________________________________________________

<AAX ISC CONV MRO XAØ7


<AAY ISC CONV MRO XAØ7
<AAZ ISC CONV MRO XAØ7
<AAØ ISC CONV MRO XAØ7

Figure 1: Terminal section (left-hand side) report

The new Connection ID column is a much-needed improvement. If your


connection names have anything to do with your region names, and they
probably do, you can easily determine which terminals go with which
regions from this column.
This section of the report shows that the traffic flows on only a few
terminals – because the Send sessions are not important to the FOR.
Virtually all the traffic occurs on the Receive sessions. Similarly, all the
traffic in the AOR occurs on the Send links. The reason is the SEND
sessions are used for traffic originating in the local region. The RECEIVE
sessions are used for traffic originating in the other region. (FORs don’t
initiate work for AORs. It’s the other way around.)
The report also shows that the terminal traffic is not load-balanced. The
links are bi-directional, which means a transaction will use the same
session for multiple requests. The terminals are searched sequentially and
the first one free in the list becomes the one used for this transaction. If the
region is not very busy, you may find only the first terminal being used for
everything.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 15


…
Connection name CONN1
…
Peak outstanding allocates 1ØØ
Total number of allocates 1ØØØØ
Average number of queued allocates <<< THESE 2 LINES WILL
Failed link allocates 25Ø
Failed allocates due to sessions in use <<< BE NON-ZERO
….

Figure 2: Connection section report

It is important to have enough sessions defined. If your regions are very


busy and you do not have enough sessions defined, you will see significant
traffic on all the terminals for that connection and you will experience
queueing for allocating sessions. These queueing delays can be avoided
simply by increasing the RECEIVECount and SENDCount on the SESSION
definition. You must, of course, select a count that is not so large as to let
one AOR flood the FOR with too many requests during a peak period. (A
count of 20 is adequate for busy regions.)
You should also balance the number of SEND AOR sessions with the
number of RECEIVE FOR sessions. Having them out of sync is confusing.
We standardized on 20 and 5 – an AOR has 20 SENDs and 5 RECEIVEs
and an FOR has 20 RECEIVEs and 5 SENDs.
Figure 2 describes the effect of an insufficient number of sessions. It is also
taken from the summary report but appears in the Connection section. The
two lines indicated will be non-zero, indicating transactions are waiting for
a session so they can issue a request to the other region. This is not good.
Examine Figure 3, which is taken from the right-hand side of the terminal
section of the summary report.
The input messages and output messages show the volume of function
ships this region (the FOR) is doing with the region listed in the CONNID
column off to the left in Figure 1 (the AOR). The number of messages on
each successive terminal for the connection should fall to 0 (before all

16 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
terminals are occupied) as in Figure 3, indicating that no transactions were
queued up waiting for a session.
The ‘Average TIOA Storage’ gives you the average size that was required
for each request. This is the key piece of data required for tuning the traffic.
In the example in Figure 3, the average storage size required to ship the
request to the other region was 5,912 bytes. If the session was defined to
provide 8KB of storage to start with, this 8KB chunk would be GETMAINed
and the data placed into it. If, however, the session was defined to provide
a 2KB chunk of storage, a small problem would arise. The 2KB chunk
would be obtained, the 5,192 bytes of data would not fit, the 2KB chunk
would be FREEMAINed, a 5,912 byte chunk would be GETMAINed, and
so forth.
Having enough storage at the outset avoids the unnecessary GETMAIN/
FREEMAIN pair in the middle. Set the size to be larger than the Average
TIOA Storage value in the report – larger by adding 24 bytes for CICS use
and “round the total up to a multiple of 64 bytes… (to) ensure a good use
of operating system pages” – (from the Performance Guide).
The RDO parameter for setting the initial storage size for MRO function
ships is on the SESSION definition. It is IOAREALEN. The default value
is 0. This forces CICS to interrogate the data length, and according to the
Performance Guide, “…get a storage size exactly the size of the outgoing
message, plus 24 bytes for CICS requirements”. The Guide notes that if no
value is specified, CICS will use a size of 4KB. (It seems that CICS adds
the aforementioned 24 bytes to the 4KB and actually uses 4,120 bytes. This
is a popular value seen in the summary reports.)
Two questions arise: are these IOAREALENs re-used, and where are they?
They apparently are re-used and are above the line, according to research.
Since they are reused, designating a large value for IOAREALEN is not
very wasteful. The number of IOAREALENs matches the number of
sessions defined for the connection and is not related to transaction
volume. If your session count is a reasonable number, the storage consumed
should be relatively small, and you can easily calculate the amount. For
example, if you have 20 sessions and each of these has an IOAREALEN
of 4KB and you want to increase it to 8KB, you will use an additional (20
* 4KB) or 80KB. This is an inconsequential amount of storage.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 17


_____________________________________________________________
Storage Input Output Xmission Avg TIOA Avg logged on
Viols Messages Messages Errors Storage Time
_____________________________________________________________

Ø 1558597 1546723 Ø 5912


Ø 16953Ø 168Ø89 Ø 5912
Ø 5339 5225 Ø 5912
Ø 131 123 Ø 5912
Ø Ø Ø Ø 5912
Ø Ø Ø Ø 5912

Figure 3: Terminal section (right-hand side) report

The average message transmitted on the MRO link in Figure 3 was 5,912.
A quick check of our resource definition showed a 4,096 value coded. This
was not quite large enough so the value was subsequently changed to 8KB.
The location of the IOARELENs is actually the SMTP subpool. This
subpool is above the line and defined as that which “…holds line and
terminal I/O areas” (Performance Guide). This can be seen readily in the
summary report in the storage manager statistics section.

STORAGE MANAGER STATISTICS


_________________________________________________________________
Subpool Location Access Getmain Freemain
Name Requests Requests
_________________________________________________________________
Before:
SMTP ECDSA CICS 3,171,53Ø 3,171,525

After: (a week later after raising the IOARELEN to 8KB)


SMTP ECDSA CICS 914,744 914,744

Figure 4: Statistics

18 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
RESULTS
The summary report will show you the results of your handiwork. After
you have increased the IOAREALEN to be larger than the Average TIOA
Storage, here is where you look to see what happened (see Figure 4).
This busy FOR dropped the number of GETMAINs and FREEMAINs for
the SMTP subpool by two-thirds – over 2 million. It’s always nice to get
measurable results. (Transaction volume and mix were roughly equivalent
for the two weeks.)

SUMMARY
Firstly, run the summary report for a typical day for your FOR(s) and AORs
connected to them with the SYSIN parameters SELECT
TYPE=(TERMINAL,STORAGE) and SUMMARY.
Secondly, increase or decrease the number of sessions with the SENDCount
and RECEIVECount parms to eliminate queueing or to dump that extra
100 sessions you never use. Having the same value in the sessions from
the AOR to the FORs as from the FOR to AORs makes the most sense and
also seems safest. (It certainly will avoid some session management and
negotiating between regions if one region is sending 20 requests out to a
region that will accept only 10 at a time.)
Thirdly, look in the Terminal section of your reports for the Average TIOA
Storage used for each region. Obviously, the FORs will have the most
activity, so let them drive the process. Select a number that will meet on-
going needs.
Fourthly, make your change to the IOAREALENs and run the report again.
Look in the STORAGE MANAGER STATISTICS section. Do a find on
‘SMTP’ to determine whether it made a significant difference. You might
be surprised!
Paul C Gordon
Assistant Vice President
Bank of America (USA) © Xephon 2002

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 19


CICS ISC/MRO session monitoring

Recently the CICS maintenance level at my current site was upgraded from
CICS/ESA Version 4.1 to CICS/TS Version 1.3. One of the problems we
encountered was that CICS APPC connection sessions are getting released
with the following messages:
DFHZC3437 I Ø9/25/ØØ 1Ø:41:Ø7 CICSXXXX -XXN CSNE Node nnnnnnnn action
taken:
CLSDST ABTASK ABSEND ABRECV ((1) Module name: DFHZNAC)

DFHSN15ØØ Ø9/25/ØØ 1Ø:41:Ø7 CICSXXXX Session signoff for session -XXN


is
complete. 14 transactions entered with Ø errors.

DFHZC3462 I Ø9/25/ØØ 1Ø:41:Ø7 CICSXXXX -XXN CSNE Node nnnnnnnn session


terminated. ((2) Module name: DFHZCLS)

In CICS/ESA Version 4.1 the session -XXN remained acquired but in


CICS/TS V1.3 the -XXN session was released. CICS processing continued
until only the session manager session remained acquired, at which time
processing from the partner LU is rejected – while the connection itself
remained INService and ACQuired.
While the CICS technical supports staff researched this problem we had
to find a way round it. The first thing we did was to code a program to
monitor the connection status, and CONNMON was coded and implemented.

CONNMON
This program monitors the use of the CICS systems programming interface
to run the connection/terminal chains and displays the following information
(up to 21 MRO/ISC connection entries):
CONNCTION NAME
NETNAME
SERVICE STATUS INS/OUT
CONNCTIONS STATUS ACQ/REL
ACQUIRED SESSION COUNT (FOR NON-XM)
RELEASED SESSION COUNT (FOR NON-XM)

The program refreshes itself every three minutes, and allowed us to

20 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
monitor the status of the MRO/ISC connections for the CICS region,
especially the connection which is losing the sessions.
//JOBCARD JOB (CCS),'CSH CONNMON ',
// CLASS=A,NOTIFY=&SYSUID,
// MSGCLASS=X,MSGLEVEL=(1,1),REGION=8M
//*
//*
//CONNMON EXEC DFHEITAL,PARM.TRN='SP' COND.LKED=(Ø,LE)
//TRN.SYSIN DD *
* PRINT NOGEN
TITLE 'CSH DISPLAY MRO/ISC CONNECTION STATUS'
*********************************************************************
*********************************************************************
*** ***
*** DISPLAY UP TO 21 MRO/ISC CONNECTIONS WITHE FOLLOWING DATA: ***
*** ***
*** CONNCTION NAME ***
*** NETNAME ***
*** SERVICE STATUS INS/OUT ***
*** CONNCTIONS STATUS ACQ/REL ***
*** ACQUIRED SESSION COUNT (FOR NON-XM) ***
*** RELEASED SESSION COUNT (FOR NON-XM) ***
*** ***
*** ** REFRESHES DISPLAY EVERY 3 MINUTES ***
*** ** CLEAR SCREEN/FREEKB UPON CLEAR/PF3/PF1Ø ***
*** ***
*** ***
*** REGISTER USAGE TABLE ***
*** ***
*** R3 - BASE REG (DEFAULT) ***
*** R4 - BASE REG FOR DETAIL LINE ***
*** R5 - BASE REG FOR CONNECTION TABLE ***
*** R1Ø - LOOP COUNTER ***
*** R11 - EIB REG (DEFAULT) ***
*** R13 - DATA REG (DEFAULT) ***
*** ***
*********************************************************************
*********************************************************************
COPY DFHAID
COPY DFHBMSCA
STFIELD EQU X'1D'
NEWLINE EQU X'15'
CVT DSECT=YES
IEESMCA
IHAPSA
DFHEISTG DSECT
REQID DS ØCL8
REQTERM DS CL4
REQTRAN DS CL4

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 21


LINEØ1 DS CL(LINEØ1L)
ORG LINEØ1
HEADERA DS CL2
LTRANSID DS CL4
HEADERTR DS CL28
SYSID DS CL4
DS CL1
APPLID DS CL8
DS CL4
SMFID DS CL4
DS CL5
HEADERT DS CL8 HH:MM:SS
DS CL2
HEADERD DS CL8 MM/DD/YY
ORG
LINEØ2 DS CL(3)
LINEØ3 DS CL(LINEL)
LINEØ4 DS CL(LINEL)
LINEØ5 DS CL(LINEL)
LINEØ6 DS CL(LINEL)
LINEØ7 DS CL(LINEL)
LINEØ8 DS CL(LINEL)
LINEØ9 DS CL(LINEL)
LINE1Ø DS CL(LINEL)
LINE11 DS CL(LINEL)
LINE12 DS CL(LINEL)
LINE13 DS CL(LINEL)
LINE14 DS CL(LINEL)
LINE15 DS CL(LINEL)
LINE16 DS CL(LINEL)
LINE17 DS CL(LINEL)
LINE18 DS CL(LINEL)
LINE19 DS CL(LINEL)
LINE2Ø DS CL(LINEL)
LINE21 DS CL(LINEL)
LINE22 DS CL(LINEL)
LINE23 DS CL(LINEL)
LINE24 DS CL(LINEL)
SCREENL EQU *-LINEØ1
CONNØ1 DS CL24
CONNØ2 DS CL24
CONNØ3 DS CL24
CONNØ4 DS CL24
CONNØ5 DS CL24
CONNØ6 DS CL24
CONNØ7 DS CL24
CONNØ8 DS CL24
CONNØ9 DS CL24
CONN1Ø DS CL24
CONN11 DS CL24

22 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
CONN12 DS CL24
CONN13 DS CL24
CONN14 DS CL24
CONN15 DS CL24
CONN16 DS CL24
CONN17 DS CL24
CONN18 DS CL24
CONN19 DS CL24
CONN2Ø DS CL24
CONN21 DS CL24
CONN22 DS CL24
RETURNC DS F
ABSTIME DS CL8
TACQST DS F
TERMID DS CL4
TNETNAME DS CL8
CONNMON DFHEIENT
MVC REQTERM,EIBTRMID MOVE TERMID FOR REQUEST ID
MVC REQTRAN,EIBTRNID MOVE TRANID FOR REQUEST ID
EXEC CICS CANCEL TRANSID(EIBTRNID) REQID(REQID) RESP(RETURNC)
CLI EIBAID,DFHCLEAR IS THIS CLEAR?
BE RETURN YES, RETURN AND END
CLI EIBAID,DFHPF3 IS THIS PF3?
BE RETURN YES, RETURN AND END
CLI EIBAID,DFHPF1Ø IS THIS PF1Ø?
BE RETURN YES, RETURN AND END
CLI EIBAID,DFHPF15 IS THIS PF15?
BE RETURN YES, RETURN AND END
CLI EIBAID,DFHPF22 IS THIS PF22?
BE RETURN YES, RETURN AND END
MVC LINEØ1,LINEØ1I
MVC LINEØ2,LINEØ2I
MVC LINEØ3,LINEØ2I
MVC LINEØ4,LINEØ2I
MVC LINEØ5,LINEØ2I
MVC LINEØ6,LINEØ2I
MVC LINEØ7,LINEØ2I
MVC LINEØ8,LINEØ2I
MVC LINEØ9,LINEØ2I
MVC LINE1Ø,LINEØ2I
MVC LINE11,LINEØ2I
MVC LINE12,LINEØ2I
MVC LINE13,LINEØ2I
MVC LINE14,LINEØ2I
MVC LINE15,LINEØ2I
MVC LINE16,LINEØ2I
MVC LINE17,LINEØ2I
MVC LINE18,LINEØ2I
MVC LINE19,LINEØ2I
MVC LINE2Ø,LINEØ2I

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 23


MVC LINE21,LINEØ2I
MVC LINE22,LINEØ2I
MVC LINE23,LINEØ2I
MVC LINE24,LINEØ2I
MVC CONNØ1,CONNØ1I
MVC CONNØ2,CONNØ2I
MVC CONNØ3,CONNØ3I
MVC CONNØ4,CONNØ4I
MVC CONNØ5,CONNØ5I
MVC CONNØ6,CONNØ6I
MVC CONNØ7,CONNØ7I
MVC CONNØ8,CONNØ8I
MVC CONNØ9,CONNØ9I
MVC CONN1Ø,CONN1ØI
MVC CONN11,CONN11I
MVC CONN12,CONN12I
MVC CONN13,CONN13I
MVC CONN14,CONN14I
MVC CONN15,CONN15I
MVC CONN16,CONN16I
MVC CONN17,CONN17I
MVC CONN18,CONN18I
MVC CONN19,CONN19I
MVC CONN2Ø,CONN2ØI
MVC CONN21,CONN21I
MVC CONN22,CONN22I
*
* MVC EIBTRNID,LTRANSID
USING PSA,Ø
L 1,FLCCVT
USING CVT,1
L 1,CVTSMCA
USING SMCABASE,1
MVC SMFID,SMCASID MOVE IN SMF ID
DROP 1
EXEC CICS ASSIGN SYSID(SYSID) APPLID(APPLID)
EXEC CICS ASKTIME ABSTIME(ABSTIME)
EXEC CICS FORMATTIME ABSTIME(ABSTIME) X
TIME(HEADERT) TIMESEP MMDDYY(HEADERD) DATESEP
EXEC CICS INQUIRE CONNECTION START RESP(RETURNC)
LA 5,CONNØ1
USING CONNDSCT,5
LA 1Ø,22 INITIALIZE LOOP COUNTER
*
CONNLOOP DS ØH
EXEC CICS INQUIRE CONNECTION(CONNNAME) NETNAME(NETNAME) X
CONNSTATUS(CONNSTA) SERVSTATUS(SERVSTA) NEXT X
RESP(RETURNC)
CLC RETURNC,DFHRESP(NORMAL)
BNE CONNDONE

24 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
LA 5,CONNL(5) NEXT ENTRY
BCT 1Ø,CONNLOOP
*
CONNDONE DS ØH
EXEC CICS INQUIRE CONNECTION END RESP(RETURNC)
*
EXEC CICS INQUIRE TERMINAL START
TERMINQL DS ØH
EXEC CICS INQUIRE TERMINAL(TERMID) NEXT RESP(RETURNC) X
ACQSTATUS(TACQST) NETNAME(TNETNAME)
CLC RETURNC,DFHRESP(NORMAL) SEE IF NORMAL RETURN
BNE TERMINQE
*
LA 1Ø,22 INTIALIZE LOOP COUNTER
LA 5,CONNØ1 GO TO FIRST CONNECTION
TESTCONN DS ØH
CLC NETNAME,TNETNAME
BNE NEXTCONN
CLC TACQST,DFHVALUE(ACQUIRED)
BE TSETACQ
CLC TACQST,DFHVALUE(RELEASED)
BNE TERMINQL
AP SESSRELC,=P'1' ADD ONE TO RELEASED SESSION COUNTER
B TERMINQL
TSETACQ DS ØH
AP SESSACQC,=P'1' ADD ONE TO ACQUIRED SESSION COUNTER
B TERMINQL
NEXTCONN DS ØH
LA 5,CONNL(5) TEST NEXT CONN ENTRY
BCT 1Ø,TESTCONN
B TERMINQL NEXT TERMINAL
*
TERMINQE DS ØH
EXEC CICS INQUIRE TERMINAL END
*
SENDTEXT DS ØH
LA 4,LINEØ3
LA 5,CONNØ1
USING LINEDSCT,4
LA 1Ø,22 INITIALIZE LOOP COUNTER
LINELOOP DS ØH
CLI CONNNAME,C' ' BLANKS?
BE ACQDONE NO, SET UP LINE
DOCONN DS ØH
MVC LINEOUT(LINEL),LINEØ3I MOVE CONSTANTS
MVC CONNO,CONNNAME MOVE CONNECTION NAME
MVC NETNO,NETNAME MOVE NETNAME
ED SESSACNT,SESSACQC UNPACK ACQUIRED COUNT FOR CONNECTION
ED SESSRCNT,SESSRELC UNPACK RELEASED COUNT FOR CONNECTION
MVC INSSTAO,=CL3'OUT'

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 25


CLC SERVSTA,DFHVALUE(INSERVICE)
BNE SERVDONE
MVC INSSTAO,=CL3'INS'
SERVDONE DS ØH
MVC ACQSTAO,=CL3'REL'
CLC CONNSTA,DFHVALUE(ACQUIRED)
BNE ACQDONE
MVC ACQSTAO,=CL3'ACQ'
ACQDONE DS ØH
LA 4,LINEL(4) DO NEXT LINE
LA 5,CONNL(5) DO NEXT CONNECTION
BCT 1Ø,LINELOOP
*
EXEC CICS SEND TEXT FROM(LINEØ1) LENGTH(SENDL) ERASE FREEKB
*
RETURNE DS ØH
EXEC CICS START TRANSID(EIBTRNID) INTERVAL(ØØØ3ØØ) X
TERMID(EIBTRMID) REQID(REQID) RESP(RETURNC)
EXEC CICS RETURN TRANSID(EIBTRNID)
*
RETURN DS ØH
EXEC CICS SEND TEXT FROM(ENDLINE) LENGTH(ENDLINEL) X
ERASE FREEKB
EXEC CICS RETURN
*
* CONSTANTS
*
LINEØ1I DS CL(LINEØ1L)
ORG LINEØ1I
LINEØ1II DC AL1(STFIELD,DFHBMASK)
DC CL4' '
DC CL28' ISC CONNECTION MONITOR'
DC CL4' '
DC CL1'/'
DC CL8' '
DC CL4' ON '
DC CL4' '
DC CL5' '
DC CL8' ' HH:MM:SS
DC CL2' '
DC CL8' ' MM/DD/YY
LINEØ1L EQU *-LINEØ1II
ORG
LINEØ2I DC AL1(NEWLINE,STFIELD,DFHBMASK)
DC CL77' '
LINEØ3I DS CL(LINEL)
ORG LINEØ3I
DC AL1(NEWLINE,STFIELD,DFHBMASK)
DC CL4' ' CONN
DC CL1' '
DC CL8' ' NETNAME

26 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
DC CL2' '
DC CL3' ' INS STA
DC CL1' '
DC CL3' ' ACQ STA
DC CL18' SESSIONS ACQ: '
DC X'4Ø2Ø212Ø' ACQ CNT
DC CL5' REL:'
DC X'4Ø2Ø212Ø' REL CNT
ORG
DS ØH
ENDLINEL DC AL2(L'ENDLINE)
ENDLINE DC CL8Ø' ENTER NEXT TRANSACTION'
SENDL DC AL2(SCREENL)
DS ØF
CONNØ1I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ2I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ3I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ4I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ5I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ6I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ7I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ8I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONNØ9I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN1ØI DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN11I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN12I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN13I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN14I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN15I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN16I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN17I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN18I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN19I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN2ØI DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN21I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
CONN22I DC CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'
*
LINEDSCT DSECT
LINEOUT DS CL3
CONNO DS CL4
DS CL1
NETNO DS CL8
DS CL2
INSSTAO DS CL3
DS CL1
ACQSTAO DS CL3
DS CL18
SESSACNT DS CL4
DS CL5
SESSRCNT DS CL4

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 27


LINEL EQU *-LINEOUT
*
DS ØF
CONNDSCT DSECT
CONNNAME DS CL4
NETNAME DS CL8
CONNSTA DS F
SERVSTA DS F
SESSACQC DS PL2
SESSRELC DS PL2
CONNL EQU *-CONNNAME
END
//*
//ASM.SYSLIB DD
// DD
// DD
// DD
// DD DISP=SHR,DSN=SYS1.MODGEN
//LKED.SYSLMOD DD DISP=SHR,DSN=CICS.PROGRAM.LOADLIB(COMMON)

CONNACQR
While the problem of sessions being released was being researched, we
were having to release and re-acquire the sessions (because the sessions
can’t be acquired at session level, only at the connection level). We were
having to monitor the connection and release/re-acquire manually even
during the off-shift hours, and it was decided we had to automate the
process. Program CONNACQR was written to perform this function.
Program CONNACQR is added to DFHPLTPI to be executed at CICS
intialization, and starts the transaction named in label TRANSID (currently
with content of CL4’ACQR’) in three minutes. When the transaction
starts, it checks for the connection/netname named in labels CONN/
CONNNETN and tests the count of acquired sessions for that connection
using the CICS SPI interface commands. If the count of acquired connections
is less than two, then the connection is released and re-acquired (with a 5-
second wait in between) also using CICS SPI interface commands.
//JOBCARD JOB (CCS),'CSH CONNACQR ',
// CLASS=A,NOTIFY=&SYSUID,
// MSGCLASS=X,MSGLEVEL=(1,1),REGION=8M
//*
//CONNACQR EXEC DFHEITAL,PARM.TRN='SP' COND.LKED=(Ø,LE)
//TRN.SYSIN DD *
* PRINT NOGEN

28 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
TITLE 'CSH CONNECTION TESTING/REAQUIRE PROGRAM'
*********************************************************************
*********************************************************************
*** ***
*** COUNTS THE ACQUIRED SESSIONS FOR A PARTICULAR ISC CONNECTION ***
*** DENOTED BY THE LABELS: ***
*** CONN DC CL4'XXXX' ***
*** CONNNETN DC CL8'NNNNNNNN' ***
*** IN THE PROGRAM. IF THE NUBMER OF SESSIONS FALLS BELOW TWO, ***
*** THE CONNECTION IS RELEASED AND THEN ACQUIRED. ***
*** ***
*** THE PROGRAM IS STARTED VIA DFHPLTPI, STARTED AS TRANSID ***
*** IN THE PROGRAM LABEL (CURRENTLY 'ACQR') ***
*** ***
*** TRANSID DC CL4'ACQR' ***
*** ***
*** THE TRANSACTION IS STARTED AND ACTIVATES EVERY FIVE MINUTES, ***
*** TO DO THE TEST/RELEASE/ACQUIRE PROCESSING. THE PROGRAM WILL ***
*** ALSO CHECK FOR CICS SHUTDOWN STATUS AND TERMINATE UPON CICS ***
*** SHUTDOWN ***
*** ***
*** ***
*** REGISTER USAGE TABLE ***
*** ***
*** R3 - BASE REG (DEFAULT) ***
*** R11 - EIB REG (DEFAULT) ***
*** R13 - DATA REG (DEFAULT) ***
*** ***
*********************************************************************
*********************************************************************
DFHEISTG DSECT
RETURNC DS F
STATUS DS F
TERMID DS CL4
NETNAME DS CL8
COUNT DS PL2
CONNACQR DFHEIENT
*
CLC EIBTRNID,TRANSID ARE WE RUNNING ALREADY?
BE RUNXACT
EXEC CICS START TRANSID(TRANSID) INTERVAL(3ØØ) RESP(RETURNC)
B RETURNX
*
RUNXACT DS ØH
EXEC CICS INQUIRE SYSTEM SHUTSTATUS(STATUS) RESP(RETURNC)
CLC STATUS,DFHVALUE(NOTAPPLIC)
BNE RETURN
*
ZAP COUNT,=P'Ø'
EXEC CICS INQUIRE TERMINAL START RESP(RETURNC)
TERMINQL DS ØH

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 29


EXEC CICS INQUIRE TERMINAL(TERMID) NEXT RESP(RETURNC) X
ACQSTATUS(STATUS) NETNAME(NETNAME)
CLC RETURNC,DFHRESP(NORMAL) SEE IF NORMAL RETURN
BNE TERMINQE
CLC NETNAME,CONNNETN
BNE TERMINQL
CLC STATUS,DFHVALUE(ACQUIRED)
BNE TERMINQL
AP COUNT,=P'1' ADD ONE TO ACQUIRED SESSION COUNTER
B TERMINQL
*
TERMINQE DS ØH
EXEC CICS INQUIRE TERMINAL END RESP(RETURNC)
CP COUNT,=P'1'
BH DELAY
*
EXEC CICS SET CONNECTION(CONN) RELEASED RESP(RETURNC)
EXEC CICS DELAY INTERVAL(ØØØØØ5)
EXEC CICS SET CONNECTION(CONN) INSERVICE ACQUIRED X
RESP(RETURNC)
EXEC CICS WRITE OPERATOR X
TEXT('*** ISC CONNECTION XXXX RELEASE/ACQUIRED') X
TEXTLENGTH(4Ø) RESP(RETURNC)
DELAY DS ØH
EXEC CICS DELAY INTERVAL(ØØØ455)
B RUNXACT
*
RETURN DS ØH
EXEC CICS WRITE OPERATOR X
TEXT('*** ISC CHECK/ACQUIRE TRANSACTION ENDED ') X
TEXTLENGTH(4Ø) RESP(RETURNC)
RETURNX DS ØH
EXEC CICS RETURN
*
TRANSID DC CL4'ACQR'
CONN DC CL4'XXXX'
CONNNETN DC CL8'NNNNNNNN'
END
//*
//LKED.SYSLMOD DD DISP=SHR,DSN=CICS.PROGRAM.LOADLIB(CONNACQR)

The transaction is a long-running one with the program waiting for five
minutes between checking the connection status and REL/ACQ actions.
The program also checks for CICS shutdown status and terminates itself
upon CICS termination.
Chorng S (Jack) Hwang
Principal
HSA Systems (USA) © Xephon 2002

30 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Monitoring system logger activity online

With the launch of CICS Transaction Server for OS/390, the MVS system
logger has become the important feature for using CICS/TS successfully.
Many companies have already migrated to CICS/TS, but a lot of migration
work is still to be done before CICS/ESA goes out of service.
A very important task when running CICS/TS is to monitor the logger set
up for CICS. Therefore IBM provided the batch program IXGRPT1, which
is supplied in SYS1.SAMPLIB. A CICS systems programmer should be
very familiar with this program in order to understand whether CICS’s
system logs, DFHLOG and DFHSHUNT, are well defined and tuned.
IXGRPT1 is an excellent window into the MVS system logger. The input
for IXGRPT1 are the SMF88 records.
However, during my work at IBM’s CICS support group I have had a lot
of contact with customers running CICS/TS who don’t know about
IXGRPT1. This inevitably leads to problems. A lot of people find it
difficult to interpret IXGRPT1 output and to understand the figures and
the critical situations.
To give an alternative to IXGRPT1 I wrote program IXGRPTC (C stands
for CICS) and program IXGSMF8. Both programs run under CICS. The
first program displays the local log streams used by CICS (see below):
JOURNALNAME STREAMNAME TYPE STATUS
————————————————————————————
DFHJØ2 CICS.IV4A53A1.DFHJØ2 MVS ENABLED
DFHLGLOG CICSUSER.IV5A53A1.DFHLGLOG MVS ENABLED
DFHLOG CICS.IV4A53A1.DFHLOG MVS ENABLED
DFHSHUNT CICS.IV4A53A1.DFHSHUNT MVS ENABLED

NOTE: PUT THE CURSOR ON A STREAMNAME AND PRESS ENTER KEY

SYSID=53A1 APPLID=IV4A53A1
PF 3 END

You can easily select a log stream by putting the cursor on a log stream name
and pressing enter. Now the second program will be invoked to display the
SMF88 interval records on screen (see below) for the previously selected
log stream:

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 31


SMF INTERVAL: 1Ø /
33
——————— PRODUCT SECTION ————————————————————
MVS OPERATION SYSTEM NAME: MCEVS4 RELEASE: SP6.1.Ø
——————— LOG STREAM SECTION ———————————————————
LOG STREAM NAME: CICS.IV4A53A1.DFHLOG TOD-TIME: 2ØØ1/Ø5/Ø7
13:ØØ:ØØ
# WRITES INVOKED : 13.42Ø
BYT WRITTN BY USERS IXGWRITES : 69.247.11Ø
MIN. BLOCKLEN IN SMF INTERVAL : 12Ø (INITIALIZED TO
X"7FFFFFFF" IF NO SMF ACTIVITY OCCURS WITHIN AN SMF INTERVAL.)
MAX. BLOCKLEN IN SMF INTERVAL : 1Ø.276
——————— STRUCTURE (INTERIM STORAGE) SECTION —————————————————————
(DASD) ——————————————
STRUCTURE NAME: LOG_DFHLOG_ØØ1
BYT WRITTN TO INTERIM STORAGE : 71.ØØØ.32Ø BYT WRITTN TO
DASD : 64.578.371
BYT DELETD INTERIM ST W/O DASD : 5.246.898 BYT DELETD
INTERIM ST W/DASD : 64.Ø81.571
# DELETES W/O DASD WRITE : 986 # DELETS W/WRITE
: 12.42Ø
# WRITES COMPLETED - TYPE 1 : 12.124 (TYPE1 = LOG STREAM
CONTENTS CAN REMAIN IN STRUCTURE. NO NEED TO MOVE DATA.)
# WRITES COMPLETED - TYPE 2 : 1.2Ø6 (TYPE2 = LOG STREAM IS
FILLING THE STRUCTURE. LOGGER STARTS OFFL. ASYNC.)
# WRITES COMPLETED - TYPE 3 : 87 (TYPE3 = SPACE USED IN
THE STRUCTURE IS CRITICAL BUT DOES NOT EXCEED 1ØØ%.)
——————— EVENTS SECTION —————————————————————
DASD SHFT : 136 STRC FULL : 3 OFFLOADS : 1Ø4
(NUMBER OF SUCCESSFUL OFFLOADS)
REBLD INI : Ø STG THLD : Ø OFFL.9Ø% : 244
(NO.OF SUSUCCESSFUL OFFLOADS DUE TO STRUC.REACHING 9Ø% FULL
REBLD CMP : Ø STG FULL : Ø IXGOFFLD : Ø
(NUMBER OF TIMES AN OFFLOAD WAS REQUESTED VIA IXGOFFLD SERV
————————————————————————————————————

PF 3 RETURN 7 UP 8 DOWN 9 FIRST I. 1Ø MIDLE I. 11


LAST I. (I. = SMF INTERVAL)
PF 13 DASD SHFT 14 OFFLOAD 15 STG FULL 16 STG THLD 17 STR FULL 18
OFFL.9Ø% 23 AVERAGE 24 TOTALS

Because of the huge amount of data in one interval, session property screen
size 27x132 is mandatory.
This method has some advantages, including:
1 Online access to SMF88 records without needing to run batch jobs.
2 All variables for a single SMF interval on a screen.

32 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
3 Every value prefixed by a description and some suffixed with an
explanation.
4 Different colours for quantity variables (in green, eg number of bytes
written to logger) and event variables (in red, eg structure full).
5 Exception monitoring with PF keys (PF13 - PF18); eg PF13 = show
me the interval with the highest number of DASD shifts (DASD shift
= allocating a new offload dataset), or PF17 = display the interval with
structure full condition on maximum.
The input for the CICS programs are the same SMF88 records as used by
the batch version, but the organization format is different. I use a VSAM
KSDS cluster instead of ESDS datasets. The data is copied by a third
program (batch part) IXGRPTB (B stands for batch) when an SMF dataset
switch occurs. Only CICS logstreams are selected by program IXGRPTB.
A clean-up routine deletes the records from files that are older than a
specified time in days. You should use the same jobstream as provided for
IXGRPT1 in the Redbook CICS Transaction Server for OS/390: Version
1 Release 2 Implementation Guide (SG24-2234-00) on page 100/101.
Replace the last step by program IXGRPTB. The DD statement for input
is SMF88IN, for output SMF88OT.
Checklist:
1 Define the KSDS cluster with INDEXED, KEYS(36 100) – for
example:
//DEFINE EXEC PGM=IDCAMS,REGION=1M
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DELETE CICS53.CICS.IXGSMF88
SET LASTCC=Ø
SET MAXCC=Ø
DEFINE CLUSTER(NAME(CICS53.CICS.IXGSMF88)-
INDEXED -
CYL(5 2)-
SHR(3,3)-
FREESPACE(1Ø 1Ø)-
REUSE -
KEYS(36 1ØØ)-
RECORDSIZE(276 32756) )
/*
//

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 33


2 Copy SMF88 records with IXGRPTB at every SMF dataset switch –
for example:
//* UNLOAD SMF DATA SET CONTAINING CICS DATA
//SMFDUMP EXEC PGM=IFASMFDP
//INDD1 DD DISP=SHR,BUFNO=2Ø,DSN=SYS1.MAN1
//OUTDD1 DD DSN=&&TEMP,DISP=(NEW,PASS),SPACE=(CYL,(12,5)),UNIT=SYSDA
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
INDD(INDD1,OPTIONS(DUMP))
OUTDD(OUTDD1,TYPE(88))
/*
//* COPIES SMF RECORDS TYPE 88 ONLY
//COPYSEL EXEC PGM=SORT,REGION=1Ø24K
//SYSOUT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SORTIN DD DSN=&&TEMP,DISP=(OLD,PASS)
//SORTOUT DD DSN=&&TEMP1,DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(12,5))
//SYSIN DD *
OPTION COPY
INCLUDE COND=(6,1,BI,EQ,X'58')
/*
//* SORT EQCH SMF INPUT BY TIMESTAMP AND LOGSTREAM NAME
//SORT1 EXEC PGM=SORT
//SYSOUT DD SYSOUT=*
//SYSABEND DD SYSOUT=*
//SORTIN DD DSN=&&TEMP1,DISP=(OLD,DELETE)
//SORTOUT DD DSN=&&TEMP2,DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(5,1))
//SYSIN DD *
OPTION VLSHRT
SORT FIELDS=(133,8,BI,A,
1Ø5,26,CH,A)
INCLUDE COND=(23,2,BI,EQ,X'ØØØ1')
/*
//* EXECUTE PL/I PROGRAM IXGRPTB
//IXGRPTB EXEC PGM=IXGRPTB,PARM='ØØ3' /* CLEANUP INTERAL IN DAYS */
//STEPLIB DD DISP=SHR,DSN=user.loadlib
//SYSPRINT DD SYSOUT=*
//SMF88IN DD DISP=(OLD,PASS),DSN=&&TEMP2
//SMF88OT DD DISP=SHR,DSN=CICS53.CICS.IXGSMF88

3 CICS program definition for IXGRPTC and IXGSMF8 with Language


LE370.
4 CICS transaction definition for IXGC (IXGRPTC) and IXG8
(IXGSMF8).
5 CICS mapset definition for IXGMAPSM.

34 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
6 CICS file definition for file IXGSMF88 with RECORDFormat V and
OPERATIONs Browse and READ.
Because CICS uses this file as read-only you can update the file from batch
without problems. To get all the data before using the transaction, you
should close and reopen the file in CICS. A better way is to use a file owning
region and update the file via EXCI. The best way is to use SMSVSAM.
Readers who wish to discuss the material in this article further may contact
me via e-mail, at ewoerner@de.ibm.com.

IXGRPTB
*PROCESS LANGLVL(OS,SPROG);
IXGRPTB :PROCEDURE (MVSPARMSTRING) OPTIONS(MAIN);
DCL PLIXOPT CHAR(2ØØ) VAR INIT('SYSTEM(MVS),NOEXECOPS') STATIC
EXTERNAL;
%INCLUDE SMF88STR;
%INCLUDE CEEIBMAW;
%INCLUDE CEEIBMCT;
DCL MVSPARMSTRING CHAR(1ØØ) VAR;
DCL 1 FILLØ4 UNAL BASED(ADDR(MVSPARMSTRING)),
2 FILLØ5 CHAR(2),
2 CLEANUP_INTERVAL PIC'999';
DCL CLEANUP_INTERVAL_BIN FIXED BIN(15);
DCL IXGR1A OPTIONS(ASSEMBLER INTER) ENTRY(CHAR(8), CHAR(24));
DCL SMF88IN FILE RECORD INPUT;
DCL SMF88OT FILE RECORD KEYED ENV(VSAM,SIS,V);
DCL WORKAREA CHAR(32756) VAR;
DCL TIMEDATE_CHAR_88 CHAR(24);
DCL 1 FILLØ2 BASED(ADDR(TIMEDATE_CHAR_88)),
2 TODTIME CHAR(8),
2 FILLØ3 CHAR(8),
2 TODDATE CHAR(8);
DCL TIMEDATE_JULIAN_88 FIXED BIN(31);
DCL TIMEDATE_JULIAN_CUR FIXED BIN(31);
DCL TIMEDATE_SECONDS_CUR FLOAT DEC(16);
DCL TIMEDATE_GREGORN_CUR CHAR(17);
DCL 1 LGSEGMENT BASED(SMF88LOF),
2 FILLØ1 CHAR(8),
2 KEY, /* KEY FOR VSAM KSDS */
3 KEY_PART1 CHAR(26), /* => SMF88LSN */
3 KEY_PART2 CHAR(2), /* => SMF88LFL */
3 KEY_PART3 CHAR(8); /* => SMF88LTD */
DCL SYSPRINT FILE;
DCL (CSTG,LENGTH,SUBSTR,ONCODE,POINTERADD,STRING,VERIFY,
PLIRETC) BUILTIN;

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 35


DCL (EOF,STRING_FOUND) BIT(1) INIT('Ø'B);
DCL (TRUE) BIT(1) STATIC INIT('1'B);
DCL (FALSE) BIT(1) STATIC INIT('Ø'B);
DCL (C,D,E,I) FIXED BIN(31) INIT(Ø);
DCL P PTR;
DCL X CHAR(4) BASED(P); /* DSECT FOR DFHJ*, DFHL*, DFHS* */
DCL 1 FC, /* FEEDBACK TOKEN */
2 MSGSEV FIXED BIN(15),
2 MSGNO FIXED BIN(15),
2 FLAGS,
3 CASE BIT(2),
3 SEVERITY BIT(3),
3 CONTROL BIT(3),
2 FACID CHAR(3), /* FACILITY ID */
2 ISI FIXED BIN(31); /* INSTANCE-SPECIFIC INFORMATION */
ON ENDFILE(SMF88IN) EOF='1'B;
ON ENDFILE(SMF88OT) EOF='1'B;
ON KEY(SMF88OT)
BEGIN;
/* PUT SKIP LIST('ON KEY CONDITION RAISED, ONCODE=',
ONCODE()); */
IF ONCODE = 52 /* 52 = DUPLICATE KEY */
THEN
D = D + 1; /* BUMP DUPLICATE RECORD COUNTER */
/* PUT SKIP LIST ('DUPLICATE KEY = '||STRING(KEY)); */
END;
/* **************************************************************** */
/* IF VSAM CLUSTER IS EMPTY, OPEN IN SEQUENTIAL MODE, CLOSE AND */
/* REOPEN IN DIRECT MODE. */
/* **************************************************************** */
ON UNDEFINEDFILE(SMF88OT)
BEGIN;
PUT SKIP LIST('ON UNDEFINEDFILE CONDITION RAISED, ONCODE=',
ONCODE());
IF ONCODE = 82 /* 82 = DATA SET NEVER LOADED */
THEN
BEGIN;
OPEN FILE(SMF88OT) OUTPUT SEQUENTIAL;
KEY_PART2 = 'ØØØØ'X;
CALL FORMAT_TOD;
SUBSTR(WORKAREA,1,LENGTH(WORKAREA)) = REAL_RECORD;
WRITE FILE (SMF88OT) FROM (WORKAREA)
KEYFROM(STRING(KEY));
CLOSE FILE(SMF88OT);
OPEN FILE (SMF88OT) OUTPUT DIRECT;
END;
END;
/* **************************************************************** */
/* GET CLEANUP INTERVAL FROM MVS PARMS (IF AVAILABLE ). */
/* **************************************************************** */

36 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
IF VERIFY(SUBSTR(MVSPARMSTRING,1,3),'Ø123456789') = Ø /* NUMERIC? */
THEN CLEANUP_INTERVAL_BIN = CLEANUP_INTERVAL; /* YES. */
ELSE CLEANUP_INTERVAL_BIN = 3; /* NO. DEFAULT IS 3 DAYS */
PUT SKIP DATA( CLEANUP_INTERVAL_BIN );
/* **************************************************************** */
/* SELECT LOGSTREAMS WITH QUALIFIER DFHL*, DFHS* AND DFHJ* */
/* **************************************************************** */
OPEN FILE(SMF88IN);
READ FILE(SMF88IN) INTO(WORKAREA);
SUBSTR(REAL_RECORD,1,LENGTH(WORKAREA)) = WORKAREA;
OPEN FILE(SMF88OT) OUTPUT DIRECT;
DO WHILE(¬EOF);
/* IS IT A CICS LOGSTREAM ? */
P = ADDR(SMF88LSN);
STRING_FOUND = FALSE;
A: DO I = 1 TO 23; /* LENGTH OF LOG STREAM NAME - 4 + 1 */
IF X = 'DFHL' | X = 'DFHS' | X = 'DFHJ'
THEN DO;
STRING_FOUND = TRUE;
LEAVE A;
END;
P = POINTERADD(P,1);
END A;
/* PROCESS RECORD */
IF STRING_FOUND = TRUE
THEN DO;
C = C + 1;
KEY_PART2 = 'ØØØØ'X;
CALL FORMAT_TOD;
SUBSTR(WORKAREA,1,LENGTH(WORKAREA)) = REAL_RECORD;
WRITE FILE(SMF88OT) FROM(WORKAREA)
KEYFROM(STRING(KEY));
END;
/* NEXT READ */
READ FILE(SMF88IN) INTO(WORKAREA);
SUBSTR(REAL_RECORD,1,LENGTH(WORKAREA)) = WORKAREA;
END;
CLOSE FILE(SMF88IN);
CLOSE FILE(SMF88OT);
/*******************************************************************/
/* CLEANUP - DELETE ALL RECORDS WITH A CREATION DATE GT 1Ø */
/*******************************************************************/
EOF = FALSE;
/* GET CURRENT DATE IN JULIAN DATE FORMAT */
CALL CEELOCT(TIMEDATE_JULIAN_CUR,TIMEDATE_SECONDS_CUR,
TIMEDATE_GREGORN_CUR,FC);
OPEN FILE(SMF88OT) SEQUENTIAL UPDATE;
READ FILE(SMF88OT) INTO(WORKAREA); /* FIRST READ */
DO WHILE(¬EOF);
SUBSTR(REAL_RECORD,1,LENGTH(WORKAREA)) = WORKAREA;

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 37


CALL IXGR1A(SMF88LTD,TIMEDATE_CHAR_88);
/* CONVERT SMF DATE FORMAT TO JULIAN DATE FORMAT */
CALL CEEDAYS(SUBSTR(TIMEDATE_CHAR_88,17,8),'YYYYMMDD',
TIMEDATE_JULIAN_88,FC);
IF TIMEDATE_JULIAN_CUR - TIMEDATE_JULIAN_88 > CLEANUP_INTERVAL_BIN
THEN DO;
DELETE FILE(SMF88OT); /* DELETE THE LAST RECORD -*/
E = E + 1; /* IT'S OLDER THAN 1Ø DAYS */
END;
READ FILE(SMF88OT) INTO(WORKAREA); /* NEXT READ */
END;
CLOSE FILE(SMF88OT);
/*******************************************************************/
/* ISSUE MESSAGES, SET RETURN-CODE AND RETURN TO MVS */
/*******************************************************************/
PUT SKIP LIST('COUNTER RECORDS ALL :'); PUT DATA(C);
PUT SKIP LIST('COUNTER RECORDS DUPL.:'); PUT DATA(D);
PUT SKIP LIST('COUNTER RECORDS DEL. :'); PUT DATA(E);
IF C = Ø THEN CALL PLIRETC(4); /* NO RECORDS LOADED */
IF D > Ø THEN CALL PLIRETC(8); /* SOME DUPLICATE RECORDS */
IF D>Ø & D=C THEN CALL PLIRETC(12); /* ALL RECORDS DUPLICATE */
RETURN;
FORMAT_TOD: PROC;
CALL IXGR1A(SMF88LTD,TIMEDATE_CHAR_88);
SMF88PNM = TODDATE;
SMF88LIT = TODTIME;
END FORMAT_TOD;
END IXGRPTB;

IXGRPTC
*PROCESS MACRO SYSTEM(CICS) LANGLVL(SPROG) XREF(FULL);
IXGRPTC: PROC(COMPTR) OPTIONS(MAIN);
/*******************************************************************/
/* DISPLAY SMF88 DATA ONLINE */
/*******************************************************************/
%INCLUDE IXGMAPS; /* DSECT GENERATED BY BMS */
%INCLUDE (DFHAID);
DCL COMPTR PTR;
DCL XRESP FIXED BIN(31);
DCL XABSTIME DEC FIXED(15);
DCL XSYSID CHAR(4), XAPPLID CHAR(8);
DCL (ADDR,CHAR,CSTG,STG,LOW,HIGH,SUBSTR,LENGTH) BUILTIN;
DCL STR CHAR(32767) BASED;
DCL I,J,K,C FIXED BIN(15); /* I,J,K FOR GENERAL PURPOSES, C=CURSOR */
DCL REQJOUR CHAR(8);
DCL XJOURNALNAME CHAR(8),
XSTREAMNAME CHAR(26),
XSTATUS FIXED BIN(31), CSTATUS CHAR(8),

38 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
XTYPE FIXED BIN(31), CTYPE CHAR(8);
DCL XCOMMAREA CHAR(CSTG(XCOMMAREA_DATA)) INIT(
LOW(CSTG(XCOMMAREA_DATA))) CONTROLLED;
DCL 1 XCOMMAREA_DATA UNAL BASED(COMPTR),
2 EYECATCHER CHAR(8),
2 TAB_IDX FIXED BIN(15),
2 TAB_STRNM (6:17) CHAR(26),
2 NEXT_FUNCTION CHAR(2Ø);
DCL END_MESSAGE CHAR(4Ø) INIT('IXGRPTC TERMINATED');
DCL 1 TO_IXGSMF8_CA,
2 FILLØ1 CHAR(8) INIT('IXGSMF8'),
2 FILLØ2 CHAR(2Ø) INIT('FIRST_INVOCATION'),
2 STRNM CHAR(26),
2 LSFLAGS CHAR(2),
2 TIMESTAMP CHAR(8),
2 MAXITEM FIXED BIN(15),
2 LASTITEM FIXED BIN(15),
2 TSQNAME CHAR(8),
2 ACCUM_TAB (2Ø),
3 ACCUMULATOR FLOAT BIN(64),
2 MAX_TAB (22),
3 MAXIMUM FLOAT BIN(64),
3 TSQITEM FIXED BIN(15);
DCL SCREEN_LINES FIXED BIN(15);
DCL SCREEN_COLS FIXED BIN(15);
IF EIBCALEN=Ø
THEN DO;
ALLOCATE XCOMMAREA;
COMPTR=ADDR(XCOMMAREA);
EYECATCHER='IXGRPTC';
NEXT_FUNCTION = '***';
END;
SELECT(EIBAID);
WHEN(DFHPF3) IF EIBCALEN > Ø
THEN
NEXT_FUNCTION = 'RETURN_TO_CICS';
WHEN(DFHENTER)
DO; IF EIBCALEN>Ø THEN
DO;
C=EIBCPOSN/8Ø;
IF (TAB_IDX>5 & C>TAB_IDX) | C<6 | C>17
THEN DO;
EXEC CICS SEND MAP ('INVCURS')
MAPSET('IXGMAPS')
RESP(XRESP);
GOTO RETURN_TO_CICS;
END;
EXEC CICS ASSIGN ALTSCRNHT(SCREEN_LINES)
ALTSCRNWD(SCREEN_COLS)
RESP(XRESP);

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 39


IF SCREEN_LINES < 27 | SCREEN_COLS < 132
THEN DO;
EXEC CICS SEND MAP ('INVSCRN')
MAPSET('IXGMAPS')
RESP(XRESP);
GOTO RETURN_TO_CICS;
END;
/* START READING SMF88 FILE */
STRNM=TAB_STRNM(C);
LSFLAGS=LOW(LENGTH(LSFLAGS));
TIMESTAMP=LOW(LENGTH(TIMESTAMP));
MAXITEM=Ø; LASTITEM=Ø;
EXEC CICS RETURN TRANSID('IXG8') IMMEDIATE
COMMAREA(TO_IXGSMF8_CA)
LENGTH(CSTG(TO_IXGSMF8_CA))
RESP(XRESP);
END;
END;
OTHERWISE DO;
EXEC CICS SEND MAP ('INVKEY')
MAPSET('IXGMAPS')
RESP(XRESP);
GOTO RETURN_TO_CICS;
END;
END;
SELECT (NEXT_FUNCTION);
WHEN ('RETURN_TO_CICS') DO;
EXEC CICS SEND TEXT
FROM(END_MESSAGE)
ERASE LAST
RESP(XRESP);
EXEC CICS RETURN; /* STOP RUN */
END;
OTHERWISE;
END; /* END SELECT */
LØ1Ø: /* SEND FIRST MAP */
/* CLEAR MAP */
SUBSTR(ADDR(IXGMAP1O)->STR,1,STG(IXGMAP1O))=LOW(STG(IXGMAP1O));
TAB_IDX=5; /* SET TAB_IDX TO THE 5TH. LINE ON SCREEN */
/* VARIABLES INTO MAP */
EXEC CICS ASSIGN SYSID(XSYSID) APPLID(XAPPLID);
SYSIDO='SYSID='||XSYSID||' APPLID='||XAPPLID;
EXEC CICS INQUIRE JOURNALNAME START RESP(XRESP);
DO I=1 TO 12 UNTIL(XRESP=DFHRESP(END));
EXEC CICS INQUIRE JOURNALNAME(XJOURNALNAME) NEXT STATUS(XSTATUS)
STREAMNAME(XSTREAMNAME) TYPE(XTYPE) RESP(XRESP);
IF XRESP¬=DFHRESP(NORMAL) THEN LEAVE;
SELECT(XSTATUS);
WHEN (DFHVALUE(ENABLED)) CSTATUS='ENABLED';
WHEN (DFHVALUE(DISABLED)) CSTATUS='DISABLED';

40 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
WHEN (DFHVALUE(FAILED)) CSTATUS='FAILED';
OTHERWISE CSTATUS=' ???';
END;
SELECT(XTYPE);
WHEN (DFHVALUE(MVS)) CTYPE='MVS';
WHEN (DFHVALUE(SMF)) CTYPE='SMF';
WHEN (DFHVALUE(DUMMY)) CTYPE='DUMMY';
OTHERWISE CTYPE=' ???';
END;
LSNO(I)=(9)' '||XJOURNALNAME||(4)' '||XSTREAMNAME||
(2)' '||CTYPE||CSTATUS;
/* SAVE THE STREAMNAME IN TAB */
TAB_IDX=TAB_IDX+1; TAB_STRNM(TAB_IDX)=XSTREAMNAME;
END;
/* SEND MAP */
EXEC CICS SEND MAP('IXGMAP1') MAPSET('IXGMAPS') FROM(IXGMAP1O)
ERASE RESP(XRESP);
RETURN_TO_CICS:
EXEC CICS RETURN TRANSID(EIBTRNID) COMMAREA(XCOMMAREA_DATA)
LENGTH(CSTG(XCOMMAREA_DATA)) RESP(XRESP);
END IXGRPTC;

IXGSMF8
*PROCESS MACRO SYSTEM(CICS) LANGLVL(SPROG) XREF(FULL);
IXGSMF8: PROC(COMPTR) OPTIONS(MAIN);
/*******************************************************************/
/* READ SMF88 FILE AND DISPLAY SMF88 VARIABLES ON SCREEN */
/*******************************************************************/
%INCLUDE IXGMAPS; /* DSECT GENERATED BY BMS */
%INCLUDE SMF88STR;
%INCLUDE (DFHAID);
%INCLUDE (DFHBMSCA);
DCL (COMPTR,P) PTR;
DCL NULL_CA CHAR(1), ZERO FIXED BIN(15) INIT(Ø);
DCL XLENGTH FIXED BIN(15);
DCL XRESP FIXED BIN(31);
DCL XABSTIME DEC FIXED(15);
DCL XSYSID CHAR(4), XAPPLID CHAR(8);
DCL LONG_FLOAT_BIN FLOAT BINARY(64) BASED;
DCL WRK_BIN FIXED BIN(31);
DCL WRK_PACKED FIXED DEC(15);
DCL WRK_FLOAT FLOAT BIN(64);
DCL SYSPRINT FILE;
DCL (ADDR,CHAR,CSTG,STG,LOW,SUBSTR,STRING,LENGTH,FLOAT,BIN,MIN,
UNSPEC,LBOUND,HBOUND) BUILTIN;
DCL STR CHAR(32767) BASED;
DCL I,J,K,C FIXED BIN(15); /* I,J,K FOR GENERAL PURPOSES, C=CURSOR */
DCL STRNM_SAVE CHAR(CSTG(STRNM));

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 41


DCL 1 XCOMMAREA BASED(COMPTR),
2 EYECATCHER CHAR(8),
2 NEXT_FUNCTION CHAR(2Ø),
2 XKEY,
3 STRNM CHAR(26),
3 LSFLAGS CHAR(2),
3 TIMESTAMP CHAR(8),
2 MAXITEM FIXED BIN(15),
2 CURRITEM FIXED BIN(15),
2 TSQNAME CHAR(8),
2 ACCUM_TAB (2Ø),
3 ACCUMULATOR FLOAT BIN(64),
2 MAX_TAB (22),
3 MAXIMUM FLOAT BIN(64),
3 TSQITEM FIXED BIN(15);
/* ------------------------------------------------------------- */
DCL SMF88SWB_FLOAT BINARY(64) FLOAT; /* BYT WRITTN TO INTERIM STOR.*/
DCL SMF88LDB_FLOAT BINARY(64) FLOAT; /* BYT WRITTN TO DASD */
DCL SMF88SIB_FLOAT BINARY(64) FLOAT; /* BYT DELETD INT.W/O DASD */
DCL SMF88SAB_FLOAT BINARY(64) FLOAT; /*BYT DELETD INTERIM ST W/DASD*/
DCL SMF88LWB_FLOAT BINARY(64) FLOAT; /* */
/* — CONSTANTS ------------------------------------------------- */
DCL CONST_ZERO_BIN15 FIXED BINARY (15) STATIC INIT(Ø);
DCL CONST_SIGNIF_DIGITS FIXED BINARY (15) STATIC INIT(14);
DCL CONST_MAX_EXP FIXED BINARY (15) STATIC INIT(16);
DCL SPACE CHAR(1) STATIC INIT(' ');
DCL SMF88LWI_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(1),
SMF88LWB_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(2),
SMF88SWB_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(3),
SMF88LDB_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(4),
SMF88SIB_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(5),
SMF88SAB_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(6),
SMF88SII_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(7),
SMF88SAI_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(8),
SMF88SC1_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(9),
SMF88SC2_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(1Ø),
SMF88SC3_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(11),
SMF88EDS_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(12),
SMF88ERI_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(13),
SMF88ERC_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(14),
SMF88ESF_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(15),
SMF88ETT_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(16),
SMF88ETF_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(17),
SMF88EOA_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(18),
SMF88EFS_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(19),
SMF88EDO_ACCUM_TABIDX FIXED BIN(15) STATIC INIT(2Ø);
DCL SMF88LWI_MAX_TABIDX FIXED BIN(15) STATIC INIT(1),
SMF88LWB_MAX_TABIDX FIXED BIN(15) STATIC INIT(2),
SMF88SWB_MAX_TABIDX FIXED BIN(15) STATIC INIT(3),
SMF88LDB_MAX_TABIDX FIXED BIN(15) STATIC INIT(4),

42 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
SMF88SIB_MAX_TABIDX FIXED BIN(15) STATIC INIT(5),
SMF88SAB_MAX_TABIDX FIXED BIN(15) STATIC INIT(6),
SMF88SII_MAX_TABIDX FIXED BIN(15) STATIC INIT(7),
SMF88SAI_MAX_TABIDX FIXED BIN(15) STATIC INIT(8),
SMF88SC1_MAX_TABIDX FIXED BIN(15) STATIC INIT(9),
SMF88SC2_MAX_TABIDX FIXED BIN(15) STATIC INIT(1Ø),
SMF88SC3_MAX_TABIDX FIXED BIN(15) STATIC INIT(11),
SMF88EDS_MAX_TABIDX FIXED BIN(15) STATIC INIT(12),
SMF88ERI_MAX_TABIDX FIXED BIN(15) STATIC INIT(13),
SMF88ERC_MAX_TABIDX FIXED BIN(15) STATIC INIT(14),
SMF88ESF_MAX_TABIDX FIXED BIN(15) STATIC INIT(15),
SMF88ETT_MAX_TABIDX FIXED BIN(15) STATIC INIT(16),
SMF88ETF_MAX_TABIDX FIXED BIN(15) STATIC INIT(17),
SMF88EOA_MAX_TABIDX FIXED BIN(15) STATIC INIT(18),
SMF88EFS_MAX_TABIDX FIXED BIN(15) STATIC INIT(19),
SMF88EDO_MAX_TABIDX FIXED BIN(15) STATIC INIT(2Ø),
SMF88LAB_MAX_TABIDX FIXED BIN(15) STATIC INIT(21),
SMF88LIB_MIN_TABIDX FIXED BIN(15) STATIC INIT(22);
%PAGE;
/*******************************************************************/
/* MAIN TASK CONTROL */
SELECT(EIBAID);
WHEN(DFHENTER);
WHEN(DFHPF3) NEXT_FUNCTION = 'RETURN_TO_IXGC';
WHEN(DFHPF7) NEXT_FUNCTION = 'PROCESS_PREV_ITEM';
WHEN(DFHPF8) NEXT_FUNCTION = 'PROCESS_NEXT_ITEM';
WHEN(DFHPF9) NEXT_FUNCTION = 'PROCESS_FIRST_ITEM';
WHEN(DFHPF1Ø) NEXT_FUNCTION = 'PROCESS_MIDLE_ITEM';
WHEN(DFHPF11) NEXT_FUNCTION = 'PROCESS_LAST_ITEM';
WHEN(DFHPF13) NEXT_FUNCTION = 'DASD_SHFT_MAX';
WHEN(DFHPF14) NEXT_FUNCTION = 'OFFLOAD_MAX';
WHEN(DFHPF15) NEXT_FUNCTION = 'STG_FULL';
WHEN(DFHPF16) NEXT_FUNCTION = 'STG_THLD';
WHEN(DFHPF17) NEXT_FUNCTION = 'STR_FULL';
WHEN(DFHPF18) NEXT_FUNCTION = 'OFFL_9Ø%';
WHEN(DFHPF23) NEXT_FUNCTION = 'AVERAGE';
WHEN(DFHPF24) NEXT_FUNCTION = 'SUMMARY';
OTHERWISE NEXT_FUNCTION = 'INVALID_PFKEY';
END;
SELECT(NEXT_FUNCTION);
WHEN('FIRST_INVOCATION ') DO;
CALL PROC_INIT;
CALL PROC_READ_FILE;
NEXT_FUNCTION = '???';
END;
WHEN('PROCESS_FIRST_ITEM') DO;
CURRITEM = 1;
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('PROCESS_MIDLE_ITEM') DO;

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 43


CURRITEM = MAXITEM / 2;
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('PROCESS_LAST_ITEM') DO;
CURRITEM = MAXITEM;
CALL DISPLAY_SMF88_INTERVAL(MAXITEM);
END;
WHEN('RETURN_TO_IXGC ') DO;
EXEC CICS DELETEQ TS QUEUE(TSQNAME)
RESP(XRESP);
EXEC CICS RETURN TRANSID('IXGC')
IMMEDIATE
COMMAREA(NULL_CA)
LENGTH(ZERO)
RESP(XRESP);
END;
WHEN('PROCESS_NEXT_ITEM') DO;
IF CURRITEM = MAXITEM
THEN CURRITEM = 1;
ELSE IF CURRITEM < MAXITEM
THEN CURRITEM = CURRITEM + 1;
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('PROCESS_PREV_ITEM') DO;
IF CURRITEM = 1
THEN CURRITEM = MAXITEM;
ELSE IF CURRITEM > 1
THEN CURRITEM = CURRITEM - 1;
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('DASD_SHFT_MAX') DO;
CURRITEM=TSQITEM(SMF88EDS_MAX_TABIDX);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('OFFLOAD_MAX') DO;
CURRITEM=TSQITEM(SMF88EOA_MAX_TABIDX);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('STG_FULL') DO;
CURRITEM=TSQITEM(SMF88ETF_MAX_TABIDX);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('STG_THLD') DO;
CURRITEM=TSQITEM(SMF88ETT_MAX_TABIDX);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('STR_FULL') DO;
CURRITEM=TSQITEM(SMF88LDB_MAX_TABIDX);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;

44 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
WHEN('OFFL_9Ø%') DO;
CURRITEM=TSQITEM(SMF88EFS_MAX_TABIDX);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END;
WHEN('SUMMARY') CALL PROC_SUMM;
WHEN('AVERAGE') CALL PROC_AVG;
WHEN('INVALID_PFKEY') DO; CALL CLEAR_MAP;
MSGO='*** INVALID PF KEY ***. PRESS ' ||
'ONE OF THE PF KEYS DISPLAYED ' ||
'BELOW|';
MSGH=DFHREVRS;
CALL SEND_MAP;
END;
OTHERWISE;
END;
EXEC CICS RETURN TRANSID(EIBTRNID) COMMAREA(XCOMMAREA)
LENGTH(CSTG(XCOMMAREA)) RESP(XRESP);
%PAGE;
/*******************************************************************/
/* READ THE REQUESTED SMF88 RECORDS INTO A TEMPORARY STORAGE AREA */
PROC_READ_FILE: PROC OPTIONS(REENTRANT) REORDER;
STRNM_SAVE=STRNM;
TSQNAME=EIBTRNID||EIBTRMID;
MAXITEM=Ø; CURRITEM=Ø;
EXEC CICS DELETEQ TS QUEUE(TSQNAME)
RESP(XRESP);
EXEC CICS STARTBR FILE('IXGSMF88')
RIDFLD(XKEY) GTEQ
RESP(XRESP);
EXEC CICS READNEXT FILE('IXGSMF88') SET(P) LENGTH(XLENGTH)
RIDFLD(XKEY) RESP(XRESP);
DO WHILE(STRNM_SAVE=STRNM);
IF XRESP¬=DFHRESP(NORMAL) THEN LEAVE;
EXEC CICS WRITEQ TS QUEUE(TSQNAME) FROM(P->STR) LENGTH(XLENGTH)
RESP(XRESP);
MAXITEM=MAXITEM+1; CURRITEM=CURRITEM+1;
/* MOVE TO REAL_RECORD AND ACCUMULATE THE VALUES */
SUBSTR(REAL_RECORD,1,XLENGTH) = SUBSTR(P->STR,1,XLENGTH);
CALL PROC_ACCUMULATE_AND_MAX;
/* READ NEXT */
EXEC CICS READNEXT FILE('IXGSMF88') SET(P) LENGTH(XLENGTH)
RIDFLD(XKEY) RESP(XRESP);
END;
EXEC CICS ENDBR FILE('IXGSMF88')
RESP(XRESP);
CALL DISPLAY_SMF88_INTERVAL(CURRITEM);
END PROC_READ_FILE;
%PAGE;
/*******************************************************************/
/* DISPLAY THE SMF88 INTERVAL ON CRT */

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 45


DISPLAY_SMF88_INTERVAL: PROC (INTV) OPTIONS(REENTRANT) REORDER;
DCL INTV FIXED BIN(15);
CALL CLEAR_MAP;
IF MAXITEM=Ø
THEN DO;
DO I=CSTG(STRNM) BY -1 TO 1;
IF SUBSTR(STRNM_SAVE,I,1)¬=SPACE THEN LEAVE;
END;
MSGO=' *** NO DATA FOUND FOR LOGSTREAM "' ||
SUBSTR(STRNM_SAVE,1,I) ||
'" ON VSAM FILE. USE IXGRPTB TO COPY SMF88 DATA. ***';
MSGH=DFHREVRS;
GOTO EXIT_DISPLAY_SMF88_INTERVAL;
END;
IF MAXITEM>Ø & MAXITEM=CURRITEM
THEN DO;
MSGO='NOTE: THIS IS THE MOST RECENT SMF INTERVAL. ' ||
'YOU''LL SEE THE SMF INTERVAL COUNTER IN THE '||
'UPPER-RIGHT CORNER. (CURRENT / MAXIMUM) ';
MSGC=DFHPINK;
END;
EXEC CICS READQ TS QUEUE(TSQNAME) INTO(REAL_RECORD) ITEM(INTV)
RESP(XRESP);
MCURINTVO = INTV;
MMAXINTVO = MAXITEM;
/* ************************************************ */
/* PRODUCT SECTION */
SMF88SYNO = SMF88SYN; /* MVS OPERATION SYSTEM NAME */
SMF88OSLO = SMF88OSL; /* MVS RELEASE */
/* ************************************************ */
/* LOGSTREAM SECTION */
SMF88LSNO = SMF88LSN; /* LOG STREAM NAME */
SMF88LWIO = FLOAT(UNSPEC(SMF88LWI),32); /* #WRITES INVOKED */
SMF88LTDO = SUBSTR(SMF88PNM,1,4) || '/' || /* YYYY */
SUBSTR(SMF88PNM,5,2) || '/' || /* MM */
SUBSTR(SMF88PNM,7,2) || SPACE || /* DD */
SUBSTR(SMF88LIT,1,2) || ':' || /* HH */
SUBSTR(SMF88LIT,3,2) || ':' || /* MM */
SUBSTR(SMF88LIT,5,2); /* SS */
SMF88LIBO = FLOAT(UNSPEC(SMF88LIB),32); /* MIN.BLOCKLEN */
SMF88LABO = FLOAT(UNSPEC(SMF88LAB),32); /* MAX.BLOCKLEN */
/* —————— BYT WRITTN BY USERS IXGWRITES ——————— */
SMF88LWB_FLOAT = FLOAT(Ø);
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88LWB),ADDR(SMF88LWB_FLOAT));
SMF88LWBO = SMF88LWB_FLOAT;
/* ************************************************ */
/* STRUCTURE (INTERIM STORAGE) SECTION */
SMF88STNO = SMF88STN; /* STRUCTURE NAME */
/* —————— BYT WRITTN TO INTERIM STORAGE ——————— */
SMF88SWB_FLOAT = Ø;

46 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88SWB),ADDR(SMF88SWB_FLOAT));
SMF88SWBO = SMF88SWB_FLOAT;
/* —————— BYT WRITTN TO DASD ———————————— */
SMF88LDB_FLOAT = Ø;
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88LDB),ADDR(SMF88LDB_FLOAT));
SMF88LDBO = SMF88LDB_FLOAT;
/* —————— BYT DELETD INTERIM ST W/O DASD —————— */
SMF88SIB_FLOAT = Ø;
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88SIB),ADDR(SMF88SIB_FLOAT));
SMF88SIBO = SMF88SIB_FLOAT;
/* —————— BYT DELETD INTERIM ST W/DASD ——————— */
SMF88SAB_FLOAT = Ø;
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88SAB),ADDR(SMF88SAB_FLOAT));
SMF88SABO = SMF88SAB_FLOAT;
SMF88SIIO = FLOAT(UNSPEC(SMF88SII),32); /* # DELETES W/O DASD WRITE*/
SMF88SAIO = FLOAT(UNSPEC(SMF88SAI),32); /* # DELETS W/WRITE */
SMF88SC1O = FLOAT(UNSPEC(SMF88SC1),32); /* # WRITES COMPLETED TYPE1*/
SMF88SC2O = FLOAT(UNSPEC(SMF88SC2),32); /* # WRITES COMPLETED TYPE2*/
SMF88SC3O = FLOAT(UNSPEC(SMF88SC3),32); /* # WRITES COMPLETED TYPE3*/
/* ************************************************ */
/* EVENTS SECTION */
SMF88EDSO = FLOAT(UNSPEC(SMF88EDS),32); /* DASD SHFT */
SMF88ERIO = FLOAT(UNSPEC(SMF88ERI),32); /* REBLD INI */
SMF88ERCO = FLOAT(UNSPEC(SMF88ERC),32); /* REBLD CMP */
SMF88ESFO = FLOAT(UNSPEC(SMF88ESF),32); /* STRC FULL */
SMF88ETTO = FLOAT(UNSPEC(SMF88ETT),32); /* STG THLD */
SMF88ETFO = FLOAT(UNSPEC(SMF88ETF),32); /* STG FULL */
SMF88EOAO = FLOAT(UNSPEC(SMF88EO ),32); /* OFFLOADS */
SMF88EFSO = FLOAT(UNSPEC(SMF88EFS),32); /* OFFL.9Ø% */
SMF88EDOO = FLOAT(UNSPEC(SMF88EDO),32); /* IXGOFFLD */
SELECT(NEXT_FUNCTION); /* SET MAP ATTRIBUTE TO REVERSE VIDEO */
WHEN('PROCESS_PREV_ITEM') PF7H=DFHREVRS;
WHEN('PROCESS_NEXT_ITEM') PF8H=DFHREVRS;
WHEN('PROCESS_FIRST_ITEM') PF9H=DFHREVRS;
WHEN('PROCESS_MIDLE_ITEM') PF1ØH=DFHREVRS;
WHEN('PROCESS_LAST_ITEM') PF11H=DFHREVRS;
WHEN('DASD_SHFT_MAX') DO; SMF88EDSH=DFHREVRS; PF13H=DFHREVRS; END;
WHEN('OFFLOAD_MAX') DO; SMF88EOAH=DFHREVRS; PF14H=DFHREVRS; END;
WHEN('STG_FULL') DO; SMF88ETFH=DFHREVRS; PF15H=DFHREVRS; END;
WHEN('STG_THLD') DO; SMF88ETTH=DFHREVRS; PF16H=DFHREVRS; END;
WHEN('STR_FULL') DO; SMF88ESFH=DFHREVRS; PF17H=DFHREVRS; END;
WHEN('OFFL_9Ø%') DO; SMF88EFSH=DFHREVRS; PF18H=DFHREVRS; END;
OTHERWISE;
END;
EXIT_DISPLAY_SMF88_INTERVAL:
CALL SEND_MAP;
RETURN;
END DISPLAY_SMF88_INTERVAL;
%PAGE;
PROC_ACCUMULATE_AND_MAX: PROC OPTIONS(REENTRANT) REORDER;

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 47


/* SMF88LWI */
ACCUMULATOR(SMF88LWI_ACCUM_TABIDX) =
ACCUMULATOR(SMF88LWI_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88LWI),32);
IF MAXIMUM(SMF88LWI_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88LWI),32) THEN
DO;
MAXIMUM(SMF88LWI_MAX_TABIDX) = FLOAT(UNSPEC(SMF88LWI),32);
TSQITEM(SMF88LWI_MAX_TABIDX) = CURRITEM;
END;
/* SMF88LIB (EXCEPTION: NOT MAX BUT MIN) */
IF MAXIMUM(SMF88LIB_MIN_TABIDX) >= FLOAT(UNSPEC(SMF88LIB),32) THEN
DO;
MAXIMUM(SMF88LIB_MIN_TABIDX) = FLOAT(UNSPEC(SMF88LIB),32);
TSQITEM(SMF88LIB_MIN_TABIDX) = CURRITEM;
END;
/* SMF88LAB */
IF MAXIMUM(SMF88LAB_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88LAB),32) THEN
DO;
MAXIMUM(SMF88LAB_MAX_TABIDX) = FLOAT(UNSPEC(SMF88LAB),32);
TSQITEM(SMF88LAB_MAX_TABIDX) = CURRITEM;
END;
/* SMF88LWB */
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88LWB),
ADDR(ACCUMULATOR(SMF88LWB_ACCUM_TABIDX)));
IF MAXIMUM(SMF88LWB_MAX_TABIDX) <= WRK_FLOAT THEN
DO;
MAXIMUM(SMF88LWB_MAX_TABIDX) = WRK_FLOAT;
TSQITEM(SMF88LWB_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SWB */
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88SWB),
ADDR(ACCUMULATOR(SMF88SWB_ACCUM_TABIDX)));
IF MAXIMUM(SMF88SWB_MAX_TABIDX) <= WRK_FLOAT THEN
DO;
MAXIMUM(SMF88SWB_MAX_TABIDX) = WRK_FLOAT;
TSQITEM(SMF88SWB_MAX_TABIDX) = CURRITEM;
END;
/* SMF88LDB */
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88LDB),
ADDR(ACCUMULATOR(SMF88LDB_ACCUM_TABIDX)));
IF MAXIMUM(SMF88LDB_MAX_TABIDX) <= WRK_FLOAT THEN
DO;
MAXIMUM(SMF88LDB_MAX_TABIDX) = WRK_FLOAT;
TSQITEM(SMF88LDB_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SIB */
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88SIB),
ADDR(ACCUMULATOR(SMF88SIB_ACCUM_TABIDX)));
IF MAXIMUM(SMF88SIB_MAX_TABIDX) <= WRK_FLOAT THEN
DO;
MAXIMUM(SMF88SIB_MAX_TABIDX) = WRK_FLOAT;

48 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
TSQITEM(SMF88SIB_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SAB */
CALL CONVERT_TO_FLOAT_AND_SUM(ADDR(SMF88SAB),
ADDR(ACCUMULATOR(SMF88SAB_ACCUM_TABIDX)));
IF MAXIMUM(SMF88SAB_MAX_TABIDX) <= WRK_FLOAT THEN
DO;
MAXIMUM(SMF88SAB_MAX_TABIDX) = WRK_FLOAT;
TSQITEM(SMF88SAB_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SII */
ACCUMULATOR(SMF88SII_ACCUM_TABIDX) =
ACCUMULATOR(SMF88SII_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88SII),32);
IF MAXIMUM(SMF88SII_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88SII),32) THEN
DO;
MAXIMUM(SMF88SII_MAX_TABIDX) = FLOAT(UNSPEC(SMF88SII),32);
TSQITEM(SMF88SII_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SAI */
ACCUMULATOR(SMF88SAI_ACCUM_TABIDX) =
ACCUMULATOR(SMF88SAI_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88SAI),32);
IF MAXIMUM(SMF88SAI_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88SAI),32) THEN
DO;
MAXIMUM(SMF88SAI_MAX_TABIDX) = FLOAT(UNSPEC(SMF88SAI),32);
TSQITEM(SMF88SAI_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SC1 */
ACCUMULATOR(SMF88SC1_ACCUM_TABIDX) =
ACCUMULATOR(SMF88SC1_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88SC1),32);
IF MAXIMUM(SMF88SC1_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88SC1),32) THEN
DO;
MAXIMUM(SMF88SC1_MAX_TABIDX) = FLOAT(UNSPEC(SMF88SC1),32);
TSQITEM(SMF88SC1_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SC2 */
ACCUMULATOR(SMF88SC2_ACCUM_TABIDX) =
ACCUMULATOR(SMF88SC2_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88SC2),32);
IF MAXIMUM(SMF88SC2_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88SC2),32) THEN
DO;
MAXIMUM(SMF88SC2_MAX_TABIDX) = FLOAT(UNSPEC(SMF88SC2),32);
TSQITEM(SMF88SC2_MAX_TABIDX) = CURRITEM;
END;
/* SMF88SC3 */
ACCUMULATOR(SMF88SC3_ACCUM_TABIDX) =
ACCUMULATOR(SMF88SC3_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88SC3),32);
IF MAXIMUM(SMF88SC3_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88SC3),32) THEN
DO;
MAXIMUM(SMF88SC3_MAX_TABIDX) = FLOAT(UNSPEC(SMF88SC3),32);
TSQITEM(SMF88SC3_MAX_TABIDX) = CURRITEM;
END;

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 49


/* SMF88EDS */
ACCUMULATOR(SMF88EDS_ACCUM_TABIDX) =
ACCUMULATOR(SMF88EDS_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88EDS),32);
IF MAXIMUM(SMF88EDS_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88EDS),32) THEN
DO;
MAXIMUM(SMF88EDS_MAX_TABIDX) = FLOAT(UNSPEC(SMF88EDS),32);
TSQITEM(SMF88EDS_MAX_TABIDX) = CURRITEM;
END;
/* SMF88ERI */
ACCUMULATOR(SMF88ERI_ACCUM_TABIDX) =
ACCUMULATOR(SMF88ERI_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88ERI),32);
IF MAXIMUM(SMF88ERI_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88ERI),32) THEN
DO;
MAXIMUM(SMF88ERI_MAX_TABIDX) = FLOAT(UNSPEC(SMF88ERI),32);
TSQITEM(SMF88ERI_MAX_TABIDX) = CURRITEM;
END;
/* SMF88ERC */
ACCUMULATOR(SMF88ERC_ACCUM_TABIDX) =
ACCUMULATOR(SMF88ERC_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88ERC),32);
IF MAXIMUM(SMF88ERC_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88ERC),32) THEN
DO;
MAXIMUM(SMF88ERC_MAX_TABIDX) = FLOAT(UNSPEC(SMF88ERC),32);
TSQITEM(SMF88ERC_MAX_TABIDX) = CURRITEM;
END;
/* SMF88ESF */
ACCUMULATOR(SMF88ESF_ACCUM_TABIDX) =
ACCUMULATOR(SMF88ESF_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88ESF),32);
IF MAXIMUM(SMF88ESF_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88ESF),32) THEN
DO;
MAXIMUM(SMF88ESF_MAX_TABIDX) = FLOAT(UNSPEC(SMF88ESF),32);
TSQITEM(SMF88ESF_MAX_TABIDX) = CURRITEM;
END;
/* SMF88ETT */
ACCUMULATOR(SMF88ETT_ACCUM_TABIDX) =
ACCUMULATOR(SMF88ETT_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88ETT),32);
IF MAXIMUM(SMF88ETT_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88ETT),32) THEN
DO;
MAXIMUM(SMF88ETT_MAX_TABIDX) = FLOAT(UNSPEC(SMF88ETT),32);
TSQITEM(SMF88ETT_MAX_TABIDX) = CURRITEM;
END;
/* SMF88ETF */
ACCUMULATOR(SMF88ETF_ACCUM_TABIDX) =
ACCUMULATOR(SMF88ETF_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88ETF),32);
IF MAXIMUM(SMF88ETF_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88ETF),32) THEN
DO;
MAXIMUM(SMF88ETF_MAX_TABIDX) = FLOAT(UNSPEC(SMF88ETF),32);
TSQITEM(SMF88ETF_MAX_TABIDX) = CURRITEM;
END;
/* SMF88EOA */
ACCUMULATOR(SMF88EOA_ACCUM_TABIDX) =

50 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
ACCUMULATOR(SMF88EOA_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88EO),32);
IF MAXIMUM(SMF88EOA_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88EO),32) THEN
DO;
MAXIMUM(SMF88EOA_MAX_TABIDX) = FLOAT(UNSPEC(SMF88EO),32);
TSQITEM(SMF88EOA_MAX_TABIDX) = CURRITEM;
END;
/* SMF88EFS */
ACCUMULATOR(SMF88EFS_ACCUM_TABIDX) =
ACCUMULATOR(SMF88EFS_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88EFS),32);
IF MAXIMUM(SMF88EFS_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88EFS),32) THEN
DO;
MAXIMUM(SMF88EFS_MAX_TABIDX) = FLOAT(UNSPEC(SMF88EFS),32);
TSQITEM(SMF88EFS_MAX_TABIDX) = CURRITEM;
END;
/* SMF88EDO */
ACCUMULATOR(SMF88EDO_ACCUM_TABIDX) =
ACCUMULATOR(SMF88EDO_ACCUM_TABIDX) + FLOAT(UNSPEC(SMF88EDO),32);
IF MAXIMUM(SMF88EDO_MAX_TABIDX) <= FLOAT(UNSPEC(SMF88EDO),32) THEN
DO;
MAXIMUM(SMF88EDO_MAX_TABIDX) = FLOAT(UNSPEC(SMF88EDO),32);
TSQITEM(SMF88EDO_MAX_TABIDX) = CURRITEM;
END;
END PROC_ACCUMULATE_AND_MAX;
%PAGE;
PROC_INIT: PROC;
DO I = 1 TO 2Ø;
ACCUMULATOR(I) = FLOAT(Ø);
END;
DO I = 1 TO 22;
MAXIMUM(I) = FLOAT(Ø);
TSQITEM(I) = 1;
END;
END PROC_INIT;
%PAGE;
CONVERT_TO_FLOAT_AND_SUM : PROC
(SOURCE_STRING_PTR, FLOAT_ACCUM_PTR);
DECLARE
SOURCE_STRING_PTR POINTER,
SOURCE_STRING BIT(64) BASED(SOURCE_STRING_PTR), /* INPUT: FORMAT
IS ASM LONG FLOATING POINT*/
FIRST_BYTE BIT(8) BASED(SOURCE_STRING_PTR), /* EXPONENT OF
ASM LONG FLOATING POINT */
TARGET_STRING BIT(64), /* TEMP 64 BIT WORKAREA*/
FLOAT_ACCUM_PTR POINTER,
FLOAT_ACCUM BINARY(64) FLOAT BASED(FLOAT_ACCUM_PTR); /* OUTPUT:
PL/I FORMAT 64-BIT FLOAT */
DECLARE
CHARACTERISTIC BINARY(15),
DIGITS_TO_MOVE BINARY(15),
NUM_BITS_TO_MOVE BINARY(15),

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 51


SOURCE_START_SUBSCRIPT BINARY(15),
TARGET_START_SUBSCRIPT BINARY(15);
CHARACTERISTIC = BIN (FIRST_BYTE);
IF (CHARACTERISTIC = CONST_ZERO_BIN15) THEN
DO;
/* INPUT FIELD IS Ø, NOTHING TO SUM */
END;
ELSE
DO; /* INPUT FIELD IS NON-ZERO */
CHARACTERISTIC = CHARACTERISTIC - 64; /* REMOVE EXCESS-64*/
DO; /* CONVERT FLOATING POINT SOURCE TO BIT STRING */
TARGET_STRING = ''B; /* CLEAR TARGET */
SOURCE_START_SUBSCRIPT = LENGTH (FIRST_BYTE) + 1;
DIGITS_TO_MOVE =
MIN (CHARACTERISTIC, CONST_SIGNIF_DIGITS);
NUM_BITS_TO_MOVE = (DIGITS_TO_MOVE)*4;
TARGET_START_SUBSCRIPT =
( (CONST_MAX_EXP - CHARACTERISTIC) * 4) + 1;
SUBSTR
(TARGET_STRING,
TARGET_START_SUBSCRIPT,NUM_BITS_TO_MOVE) =
SUBSTR
(SOURCE_STRING,
SOURCE_START_SUBSCRIPT,NUM_BITS_TO_MOVE);
FLOAT_ACCUM = FLOAT_ACCUM + FLOAT(TARGET_STRING,64);
END; /* CONVERT FLOATING POINT SOURCE TO BIT STRING */
END; /* INPUT IS NON-ZERO */
END CONVERT_TO_FLOAT_AND_SUM;
%PAGE;
PROC_SUMM: PROC OPTIONS(REENTRANT) REORDER;
/* CLEAR MAP */
SUBSTR(ADDR(IXGMAP8O)->STR,1,STG(IXGMAP8O))=LOW(STG(IXGMAP8O));
EXEC CICS READQ TS QUEUE(TSQNAME) INTO(REAL_RECORD) ITEM(MAXITEM)
RESP(XRESP);
MCURINTVO = MAXITEM;
MMAXINTVO = MAXITEM;
/* ************************************************ */
/* PRODUCT SECTION */
SMF88SYNO = SMF88SYN; /* MVS OPERATION SYSTEM NAME */
SMF88OSLO = SMF88OSL; /* MVS RELEASE */
/* ************************************************ */
/* LOGSTREAM SECTION */
SMF88LSNO = SMF88LSN; /* LOG STREAM NAME */
SMF88LWIO = ACCUMULATOR(SMF88LWI_ACCUM_TABIDX);
SMF88LTDO = SUBSTR(SMF88PNM,1,4) || '/' || /* YYYY */
SUBSTR(SMF88PNM,5,2) || '/' || /* MM */
SUBSTR(SMF88PNM,7,2) || SPACE || /* DD */
SUBSTR(SMF88LIT,1,2) || ':' || /* HH */
SUBSTR(SMF88LIT,3,2) || ':' || /* MM */
SUBSTR(SMF88LIT,5,2); /* SS */

52 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
SMF88LIBO = FLOAT(UNSPEC(SMF88LIB),32); /* MIN.BLOCKLEN */
SMF88LABO = FLOAT(UNSPEC(SMF88LAB),32); /* MAX.BLOCKLEN */
SMF88LWBO = ACCUMULATOR(SMF88LWB_ACCUM_TABIDX); /* BYT WRITTN SUM */
SMF88STNO = SMF88STN; /* STRUCTURE NAME */
SMF88SWBO = ACCUMULATOR(SMF88SWB_ACCUM_TABIDX); /* BYT WRITTN INT. */
SMF88LDBO = ACCUMULATOR(SMF88LDB_ACCUM_TABIDX); /* BYT WRITTN DASD */
SMF88SIBO = ACCUMULATOR(SMF88SIB_ACCUM_TABIDX); /* BYT DEL W/O DASD*/
SMF88SABO = ACCUMULATOR(SMF88SAB_ACCUM_TABIDX); /* BYT DEL W/DASD */
SMF88SIIO = ACCUMULATOR(SMF88SII_ACCUM_TABIDX); /* #DEL W/O DASD */
SMF88SAIO = ACCUMULATOR(SMF88SAI_ACCUM_TABIDX); /* #DEL W/WRITE */
SMF88SC1O = ACCUMULATOR(SMF88SC1_ACCUM_TABIDX); /* #WRITES TYPE 1 */
SMF88SC2O = ACCUMULATOR(SMF88SC2_ACCUM_TABIDX); /* #WRITES TYPE 2 */
SMF88SC3O = ACCUMULATOR(SMF88SC3_ACCUM_TABIDX); /* #WRITES TYPE 3 */
SMF88EDSO = ACCUMULATOR(SMF88EDS_ACCUM_TABIDX); /* DASD SHRT */
SMF88ERIO = ACCUMULATOR(SMF88ERI_ACCUM_TABIDX); /* REBLD INIT. */
SMF88ERCO = ACCUMULATOR(SMF88ERC_ACCUM_TABIDX); /* REBLD CMP. */
SMF88ESFO = ACCUMULATOR(SMF88ESF_ACCUM_TABIDX); /* STRC FULL */
SMF88ETTO = ACCUMULATOR(SMF88ETT_ACCUM_TABIDX); /* STG THLD */
SMF88ETFO = ACCUMULATOR(SMF88ETF_ACCUM_TABIDX); /* STG FULL */
SMF88EOAO = ACCUMULATOR(SMF88EOA_ACCUM_TABIDX); /* OFFLOADS */
SMF88EFSO = ACCUMULATOR(SMF88EFS_ACCUM_TABIDX); /* OFFL.9Ø% */
SMF88EDOO = ACCUMULATOR(SMF88EDO_ACCUM_TABIDX); /* IXGOFFLD */
PF24H = DFHREVRS;
CALL SEND_MAP;
RETURN;
END PROC_SUMM;
%PAGE;
PROC_AVG: PROC OPTIONS(REENTRANT) REORDER;
/* CLEAR MAP */
SUBSTR(ADDR(IXGMAP8O)->STR,1,STG(IXGMAP8O))=LOW(STG(IXGMAP8O));
EXEC CICS READQ TS QUEUE(TSQNAME) INTO(REAL_RECORD) ITEM(MAXITEM)
RESP(XRESP);
MCURINTVO = MAXITEM;
MMAXINTVO = MAXITEM;
/* ************************************************ */
/* PRODUCT SECTION */
SMF88SYNO = SMF88SYN; /* MVS OPERATION SYSTEM NAME */
SMF88OSLO = SMF88OSL; /* MVS RELEASE */
/* ************************************************ */
/* LOGSTREAM SECTION */
SMF88LSNO = SMF88LSN; /* LOG STREAM NAME */
SMF88LWIO = ACCUMULATOR(SMF88LWI_ACCUM_TABIDX) / MAXITEM;
SMF88LTDO = SUBSTR(SMF88PNM,1,4) || '/' || /* YYYY */
SUBSTR(SMF88PNM,5,2) || '/' || /* MM */
SUBSTR(SMF88PNM,7,2) || SPACE || /* DD */
SUBSTR(SMF88LIT,1,2) || ':' || /* HH */
SUBSTR(SMF88LIT,3,2) || ':' || /* MM */
SUBSTR(SMF88LIT,5,2); /* SS */
SMF88LIBO = FLOAT(UNSPEC(SMF88LIB),32); /* MIN.BLOCKLEN */
SMF88LABO = FLOAT(UNSPEC(SMF88LAB),32); /* MAX.BLOCKLEN */

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 53


SMF88LWBO = ACCUMULATOR(SMF88LWB_ACCUM_TABIDX) / MAXITEM;
SMF88STNO = SMF88STN;
SMF88SWBO = ACCUMULATOR(SMF88SWB_ACCUM_TABIDX) / MAXITEM;
SMF88LDBO = ACCUMULATOR(SMF88LDB_ACCUM_TABIDX) / MAXITEM;
SMF88SIBO = ACCUMULATOR(SMF88SIB_ACCUM_TABIDX) / MAXITEM;
SMF88SABO = ACCUMULATOR(SMF88SAB_ACCUM_TABIDX) / MAXITEM;
SMF88SIIO = ACCUMULATOR(SMF88SII_ACCUM_TABIDX) / MAXITEM;
SMF88SAIO = ACCUMULATOR(SMF88SAI_ACCUM_TABIDX) / MAXITEM;
SMF88SC1O = ACCUMULATOR(SMF88SC1_ACCUM_TABIDX) / MAXITEM;
SMF88SC2O = ACCUMULATOR(SMF88SC2_ACCUM_TABIDX) / MAXITEM;
SMF88SC3O = ACCUMULATOR(SMF88SC3_ACCUM_TABIDX) / MAXITEM;
SMF88EDSO = ACCUMULATOR(SMF88EDS_ACCUM_TABIDX) / MAXITEM;
SMF88ERIO = ACCUMULATOR(SMF88ERI_ACCUM_TABIDX) / MAXITEM;
SMF88ERCO = ACCUMULATOR(SMF88ERC_ACCUM_TABIDX) / MAXITEM;
SMF88ESFO = ACCUMULATOR(SMF88ESF_ACCUM_TABIDX) / MAXITEM;
SMF88ETTO = ACCUMULATOR(SMF88ETT_ACCUM_TABIDX) / MAXITEM;
SMF88ETFO = ACCUMULATOR(SMF88ETF_ACCUM_TABIDX) / MAXITEM;
SMF88EOAO = ACCUMULATOR(SMF88EOA_ACCUM_TABIDX) / MAXITEM;
SMF88EFSO = ACCUMULATOR(SMF88EFS_ACCUM_TABIDX) / MAXITEM;
SMF88EDOO = ACCUMULATOR(SMF88EDO_ACCUM_TABIDX) / MAXITEM;
PF23H = DFHREVRS;
CALL SEND_MAP;
RETURN;
END PROC_AVG;
%PAGE;
CLEAR_MAP: PROC;
SUBSTR(ADDR(IXGMAP8O)->STR,1,STG(IXGMAP8O))=LOW(STG(IXGMAP8O));
RETURN;
END CLEAR_MAP;
%PAGE;
SEND_MAP: PROC;
EXEC CICS SEND MAP('IXGMAP8') MAPSET('IXGMAPS') FROM(IXGMAP8O)
ALTERNATE ERASE RESP(XRESP);
RETURN;
END SEND_MAP;
END IXGSMF8;

COPYBOOK SMF88STR
You will find a detailed description of system logger data record type 88
(X'58') mapping in MVS System Management Facilities (GC28-1783-
09) on pages 13-477 – 13-482.
DECLARE
RECORD AREA (32756);
DECLARE
1 SMFREC BASED(ADDR(RECORD)),
2 RESERVED CHAR (4),

54 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
2 REAL_RECORD CHAR (32752);
DCL 1 SMFRCD88 BASED(ADDR(RECORD)),
2 RSVD1 CHAR(4),
2 SMF88FLG BIT (8),
2 SMF88RTY BIT (8),
2 SMF88TME CHAR(4),
2 SMF88DTE FIXED DECIMAL (7),
2 SMF88SID CHAR(4),
2 SMF88WID CHAR(4),
2 SMF88STP FIXED BINARY (15),
2 SMF88SDS,
3 SMF88SDL FIXED BINARY (31),
3 SMF88POF OFFSET (RECORD),
3 SMF88PLN FIXED BINARY (15),
3 SMF88PON FIXED BINARY (15),
3 SMF88LOF OFFSET (RECORD),
3 SMF88LLN FIXED BINARY (15),
3 SMF88LON FIXED BINARY (15),
3 SMF88EOF OFFSET (RECORD),
3 SMF88ELN FIXED BINARY (15),
3 SMF88EON FIXED BINARY (15),
3 SMF88SOF OFFSET (RECORD),
3 SMF88SLN FIXED BINARY (15),
3 SMF88SON FIXED BINARY (15);
DCL 1 SMF88PSD BASED(SMF88POF),
3 SMF88TYP FIXED BINARY (15),
3 SMF88RVN CHAR(2),
3 SMF88PNM CHAR(8),
3 SMF88OSL CHAR(8),
3 SMF88SYN CHAR(8);
DCL 1 SMF88LSD BASED(SMF88LOF),
3 SMF88LIT CHAR(8),
3 SMF88LSN CHAR(26),
3 SMF88LFL,
5 RSVD2 BIT(1),
5 SMF88LFT BIT(1),
5 RSVD3 BIT(14),
3 SMF88LTD CHAR(8),
3 SMF88LWI CHAR(4),
3 SMF88LIB CHAR(4),
3 SMF88LAB CHAR(4),
3 SMF88LWB CHAR(8),
3 SMF88LDB CHAR(8);
DCL 1 SMF88ESD BASED(SMF88EOF),
3 SMF88EDS CHAR(4),
3 SMF88ERI CHAR(4),
3 SMF88ERC CHAR(4),
3 SMF88ESF CHAR(4),
3 SMF88ETT CHAR(4),
3 SMF88ETF CHAR(4),

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 55


3 SMF88EO CHAR(4),
3 SMF88EFS CHAR(4),
3 SMF88EDO CHAR(4);
DCL 1 SMF88SSD BASED(SMF88SOF),
3 SMF88STN CHAR(16),
3 SMF88SWB CHAR(8),
3 SMF88SIB CHAR(8),
3 SMF88SAB CHAR(8),
3 RSVD4,
3 SMF88SII BIT(32),
3 SMF88SAI BIT(32),
3 SMF88SC1 BIT(32),
3 SMF88SC2 BIT(32),
3 SMF88SC3 BIT(32),
3 RSVD5 CHAR(4);

MAPSET IXGMAPS
IXGMAPS DFHMSD TYPE=DSECT,MODE=OUT,CTRL=FREEKB,LANG=PLI, *
MAPATTS=(COLOR,HILIGHT), *
DSATTS=(COLOR,HILIGHT),STORAGE=AUTO
**********************************************************************
* LOCAL LOG STREAMS ON CRT *
**********************************************************************
IXGMAP1 DFHMDI SIZE=(24,8Ø)
DFHMDF POS=(Ø2,18),LENGTH=4Ø,COLOR=BLUE, *
INITIAL='SYSTEM LOGGER ACTIVITY REPORT (IXGRPTC)'
DFHMDF POS=(Ø5,1Ø),LENGTH=65,COLOR=BLUE, *
INITIAL='JOURNALNAME STREAMNAME TYPE *
STATUS '
DFHMDF POS=(Ø6,1Ø),LENGTH=65,COLOR=BLUE, *
INITIAL='----------------------------------------------*
---------'
LSN DFHMDF POS=(Ø7,Ø1),LENGTH=79,OCCURS=12,COLOR=GREEN
DFHMDF POS=(2Ø,Ø1),LENGTH=79,COLOR=NEUTRAL,INITIAL='NOTE: PUT
*
THE CURSOR ON A STREAMNAME AND PRESS ENTER KEY'
SYSID DFHMDF POS=(22,54),LENGTH=26,COLOR=TURQUOISE*
DFHMDF POS=(24,Ø1),LENGTH=2,COLOR=GREEN,INITIAL='PF'
DFHMDF POS=(24,Ø4),LENGTH=1,COLOR=TURQUOISE,INITIAL='3'
DFHMDF POS=(24,Ø6),LENGTH=4,COLOR=GREEN,INITIAL='END '
**********************************************************************
* ERROR MESSAGES *
**********************************************************************
INVCURS DFHMDI SIZE=(24,8Ø)
DFHMDF POS=(21,Ø1),LENGTH=4Ø,COLOR=RED, *
INITIAL='*** CURSOR NOT ON A VALID STREAMNAME ***'
INVKEY DFHMDI SIZE=(24,8Ø)
DFHMDF POS=(21,Ø1),LENGTH=42,COLOR=RED, *

56 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
INITIAL='*** INVALID PF KEY. PRESS PF3 OR ENTER ***'
INVSCRN DFHMDI SIZE=(24,8Ø)
DFHMDF POS=(21,Ø1),LENGTH=5Ø,COLOR=RED, *
INITIAL='*** INVALID SCREEN SIZE. 27X132 MANDATORY ***'
**********************************************************************
* SMF88 RECORD ON CRT *
**********************************************************************
IXGMAP8 DFHMDI SIZE=(27,132)
* --------------------- LINE 1 --------------------------------*
DFHMDF POS=(Ø1,4Ø),LENGTH=4Ø,COLOR=BLUE, *
INITIAL='SYSTEM LOGGER ACTIVITY REPORT (IXGRPTC)'
* --------------------- LINE 2 --------------------------------*
* --------------------- LINE 3 --------------------------------*
DFHMDF POS=(Ø3,1ØØ),LENGTH=13,COLOR=BLUE, *
INITIAL='SMF INTERVAL:'
MCURINTV DFHMDF POS=(Ø3,115),LENGTH=Ø5,COLOR=GREEN,PICOUT='ZZZZ9'
DFHMDF POS=(Ø3,121),LENGTH=Ø1,COLOR=GREEN,INITIAL='/'
MMAXINTV DFHMDF POS=(Ø3,123),LENGTH=Ø5,COLOR=GREEN,PICOUT='ZZZZ9'
* --------------------- LINE 4 --------------------------------*
DFHMDF POS=(Ø4,Ø1),LENGTH=13Ø,COLOR=TURQUOISE, *
INITIAL='-------------- PRODUCT SECTION ---------------*
--------------------------------------------------------*
---------------------------'
* --------------------- LINE 5 --------------------------------*
DFHMDF POS=(Ø5,Ø1),LENGTH=26,COLOR=BLUE, *
INITIAL='MVS OPERATION SYSTEM NAME:'
SMF88SYN DFHMDF POS=(Ø5,3Ø),LENGTH=Ø8,COLOR=GREEN
DFHMDF POS=(Ø5,5Ø),LENGTH=Ø9,COLOR=BLUE, *
INITIAL='RELEASE:'
SMF88OSL DFHMDF POS=(Ø5,63),LENGTH=8,COLOR=GREEN
* --------------------- LINE 6 --------------------------------*
DFHMDF POS=(Ø6,Ø1),LENGTH=13Ø,COLOR=TURQUOISE, *
INITIAL='-------------- LOG STREAM SECTION ------------*
-------------------------------------------------------*
---------------------------'
* --------------------- LINE 7 --------------------------------*
DFHMDF POS=(Ø7,Ø1),LENGTH=17,COLOR=BLUE, *
INITIAL='LOG STREAM NAME: '
SMF88LSN DFHMDF POS=(Ø7,2Ø),LENGTH=26,COLOR=GREEN
DFHMDF POS=(Ø7,5Ø),LENGTH=Ø9,COLOR=BLUE, *
INITIAL='TOD-TIME:'
SMF88LTD DFHMDF POS=(Ø7,6Ø),LENGTH=19,COLOR=GREEN
* --------------------- LINE 8 --------------------------------*
DFHMDF POS=(Ø8,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='# WRITES INVOKED : '
SMF88LWI DFHMDF POS=(Ø8,34),COLOR=GREEN,LENGTH=19, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
* --------------------- LINE 9 --------------------------------*
DFHMDF POS=(Ø9,Ø1),LENGTH=32,COLOR=BLUE, *

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 57


INITIAL='BYT WRITTN BY USERS IXGWRITES : '
SMF88LWB DFHMDF POS=(Ø9,34),COLOR=GREEN,LENGTH=19, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
* --------------------- LINE 1Ø -------------------------------*
DFHMDF POS=(1Ø,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='MIN. BLOCKLEN IN SMF INTERVAL : '
SMF88LIB DFHMDF POS=(1Ø,34),COLOR=GREEN,LENGTH=19, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(1Ø,54),LENGTH=78,COLOR=NEUTRAL, *
INITIAL='(INITIALIZED TO X"7FFFFFFF" IF NO SMF ACTIVITY*
OCCURS WITHIN AN SMF INTERVAL.)'
* --------------------- LINE 11 -------------------------------*
DFHMDF POS=(11,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='MAX. BLOCKLEN IN SMF INTERVAL : '
SMF88LAB DFHMDF POS=(11,34),COLOR=GREEN,LENGTH=19, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
* --------------------- LINE 12 -------------------------------*
DFHMDF POS=(12,Ø1),LENGTH=13Ø,COLOR=TURQUOISE, *
INITIAL='-------------- STRUCTURE (INTERIM STORAGE) SECT*
ION ------------------------------------------ (DASD) -*
---------------------------'
* --------------------- LINE 13 -------------------------------*
DFHMDF POS=(13,Ø1),LENGTH=15,COLOR=BLUE, *
INITIAL='STRUCTURE NAME:'
SMF88STN DFHMDF POS=(13,17),LENGTH=16,COLOR=GREEN
* --------------------- LINE 14 -------------------------------*
DFHMDF POS=(14,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='BYT WRITTN TO INTERIM STORAGE :'
SMF88SWB DFHMDF POS=(14,34),LENGTH=19,COLOR=GREEN, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(14,6Ø),LENGTH=32,COLOR=BLUE, *
INITIAL='BYT WRITTN TO DASD :'
SMF88LDB DFHMDF POS=(14,93),LENGTH=19,COLOR=RED, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
* --------------------- LINE 15 -------------------------------*
DFHMDF POS=(15,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='BYT DELETD INTERIM ST W/O DASD :'
SMF88SIB DFHMDF POS=(15,34),LENGTH=19,COLOR=GREEN, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(15,6Ø),LENGTH=32,COLOR=BLUE, *
INITIAL='BYT DELETD INTERIM ST W/DASD :'
SMF88SAB DFHMDF POS=(15,93),LENGTH=19,COLOR=RED, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
* --------------------- LINE 16 -------------------------------*
DFHMDF POS=(16,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='# DELETES W/O DASD WRITE :'
SMF88SII DFHMDF POS=(16,34),LENGTH=19,COLOR=GREEN, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(16,6Ø),LENGTH=32,COLOR=BLUE, *

58 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
INITIAL='# DELETS W/WRITE :'
SMF88SAI DFHMDF POS=(16,93),LENGTH=19,COLOR=RED, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZZ.ZZ9'
* --------------------- LINE 17 -------------------------------*
DFHMDF POS=(17,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='# WRITES COMPLETED - TYPE 1 :'
SMF88SC1 DFHMDF POS=(17,34),LENGTH=15,COLOR=GREEN, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(17,5Ø),LENGTH=8Ø,COLOR=NEUTRAL, *
INITIAL='(TYPE1 = LOG STREAM CONTENTS CAN REMAIN IN STRU*
CTURE. NO NEED TO MOVE DATA.)'
* --------------------- LINE 18 -------------------------------*
DFHMDF POS=(18,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='# WRITES COMPLETED - TYPE 2 :'
SMF88SC2 DFHMDF POS=(18,34),LENGTH=15,COLOR=GREEN, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(18,5Ø),LENGTH=8Ø,COLOR=NEUTRAL, *
INITIAL='(TYPE2 = LOG STREAM IS FILLING THE STRUCTURE. L*
OGGER STARTS OFFL. ASYNC.)'
* --------------------- LINE 19 -------------------------------*
DFHMDF POS=(19,Ø1),LENGTH=32,COLOR=BLUE, *
INITIAL='# WRITES COMPLETED - TYPE 3 :'
SMF88SC3 DFHMDF POS=(19,34),LENGTH=15,COLOR=GREEN, *
PICOUT='ZZZ.ZZZ.ZZZ.ZZ9'
DFHMDF POS=(19,5Ø),LENGTH=8Ø,COLOR=NEUTRAL, *
INITIAL='(TYPE3 = SPACE USED IN THE STRUCTURE IS CRITICA*
L BUT DOES NOT EXCEED 1ØØ%.)'
* --------------------- LINE 2Ø -------------------------------*
DFHMDF POS=(2Ø,Ø1),LENGTH=13Ø,COLOR=TURQUOISE, *
INITIAL='-------------- EVENTS SECTION ----------------*
-------------------------------------------------------*
---------------------------'
* --------------------- LINE 21 -------------------------------*
DFHMDF POS=(21,Ø1),LENGTH=11,COLOR=BLUE,INITIAL='DASD SHFT :'
SMF88EDS DFHMDF POS=(21,13),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(21,25),LENGTH=11,COLOR=BLUE,INITIAL='STRC FULL :'
SMF88ESF DFHMDF POS=(21,37),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(21,5Ø),LENGTH=11,COLOR=BLUE,INITIAL='OFFLOADS :'
SMF88EOA DFHMDF POS=(21,62),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(21,7Ø),LENGTH=6Ø,COLOR=NEUTRAL,INITIAL=' (NUMBER O*
F SUCCESSFUL OFFLOADS)'
* --------------------- LINE 22 -------------------------------*
DFHMDF POS=(22,Ø1),LENGTH=11,COLOR=BLUE,INITIAL='REBLD INI :'
SMF88ERI DFHMDF POS=(22,13),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(22,25),LENGTH=11,COLOR=BLUE,INITIAL='STG THLD :'
SMF88ETT DFHMDF POS=(22,37),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(22,5Ø),LENGTH=11,COLOR=BLUE,INITIAL='OFFL.9Ø% :'
SMF88EFS DFHMDF POS=(22,62),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(22,7Ø),LENGTH=6Ø,COLOR=NEUTRAL,INITIAL=' (NO.OF SU*
SUCCESSFUL OFFLOADS DUE TO STRUC.REACHING 9Ø% FULL)'

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 59


* --------------------- LINE 23 -------------------------------*
DFHMDF POS=(23,Ø1),LENGTH=11,COLOR=BLUE,INITIAL='REBLD CMP :'
SMF88ERC DFHMDF POS=(23,13),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(23,25),LENGTH=11,COLOR=BLUE,INITIAL='STG FULL :'
SMF88ETF DFHMDF POS=(23,37),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(23,5Ø),LENGTH=11,COLOR=BLUE,INITIAL='IXGOFFLD :'
SMF88EDO DFHMDF POS=(23,62),LENGTH=7,COLOR=RED,PICOUT='ZZZ.ZZ9'
DFHMDF POS=(23,7Ø),LENGTH=6Ø,COLOR=NEUTRAL,INITIAL=' (NUMBER O*
F TIMES AN OFFLOAD WAS REQUESTED VIA IXGOFFLD SERVICE)'
* --------------------- LINE 24 -------------------------------*
DFHMDF POS=(24,Ø1),LENGTH=13Ø,COLOR=TURQUOISE, *
INITIAL='----------------------------------------------*
-------------------------------------------------------*
---------------------------'
* --------------------- LINE 25 -------------------------------*
MSG DFHMDF POS=(25,Ø1),LENGTH=13Ø,COLOR=RED
* --------------------- LINE 26 -------------------------------*
DFHMDF POS=(26,Ø1),LENGTH=2,COLOR=YELLOW,INITIAL='PF'
DFHMDF POS=(26,Ø4),LENGTH=2,COLOR=TURQUOISE,INITIAL=' 3'
PF3 DFHMDF POS=(26,Ø7),LENGTH=9,COLOR=YELLOW,INITIAL='RETURN '
DFHMDF POS=(26,17),LENGTH=2,COLOR=TURQUOISE,INITIAL=' 7'
PF7 DFHMDF POS=(26,2Ø),LENGTH=9,COLOR=YELLOW,INITIAL='UP '
DFHMDF POS=(26,3Ø),LENGTH=2,COLOR=TURQUOISE,INITIAL=' 8'
PF8 DFHMDF POS=(26,33),LENGTH=9,COLOR=YELLOW,INITIAL='DOWN '
DFHMDF POS=(26,43),LENGTH=2,COLOR=TURQUOISE,INITIAL=' 9'
PF9 DFHMDF POS=(26,46),LENGTH=9,COLOR=YELLOW,INITIAL='FIRST I. '
DFHMDF POS=(26,56),LENGTH=2,COLOR=TURQUOISE,INITIAL='1Ø'
PF1Ø DFHMDF POS=(26,59),LENGTH=9,COLOR=YELLOW,INITIAL='MIDLE I. '
DFHMDF POS=(26,69),LENGTH=2,COLOR=TURQUOISE,INITIAL='11'
PF11 DFHMDF POS=(26,72),LENGTH=9,COLOR=YELLOW,INITIAL='LAST I. '
DFHMDF POS=(26,82),LENGTH=2,COLOR=TURQUOISE,INITIAL=' '
DFHMDF POS=(26,85),LENGTH=3Ø,COLOR=NEUTRAL, *
INITIAL=' (I. = SMF INTERVAL)'
* --------------------- LINE 27 -------------------------------*
DFHMDF POS=(27,Ø1),LENGTH=2,COLOR=YELLOW,INITIAL='PF'
DFHMDF POS=(27,Ø4),LENGTH=2,COLOR=TURQUOISE,INITIAL='13'
PF13 DFHMDF POS=(27,Ø7),LENGTH=9,COLOR=YELLOW,INITIAL='DASD SHFT'
DFHMDF POS=(27,17),LENGTH=2,COLOR=TURQUOISE,INITIAL='14'
PF14 DFHMDF POS=(27,2Ø),LENGTH=9,COLOR=YELLOW,INITIAL='OFFLOAD '
DFHMDF POS=(27,3Ø),LENGTH=2,COLOR=TURQUOISE,INITIAL='15'
PF15 DFHMDF POS=(27,33),LENGTH=9,COLOR=YELLOW,INITIAL='STG FULL '
DFHMDF POS=(27,43),LENGTH=2,COLOR=TURQUOISE,INITIAL='16'
PF16 DFHMDF POS=(27,46),LENGTH=9,COLOR=YELLOW,INITIAL='STG THLD '
DFHMDF POS=(27,56),LENGTH=2,COLOR=TURQUOISE,INITIAL='17'
PF17 DFHMDF POS=(27,59),LENGTH=9,COLOR=YELLOW,INITIAL='STR FULL '
DFHMDF POS=(27,69),LENGTH=2,COLOR=TURQUOISE,INITIAL='18'
PF18 DFHMDF POS=(27,72),LENGTH=9,COLOR=YELLOW,INITIAL='OFFL.9Ø% '
DFHMDF POS=(27,82),LENGTH=2,COLOR=TURQUOISE,INITIAL=' '
DFHMDF POS=(27,85),LENGTH=9,COLOR=YELLOW,INITIAL=' '

60 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
DFHMDF POS=(27,95),LENGTH=2,COLOR=TURQUOISE,INITIAL='23'
PF23 DFHMDF POS=(27,98),LENGTH=9,COLOR=YELLOW,INITIAL='AVERAGE '
DFHMDF POS=(27,1Ø8),LENGTH=2,COLOR=TURQUOISE,INITIAL='24'
PF24 DFHMDF POS=(27,111),LENGTH=9,COLOR=YELLOW,INITIAL='TOTALS '
DFHMDF POS=(27,121),LENGTH=2,COLOR=TURQUOISE,INITIAL=' '
DFHMSD TYPE=FINAL
END

Erhard Woerner
CICS Support Group
IBM (Germany) © IBM 2002

Monitoring CICS activity

This article describes how to keep an on-line and historical view of all the
system and application activities in the CICS session, which are written to
an application and/or CICS transient data. This process is done almost
automatically.
We have developed a rather simple method to keep a close track on these
activities, to archive those activities onto a monthly tape while CICS is
running, ensuring that each month has its own tape, and to ensure data
continuity when CICS is terminated or cancelled.
The solution described here is valid for any installation that uses CICS/
ESA with JES2 and SDSF. It has been tested on CICS Versions 3.3 and 4.1
with MVS and OS/390.

APPLICATION AND SYSTEM QUEUES


To start from the DCT, we have a TD queue whose name is well
known to all the application programmers. This name is stored in the CICS
CWA. The application programmer can retrieve the name from the CWA
and use this queue to write application notes about things that are worth
taking care of but are not critical enough to be written to the system console.
In the test environment this queue may be used as a debugging tool.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 61


We use the DCT indirection mechanism to point from the queue logical
name to the extra-partition queue, and from the extra-partition queue to
the SDSCI. The DCT source code is listed below:
DFHDCT TYPE=SDSCI, DSCNAME=DCPMJNA, RECSIZE=142, BLKSIZE=146,
BUFNO=1,RECFORM=VARUNB, TYPEFLE=OUTPUT
……………
DFHDCT TYPE=EXTRA, DESTID=DJNA, DSCNAME=DCPMJNA, OPEN=INITIAL
…………….
DFHDCT TYPE=INDIRECT, DESTID=DCPM, INDDEST=DJNA
……………………..

DFHDCT TYPE=SDSCI, DSCNAME=DCPMJNF, RECSIZE=142, BLKSIZE=146,


BUFNO=1,RECFORM=VARUNB, TYPEFLE=OUTPUT
……………
DFHDCT TYPE=EXTRA, DESTID=DJNF, DSCNAME=DCPMJNF, OPEN=INITIAL
…………….
DFHDCT TYPE=INDIRECT, DESTID=SKØ3, INDDEST=DJNA

In the table above there are two ‘application’ queues – one is for the general
application queue, and the other is for the ATM sub-system, which is
monitored by a different group of people.
For the CICS system programmer, all CICS system queues (full description
of which might be found in the CICS resource definition macro) have been
split into two groups:
• The CICS system queues that deal with terminals and VTAM-CICS
activity.
• The rest of the CICS system queues.
This separation has been done because the queues that hold ‘network’
information tend to be very big, and it is more convenient to see the
messages sent to the ‘non-network’ queue.
It is possible, of course, to point from many indirect queues to one extra-
partition queue, although in this method data from different queues mix
in the extra-partition queue.
On the whole, in our shop, we keep four different SDSCI. They are for:
• The main application log.
• The ‘special’ application log.

62 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
• General CICS queue.
• The CICS queues that deal with terminals, VTAM-CICS transportation,
etc.
It is an installation decision whether and how to split the CICS queue into
different DDnames. One might consider splitting the ‘application logs’ by
the degree of severity. Another method is to keep all the CICS built-in
queues, which deal with the RDO, in a single separate DDname to keep an
eye on the RDO activity. Anyhow, the mechanism described here can be
tailored easily.
In our CICS job we have four DDnames, one for each SDSCI.
The declarations of those DD cards are listed below:
//DCPMJNT DD SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=66Ø),FREE=CLOSE
//DCPMJNL DD SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=66Ø),FREE=CLOSE
//DCPMJNA DD SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=73Ø)
//DCPMJNF DD SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=73Ø)

The ‘FREE=CLOSE’ parameter means that whenever the external queue,


which points to the SDSCI, is closed in CICS, the DDname will be freed.
The BLKSIZE parameter should be chosen according to the installation,
but one should not use too big a block size, because this will cause a delay
in writing some of the records to JES.

DETECTING THE QUEUE CONTENTS WHILE CICS IS RUNNING


The output of the queues is written to JES2, so it is possible, while CICS
is running, for the application programmers to see all the records that were
written to the transient data. After locating the CICS job in JES, using the
SDSF display command ‘?’ will show all the DDnames.
An example is shown below:
DCPMJNA SS5ØCICP 139 MMU M 3,257 389,474 1
DCPMJNF SS5ØCICP 138 MMU M 1,352 154,574 1
DCPMJNL SS5ØCICP 137 MMU M 1,446 136,37Ø 1
DCPMJNT SS5ØCICP 136 MMU M 28,49Ø 2M 1
DCPMJNA SS5ØCICP 135 MMU M LOCAL 2,74Ø 319,299 1 3 12 LINE
DCPMJNF SS5ØCICP 134 MMU M LOCAL 8Ø6 115,948 1 3 11 LINE
DCPMJNL SS5ØCICP 133 MMU M LOCAL 787 68,Ø1Ø 1 3 1Ø LINE
DCPMJNT SS5ØCICP 132 MMU M LOCAL 13,2Ø3 1M 1 3 9 LINE

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 63


DCPMJNA SS5ØCICP 131 MMU M LOCAL 4,628 567,519 1 3 8 LINE
DCPMJNF SS5ØCICP 13Ø MMU M LOCAL 782 115,Ø9Ø 1 3 7 LINE
DCPMJNL SS5ØCICP 129 MMU M LOCAL 942 83,Ø43 1 3 6 LINE
DCPMJNT SS5ØCICP 128 MMU M LOCAL 37,998 3M 1 3 5 LINE
DCPMJNF SS5ØCICP 125 MMU M LOCAL 417 61,972 1 3 3 LINE
DCPMJNA SS5ØCICP 124 MMU M LOCAL 2,5Ø3 281,485 1 3 4 LINE
DCPMJNL SS5ØCICP 123 MMU M LOCAL 1,353 13Ø,Ø76 1 3 2 LINE
DCPMJNT SS5ØCICP 122 MMU M LOCAL 19,131 1M 1 3 1 LINE
GDMT SS5ØCICP 11Ø MMU A Ø 1
DFHCXRF SS5ØCICP 1Ø6 MMU T 68 7,816 1

The default sort of the DDnames is by DSID. Using this sort, the currently
active DDname will always display on the top of the list, so if the
application programmer wishes to see the current notes of his/her application
he/she will select ‘S’ near the DCPMJNA on the top of the list.
Application DDname can be easily located. The programmer can now see
all the messages that were issued by the application. The system programmer
can look at a different DDname to see what is going on in CICS.

SWITCHING TO A NEW GENERATION


In order to switch to a new generation, four operations have to be
performed inside CICS:
• All the queues (the extra-partition queues) must be closed. The syntax
of the command is:
CEMT SET TDQ(DJN*) CLOSE

• All the DDnames must be de-allocated using SVC99. The syntax of


the command is:
ADYN FREE DDname(DCPMJN*) UNALLOC

This step is not necessary if ‘FREE=CLOSE’ is declared.


• The new DDname must be allocated again using:
ADYN ALLOC DDname(DCPMJN*) SYSOUT(M)

• Lastly, the queue should be opened again using:


CEMT SET TDQ(DJN*) open

64 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
The * stands for all the suffixes of the queues and DDnames.
Between the queue closing and re-opening it is impossible to write to it,
but since this is a very short period, at non-business hours, it is not a
problem.
Right after the DDname is allocated again, a new generation is created, and
a batch program may be used to copy the older generation to a monthly tape.

AUTOMATING THE SWITCHING PROCESS


The sequence of four operations, described above, can be carried out in
several ways:
• Using a product (in our case Control-O from BMC/New Dimension)
to log into the CICS and use the transaction ADYN. This solution
works for us in our production environment. The transaction ADYN
comes with the CICS installation in the group DFH$UTIL.
The source of the Control-O program is attached to this article, but
it is useless for CICS installations that do not have
Control/O. This source program can be used as an example of how to
use TDYN Transaction after signing on to CICS.
• Using the transaction TDYN and the program it starts to de-allocate
and allocate the DD cards. TDYN has the same functionality as
ADYN, but it is not a conversational transaction and, as such, does not
require any terminal to be logged on. This is a general solution, which
will hold for any CICS-MVS installation. Its disadvantage is that there
is no control over the results of the allocation/de-allocation.
TPADYN3 is the Assembler program that the TDYN transaction uses.
The source of TPADYN3 and the routine it uses, JHTRT, are part of
this article. Please note that with slight modifications this program
may be useful for other tasks in CICS system programming.
• It is also possible to use the CICS external interface (EXCI) to issue
the DFH99 program. The advantage of this solution is that there is full
control and guarantee over the results of the allocation/de-allocation.
The disadvantage is that EXCI is rather complicated.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 65


A batch-to-CICS interface can be found in the February 1999 issue
of CICS Update, Issue 159, pages 25-31, Exploiting EXCI to manage
CICS files from batch.
In each of the methods selected, first de-allocation and then allocation must
be done. If the parameter ‘FREE=CLOSE’ is defined in the CICS job JCL,
then de-allocation is simple, using CEMT to close the external queue.
Closing the queue will flush all the records to JES and the queue will be
de-allocated. If ‘FREE=CLOSE’ is not defined, then after closing the
queue it must be de-allocated by using ADYN or TDYN, which eventually
issues the MVS SVC99.
The process of de-allocation and allocation must be done, of course, for
all the queues. After the de-allocation and allocation of the queue, a new
DDname will appear in JES2 and all the activities of the CICS system and
applications will be written into the new DDname.
If the process of de-allocation and allocation is done daily at 5am, then each
DDname represents the CICS activities for the day. This information will
be kept on JES until CICS is recycled.

KEEPING AND MAINTAINING THE ACTIVITIES


After the switching (de-allocation and allocation) has taken place, the data
should be collected from JES and stored on a monthly tape. The scheduler
(in our case Control-M) does this immediately after the de-allocation and
allocation program (which is done inside CICS). It starts the following job:
//SSØ1DCPP JOB (SSØ4,626,99),SDSFBAT,NOTIFY=SØØ4
//*************************************************************
//* SDSF batch job to release CICS massive printing *
//* this job must run on a system where CICS is running *
//* the first two steps simply invoke from batch program SDSF *
//* which allows the user to imitate the on-line operations *
//* from batch. Note that when this program is running the second
//* DDname is what we want to copy to the tape, since the
//* "log switching" has already been done
//*************************************************************
//EXEC PGM=SDSF,PARM='++24,131'
//ISFOUT DD SYSOUT=T
//ISFIN DD *
PREFIX SS5Ø*

66 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
DA
FIND SS5ØCICP
++?
SORT DSID D
FIND DCPMJNA
DOWN 1
FIND DCPMJNA
++S
PRINT ODSN 'SYSO.DCPMJNA' * MOD
PRINT
PRINT CLOSE
//EXEC PGM=SDSF,PARM='++24,131'
//ISFOUT DD SYSOUT=T
//ISFIN DD *
PREFIX SS5Ø*
DA
FIND SS5ØCICP
++?
SORT DSID D
FIND DCPMJNF
DOWN 1
FIND DCPMJNF
++S
PRINT ODSN 'SYSO.DCPMJNF' * MOD
PRINT
PRINT CLOSE
//* .——————————————————.
//* | |
//* | STEP #1 : |
//* | CICS/LOG DATE CHECK |
//* | POSSIBLE RC: |
//* | 1Ø...NEW DAY |
//* | 2Ø...NEW MONTH |
//* | 2Ø...NEW YEAR |
//* | 99...SAME DAY |
//* | |
//* .——————————————————.
/*
//CHECKDT EXEC PGM=IKJEFTØ1,DYNAMNBR=3Ø,TIME=144Ø
//SYSTSPRT DD SYSOUT=T
//SYSPRINT DD SYSOUT=M
//SYSPROC DD DSN=SYS2.CLIST,DISP=SHR
//ISPPLIB DD DSN=SYS1.ISP.SISPPENU,DISP=SHR
//ISPMLIB DD DSN=SYS1.ISP.SISPMENU,DISP=SHR
//ISPSLIB DD DSN=SYS1.ISP.SISPSLIB,DISP=SHR
//ISPTLIB DD DSN=SYS1.ISP.SISPTENU,DISP=SHR
//ISPPROF DD UNIT=VIO,SPACE=(TRK,(9,1,4)),
// DCB=(LRECL=8Ø,BLKSIZE=312Ø,RECFM=FB)
//ISPTABL DD UNIT=VIO,SPACE=(TRK,(9,1,4)),

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 67


// DCB=(LRECL=8Ø,BLKSIZE=312Ø,RECFM=FB)
//ISPLIST DD DSN=&&LIST,UNIT=VIO,SPACE=(TRK,(1,1)),
// DCB=(LRECL=121,BLKSIZE=121Ø,RECFM=FBA)
//ISPLOG DD DSN=&&LOG,UNIT=VIO,SPACE=(TRK,(1,1)),
// DCB=(LRECL=121,BLKSIZE=121Ø,RECFM=FBA)
//TMOND DD DSN=SYSO.CICSPROD.DATEBU,DISP=SHR
//SYSTSIN DD DSN=PMTF.PARMLIB(CHKDATE),DISP=SHR
//*
//* .——————————————————.
//* | |
//* | STEP #2 : |
//* | IF IT IS THE SAME DATE, |
//* | THE BACK-UP WAS RERUN - |
//* | COPY RO THE SAME MONTH |
//* .——————————————————.
//*NODUMP EXEC PGM=IEFBR14,
//* COND=(99,NE,CHECKDT)
//DUMSDAY1 EXEC PGM=IEBGENER,
// COND=(99,NE,CHECKDT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SYSO.DCPMJNA,DISP=SHR
//SYSUT2 DD DSN=SYSO.CICSLOGT.DCPMJNA(Ø),DISP=MOD
//SYSIN DD DUMMY
/*
//DUMSDAY2 EXEC PGM=IEBGENER,
// COND=(99,NE,CHECKDT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SYSO.DCPMJNF,DISP=SHR
//SYSUT2 DD DSN=SYSO.CICSLOGT.DCPMJNF(Ø),DISP=MOD
//SYSIN DD DUMMY
//*
//*
//* .——————————————————.
//* | |
//* | STEP #3 : |
//* | IF IT IS A NEW DAY AT |
//* | THE SAME MONTH |
//* | WRITE INTO EXISTING TAPE |
//* .——————————————————.
//DUMPMOD1 EXEC PGM=IEBGENER,
// COND=(1Ø,NE,CHECKDT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SYSO.DCPMJNA,DISP=SHR
//SYSUT2 DD DSN=SYSO.CICSLOGT.DCPMJNA(Ø),DISP=MOD
//SYSIN DD DUMMY
/*
//DUMPMOD2 EXEC PGM=IEBGENER,
// COND=(1Ø,NE,CHECKDT)
//SYSPRINT DD SYSOUT=*

68 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
//SYSUT1 DD DSN=SYSO.DCPMJNF,DISP=SHR
//SYSUT2 DD DSN=SYSO.CICSLOGT.DCPMJNF(Ø),DISP=MOD
//SYSIN DD DUMMY
/*
//*
//* .————————————————.
//* | STEP #3 : |
//* | TAKE THE DUMPED FILE AND |
//* | COPY IT IN DISP=NEW TO |
//* | NEW CUMM. MONTH TAPE (DETAIL) |
//* |_________________________________|
/*
//COPYNEW1 EXEC PGM=IEBGENER,COND=(2Ø,NE,CHECKDT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SYSO.DCPMJNA,DISP=SHR
//SYSUT2 DD DSN=SYSO.CICSLOGT.DCPMJNA(+1),DISP=(NEW,CATLG),
// DCB=(MODEL,RECFM=VB,LRECL=125,BLKSIZE=134Ø,
// DSORG=PS),UNIT=TP9Ø ,VOLUME=(,,,5Ø)
//SYSIN DD DUMMY
/*
//*
//COPYNEW2 EXEC PGM=IEBGENER,COND=(2Ø,NE,CHECKDT)
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SYSO.DCPMJNF,DISP=SHR
//SYSUT2 DD DSN=SYSO.CICSLOGT.DCPMJNF(+1),DISP=(NEW,CATLG),
// DCB=(MODEL,RECFM=VB,LRECL=125,BLKSIZE=134Ø,
// DSORG=PS),UNIT=TP9Ø ,VOLUME=(,,,5Ø)
//SYSIN DD DUMMY
/*
//*
//RECYCL1 EXEC PGM=IEFBR14
//FILE DD DSN=SYSO.DCPMJNA,DISP=(OLD,DELETE,DELETE)
// DD DSN=SYSO.DCPMJNF,DISP=(OLD,DELETE,DELETE)
//RECYCL2 EXEC PGM=IEFBR14
//FILE DD DSN=SYSO.DCPMJNA,DISP=(NEW,CATLG),
// DCB=(MODEL,RECFM=VB,LRECL=125,BLKSIZE=134Ø,DSORG=PS),
// UNIT=339Ø,VOL=SER=TESTØ3,SPACE=(TRK,(5,1))
// DD DSN=SYSO.DCPMJNF,DISP=(NEW,CATLG),
// DCB=(MODEL,RECFM=VB,LRECL=125,BLKSIZE=134Ø,DSORG=PS),
// UNIT=339Ø,VOL=SER=TESTØ3,SPACE=(TRK,(5,1))

The job above contains a call to SYS2.CLIST(CHKDATE); the CLIST


source is attached below. What SYS2.CLIST(CHKDATE) is doing is
rather simple. It compares today’s date with the day in the file
SYSO.CICSPROD.DATEBU. It returns RC20 for a new year, 10 for a new
month, and 99 for the same month.
The execution day is copied to file SYSO.CICSPROD.DATEBU at the end

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 69


of the CLIST.
The file SYSO.CICSPROD.DATEBU should be unique at an installation.
The program was changed and it is now Y2K-enabled.
/* REXX */
TRACE N
STAT=MSG(ON)
CURDATE = DATE('E')
CURDAY = SUBSTR(CURDATE,1,2)
CURMON = SUBSTR(CURDATE,4,2)
CURYER = SUBSTR(CURDATE,7,2)
READ:
"EXECIO 1 DISKRU TMOND"
PULL TMOND
SAY 'Today is............' CURDATE
SAY 'Last run was at.....' TMOND
TMDATE = TMOND
TMDAY = SUBSTR(TMDATE,1,2)
TMMON = SUBSTR(TMDATE,4,2)
TMYER = SUBSTR(TMDATE,7,2)
NEWYEAR:
IF CURYER <> TMYER THEN DO CC = 2Ø
TMDATE = CURDATE
PUSH TMDATE
"EXECIO 1 DISKW TMOND"
SIGNAL EOF
END
NEWMON:
IF CURMON <> TMMON THEN DO CC = 2Ø
TMDATE = CURDATE
PUSH TMDATE
"EXECIO 1 DISKW TMOND"
SIGNAL EOF
END
NEWDAY:
IF CURDAY <> TMDAY THEN DO CC = 1Ø
TMDATE = CURDATE
PUSH TMDATE
"EXECIO 1 DISKW TMOND"
SIGNAL EOF
END
SAMEDAY:
IF CURDAY = TMDAY THEN CC = 99
EOF:
"EXECIO Ø DISKW TMOND (FINIS"
EXIT CC

70 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
READING THE LOG
Usually application programmers like to know what is going on now in the
currently running CICS, but sometimes they discover a problem in an
application a week or even a month later.
The method described here enables the application/system programmer to
easily browse the CICS system log, as long as the data he/she wishes to read
is not older than the number of generations we keep for the tape. Since each
tape contains one month, it is recommended to keep at least six generations
– enabling a half-year history log.
The job to retrieve the data is fairly simple and it is listed here:
//SsØØ4DMP JOB (SSØ1,A1,2Ø),URIC,MSGCLASS=T,NOTIFY=SØØ4
//IEBGENER EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=SYSO.CICSLOGT.DCPMJNA(Ø),DISP=SHR
//*SYSUT1 DD DSN=SYSO.CICSLOGT.DCPMJNF(Ø),DISP=SHR
//SYSUT2 DD DSN=SYSP.LOGCHK2,DISP=SHR
//SYSIN DD DUMMY

All that the CICS system programmer has to do is to fill in the right
generation in the DDname SYSUT1. If we are in April and after a cold start
to CICS we wish to know who has deleted that transaction from the RDO
back in January, we need to insert ‘–3’ inside the brackets.

WHAT TO DO IF YOU ARE GOING TO RECYCLE CICS


This is where the process is not automatic any more. The operator should
remember to start a special job right before CICS is brought down. The job
is the same daily job that was started by the scheduler.

WHAT TO DO IF CICS WAS CANCELLED


Of course if CICS is cancelled this is not the right time to lose your system/
application logs.
In order to prevent it, a different job must be run. This ‘post mortem’ job
will look at the data from the non-active CICS. It should be run right after
a CICS crash, but not necessarily before a new CICS is started. In order to
save some space, I’m only showing the first two steps of the JCL – all the
rest are equivalent to the job that is run from the scheduler.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 71


This job takes advantage of the fact that in SDSF after the CRDATE
command is used, the DDnames are sorted in the same order as in the job.
//EXEC PGM=SDSF,PARM='++24,131'
//ISFOUT DD SYSOUT=T
//ISFIN DD *

//ISFOUT DD SYSOUT=T
//ISFIN DD *
PREFIX SS5ØCICP
H
SORT CRDATE D
FIND SS5ØCICP
++?
FIND DCPMJNA
++S
PRINT ODSN 'SYSO.DCPMJNA' * MOD
PRINT
PRINT CLOSE

//EXEC PGM=SDSF,PARM='++24,131'
//ISFOUT DD SYSOUT=T
//ISFIN DD *
PREFIX SS5Ø*
DA
FIND SS5ØCICP
++?
SORT DSID D
FIND DCPMJNF
DOWN 1
FIND DCPMJNF
++S
PRINT ODSN 'SYSO.DCPMJNF' * MOD
PRINT
PRINT CLOSE

PROGRAMS USED FOR AUTOMATING THE SWITCHING PROCESS


The following programs are used to automate the switching process –
xeasm1, xeasm2, and xecto.

Xeasm1
* THIS PROGRAM ENABLES DYNAMIC DEALLOCATION OR ALLOCATION OF
* EXTERNAL TD-QUEUES.
* IT IS ACTIVATED BY THE FOLLOWING INPUT
* TDYN FREE DDNAME(DDNAME) (UNALLOC ASSUMED)
* (OR) TDYN ALLOC DDNAME(DDNAME) SYSOUT(M) (STATUS SHR ASSUMED)

72 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
* UNLIKE ADYN, IT IS NOT A CONVERSATIONAL TRANSACTION
* EG IT CAN BE USED WITH MVS MODIFY COMMAND.
* THE PROGRAM USES DYNAMIC ALLOCATION DIRECTLY.
* IN THE CICS-SAMPLE-GUIDE THERE ARE EXAMPLES OF HOW TO
* USE DYALLOC FROM CICS.
* WITH SOME MODIFICATION IN THE DYNAMIC ALLOCATION TEXT UNITS
* THIS PROGRAM MAY BE USE TO ALLOC/DE-ALLOC DSNAMES.
* THIS PROGRAM MUST BE LINKED WITH AMOD AND RMOD 24.
* THE TRANSACTION THAT STARTS THIS PROGRAM SHOULD BE DEFINED WITH
* TASKDATAKEY=CICS.
RNAME EQU 5
RLEN EQU 6
RWK EQU 4
RRC EQU 7
RBAL EQU 8
R1 EQU 1
R15 EQU 15
DFHEISTG DSECT
ECB99 DS A
TCB99 DS A
*
TPADYN3 DFHEIENT CODEREG=3,DATAREG=1Ø,EIBREG=11
*
MVC MSG(29),MSG1
MVI TEXT,C' '
MVC TEXT+1(89),TEXT
LA RWK,9Ø
STH RWK,TEXTLEN
EXEC CICS RECEIVE INTO(TEXT) LENGTH(TEXTLEN)
CALL JHTRT,(TEXTLEN,FREELEN) * IS IT A FREE CALL
LTR R15,R15 * IF IT DOES GO EXECUTE
BZ EXFREE
CALL JHTRT,(TEXTLEN,ALLOCLN) * IS IT AN ALLOCATION
LTR R15,R15 * IF IT DOES GO EXECUTE
BZ EXALLOC
* * ELSE IT IS AN ERROR
MVC MSG(29),MSG5 * ACTION NOT SPECIFIED
B BRTRN
EXFREE BAL RBAL,DDSRCH * GO CHECK FOR DDNAME
LTR RRC,RRC * IF NO DDNAME FOUND
BP NOTIFY * IT IS AN ERROR
BCTR RLEN,Ø
EX RLEN,DDCHK * GO TO EXECUTE MVC
MVI CIC99VRB,X'Ø2' VERB CODE FOR UNALLOCATION
MVC CIC99TLA,=A(CIC99UTU) ADDR OF LIST OF UNALLOC
XR R15,R15
LA R1,CIC99PTR SVC 99 PARAMETER LIST ADDRESS
DYNALLOC
CH R15,HØ4 CHECK SVC 99 RC
BL BRTRN Ø. GO SEND SUCCESS MESSAGE

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 73


BH FAILED 8-12. GO SEND GENERAL ERROR
CLC CIC99ERR,H1Ø56 4. IS IT X'42Ø'
BNE FAILED 4. NO-SEND GENERAL ERROR
B NOTOPEN 4. YES-SEND NOT OPEN
EXALLOC BAL RBAL,DDSRCH GO LOOK FOR THE DDNAME
LTR RRC,RRC * IF BAD RC FROM DDSRCH
BP NOTIFY
BCTR RLEN,Ø
EX RLEN,DDCHK
MVI CIC99VRB,X'Ø1' VERB CODE FOR ALLOCATION
MVC CIC99TLA,=A(CIC99ATU) ADDR OF LIST OF ALLOC TEXT UNITS
XR R15,R15
LA R1,CIC99PTR SVC 99 PARAMETER LIST ADDRESS
DYNALLOC
LTR R15,R15
BNZ FAILED
B BRTRN
FAILED MVC MSG(29),MSG4 ACTION FAILED
B BRTRN
NOTOPEN MVC MSG(29),MSG6 ACTION FAILED - NOT OPEN
B BRTRN
NOTIFY CH RRC,=H'8'
MVC MSG(29),MSG2 DDNAME NOT SPECIFIED
B BRTRN
RC12 MVC MSG(29),MSG3 DDNAME TOO LONG
BRTRN DS ØH
EXEC CICS SEND FROM(MSG) LENGTH(29)
EXEC CICS RETURN
DDSRCH CALL JHTRT,(TEXTLEN,DDNLEN) LOOK FOR DDNAME KEWORD
LTR R15,R15 NO DDNAME IN INPUT
BNZ NONAME
LA RWK,7(R1) RWK POINT TO TEXT
LR RNAME,RWK
BCTR RWK,Ø
NEXT1 LA RWK,1(RWK) RWK POINT TO NEXT CHAR
CLC Ø(1,RWK),HYP IS IT THE END OF DDNAME
BNE NEXT1 NO CHECK NEXT CHAR
SR RWK,RNAME YES CHECK IF VALID LENGTH
LTR RWK,RWK CHECK IF DDNAME EXIST
BZ NONAME ELSE RWK CONTAIN DDNAME LENGTH
CH RWK,=H'8' IF DDNAME IS TOO LONG
BH TOOLONG
LR RLEN,RWK RLEN CONTAIN STRING LENGTH
SR RRC,RRC SET RRC TO ZERO
BR RBAL RETURN TO CALLER
NONAME LA RRC,8 DDNAME MISSING
BR RBAL
TOOLONG LA RRC,12 DDNAME TOO LONG
BR RBAL
TEXTLEN DS H

74 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
TEXT DS CL9Ø
FREELEN DC H'4'
FREE DC CL4'FREE'
ALLOCLN DC H'5'
ALLOC DC CL5'ALLOC'
DDNLEN DC H'7'
DDNAME DC CL7'DDNAME('
HYP DC CL1')'
MSG DS CL29
MSG1 DC CL29'ACTION SUCCESSFULL '
MSG2 DC CL29'DDNAME NOT SPECIFIED '
MSG3 DC CL29'DDNAME TOO LONG '
MSG4 DC CL29'ACTION FAILED '
MSG5 DC CL29'ACTION NOT SPECIFIED '
MSG6 DC CL29'ACTION FAILED FILE IS OPEN '
HØ4 DC H'4'
H1Ø56 DC H'1Ø56'
* SVC 99 PARAMETER LIST
CIC99PTR DC X'8Ø',AL3(CIC99RB) REQUEST BLOCK POINTER
CIC99RB DS ØF REQUEST BLOCK
DC AL1(2Ø) LENGTH OF REQUEST BLOCK
CIC99VRB DS X VERB CODE
DC 2X'Ø' FLAGS
CIC99ERR DC XL2'Ø' ERROR REASON CODE
DC XL2'Ø' INFORMATION REASON CODE
CIC99TLA DS A ADDR OF LIST OF TEXT UNIT PTRS
DC F'Ø' RESERVED
DC 4X'Ø' FLAGS FOR AUTHORIZED FUNCTIONS
*
CIC99ATU DS ØF ALLOC TEXT UNIT POINTER LIST
DC X'ØØ',AL3(CICDDNAM)
DC X'ØØ',AL3(CICSYSOU)
DC X'8Ø',AL3(CICSPINS)
*
CIC99UTU DS ØF UNALLOC TEXT UNIT POINTER LIST
DC X'8Ø',AL3(CICDDNAM)
* TEXT UNITS
CICDDNAM DC X'ØØØ1',HL2'1',HL2'8',CL8' ' DDNAME
CICDNUM EQU *-8
CICSYSOU DC X'ØØ18',HL2'1,1',X'D4' SYSOUT(M)
CICSPINS DC X'8Ø13',HL2'1,1',X'8Ø' PRINT IMMEDIATELY
DDCHK MVC CICDNUM(Ø),Ø(RNAME)
END

Xeasm2
JHTRT START
BEGIN EQUR=YES
L R3,Ø(R1) * LOAD STRING ADDRESS
L R4,4(R1) * LOAD SUBSTRING ADDRESS

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 75


LH R5,Ø(R3) * LOAD LENGTH OF STRING
LH R6,Ø(R4) * LOAD LENGTH OF SUBSTRING
LA R8,Ø(R3,R5) * R8 POINT AT END OF STRING
BCTR R5,Ø * MAKE LENGTH FOR EX COMMAND
BCTR R6,Ø * MAKE LENGTH FOR EX COMMAND
CR R5,R6 * IS STRING SHORTER THEN SUBSTRING ?
BL TOOLONG * YES ? GO TELL CALLER
CH R5,=H'255' * IS LENGTH OVER ALLOWED LENGTH ?
BH TOOLONG * YES ? GO TELL CALLER
CH R6,=H'255' * IS LENGTH OVER ALLOWED LENGTH ?
BH TOOLONG * YES ? GO TELL CALLER
LA R3,2(R3) * LOAD ADDR FIRST CHAR OF STRING
LA R4,2(R4) * LOAD ADDR FIRST CHAR OF SUBSTRING
XC TAB(256),TAB * CLEAR TRT TABLE
XR R1,R1 * CLEAR REGISTER
IC R1,Ø(R4) * FIRST CHAR OF SUBSTRING
LA R2,TAB * LOAD TAB ADDRESS
LA R2,Ø(R1,R2) * OFFSET OF FIRST CHAR OF SUBSTRING
STC R1,Ø(R2) * INSERT INTO TAB FOR TRT
EXTRT DS ØH *
EX R5,TRT * EX TRT
BZ NOTFOUND * NOT FOUND ? GO TO END
CR R1,R8 * TRT STOP AFTER STRING LIMIT ?
BH NOTFOUND * NOT LOW ? NOT FOUND
EX R6,CLC * EX CLC
BE FOUND * YES ? GO TO END
LR R9,R1 * SAVE TRT ADDRESS
SR R1,R3 * R1 = TRT ADVANCE IN BYTES
SR R5,R1 * HOW MUCH LEFT
CR R5,R6 * LEFT < SUBTRING LENGTH
BL NOTFOUND * YES ? NOT FOUND
LTR R5,R5 *
BZ NOTFOUND *
LA R3,1(R9) * POINT NEXT CHAR
B EXTRT *
NOTFOUND DS ØH *
LA R15,8 *
B BRTRN *
TOOLONG DS ØH *
LA R15,12 *
B BRTRN *
FOUND DS ØH *
XR R15,R15 *
BRTRN DS ØH *
L R13,4(R13) *
L R14,12(R13) *
LM R3,R12,32(R13) *
MVI 12(R13),X'FF' *
BR R14 *

76 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
TRT TRT Ø(*-*,R3),TAB *
CLC CLC Ø(*-*,R1),Ø(R4) *
TAB DC 256X'ØØ' *
END JHTRT

Xecto
******************************************************************
* THIS ROUTINE FREE & ALLOC DDNAME DCPMJN? IN CICS WHEN ?=T L F A
* ACTIVATED BY RULE - CICSTDQ
* AFTER THIS PROGRAM IS RUN - A NEW GENERATION OF CICS ARCHIVE
* LOG IS CREATED - AND THE REPLACED LOG IS ARCHIVED INTO TAPE.
****************************************************************

TRACE ON
MAXCOMMAND 9999
TIMEOUT 9999
LOGON APPLID CICSOLIB SESSID KSØ1
IFVAR %VTAMRC EQ '48' GOTO CICS_DOWN
CURSOR POS 1 8
IFSCREEN 'WELCOME TO CICS' GOTO SIGN_ON
GETSCREEN
*
LABEL SIGN_ON
CLEAR
TYPE 'CESN USERID=MCPCTO,PS=%A1'
ENTER
CURSOR POS 1 11
IFSCREEN 'SIGN-ON IS COMPLETE' GOTO START_PROG
GOTO SIGN_NOTOK
*
LABEL START_PROG
SETVAR %DJN1 DATA 'DJNA'
SETVAR %DJN2 DATA 'DJNF'
SETVAR %DJN3 DATA 'DJNL'
SETVAR %DJN4 DATA 'DJNT'
SETVAR %NO_DJN DATA '4'
SETVAR %DCPMJNX_STAT DATA 'FREE'
GOTO NEXT_DJN
*
LABEL NEXT_DJN
IFVAR %NO_DJN EQ 'Ø' GOTO END_PROG
IFVAR %NO_DJN EQ '1' GOTO DJN1
IFVAR %NO_DJN EQ '2' GOTO DJN2
IFVAR %NO_DJN EQ '3' GOTO DJN3
IFVAR %NO_DJN EQ '4' GOTO DJN4
*
LABEL DJN1
SETVAR %N_D DATA 'DJNA'

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 77


SETVAR %JN DATA 'JNA'
GOTO TDQ
*
LABEL DJN2
SETVAR %N_D DATA 'DJNF'
SETVAR %JN DATA 'JNF'
GOTO TDQ
*
LABEL DJN3
SETVAR %N_D DATA 'DJNL'
SETVAR %JN DATA 'JNL'
GOTO TDQ
*
LABEL DJN4
SETVAR %N_D DATA 'DJNT'
SETVAR %JN DATA 'JNT'
GOTO TDQ
*
LABEL TDQ
SETVAR %NO_DJN DATA '%NO_DJN %%MINUS 1'
SETVAR %ACT DATA 'CLOSE'
PFØ3
CLEAR
TYPE 'CEMT S TDQ(%N_D) CL '
ENTER
CURSOR POS 1 15
SETVAR %DJN SCREEN 1 12 4
CURSOR POS 23 14
IFSCREEN 'NORMAL' GOTO DO_ADYN
GOTO TDQ_NOTOK
*
LABEL TDQ_NOTOK
SHOUT TO TSO-SØ1Ø TEXT 'CTO - CICS TDQ %ACT FOR %DJN IS NOT NORMAL'
SHOUT TO TSO-SØØ4 TEXT 'CTO - CICS TDQ %ACT FOR %DJN IS NOT NORMAL'
GOTO END_PROG
*
LABEL DO_ADYN
PFØ3
CLEAR
TYPE 'ADYN '
ENTER
CURSOR POS 9 1
IFSCREEN 'ENTER' GOTO DO_FREE
GOTO DO_OPEN
*
LABEL DO_FREE
CURSOR HOME
TYPE 'FREE DDNAME(DCPM%JN) UNALLOC '
ENTER
CURSOR POS 9 41

78 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
IFSCREEN 'ØØØØ' GOTO DO_ALLOC
SETVAR %DCPMJNX_STAT DATA 'FREE'
GOTO RC_NOTOK
*
LABEL RC_NOTOK
SHOUT TO TSO-SØ1Ø TEXT 'CTO - CICS FREE DCPM%JN NOT OK'
IFVAR %DCPMJNX_STAT EQ 'ALLOC' GOTO DO_OPEN
*
LABEL DO_ALLOC
PFØ3
CLEAR
TYPE 'ALLOC DDNAME(DCPM%JN) SYSOUT(M) '
ENTER
CURSOR POS 9 41
IFSCREEN 'ØØØØ' GOTO DO_OPEN
SETVAR %DCPMJNX_STAT DATA 'ALLOC'
GOTO RC_NOTOK
*
LABEL DO_OPEN
CURSOR HOME
SETVAR %NUL DATA ' '
TYPE '%NUL'
ENTER
PFØ3
CLEAR
* CURSOR HOME
TYPE 'CEMT S TDQ(%N_D) OP '
ENTER
CURSOR POS 23 14
IFSCREEN 'NORMAL' GOTO NEXT_DJN
SETVAR %ACT DATA 'OPEN'
GOTO TDQ_NOTOK
*
LABEL SIGN_NOTOK
SHOUT TO TSO-SØ1Ø TEXT 'cics sign-on failed'
GOTO END_PROG
*
LABEL CICS_DOWN
SETOGLB %%DOWN%A2 = 48
*
LABEL END_PROG
PFØ3
CLEAR
TYPE 'LOGOFF '
ENTER
LOGOFF
END

Uri Cohen
CICS Systems Programmer (Israel) © Xephon 2002

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 79


Buried treasure in the CICS TRACE TABLE

INTRODUCTION
Each new release of CICS will contain a collection of additional trace
entries, introduced to provide diagnostic information on new components
of the product added by the release. As CICS Transaction Server continues
to evolve, so does the variety and content of the trace data associated with
CICS.
There are a number of very useful CICS trace entries that can be used to
provide a great deal of helpful information, provided you know what to
look for within the (potentially) vast amount of trace data that CICS can
generate. This article highlights a number of such trace entries, explaining
when they were introduced, what they can offer you, and the trace options
required to generate them.

A BRIEF BACKGROUND TO CICS TRACING


CICS trace is the primary tool for application and system debugging. It is
a series of data entries, written in chronological order, that document the
state of various system resources and activities. It shows the flow of
activity of tasks on the CICS system, running under the quasi-reentrant
(QR) TCB and other TCBs available for use within CICS Transaction
Server. While originally intended for CICS system debugging, a subset of
the trace entries can be useful for debugging application problems too, as
will be explained later in the article.
CICS trace may be directed to the internal CICS trace table, which is a
wraparound area of storage above the 16MB line in the CICS address space.
This can then be viewed in both transaction and system dumps, to see the
series of events leading up to the event that resulted in the dump being
requested. The size of this trace table is controlled by the TRTABSZ system
initialization parameter, and by the ‘Internal Trace Table Size’ option on
the CETR main panel (for more details on CETR, see below).

80 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
In addition, trace entries can also be directed to the auxiliary trace
destination, which is one or two CICS-managed BSAM datasets. These
provide a larger repository for trace data than the internal CICS trace table,
and can be used to record a longer period of system activity. The I/O activity
needed to support auxiliary tracing means that this option has more impact
upon CICS system performance than just using internal CICS tracing.
CICS also supports tracing to GTF. This technique can be useful when
diagnosing problems that have a flow of events across several interconnected
address spaces, such as between CICS and DBCTL.
CICS/ESA Version 3 introduced the CETR transaction to complement the
restructuring of CICS trace control into a domain with that version of the
product. CETR allows the user to dynamically control many aspects of
CICS trace activity, including switching on and off internal and auxiliary
tracing, setting the level of component tracing for the various functional
areas within CICS, and using selective tracing for specific transactions and
terminals. Such selective tracing can be very useful when debugging CICS
applications – by providing detailed trace information for a specific
program environment.
Note that the CICS internal trace table, auxiliary trace, and GTF trace
destinations can wrap. CETR provides the means of controlling whether
auxiliary tracing wraps by the ‘Auxiliary Switch Status’ option. This can
specify NO, NEXT, and ALL. NO means that only the current BSAM
dataset can be used. NEXT means that having filled the current dataset,
CICS will switch to use the second dataset. ALL means that CICS will
automatically switch between the two datasets as each one fills. ALL
therefore allows for the overwriting of old trace data from earlier in the
trace run.
CICS provides a batch utility program to format the auxiliary trace data.
The name of the program is CICS release-specific – its suffix is the CICS
release number. Therefore, in CICS/ESA 4.1.0 the program is DFHTU410;
in CICS Transaction Server 1.3 (containing the CICS component CICS/
ESA 5.3.0) it is DFHTU530. The utility program has a number of options
that can be used to selectively filter specific trace entries when formatting
the auxiliary trace data – these include filtering by task number, transaction
identifier, trace entry number, etc. The most commonly used options when

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 81


using the utility are to control the level of detail to be returned in the
formatted trace. The options are ABBREV (for abbreviated), SHORT, and
FULL. Abbreviated trace is the bare minimum of data for every trace entry,
showing the flow of events through CICS and the commands issued by
applications. It is useful when trying to establish a ‘big picture’ of what is
happening at a given point during the CICS run. Short trace is similar to
abbreviated trace, but also provides useful diagnostic information such as
the time when the trace entry was issued, and time duration between this
and the preceding trace entry. Full trace provides all this information, plus
up to seven data items that can be used to trace information such as
parameter lists, names of resources, control blocks, and response and
reason codes.
Full trace is useful when a particular series of events has been isolated, and
a problem needs to be analysed at a trace entry by trace entry level, seeing
exactly what parameters (and their values) were being referenced at that
point in time.

EIP LEVEL 1 AND LEVEL 2 TRACES


CICS trace is a powerful tool for debugging application program problems.
By following the series of EXEC CICS requests issued from applications,
programmers can track the flow of execution of a new application suite
under development. In this way, CICS trace can be used in tandem with
CEDF to diagnose and debug problems encountered during the application
development cycle. One possible scenario would be to use CEDF when
functionally verifying (ie unit testing) applications, and using CICS trace
to analyse system testing of the programs, when multiple tasks are
executing them in tandem.
Prior to CICS/ESA 4.1.0, the trace entries that were of most use in
understanding the flow of EXEC CICS requests being issued by application
programs were those issued on entry to, and exit from, the CICS EXEC
Interface Program (DFHEIP). DFHEIP is the entry point into CICS from
an application – it is branched to by the command level stub that is link-
edited to the program, which is itself branched to as part of the translated
EXEC CICS command being executed within the application. DFHEIP
then vectors into one of a number of command level stubs for the various
types of EXEC CICS request. Eventually, once CICS has processed the

82 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
command, control will return to the application via DFHEIP once more.
DFHEIP has a pair of trace points at entry to and exit from the module –
these have the trace point ID of AP 00E1, where AP denotes the Application
Domain, the component of CICS that contains the remainder of
unreconstructed code. (Starting with CICS/ESA 3.1.0, as areas of CICS
have been rewritten into better designed, more encapsulated pieces of
function, they have been restructured into their own domains. Examples
include the storage manager domain, loader domain, program manager
domain, etc.)
CICS/ESA 4.1.0 introduced another pair of DFHEIP trace entries. These
are EI level 2 trace points, meaning that they are issued only if CICS has
level 2 trace function set for the EI trace component, as controlled by the
CETR transaction or SIT parameter. These new trace points are AP E160
and AP E161 (on entry and exit respectively). Note: the traditional AP
00E1 trace points are EI level 1 traces.
EI level 2 trace points have four data items associated with them. Item 1
is a concatenation of addresses and argument values, used by CICS when
constructing the trace entry for the EXEC CICS command. Item 2 is the
list of addresses of the command-level parameters built by the CICS
translator for the EXEC CICS request. The final parameter is denoted by
the high order bit (X’80000000') set on in the address. Item 3 is the address
of this parameter list. Item 4 is the system EIB control block.
EI level 2 tracing is a very powerful tool for problem diagnosis of CICS
applications. Where the AP 00E1 trace points show the flow of control for
an application, and give a limited idea of the nature of the EXEC CICS
requests, the EI level 2 trace points break down the actual requests
themselves. In effect they are providing part of the data available under
CEDF, but without the need to step through the application code screen by
screen.
Application programmers can see exactly what values are being manipulated
by their applications without having to step through the code on-line via
CEDF. This can be useful in environments where, for example, CEDF
usage cannot be tolerated for some reason, or in the case when a number
of tasks are to be executed in a simulated production run.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 83


An important point to note about EI level 2 trace interpretation is that the
value of input and output fields passed on the request cannot be traced
unless the length of the fields is also passed. An example of this is when
tracing a file control request against a KSDS file. The value of the key field
passed on the request (the ridfld) cannot be traced unless KEYLENGTH
was specified on the EXEC CICS request. This is because the trace
formatter has no idea how long the file’s keylength is, and cannot arbitrarily
display a certain number of bytes of data starting at the address where the
key value is held. Another example of this is when tracing an EXEC CICS
SEND MAP command with a FROM area, but no associated length value.

ABEND AEYD DIAGNOSTIC TRACE ENTRIES


CICS command protection was a function introduced in CICS/ESA 4.1.0.
It is controlled by the SIT parameter CMDPROT. If set to YES, this
instructs the CICS Exec Interface Program, DFHEIP, to perform verification
checks on any output field addresses before allowing an EXEC CICS
command to continue.
This verification is to prevent an application passing CICS an invalid
address as the target for data returned from CICS to the application. An
example of such an output field would be the one passed as the INTO area
on an EXEC CICS READ command against a VSAM file. If CICS does
not verify that such output field addresses are valid (ie the application has
the right to update them) then it can unwittingly corrupt storage belonging
to parts of the CICS address space that are not validly accessible by the
application. Since CICS runs in storage protection key of 8 (‘CICS key’),
it has the ability to update storage in both storage protection keys 8 and 9
(key 9 is ‘User key’ storage). As such, there is the potential for an
application to use CICS as a ‘hired gun’ and update pages of storage that
the application could not directly touch by itself. Command protection is
therefore also sometimes referred to as hired gun checking. This is because
it prevents CICS being used by the task issuing an EXEC CICS request to
indirectly cause possible harm to storage belonging to other tasks in the
system.
If DFHEIP detects that an EXEC CICS parameter for an output field
addresses storage that is not available to the task that issued the request,

84 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
it generates a program check. This is captured by the CICS System Recovery
Program (DFHSRP). DFHSRP will issue a series of diagnostics such as
exception trace entries, an abend AEYD, and a transaction dump.
Figure 1 shows examples of the (edited) trace information seen when an
invalid output parameter address is detected by CICS command protection
checking. The series of abbreviated trace entries at the top shows that a
CICS application has issued a number of EXEC CICS commands,
culminating in an EXEC CICS READ to CICS file control. In this example,
the address passed for the INTO area on the request is 00000000 (ie ‘low-
core’, the start of the Prefix SaveArea or PSA, in the first page of every
address space in MVS). A CICS task has no right to modify storage in the
PSA (nor indeed does CICS for that matter) – it is used specifically by the
hardware to represent processor information such as interrupt routine
addresses for the operating system. As such, any attempt to store into this
page would fail with an 0C4 protection exception anyway. However, since
CICS command protection was activated, CICS was able to detect that the

ØØØ233 1 AP ØØE1 EIP EXIT ASSIGN OK


ØØØ233 1 AP ØØE1 EIP ENTRY HANDLE-ABEND

ØØØ233 1 AP ØØE1 EIP EXIT HANDLE-ABEND OK

ØØØ233 1 AP ØØE1 EIP ENTRY READ

ØØØ233 1 AP 1942 APLI *EXC* Program-Check

ØØØ233 1 AP Ø79Ø SRP *EXC* PROGRAM_CHECK

ØØØ233 1 AP Ø779 SRP *EXC* ABEND_AEYD

AP Ø779 SRP *EXC* - ABEND_AEYD PROGRAM(U392ØPRG) FUNCTION(Ø6Ø2)

PARAMETER_ADDRESS(ØØØØØØØØ)

Figure 1: Trace entries showing an AEYD abend

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 85


INTO field contained an invalid address and so prevent the attempt to store
VSAM record data there before the protection exception 0C4 could occur.
When CICS detected the invalid output parameter, it forced a program
check. This resulted in the exception traces AP 1942 and AP 0790 being
issued. DFHSRP then determined that the program check was as a result
of command protection validation, and so issued the further exception
trace entry AP 0779. The full trace entry for this shows the address of the
bad output area parameter as passed on the EXEC CICS READ command
– in this example it is 00000000.
The example shows a bad output field address on a command that would,
if left to completion, not have been able to be updated by CICS since it is
in protected storage in low-core. However, the address could instead have
been a validly accessible one within part of the CICS address space for a
page of storage owned by another task. If command protection had not
verified that such an address was out of bounds to the task asking for it to
be updated by CICS, storage corruption of this area by CICS on behalf of
the running task would have occurred. CICS would indeed have been a
hired gun for the task.
Command protection can be used in tandem with EI level 2 trace to display
all the output fields passed by an application, if further investigation of the
program is required.

CICS/DB2 ADAPTOR TRACE ENTRIES


CICS Transaction Server Release 1.2 included a rewritten CICS/DB2
Adaptor. This is the code that interfaces between CICS and DB2 – it runs
as a Task Related User Exit (TRUE) to the CICS external Resource
Manager Interface (RMI).
Prior to CICS Transaction Server Release 1.2, the CICS/DB2 Adaptor was
owned by the DB2 Development Laboratories in Santa Teresa, California,
although the code itself was shipped as part of the CICS product delivery
tape. When the Adaptor was transferred to CICS Development in Hursley,
the opportunity was taken to restructure the code and improve a number
of its components. Part of this restructure involved improvements to the

86 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
tracing techniques used by the Adaptor modules. The old CICS/DB2
Adaptor had used user trace entries to record the flow of events through
its code. The restructured Adaptor in CICS Transaction Server Release 1.2
issues new unique trace entries from the Application Domain (AP) trace
point range. This is one example of the ways in which the new Adaptor code
is more formally integrated into CICS Transaction Server than the old
Adaptor in CICS/ESA 4.1.0.
If an exceptional condition occurred whilst running under the old-style
Adaptor, a pair of user trace entries would be issued to document the fact.
The end of data item 1 would contain *EXC* in both cases, to indicate that
this was for an exceptional condition. Data item 2 in the first of the trace
entries would contain the DB2 reason code for the failure, in its last
fullword. Data item 2 in the second of the trace entries would contain the
transaction identifier of the executing task in its first fullword.
With the restructure of the CICS/DB2 Adaptor, the opportunity to exploit
conventional CICS tracing techniques allowed for the use of standard
exception trace entries to be issued in exceptional conditions.
An example of such an exception condition is discussed below. A failure
condition might occur as the result of an application issuing an EXEC SQL
command.
The resulting AP 318E exception trace entry issued from the Adaptor has
four data items.
Data item 1 is the CICS kernel error data for the failure. This includes the
Abend code for the failure (AD2U) at offset 4. It also shows the name of
the Adaptor program in control when the abend was issued – DFHD2EX1
at offset X’10'.
Data item 2 is the LOT control block, DFHD2LOT. The LOT (or Life Of
Task) control block represents the unit of work that is executing the series
of commands.
Data item 3 is the RCT entry being used by the request. This is mapped by
the DSECT DFHD2RCT.
Data item 4 is the CSUB control block, DFHD2CSB. The CSUB (or CICS
subtask) control block represents the TCB that is being used to process the

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 87


particular request to DB2. The CICS/DB2 Adaptor cannot use the QR TCB
to process requests in DB2 since this would prevent sub-dispatching of
other tasks by the CICS Dispatcher under this TCB while a request was
being executed within DB2 itself. Hence a series of TCBs are used to
subtask the DB2 requests issued by CICS applications. This is a standard
technique used by other RMI TRUEs such as the DBCTL Adaptor.
The CSUB control block contains a very useful feature, which can be
analysed from the trace entry. An imbedded ‘trace table’ within the control
block shows the last (decimal) ten operations carried out on that subtask.
These begin at offset X’1E0', and each entry is X’10' bytes long. They are
delimited by the eyecatchers ‘>>Trace Start >>’ and ‘<<Trace End <<’.
Each X’10' byte entry contains a fullword hexadecimal counter, a fullword
character string to identify the type of request, and then sections for the DB2
response and reason codes from the request. Note that APAR PQ30799 /
PTFs UQ36758 and UQ36759 have enhanced the CSUB trace table to
include the task number of the application. This is stored in packed decimal
format in the second, third, and fourth bytes of each entry’s first fullword,
leaving the first byte of the entry for the monatomically increasing
hexadecimal counter. Since there are only ten slots within the imbedded
table, there was no compelling reason for the counter to use a fullword of
storage – a single byte is more than sufficient to ensure a uniquely
increasing range throughout the ten entries. Note: PTFs UQ36758 and
UQ36759 enhanced CICS Transaction Server Release 1.2 and Release 1.3
respectively.
The DFHD2CSB is an internal trace table that can be seen at the end of the
control block. Note: the example discussed predates the application of
APAR PQ30799, so that the task numbers are not stored within the first
fullword of each entry, and the counter field is still a fullword value. To
locate the most recent entry into the trace table, locate the entry with the
highest counter value. In our example it is the entry with a counter of
0000000D, at offset X’200' into the control block.
The possible character strings at offset 4 into the entries, and their
meanings, are given below:
• ABRT – abort request

88 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
• API – SQL or IFI request
• COMM – commit request
• CTHD – create thread request
• ERRH – error handler request
• IDEN – identify request
• PREP – prepare request
• PSGN – partial signon request
• SIGN – full sign-on request
• SYNC – single phase request
• TERM – terminate thread request.
In our example trace entry, error handling has been driven as the result of
a previous authorization failure (frb reason code 00F30034).
Understanding this internal trace table allows you to track the most recent
requests to have been executed under this subtask, and so aid in analysis
of throughput for CICS/DB2 requests, and help when dealing with
problem determination issues.
Note, in addition to being traced for exception trace entries as described
above, the CSUB will also be traced on normal trace entries from the new
CICS/DB2 Adaptor if the RI trace component is set to 1-2. RI is the trace
component for the CICS RMI (Resource Manager Interface). This can be
useful when examining situations that do not result in exceptional conditions
occurring.

TRACE ENTRY SUPPRESSION


Most events in life involve a trade-off of some kind, and CICS trace
recording is no exception.
In order to help reduce performance overheads, some users will run their
production CICS systems with limited or no CICS trace recording active.
This is advantageous to them until an unexpected situation occurs that

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 89


requires trace data for its problem resolution.
Another reason why CICS trace entries may not be recorded is suppression
by one of a number of different monitoring packages.
While CICS does generate unsolicited exception trace entries when
unexpected (exceptional) conditions occur, which are recorded regardless
of trace suppression, these in themselves may not be sufficient to totally
isolate and resolve a particular problem.
When examining the data in CICS trace (either from the internal trace table
or from auxiliary trace) it is important to be aware of the scope of trace
suppression on the CICS system.

FURTHER READING
The CICS bibliography provides a detailed overview of every trace entry
issued by CICS. However, the particular manual that lists the trace entries
varies depending upon what release or version of the CICS product is being
used.
For CICS/ESA 4.1.0, the trace entries are documented in the Diagnosis
Handbook.
For CICS Transaction Server Release 1.1 and Release 1.2, they are
documented in the User’s Handbook. For CICS Transaction Server
Release 1.3, the volume of trace entries has grown sufficiently to warrant
a complete manual; this is entitled CICS Trace Entries.

SUMMARY AND CONCLUSIONS


I hope that this article has helped explain the background to a number of
useful features of the CICS trace table. Readers who wish to discuss the
material in this article further may contact me via e-mail, at
andy_wright@uk.ibm.com. CICS is a registered trademark of International
Business Machines Corporation.
Andy Wright
CICS Change Team
IBM (UK) © IBM 2002

90 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Collecting DB2ENTRY statistics and tuning the
CICS attachment facility

THE PROBLEM
In our installation, the production CICS Transaction Server experienced
contention and the TCBLIMIT parameter reached its maximum value. The
CICS TS experienced poor response times in spite of there being only a few
transactions active. The only way to overcome the problem was to de-
activate and then re-activate the CICS Transaction Server.

THE SOLUTION
We solved the problem by modifying the values of TCBLIMIT,
THREADLIMIT, and MAXOPENTCBS, and reassigning the dedicated
threads in the order in which they were to be used again (REUSED) for
several transactions. In this way, the CICS Transaction Server region
assigns fewer TCBs, consumes less CPU, and improves the response time.
The transaction IDBE helped greatly in determining the appropriate values
for the CICS parameters.
The transaction IDBE executes the COBOL II program STPEP006, which
looks at DB2ENTRYs and shows the statistics CICS DB2 has collected.

IDBE OPTION
Syntax:
OPTION = CONN | DB2E | DISP | PLAN

where:
• IDBE CONN – for displaying DB2CONN statistics.
• IDBE DB2E – for displaying DB2ENTRY name statistics.
• IDBE DISP – for browsing DB2ENTRY names GE #Calls

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 91


• IDBE PLAN – for browsing DB2ENTRYs names EQUAL PlanName.
For example, to know the statistics of DB2CONN type:
IDBE CONN

This transaction will be useful to find suitable values for TCBLIMIT and
THREADLIMIT. Look at the values of the TCB statistics. If the value of
#PEAK or #CURRENT has reached the value of #MAXIMO and if CICS
TS is slow, it’s because the value of TCBLIMIT is not a suitable one. In a
host (9672-R56 with 545 MIPS) the value is 66 per CICS transaction
server. Otherwise, if the value of FREE TCBs is approximated to
#MAXIMO, the statistics must be reviewed to re-assign the threads.
To find the statistics for a DB2ENTRY name, type:
IDBE DB2E db2entryname

This transaction will be useful to show all the data of a DB2ENTRY. Look
at the data and determine whether the transaction needs to be Modified
PRIority, PROtectnum, THREADLimit, or THREADWait.
To make a listing of DB2ENTRYs that have been done, type:
IDBE DISP

If you want to, you can select the name of the starting DB2ENTRY and/
or the number of calls that you want to view. You should modify the first
line and press Enter:
IDBE DISP db2entry>=ØØØØØØØ (Default)

This transaction is useful to find the transactions that deserve to have


threads dedicated by the number of #CALLS, #REUSES, and W/O.
To find the DB2ENTRYs that have the same PLANNAME, type:
IDBE PLAN planname

This transaction is useful to put together the transactions that have a


planname in common, to minimize the number of DB2ENTRYs. Use
wildcarding and dynamic plan selection where it’s relevant to combine
appropriate transactions in an entry. Allow low use transactions to default
to the pool.

92 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
However, it should be noted that defining transaction IDs using wildcard
characters removes the ability to collect CICS DB2 statistics on a per
transaction basis because statistics are collected for each DB2ENTRY,
which will now represent a group of transactions.
This program works on Transaction Server Release 1.3 under OS/390
Version 2.9.

STPEP006 SOURCE CODE


IDENTIFICATION DIVISION.
PROGRAM-ID. STPEPØØ6.
AUTHOR. JEFS.
DATE-WRITTEN. ABR - Ø1.
DATE-COMPILED. ABR - Ø1.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
77 UTIME PIC S9(15) COMP-3 VALUE +Ø.
77 RESP1 PIC S9(Ø8) COMP.
77 I PIC 9(Ø2) VALUE 1.
77 W2R-CALLS PIC 9(Ø7) VALUE Ø.
Ø1 MSG-ERROR.
Ø2 MSG1 PIC X(8Ø) VALUE SPACES.
Ø2 MSG2 PIC X(8Ø) VALUE SPACES.
Ø2 MSG3 PIC X(8Ø) VALUE SPACES.
Ø2 MSG4 PIC X(8Ø) VALUE SPACES.
Ø2 MSG5 PIC X(8Ø) VALUE SPACES.
Ø2 MSG6 PIC X(8Ø) VALUE SPACES.
Ø2 MSG7 PIC X(8Ø) VALUE SPACES.
Ø2 MSG8 PIC X(8Ø) VALUE SPACES.
Ø2 MSG9 PIC X(8Ø) VALUE SPACES.
Ø1 MSG-PANTALLA-DB2ENTRY.
Ø2 MS-TITU1.
Ø4 FILLER PIC X(1Ø) VALUE 'IDBE DB2E '.
Ø4 MSG-DB2ENTRY-NAME PIC X(Ø8) VALUE SPACES.
Ø4 FILLER PIC X(62) VALUE SPACES.
Ø2 MS-TITU2.
Ø4 FILLER PIC X(Ø9) VALUE 'Applid : '.
Ø4 APPLID PIC X(Ø8)BBBBBB VALUE SPACES.
Ø4 FILLER PIC X(34) VALUE
'Display DB2Entry Statistics Online'.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Date : '.
Ø4 PRINT-DATE PIC X(Ø8)BB VALUE SPACES.
Ø2 MS-TITU3.
Ø4 FILLER PIC X(Ø9) VALUE 'Sysid : '.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 93


Ø4 SYSID PIC X(Ø4) VALUE SPACES.
Ø4 FILLER PIC X(5Ø) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Time : '.
Ø4 PRINT-TIME PIC X(Ø8)BB VALUE SPACES.
Ø2 MS-TITU4.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MS-TITU5.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE 'DB2 Entry Name: '.
Ø4 M2R-DB2ENTRY-NAME PIC X(8)B VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Plan Name : '.
Ø4 M2R-PLAN-NAME PIC X(8).
Ø4 FILLER PIC X(Ø8) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'ThreadWait: '.
Ø4 M2R-THREADWAIT PIC X(4).
Ø4 FILLER PIC X(Ø9) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU6.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø2 MS-TITU7.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(12) VALUE 'Priority : '.
Ø4 M2R-PRIORITY PIC X(Ø5).
Ø4 FILLER PIC X(Ø8) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE '# Calls : '.
Ø4 M2R-CALLS PIC Z,ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø7) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Signons : '.
Ø4 M2R-SIGNONS PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU8.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(12) VALUE 'Aborts : '.
Ø4 M2R-ABORTS PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Single Pha: '.
Ø4 M2R-SINGLE-PHASE PIC Z,ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø7) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE '# Reuses : '.
Ø4 M2R-THREAD-REUSE PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU9.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(12) VALUE 'Terminates: '.

94 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Ø4 M2R-THREAD-TERM PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE '# W/O : '.
Ø4 M2R-THREAD-WAIT-OR-OVERF PIC Z,ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø7) VALUE SPACES.
Ø4 FILLER PIC X(19) VALUE SPACES.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU1Ø.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(12) VALUE '# Current : '.
Ø4 M2R-THREAD-CURRENT PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE '# Peak : '.
Ø4 M2R-THREAD-HWM PIC Z,ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø7) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE '# Limit : '.
Ø4 M2R-THREAD-LIMIT PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU11.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(12) VALUE 'Prot.Curr : '.
Ø4 M2R-PTHREAD-CURRENT PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Prot.Peak : '.
Ø4 M2R-PTHREAD-HWM PIC Z,ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø7) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Prot.Limit: '.
Ø4 M2R-PTHREAD-LIMIT PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU12.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(12) VALUE 'Curr.Task : '.
Ø4 M2R-TASK-CURRENT PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Peak Task : '.
Ø4 M2R-TASK-HWM PIC Z,ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø7) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'Total Task: '.
Ø4 M2R-TASK-TOTAL PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MS-TITU13.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MS-TITU14.
Ø4 FILLER PIC X(8Ø) VALUE SPACES.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 95


Ø2 MS-TITU15.
Ø4 FILLER PIC X(8Ø) VALUE SPACES.
Ø2 MS-TITU16.
Ø4 FILLER PIC X(2Ø) VALUE SPACES.
Ø4 FILLER PIC X(36) VALUE
'CLEAR = EXIT ENTER = REFRESH'.
Ø4 FILLER PIC X(24) VALUE SPACES.
Ø1 MSG-PANTALLA-CONNECT.
Ø2 MC-TITU1 PIC X(8Ø) VALUE 'IDBE CONN'.
Ø2 MC-TITU2.
Ø4 FILLER PIC X(Ø9) VALUE 'Applid : '.
Ø4 C-APPLID PIC X(Ø8)BBBBBB VALUE SPACES.
Ø4 FILLER PIC X(35) VALUE
'Display of DB2CONN Statistic Online'.
Ø4 FILLER PIC X(Ø5) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Date : '.
Ø4 PRINC-DATE PIC X(Ø8)BB VALUE SPACES.
Ø2 MC-TITU3.
Ø4 FILLER PIC X(Ø9) VALUE 'Sysid : '.
Ø4 C-SYSID PIC X(Ø4) VALUE SPACES.
Ø4 FILLER PIC X(5Ø) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Time : '.
Ø4 PRINC-TIME PIC X(Ø8)BB VALUE SPACES.
Ø2 MC-TITU4.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MC-TITU5.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(22) VALUE 'DB2 Connection name : '.
Ø4 M2G-DB2CONN-NAME PIC X(8).
Ø4 FILLER PIC X(Ø9) VALUE SPACES.
Ø4 FILLER PIC X(12) VALUE 'DB2 Sysid : '.
Ø4 M2G-DB2-ID PIC X(4).
Ø4 FILLER PIC X(23) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU6.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø2 MC-TITU7.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(78) VALUE 'TCBS STATISTICS '.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU8.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE '# Maximo : '.
Ø4 M2G-TCB-LIMIT PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# Current : '.
Ø4 M2G-TCB-CURRENT PIC ZZZ,ZZ9BBB.

96 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Ø4 FILLER PIC X(16) VALUE '# Peak : '.
Ø4 M2G-TCB-HWM PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU9.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE '# Free : '.
Ø4 M2G-TCB-FREE PIC ZZZ,ZZ9.
Ø4 FILLER PIC X(55) VALUE SPACES.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU1Ø.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø2 MC-TITU11.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(78) VALUE
'DB2 CONNECTION POOL STATISTICS '.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU12.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE 'Plan name : '.
Ø4 M2G-POOL-PLAN-NAME PIC X(8)BB VALUE SPACES.
Ø4 FILLER PIC X(16) VALUE '# of CALLS : '.
Ø4 M2G-POOL-CALLS PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# of Signons : '.
Ø4 M2G-POOL-SIGNONS PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU13.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE '# of Commits : '.
Ø4 M2G-POOL-COMMITS PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# of Reuses : '.
Ø4 M2G-POOL-THREAD-REUSE PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# Terminates : '.
Ø4 M2G-POOL-THREAD-TERM PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU14.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE '# of Waits : '.
Ø4 M2G-POOL-THREAD-WAITS PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# Pool Limit : '.
Ø4 M2G-POOL-THREAD-LIMIT PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# Current : '.
Ø4 M2G-POOL-THREAD-CURRENT PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU15.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '+'.
Ø2 MC-TITU16.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 97


Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(78) VALUE
'DB2 CONNECTION DSNC COMMAND STATISTICS '.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU17.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(16) VALUE '# Calls : '.
Ø4 M2G-DSNC-COMMAND-CALLS PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# Maximo : '.
Ø4 M2G-COMMAND-THREAD-LIMIT PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(16) VALUE '# Peak : '.
Ø4 M2G-COMMAND-THREAD-HWM PIC ZZZ,ZZ9BBB.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MC-TITU18.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MC-TITU19.
Ø4 FILLER PIC X(8Ø) VALUE SPACES.
Ø2 MC-TITU2Ø.
Ø4 FILLER PIC X(8Ø) VALUE SPACES.
Ø2 MC-TITU21.
Ø4 FILLER PIC X(2Ø) VALUE SPACES.
Ø4 FILLER PIC X(36) VALUE
'CLEAR = EXIT ENTER = REFRESH'.
Ø4 FILLER PIC X(24) VALUE SPACES.
Ø1 MSG-PANTALLA-DISPLAY.
Ø2 MD-TITU1.
Ø4 FILLER PIC X(1Ø) VALUE 'IDBE DISP '.
Ø4 DIS-DB2ENTRY-SF PIC X(Ø8) VALUE SPACES.
Ø4 FILLER PIC X(Ø2) VALUE '>='.
Ø4 DIS-N-CALLS PIC 9(Ø7) VALUE ZEROES.
Ø4 FILLER PIC X(53) VALUE SPACES.
Ø2 MD-TITU2.
Ø4 FILLER PIC X(Ø9) VALUE 'Applid : '.
Ø4 DIS-APPLID PIC X(Ø8)BBBBBB VALUE SPACES.
Ø4 FILLER PIC X(34) VALUE
'Browse DB2Entrys Statistics Online'.
Ø4 FILLER PIC X(Ø6) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Date : '.
Ø4 DIS-DATE PIC X(Ø8) VALUE SPACES.
Ø4 FILLER PIC X(Ø2) VALUE SPACES.
Ø2 MD-TITU3.
Ø4 FILLER PIC X(Ø9) VALUE 'Sysid : '.
Ø4 DIS-SYSID PIC X(Ø4) VALUE SPACES.
Ø4 FILLER PIC X(5Ø) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Time : '.
Ø4 DIS-TIME PIC X(Ø8)BB VALUE SPACES.
Ø2 MD-TITU4.
Ø4 FILLER PIC X(Ø1) VALUE '*'.

98 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MD-TITU5.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(48) VALUE
'DB2Entry PlanName # Calls # Reuses # Term.'.
Ø4 FILLER PIC X(3Ø) VALUE
' W/O #Lim. #Peak #Curr.'.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MD-TITU6.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MD-TITU7 OCCURS 16 TIMES.
Ø4 MD-TITUS.
Ø6 FILLER PIC X(Ø1) VALUE '|'.
Ø6 DIS-DB2ENTRY-NAME PIC X(8)BB VALUE SPACES.
Ø6 DIS-PLAN-NAME PIC X(8)BB VALUE SPACES.
Ø6 DIS-CALLS PIC Z,ZZZ,ZZ9BBB.
Ø6 DIS-THREAD-REUSE PIC ZZZ,ZZ9BB.
Ø6 DIS-THREAD-TERM PIC ZZZ,ZZ9BB.
Ø6 DIS-THREAD-WAIT PIC ZZ,ZZ9BB.
Ø6 DIS-THREAD-LIMIT PIC Z,ZZ9BB.
Ø6 DIS-THREAD-HWM PIC Z,ZZ9BBB.
Ø6 DIS-THREAD-CURRENT PIC Z,ZZ9.
Ø6 FILLER PIC X(Ø1) VALUE '|'.
Ø4 MD-TITUR REDEFINES MD-TITUS.
Ø6 DIS-TITUR PIC X(8Ø).
Ø2 MD-TITU23.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MD-TITU24.
Ø4 FILLER PIC X(2Ø) VALUE SPACES.
Ø4 FILLER PIC X(36) VALUE
'CLEAR = Exit ENTER = Foward '.
Ø4 FILLER PIC X(24) VALUE SPACES.
Ø1 MSG-PANTALLA-PLAN.
Ø2 MP-TITU1.
Ø4 FILLER PIC X(1Ø) VALUE 'IDBE PLAN='.
Ø4 PLA-PLAN-NAME PIC X(Ø8)B VALUE SPACES.
Ø4 PLA-DB2ENTRY-SF PIC X(Ø8) VALUE SPACES.
Ø4 FILLER PIC X(53) VALUE SPACES.
Ø2 MP-TITU2.
Ø4 FILLER PIC X(Ø9) VALUE 'Applid : '.
Ø4 PLA-APPLID PIC X(Ø8)BBBBBB VALUE SPACES.
Ø4 FILLER PIC X(35) VALUE
'Browse DB2Entrys with same PlanName'.
Ø4 FILLER PIC X(Ø5) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Date : '.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 99


Ø4 PLA-DATE PIC X(Ø8)BB VALUE SPACES.
Ø2 MP-TITU3.
Ø4 FILLER PIC X(Ø9) VALUE 'Sysid : '.
Ø4 PLA-SYSID PIC X(Ø4) VALUE SPACES.
Ø4 FILLER PIC X(5Ø) VALUE SPACES.
Ø4 FILLER PIC X(Ø7) VALUE 'Time : '.
Ø4 PLA-TIME PIC X(Ø8)BB VALUE SPACES.
Ø2 MP-TITU4.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MP-TITU5.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø4 FILLER PIC X(48) VALUE
'DB2Entry ThrWait Priority # Calls # Reuses'.
Ø4 FILLER PIC X(3Ø) VALUE
' # Term W/O Total-Task'.
Ø4 FILLER PIC X(Ø1) VALUE '|'.
Ø2 MP-TITU6.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MP-TITU7 OCCURS 16 TIMES.
Ø4 MP-TITUS.
Ø6 FILLER PIC X(Ø1) VALUE '|'.
Ø6 PLA-DB2ENTRY-NAME PIC X(8)BBBB VALUE SPACES.
Ø6 PLA-THREADWAIT PIC X(4)BBBBB VALUE SPACES.
Ø6 PLA-PRIORITY PIC X(5)BBB VALUE SPACES.
Ø6 PLA-CALLS PIC Z,ZZZ,ZZ9BBB.
Ø6 PLA-THREAD-REUSE PIC ZZZ,ZZ9BB.
Ø6 PLA-THREAD-TERM PIC ZZZ,ZZ9BB.
Ø6 PLA-THREAD-WAIT PIC ZZ,ZZ9BBBB.
Ø6 PLA-TASK-TOTAL PIC Z,ZZZ,ZZ9.
Ø6 FILLER PIC X(Ø1) VALUE '|'.
Ø4 MP-TITUR REDEFINES MP-TITUS.
Ø6 PLA-TITUR PIC X(8Ø).
Ø2 MP-TITU23.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø4 FILLER PIC X(78) VALUE ALL '='.
Ø4 FILLER PIC X(Ø1) VALUE '*'.
Ø2 MP-TITU24.
Ø4 FILLER PIC X(2Ø) VALUE SPACES.
Ø4 FILLER PIC X(36) VALUE
'CLEAR = Exit ENTER = Foward '.
Ø4 FILLER PIC X(24) VALUE SPACES.
Ø1 DATOS-INPUT.
Ø2 FILLER PIC X(Ø5).
Ø2 DAT-DB2ENTRY-FUNC PIC X(Ø4).
Ø2 FILLER PIC X(Ø1).
Ø2 DAT-DB2ENTRY-NAME PIC X(Ø8) VALUE SPACES.

100 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Ø2 DAT-DISPLAY.
Ø4 FILLER PIC X(Ø2).
Ø4 DAT-N-CALLS PIC 9(Ø7).
Ø2 DAT-PLAN REDEFINES DAT-DISPLAY.
Ø4 FILLER PIC X.
Ø4 DAT-DB2ENTRY-SF PIC X(Ø8).
LINKAGE SECTION.
*----------------*
*COPY DFHD2GDS.
*CICS/DB2CONN STATISTICS (GLOBAL)
Ø1 DFHD2GDS SYNCHRONIZED.
Ø3 D2GLEN PIC S9(4) COMP.
Ø3 D2GID PIC XX.
88 D2GIDE VALUE ' #'.
Ø3 D2GDVERS PIC X.
88 D2GVERS VALUE '?'.
Ø3 FILLER PIC XXX.
Ø3 D2G-GLOBAL.
Ø5 D2G-DB2CONN-NAME PIC X(8).
Ø5 D2G-DB2-ID PIC X(4).
Ø5 D2G-DB2-RELEASE PIC X(4).
Ø5 D2G-CONNECT-TIME-GMT PIC X(8).
Ø5 D2G-CONNECT-TIME-LOCAL PIC X(8).
Ø5 D2G-DISCONNECT-TIME-GMT PIC X(8).
Ø5 D2G-DISCONNECT-TIME-LOCAL PIC X(8).
Ø5 D2G-TCB-LIMIT PIC S9(8) COMP.
Ø5 D2G-TCB-CURRENT PIC S9(8) COMP.
Ø5 D2G-TCB-HWM PIC S9(8) COMP.
Ø5 D2G-TCB-FREE PIC S9(8) COMP.
Ø5 D2G-TCB-READYQ-CURRENT PIC S9(8) COMP.
Ø5 D2G-TCB-READYQ-HWM PIC S9(8) COMP.
Ø5 FILLER PIC X(4Ø).
Ø3 D2G-POOL.
Ø5 D2G-POOL-PLAN-NAME PIC X(8).
Ø5 D2G-POOL-PLANEXIT-NAME PIC X(8).
Ø5 D2G-POOL-AUTHID PIC X(8).
Ø5 D2G-POOL-AUTHTYPE PIC X.
88 D2G-POOL-AUTHTYPE-NA VALUE ' '.
88 D2G-POOL-AUTHTYPE-USERID VALUE '?'.
88 D2G-POOL-AUTHTYPE-OPID VALUE '?'.
88 D2G-POOL-AUTHTYPE-GROUP VALUE '?'.
88 D2G-POOL-AUTHTYPE-SIGNID VALUE '?'.
88 D2G-POOL-AUTHTYPE-TERM VALUE '?'.
88 D2G-POOL-AUTHTYPE-TXID VALUE '?'.
Ø5 D2G-POOL-ACCOUNTREC PIC X.
88 D2G-POOL-ACCOUNTREC-NONE VALUE '?'.
88 D2G-POOL-ACCOUNTREC-TXID VALUE '?'.
88 D2G-POOL-ACCOUNTREC-TASK VALUE '?'.
88 D2G-POOL-ACCOUNTREC-UOW VALUE '?'.
Ø5 D2G-POOL-THREADWAIT PIC X.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 101


88 D2G-THREADWAIT-YES VALUE '?'.
88 D2G-THREADWAIT-NO VALUE '?'.
Ø5 D2G-POOL-PRIORITY PIC X.
88 D2G-POOL-PRIORITY-HIGH VALUE '?'.
88 D2G-POOL-PRIORITY-EQUAL VALUE '?'.
88 D2G-POOL-PRIORITY-LOW VALUE '?'.
Ø5 D2G-POOL-CALLS PIC S9(8) COMP.
Ø5 D2G-POOL-SIGNONS PIC S9(8) COMP.
Ø5 D2G-POOL-COMMITS PIC S9(8) COMP.
Ø5 D2G-POOL-ABORTS PIC S9(8) COMP.
Ø5 D2G-POOL-SINGLE-PHASE PIC S9(8) COMP.
Ø5 D2G-POOL-THREAD-REUSE PIC S9(8) COMP.
Ø5 D2G-POOL-THREAD-TERM PIC S9(8) COMP.
Ø5 D2G-POOL-THREAD-WAITS PIC S9(8) COMP.
Ø5 D2G-POOL-THREAD-LIMIT PIC S9(8) COMP.
Ø5 D2G-POOL-THREAD-CURRENT PIC S9(8) COMP.
Ø5 D2G-POOL-THREAD-HWM PIC S9(8) COMP.
Ø5 D2G-POOL-TASK-CURRENT PIC S9(8) COMP.
Ø5 D2G-POOL-TASK-HWM PIC S9(8) COMP.
Ø5 D2G-POOL-TASK-TOTAL PIC S9(8) COMP.
Ø5 D2G-POOL-READYQ-CURRENT PIC S9(8) COMP.
Ø5 D2G-POOL-READYQ-HWM PIC S9(8) COMP.
Ø5 FILLER PIC X(28).
Ø3 D2G-COMMAND.
Ø5 D2G-COMD-AUTHID PIC X(8).
Ø5 D2G-COMD-AUTHTYPE PIC X.
88 D2G-COMD-AUTHTYPE-NA VALUE ' '.
88 D2G-COMD-AUTHTYPE-USERID VALUE '?'.
88 D2G-COMD-AUTHTYPE-OPID VALUE '?'.
88 D2G-COMD-AUTHTYPE-GROUP VALUE '?'.
88 D2G-COMD-AUTHTYPE-SIGNID VALUE '?'.
88 D2G-COMD-AUTHTYPE-TERM VALUE '?'.
88 D2G-COMD-AUTHTYPE-TXID VALUE '?'.
Ø5 FILLER PIC XXX.
Ø5 D2G-DSNC-COMMAND-CALLS PIC S9(8) COMP.
Ø5 D2G-COMMAND-SIGNONS PIC S9(8) COMP.
Ø5 D2G-COMMAND-THREAD-TERM PIC S9(8) COMP.
Ø5 D2G-COMMAND-THREAD-OVERFLOW PIC S9(8) COMP.
Ø5 D2G-COMMAND-THREAD-LIMIT PIC S9(8) COMP.
Ø5 D2G-COMMAND-THREAD-CURRENT PIC S9(8) COMP.
Ø5 D2G-COMMAND-THREAD-HWM PIC S9(8) COMP.
Ø5 FILLER PIC X(36).
*COPY DFHD2RDS.
*CICS/DB2ENTRY STATISTICS (RESOURCE)
Ø1 DFHD2RDS SYNCHRONIZED.
Ø3 D2RLEN PIC S9(4) COMP.
Ø3 D2RID PIC XX.
88 D2RIDE VALUE ' #'.
Ø3 D2RDVERS PIC X.
88 D2RVERS VALUE '?'.

102 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Ø3 FILLER PIC XXX.
Ø3 D2R-DB2ENTRY-NAME PIC X(8).
Ø3 D2R-PLAN-NAME PIC X(8).
Ø3 D2R-PLANEXIT-NAME PIC X(8).
Ø3 D2R-AUTHID PIC X(8).
Ø3 D2R-AUTHTYPE PIC X.
88 D2R-AUTHTYPE-NA VALUE ' '.
88 D2R-AUTHTYPE-USERID VALUE '?'.
88 D2R-AUTHTYPE-OPID VALUE '?'.
88 D2R-AUTHTYPE-GROUP VALUE '?'.
88 D2R-AUTHTYPE-SIGNID VALUE '?'.
88 D2R-AUTHTYPE-TERM VALUE '?'.
88 D2R-AUTHTYPE-TXID VALUE '?'.
Ø3 D2R-ACCOUNTREC PIC X.
88 D2R-ACCOUNTREC-NONE VALUE '?'.
88 D2R-ACCOUNTREC-TXID VALUE '?'.
88 D2R-ACCOUNTREC-TASK VALUE '?'.
88 D2R-ACCOUNTREC-UOW VALUE '?'.
Ø3 D2R-THREADWAIT PIC X.
88 D2R-THREADWAIT-YES VALUE '?'.
88 D2R-THREADWAIT-NO VALUE '?'.
88 D2R-THREADWAIT-POOL VALUE '?'.
Ø3 D2R-PRIORITY PIC X.
88 D2R-PRIORITY-HIGH VALUE '?'.
88 D2R-PRIORITY-EQUAL VALUE '?'.
88 D2R-PRIORITY-LOW VALUE '?'.
Ø3 D2R-CALLS PIC S9(8) COMP.
Ø3 D2R-SIGNONS PIC S9(8) COMP.
Ø3 D2R-COMMITS PIC S9(8) COMP.
Ø3 D2R-ABORTS PIC S9(8) COMP.
Ø3 D2R-SINGLE-PHASE PIC S9(8) COMP.
Ø3 D2R-THREAD-REUSE PIC S9(8) COMP.
Ø3 D2R-THREAD-TERM PIC S9(8) COMP.
Ø3 D2R-THREAD-WAIT-OR-OVERF PIC S9(8) COMP.
Ø3 D2R-THREAD-LIMIT PIC S9(8) COMP.
Ø3 D2R-THREAD-CURRENT PIC S9(8) COMP.
Ø3 D2R-THREAD-HWM PIC S9(8) COMP.
Ø3 D2R-PTHREAD-LIMIT PIC S9(8) COMP.
Ø3 D2R-PTHREAD-CURRENT PIC S9(8) COMP.
Ø3 D2R-PTHREAD-HWM PIC S9(8) COMP.
Ø3 D2R-TASK-CURRENT PIC S9(8) COMP.
Ø3 D2R-TASK-HWM PIC S9(8) COMP.
Ø3 D2R-TASK-TOTAL PIC S9(8) COMP.
Ø3 D2R-READYQ-CURRENT PIC S9(8) COMP.
Ø3 D2R-READYQ-HWM PIC S9(8) COMP.
Ø3 FILLER PIC X(36).
PROCEDURE DIVISION.
*------------------*
RTN-PRINCIPAL.
*-------------*

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 103


EXEC CICS HANDLE CONDITION ERROR (REG-ERROR)
NOTFND (REG-NOTFND)
END-EXEC.
EXEC CICS IGNORE CONDITION LENGERR END-EXEC.
EXEC CICS ASKTIME ABSTIME(UTIME) END-EXEC.
EXEC CICS RECEIVE INTO (DATOS-INPUT)
LENGTH (LENGTH OF DATOS-INPUT)
END-EXEC.
EVALUATE DAT-DB2ENTRY-FUNC
WHEN 'DB2E'
PERFORM RTN-DB2ENTRY
WHEN 'CONN'
PERFORM RTN-CONNECT
WHEN 'DISP'
PERFORM RTN-DISPLAY THRU RTN-SEND-DISPLAY
WHEN 'PLAN'
PERFORM RTN-PLAN THRU RTN-SEND-PLAN
WHEN OTHER
MOVE 'IDBE CONN ' TO MSG1
MOVE 'SYNTAX : ' TO MSG2
MOVE 'IDBE CONN|DB2E|DISP|PLAN ' TO MSG3
MOVE 'IDBE CONN: For display DB2CONN statistics' TO MSG4
MOVE 'IDBE DB2E: For display DB2ENTRY name statistics'
TO MSG5
MOVE 'IDBE DISP: For Browse DB2ENTRYs name GE #Calls '
TO MSG6
MOVE
'IDBE PLAN: For Browse DB2ENTRYs name EQUAL PlanName'
TO MSG7
PERFORM REG-SEND-TEXTE
END-EVALUATE.
EXEC CICS RETURN END-EXEC.
GOBACK.
RTN-DB2ENTRY.
*------------*
MOVE DAT-DB2ENTRY-NAME TO MSG-DB2ENTRY-NAME.
IF MSG-DB2ENTRY-NAME = SPACES PERFORM REG-NOTFND.
EXEC CICS ASSIGN APPLID(APPLID)
SYSID(SYSID)
END-EXEC.
EXEC CICS FORMATTIME ABSTIME(UTIME)
DDMMYY(PRINT-DATE) DATESEP('/')
TIME(PRINT-TIME) TIMESEP
END-EXEC.
EXEC CICS COLLECT STATISTICS
SET(ADDRESS OF DFHD2RDS)
DB2ENTRY(MSG-DB2ENTRY-NAME)
END-EXEC.
MOVE D2R-DB2ENTRY-NAME TO M2R-DB2ENTRY-NAME.
MOVE D2R-PLAN-NAME TO M2R-PLAN-NAME.

104 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
IF D2R-THREADWAIT-YES
MOVE 'YES' TO M2R-THREADWAIT.
IF D2R-THREADWAIT-NO
MOVE 'NO' TO M2R-THREADWAIT.
IF D2R-THREADWAIT-POOL
MOVE 'POOL' TO M2R-THREADWAIT.
IF D2R-PRIORITY-HIGH
MOVE 'HIGH' TO M2R-PRIORITY.
IF D2R-PRIORITY-EQUAL
MOVE 'EQUAL' TO M2R-PRIORITY.
IF D2R-PRIORITY-LOW
MOVE 'LOW ' TO M2R-PRIORITY.
MOVE D2R-CALLS TO M2R-CALLS.
MOVE D2R-SIGNONS TO M2R-SIGNONS.
MOVE D2R-ABORTS TO M2R-ABORTS.
MOVE D2R-SINGLE-PHASE TO M2R-SINGLE-PHASE.
MOVE D2R-THREAD-REUSE TO M2R-THREAD-REUSE.
MOVE D2R-THREAD-TERM TO M2R-THREAD-TERM.
MOVE D2R-THREAD-WAIT-OR-OVERF TO M2R-THREAD-WAIT-OR-OVERF.
MOVE D2R-THREAD-LIMIT TO M2R-THREAD-LIMIT.
MOVE D2R-THREAD-CURRENT TO M2R-THREAD-CURRENT.
MOVE D2R-THREAD-HWM TO M2R-THREAD-HWM.
MOVE D2R-PTHREAD-LIMIT TO M2R-PTHREAD-LIMIT.
MOVE D2R-PTHREAD-CURRENT TO M2R-PTHREAD-CURRENT.
MOVE D2R-PTHREAD-HWM TO M2R-PTHREAD-HWM.
MOVE D2R-TASK-CURRENT TO M2R-TASK-CURRENT.
MOVE D2R-TASK-HWM TO M2R-TASK-HWM.
MOVE D2R-TASK-TOTAL TO M2R-TASK-TOTAL.
EXEC CICS SEND FROM(MSG-PANTALLA-DB2ENTRY)
LENGTH (LENGTH OF MSG-PANTALLA-DB2ENTRY)
ERASE WAIT
END-EXEC.
RTN-CONNECT.
*-----------*
EXEC CICS ASSIGN APPLID(C-APPLID)
SYSID(C-SYSID)
END-EXEC.
EXEC CICS FORMATTIME ABSTIME(UTIME)
DDMMYY(PRINC-DATE) DATESEP('/')
TIME(PRINC-TIME) TIMESEP
END-EXEC.
EXEC CICS COLLECT STATISTICS
SET(ADDRESS OF DFHD2GDS)
DB2CONN
END-EXEC.
MOVE D2G-DB2CONN-NAME TO M2G-DB2CONN-NAME.
MOVE D2G-DB2-ID TO M2G-DB2-ID.
MOVE D2G-TCB-LIMIT TO M2G-TCB-LIMIT.
MOVE D2G-TCB-CURRENT TO M2G-TCB-CURRENT.
MOVE D2G-TCB-HWM TO M2G-TCB-HWM.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 105


MOVE D2G-TCB-FREE TO M2G-TCB-FREE.
MOVE D2G-POOL-PLAN-NAME TO M2G-POOL-PLAN-NAME.
MOVE D2G-POOL-CALLS TO M2G-POOL-CALLS.
MOVE D2G-POOL-SIGNONS TO M2G-POOL-SIGNONS.
MOVE D2G-POOL-COMMITS TO M2G-POOL-COMMITS.
MOVE D2G-POOL-THREAD-REUSE TO M2G-POOL-THREAD-REUSE.
MOVE D2G-POOL-THREAD-TERM TO M2G-POOL-THREAD-TERM.
MOVE D2G-POOL-THREAD-WAITS TO M2G-POOL-THREAD-WAITS.
MOVE D2G-POOL-THREAD-LIMIT TO M2G-POOL-THREAD-LIMIT.
MOVE D2G-POOL-THREAD-CURRENT TO M2G-POOL-THREAD-CURRENT.
MOVE D2G-DSNC-COMMAND-CALLS TO M2G-DSNC-COMMAND-CALLS.
MOVE D2G-COMMAND-THREAD-LIMIT TO M2G-COMMAND-THREAD-LIMIT.
MOVE D2G-COMMAND-THREAD-HWM TO M2G-COMMAND-THREAD-HWM.
EXEC CICS SEND FROM(MSG-PANTALLA-CONNECT)
LENGTH (LENGTH OF MSG-PANTALLA-CONNECT)
ERASE WAIT
END-EXEC.
RTN-DISPLAY.
*-----------*
MOVE DAT-N-CALLS TO DIS-N-CALLS.
EXEC CICS ASSIGN APPLID(DIS-APPLID)
SYSID(DIS-SYSID)
END-EXEC.
EXEC CICS FORMATTIME ABSTIME(UTIME)
DDMMYY(DIS-DATE) DATESEP('/')
TIME(DIS-TIME) TIMESEP
END-EXEC.
EXEC CICS INQUIRE DB2ENTRY
START AT(DAT-DB2ENTRY-NAME)
END-EXEC.
PERFORM UNTIL I > 16
EXEC CICS INQUIRE
DB2ENTRY(DAT-DB2ENTRY-NAME)
NEXT NOHANDLE RESP(RESP1)
END-EXEC
IF RESP1 = DFHRESP(END)
MOVE '| *** END OF DB2ENTRYS ***' TO DIS-TITUR(I)
MOVE 17 TO I
GO TO RTN-SEND-DISPLAY
END-IF
EXEC CICS COLLECT STATISTICS
SET(ADDRESS OF DFHD2RDS)
DB2ENTRY(DAT-DB2ENTRY-NAME)
END-EXEC
MOVE D2R-CALLS TO W2R-CALLS
IF W2R-CALLS >= DAT-N-CALLS
MOVE D2R-DB2ENTRY-NAME TO DIS-DB2ENTRY-NAME(I)
DIS-DB2ENTRY-SF
MOVE D2R-PLAN-NAME TO DIS-PLAN-NAME(I)
MOVE D2R-CALLS TO DIS-CALLS(I)

106 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
MOVE D2R-THREAD-REUSE TO DIS-THREAD-REUSE(I)
MOVE D2R-THREAD-TERM TO DIS-THREAD-TERM(I)
MOVE D2R-THREAD-WAIT-OR-OVERF TO DIS-THREAD-WAIT(I)
MOVE D2R-THREAD-LIMIT TO DIS-THREAD-LIMIT(I)
MOVE D2R-THREAD-HWM TO DIS-THREAD-HWM(I)
MOVE D2R-THREAD-CURRENT TO DIS-THREAD-CURRENT(I)
ADD 1 TO I
END-IF
END-PERFORM.
RTN-SEND-DISPLAY.
*----------------*
EXEC CICS INQUIRE DB2ENTRY END
END-EXEC.
EXEC CICS SEND FROM(MSG-PANTALLA-DISPLAY)
LENGTH (LENGTH OF MSG-PANTALLA-DISPLAY)
ERASE WAIT
END-EXEC.
RTN-PLAN.
*---------*
MOVE DAT-DB2ENTRY-NAME TO PLA-PLAN-NAME.
EXEC CICS ASSIGN APPLID(PLA-APPLID)
SYSID(PLA-SYSID)
END-EXEC.
EXEC CICS FORMATTIME ABSTIME(UTIME)
DDMMYY(PLA-DATE) DATESEP('/')
TIME(PLA-TIME) TIMESEP
END-EXEC.
EXEC CICS INQUIRE DB2ENTRY
START AT(DAT-DB2ENTRY-SF)
END-EXEC.
PERFORM UNTIL I > 16
EXEC CICS INQUIRE
DB2ENTRY(DAT-DB2ENTRY-SF)
NEXT NOHANDLE RESP(RESP1)
END-EXEC
IF RESP1 = DFHRESP(END)
MOVE '| *** END OF DB2ENTRYS ***' TO PLA-TITUR(I)
MOVE 17 TO I
GO TO RTN-SEND-PLAN
END-IF
EXEC CICS COLLECT STATISTICS
SET(ADDRESS OF DFHD2RDS)
DB2ENTRY(DAT-DB2ENTRY-SF)
END-EXEC
IF D2R-PLAN-NAME = DAT-DB2ENTRY-NAME
MOVE D2R-DB2ENTRY-NAME TO PLA-DB2ENTRY-NAME(I)
PLA-DB2ENTRY-SF
IF D2R-THREADWAIT-YES
MOVE 'YES' TO PLA-THREADWAIT(I)
END-IF

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 107


IF D2R-THREADWAIT-NO
MOVE 'NO' TO PLA-THREADWAIT(I)
END-IF
IF D2R-THREADWAIT-POOL
MOVE 'POOL' TO PLA-THREADWAIT(I)
END-IF
IF D2R-PRIORITY-HIGH
MOVE 'HIGH' TO PLA-PRIORITY(I)
END-IF
IF D2R-PRIORITY-EQUAL
MOVE 'EQUAL' TO PLA-PRIORITY(I)
END-IF
IF D2R-PRIORITY-LOW
MOVE 'LOW ' TO PLA-PRIORITY(I)
END-IF
MOVE D2R-CALLS TO PLA-CALLS(I)
MOVE D2R-THREAD-REUSE TO PLA-THREAD-REUSE(I)
MOVE D2R-THREAD-TERM TO PLA-THREAD-TERM(I)
MOVE D2R-THREAD-WAIT-OR-OVERF TO PLA-THREAD-WAIT(I)
MOVE D2R-TASK-TOTAL TO PLA-TASK-TOTAL(I)
ADD 1 TO I
END-IF
END-PERFORM.
RTN-SEND-PLAN.
*-------------*
EXEC CICS INQUIRE DB2ENTRY END
END-EXEC.
EXEC CICS SEND FROM(MSG-PANTALLA-PLAN)
LENGTH (LENGTH OF MSG-PANTALLA-PLAN)
ERASE WAIT
END-EXEC.
REG-ERROR.
*----------*
MOVE 'ERRORØ2 ... USE CEDF TRANSACTION ' TO MSG2.
PERFORM REG-SEND-TEXTE.
REG-NOTFND.
*----------*
MOVE 'IDBE DISP >=ØØØØØØØ ' TO MSG1.
MOVE 'ERRORØ1 ... DB2ENTRY NOT FOUND' TO MSG2.
MOVE 'SYNTAX: ' TO MSG3.
MOVE 'IDBE DB2E db2entry : for db2entry name statistics'
TO MSG4.
MOVE ' ' TO MSG5.
MOVE 'IDBE DISP db2entry>=#calls ' TO MSG6.
MOVE 'DB2ENTRY : DB2ENTRY NAME initial foward Browse'
TO MSG7.
MOVE '#CALLS : For List only DB2ENTRYs GE #CALLS '
TO MSG8.
MOVE ' (Default ØØØØØØØ)' TO MSG9.
PERFORM REG-SEND-TEXTE.

108 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
REG-SEND-TEXTE.
*-------------*
EXEC CICS SEND FROM(MSG-ERROR)
LENGTH (LENGTH OF MSG-ERROR)
ERASE WAIT LAST
END-EXEC.
EXEC CICS RETURN
END-EXEC.

IDBE CONN
Applid : CICPBB1A Display of DB2CONN Statistic Online Date : 11/Ø6/Ø1
Sysid : PT9Ø Time : 1Ø:18:35
*==============================================================================*
|DB2 Connection name : RCT1A DB2 Sysid : DSNP |
+==============================================================================+
|TCBS STATISTICS |
|# Maximo : 66 # Current : 63 # Peak : 63 |
|# Free : 27 |
+==============================================================================+
|DB2 CONNECTION POOL STATISTICS |
|Plan name : DEFAULT # of CALLS : Ø # of Signons : Ø |
|# of Commits : Ø # of Reuses : 1 # Terminates : 37,675 |
|# of Waits : 6 # Pool Limit : 27 # Current : 4 |
+==============================================================================+
|DB2 CONNECTION DSNC COMMAND STATISTICS |
|# Calls : Ø # Maximo : 1 # Peak : Ø |
*==============================================================================*

CLEAR = EXIT ENTER = REFRESH

IDBE DB2E PAF3


Applid : CICPBB1A Display DB2Entry Statistics Online Date : 11/Ø6/Ø1
Sysid : PT9Ø Time : 1Ø:22:47
*==============================================================================*
|DB2 Entry Name: PAF3 Plan Name : BPPBAPE ThreadWait: POOL |
+==============================================================================+
|Priority : EQUAL # Calls : 318,Ø29 Signons : 6 |
|Aborts : 165 Single Pha: 5,4Ø8 # Reuses : 5,281 |
|Terminates: 9Ø # W/O : 1 |
|# Current : Ø # Peak : 6 # Limit : 6 |
|Prot.Curr : 2 Prot.Peak : 2 Prot.Limit: 2 |
|Curr.Task : Ø Peak Task : 7 Total Task: 5,4Ø8 |
*==============================================================================*

CLEAR = EXIT ENTER = REFRESH

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 109


IDBE DISP B24 >= 1000
Applid : CICPBB1A Browse DB2Entrys Statistics Online Date : 11/Ø6/Ø1
Sysid : PT9Ø Time : 1Ø:31:Ø3
*==============================================================================*
|DB2Entry PlanName # Calls # Reuses # Term. W/O #Lim. #Peak #Curr.|
*==============================================================================*
|B24 BPPBIPE 4Ø9,835 5,548 48 Ø 1Ø 5 Ø|
|COUNT BPPASPE 4,241 623 45 Ø 4 2 Ø|
|ENTRY BPPGPPE 29Ø,384 7,635 49 Ø 1Ø 5 Ø|
|WARRANT BPPCRPE 14,839 1,Ø13 24 Ø 6 3 Ø|
| *** END OF DB2ENTRYS *** |
| |
| |
*==============================================================================*
CLEAR = Exit ENTER = Foward

IDBE PLAN=BPPBIPE MZ05


Applid : CICPBB1A Browse DB2Entrys with same PlanName Date : 11/Ø6/Ø1
Sysid : PT9Ø Time : 1Ø:47:35
*==============================================================================*
|DB2Entry ThrWait Priority # Calls # Reuses # Term W/O Total-Task|
*==============================================================================*
|B24 POOL EQUAL 4Ø9,835 5,548 48 Ø 5,62Ø|
|HZØ2 POOL EQUAL 1,32Ø 138 12 Ø 239Ø|
|JZ99 POOL EQUAL Ø Ø Ø Ø Ø|
|IZ33 POOL EQUAL 456 32 3 35 35|
|MZØ5 POOL EQUAL Ø Ø Ø Ø Ø|
*==============================================================================*
CLEAR = Exit ENTER = Foward

After tuning and reusing the threads, the following were noted:
• The daily average of CICS TS transactions was increased by 10%.
• The response time daily average was lowered by 25%.
• The consumption of CPU by CICS TS and DB2 was reduced by 9%.
The most important change was that contention is not present
any more in CICS TS when the maximum TCBLIMIT value is reached.
Juan Eduardo Flores Sotelo
Systems Programmer
Banco Continental (Peru) © Xephon 2002

110 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Understanding CICS Monitoring and Statistics data

CICSPlex SM provides information about CICS runtime resources via


two components, namely OPERATIONS and MONITORING. The details
of these resources can be found in the Resource Tables Reference manual.

OPERATIONS resources are obtained from the Managed Address Space


(MAS) at the point in time when the request is made. EXEC CICS
INQUIRE, COLLECT STATISTICS, etc are used by the MAS agent code
to obtain relevant attribute data for a given resource type. In addition, some
attributes are calculated from information obtained via the above interfaces.
A typical operations resource would be CICSRGN.
MONITORING resources are obtained from the MON data cache at the
point in time the request is made. How this data is produced from the MAS
data is, however, a little more involved. Monitoring objects have M
prefixes as a naming convention. The Monitoring equivalent of CICSRGN
is therefore MCICSRGN.
In common with Operations requests, EXEC CICS INQUIRE, COLLECT
STATISTICS etc, are used by the monitoring MAS agent code and again
additional attributes are calculated. Monitoring (XMNOUT) and Statistics
(XSTOUT) exits are also utilized for capturing information from the MAS
. The resource data to be obtained is defined via the relevant MONDEF,
PERIODEF definitions. It is obtained at a sampling frequency defined in
CSYSDEF and MONSPEC definitions. Data obtained from the MAS
agents is placed in N prefixed tables (eg NCICSRGN), which are not
available to the external user. They are merely transitory tables used by the
CMAS for amalgamating information into the M prefix tables in the MON
data cache. At that point in time, additional fields are also calculated by the
CMAS (so-called derived fields).
Whilst the relation between base EXEC CICS INQUIRE requests and
EXEC CICS COLLECT STATISTICS data to Resource Table attributes is
straightforward enough, a common question is how the additional fields
are calculated in the MAS, how values are amalgamated into the M prefix
tables, and how derived field data is calculated. This article attempts to
provide some answers to those questions.

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 111


In the following discussion, the resources are assumed to correspond to
the CICS Transaction Server 1.3 level of function. Of course, CICSPlex
SM supports all levels of CICS Transaction Server.

MAS AGENT DATA


The operations and monitoring fields that are calculated in the MAS agents,
and how those attributes are derived, are shown in Figure 1.

Monitoring exit XMNOUT


The XMNOUT exit copies performance class record data into a storage
area for asynchronous processing by another task. Data is processed only
if information has been requested for this tranid. Exception class records
are not processed.
The data is transformed into NTASK tables. This is a straight transformation
between data identified by dictionary field identifiers and NTASK fields (eg
NTASK_TRANID and dfi 001; NTASK_USERID and dfi 089).

Statistics exit XSTOUT


Resource data is collected for resource types for which monitoring is
active (as defined via MONDEFs etc). Only interval statistics, end of day
statistics, and requested reset statistics are processed. The required data is
placed into a storage area for asynchronous MAS agent processing. Again,
additional fields are calculated as defined in the example above.

CMAS PROCESSING
Processing in the CMAS follows a cycle. Events in the cycle are as follows.

Mxxx table initialization


When CPSM MONITORing is activated, the initial values for the Mxxxx
tables are set. All CHAR data types are set to blank, all others to X'00's.

112 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
PAGEOUT OUXBPOUT Total page
outs
REALSTG RAXFMCT- Total frame
RAX ASCBRSME count
CPUTIME ASCBEJST+ Total CPU
ASCBSRBT time
PRGMRCMP LDGDSAST Sum(LDGDPSCR, Programs
AT LDGMAXDSA) removed
by
cmpressio
n
LOADPNIU Sum(LDGPROGNIU, No of
LDGMAXDSA) programs
on NIU
queue
LOADRNIU Sum(LDGRECNIU, No of
LDGMAXDSA) reclaims
from NIU
queue
LOADTNIU Sum(LDGDPSCT, Times
LDGMAXDSA) removed
program
on queue
MVSSYSID CVT SMCASID- MVS sysid
SMCABASE
CICSDSA NCICSDSA SIZE SMSBODY SMSDSASZ
Storage
size
STGFSIZE SMSFSTG Free
storage
(inc.
cushion)
LIMIT SMSGLOBA SMS(E)DSALIMIT Max DSA
L size
CURRALLOC SMS(E)DSATOTAL Cur DSA
alloction
HWMALLOC SMSHWM(E)DSATOTAL HWM DSA
allocated
POOLPCTFREE STGFSIZE*1000/ SIZE Percent
free in the
specific
storage
pool
PCTFREE [SMS(E)DSALIMIT- Percent
SMS(E)DSATOTAL+ free in
Sum( storage
SMSBODY.SMSFSTG, area
SMSNPAGP)] *1000/
LIMIT

Figure1a: Operations and Monitoring fields

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 113


Operations Monitoring Attribute CICS DSECT Field Comments
DSECT
N/A NCMDT TOTLREQCNT DFHA17DS A17DSRD+ Total
A17DSGU+ request
A17DSBR+ count
A17DSWRA+
A17DSWRU+
A17DSDEL
TOTMREQCNT A17DTRDS+ Total
A17DTRNF+ request
A17DTAVR+ count
A17DTADS+
A17DTARJ+
A17DTATF+
A17DTRWS+
A17DTDLS
N/A NLOCFILE TOTLREQCNT DFHA17DS A17DSRD+ Total
A17DSGU+ request
A17DSBR+ count
A17DSWRA+
A17DSWRU+
A17DSDEL
N/A NREMFILE TOTLREQCNT DFHA17DS A17DSRD+ Extra
A17DSGU+ partition
A17DSBR+ count
A17DSWRA+
A17DSWRU+
A17RMDEL
N/A NCONNECT TOTFUNCSHIP DFHA14DS A14ESTFC+ Total
A14ESTIC+ function
A14ESTTD+ ships
A14ESTTS+
A14ESTDL+
A14ESTPC
CICSRGN NCICSRGN CUTCBCNT DSGTCB Sum(DSGTCBCA, Store
DSGASIZE) Number of
TCBs
TOTLTASKS DFHXMGDS XMGTNUM+ Total tasks
XMGNUM since
startup
SYSID SMCABASE SMCASID MVS Sysid
MVSSYSNAME CVT CVTSNAME MVS
sysname
SIOREQ ASCB ASCBIOSC Total IO
count
PAGEIN OUXB OUXBPIN+ Page ins
OUXBCAPI

Figure1b: Operations and Monitoring fields

114 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
CICS reset command
CICS can have its data collection reset. This action has no effect on the
Mxxxx table entries.

CICSPlex SM reset command


CICSPlex SM can request to have its data collection reset. Most fields are
unaffected by this action.
The possible CPSM reset actions on attributes can be the following:
• RESET – reset to initialization value
• ZERO – set to X'00's
• BLANK – set to C‘ ’s
• NONE – no change
• ZEROCICS – ignore for CICS reset.
The most common action is NONE.

Combining Nxxxx data with existing Mxxxx data


Each time the data is sampled (Nxxxx), it must be combined with the old
Mxxxx data to produce the new Mxxxx data. For most attributes, the action
is to replace the attribute with the new value (ie Mxxxx_aaa = Nxxxx_aaa).
This is denoted by REPL.
The complete set of calculations that can be performed is as follows:
• ADD – newcurrentdata = newCICSvalue + oldcurrentvalue
• SUB – newcurrentvalue = newCICSvalue – oldcurrentvalue
• DELTA – newcurrentdata = newCICSvalue – seedvalue
• NONE – no processing to take place
• REPL<,how>:
– None: (newCICSvalue)
– RATE_INST: attrlist1((newcurrent) – (oldcurrent))/
(intervalSeconds)

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 115


– RATE_INTVL: attrlist1(newcurrent)/
((intervalseconds)*(numberofintervals))
– PCTG_INST: attrlist1((newcurrent)-(oldcurrent))/
attrlist2((newcurrent) – (oldcurrent))
– PCTG_INTV: attrlist1(newcurrent)/attrlist2(newcurrent)
– PCT_INST: attrlist1((newcurrent)-(oldcurrent))/
attrlist2((newcurrent) – (oldcurrent))
– PCT_INTVL: (((oldcurrentPCT_INST) * (numberofintervals –
1) + (newcurrentPCT_INST))/(numberofintervals)
– AVG_INST: attrlist1((newcurrent) – (oldcurrent))/
attrlist2((newcurrent) – (oldcurrent))
– AVG_INTVL: (((oldcurrentAVG_INST) * (numberofintervals
– 1)) + (newcurrentAVG_INST))/ (number of intervals)
– SUM: attrlist1(newcurrent) + attrlist2(newcurrent)
– DEDUCT: attrlist1(newcurrent) – attrlist2(newcurrent)
– STCKDIFF: attrlist1(newcurrentSTCK) –
attrlist2(newcurrentSTCK)
– TALLY: (newderived)+(oldurrent).

Processing
It is useful to have a value (called the seed value) to help in the calculation
of the Mxxxx values. The seed is set as follows:
1 Activation of monitoring.seedValue = CICS value at this time
2 CICS Reset.seedValue = seedValue – last CICS value before reset
3 CPSM Reset.seedValue = seedValue + currentSMValue
For DELTA type fields, the new value is calculated at sample intervals via
Mvalue = Nvalue – seed.
This is illustrated in Figure 2.
Intermediate fields can also be defined for the duration of the processing
of the record, in order to perform more complex calculations.

116 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Start Sample Sample CICS Sample Sample CPSM Sample Sample
MON Reset reset
Nusecount 12 24 30 36 10 20 36 46
seedvalue 12 12 12 -24 -24 -24 20 20 20
Musecount 0 12 18 34 44 0 16 26

Figure 2: Example values used

TABLES
The following tables show attributes that have processing properties other
than NONE, REPLace.

MCICSRGN

Base fields
Attribute CPSM Reset Calculation
MAXTRCNT ZERO DELTA
LOADREQS ZERO DELTA
LOADTIME ZERO DELTA
PRGMUCNT ZERO DELTA
LOADWCNT ZERO DELTA
LOADWAIT ZERO DELTA
RDEBRBLD ZERO DELTA
PRGMRCMP ZERO DELTA
LOADTNIU ZERO DELTA
LOADRNIU ZERO DELTA
SDMPTOTL ZERO DELTA
SDMPSUPP ZERO DELTA
TDMPTOTL ZERO DELTA
TDMPSUPP ZERO DELTA
CPUTIME ZEROCICS DELTA
PAGEIN ZEROCICS DELTA
PAGEOUT ZEROCICS DELTA
SIOREQ ZEROCICS DELTA
VTMRPLMAX ZERO DELTA
VTMRPLPOST ZERO DELTA
VTMSOSCNT ZERO DELTA
VTMACBDOPE ZERO DELTA
TOTACTVUSRTR ZERO DELTA
TOTDELYUSRTR ZERO DELTA
TOTQUETIME ZERO DELTA
PROGAUTOATTM ZERO DELTA
PROGAUTOXREJ ZERO DELTA
PROGAUTOFAIL ZERO DELTA

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 117


INTVTRANS ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CURTASKRATE ZERO REPL,RATE_INST TOTLTASKS
INTTASKRATE ZERO REPL,RATE_INTVL TOTLTASKS
CURCPUPER ZEROCICS REPL,PCTG_INST CPUTIME
INTCPUPER ZEROCICS REPL,PCTG_INTVL CPUTIME
CURPGIRATE ZEROCICS REPL,RATE_INST PAGEIN
INTPGIRATE ZEROCICS REPL,RATE_INTVL PAGEIN
CURPGORATE ZEROCICS REPL,RATE_INST PAGEOUT
INTPGORATE ZEROCICS REPL,RATE_INTVL PAGEOUT
CURSIORATE ZEROCICS REPL,RATE_INST SIOREQ
INTSIORATE ZEROICCS REPL,RATE_INTVL SIOREQ

MCICSDSA

Base fields
Attribute CPSM Reset Calculation
GETMTOTL ZERO DELTA
FREMTOTL ZERO DELTA
ASUBTOTL ZERO DELTA
DSUBTOTL ZERO DELTA
NSTGTOTL ZERO DELTA
STGSTOTL ZERO DELTA
STGPWCNT ZERO DELTA
STGCRELC ZERO DELTA
STGSOSC ZERO DELTA
STGSOST ZERO DELTA
STGVTOTL ZERO DELTA
NSTGTSUSP DELTA  

Derived fields
Field CPSM Reset Calculation args
CURFRESTG ZERO REPL,PCT_INST STGFSIZE,SIZE
INTFRESTG ZERO REPL,PCT_INTVL STGFSIZE,SIZE

MTRANCLS

Base fields
Attribute CPSM Reset Calculation
QUEUED ZERO
PURGETHRESH DELTA
ATTACHES ZERO DELTA
PURGEIMMED ZERO DELTA
ACCEPTIMMED ZERO DELTA

118 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
ACCEPTAFTRQD ZERO DELTA
TIMESATMAX ZERO DELTA
PURGTHRTIMES ZERO DELTA
QUEUETIME ZERO DELTA
CURQUEDTIME ZERO DELTA

MTDQGBL

Base fields
Attribute CPSM Reset Calculation
NOSPACECNT ZERO DELTA
WRITES ZERO DELTA
READS ZERO DELTA
FMTWRITE ZERO DELTA
IOERRS ZERO DELTA

Intermediate fields
Field CPSM Reset Calculation args
IMMD_SAMPLACCESS REPL,SUM READS,WRITES
IMMD_ACCESMREADS REPL,DEDUCT ACCESSCNT,READS

Derived fields
Field CPSM Reset Calculation args
CURACCCNT ZERO REPL,RATE_INST ACCESSMREADS
INTACCCNT ZERO REPL,RATE_INTVL ACCESSMREADS
CURFULLPER ZERO REPL,PCTG_INST NOSPACECNT,SAMPLACCESS
INTFULLPER ZERO REPL,PCTG_INTVL NOSPACECNT,SAMPLACCESS
CURWRITRATE ZERO REPL,RATE_INST WRITES
INTWRITRATE ZERO REPL,RATE_INTVL WRITES
CURREADRATE ZERO REPL,RATE_INST READS
INTREADRATE ZERO REPL,RATE_INTVL READS

MTSQGBL

Base fields
Attribute Reset Calculation
PUTQMAIN ZERO DELTA
GETQMAIN ZERO DELTA
PUTQAUX ZERO DELTA
GETQAUX ZERO DELTA
ENTLGQUE ZERO DELTA
QUECRECNT ZERO DELTA
QUEXTENDS ZERO DELTA
WRTGTCISZ ZERO DELTA
PEAKCIUSE ZERO DELTA
AUXFULL ZERO DELTA

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 119


BUFFWAITS ZERO DELTA
BUFWRITES ZERO DELTA
WRTFRECVR ZERO DELTA
BUFREADS ZERO DELTA
FMTWRT ZERO DELTA
IOERRS ZERO DELTA
STRINGWAIT ZERO DELTA

Intermediate fields
Field CPSM Reset Calculation args
IMMD_SAMPLACCESS REPL,SUM PUTQAUX,GETQAUX
IMMD_INTVLACCESS REPL,SUM PUTQAUX,GETQAUX
IMMD_SAMPLBUFACC REPL,SUM BUFREADS,BUFWRITES
IMMD_INTVLBUFACC REPL,SUM BUFWRITES,BUFREADS
IMMD_GETQMREADB REPL,DEDUCT GETQAUX,BUFREADS

Derived fields
Field CPSM Reset Calculation args
CURREADRATE ZERO REPL,RATE_INST BUFREADS
INTREADRATE ZERO REPL,RATE_INTVL BUFREADS
CURMPUTQRATE ZERO REPL,RATE_INST PUTQMAIN
INTMPUTQRATE ZERO REPL,RATE_INTVL PUTQMAIN
CURMGETQRATE ZERO REPL,RATE_INST GETQMAIN
INTMGETQRATE ZERO REPL,RATE_INTVL GETQMAIN
CURAPUTQRATE ZERO REPL,RATE_INST PUTQAUX
INTAPUTQRATE ZERO REPL,RATE_INTVL PUTQAUX
CURAGETQRATE ZERO REPL,RATE_INST GETQAUX
INTAGETQRATE ZERO REPL,RATE_INTVL GETQAUX
CURFULLPER ZERO REPL,PCT_INST AUXFULL,SAMPLACCESS
INTFULLPER ZERO REPL,PCT_INTVL AUXFULL,SAMPLACCESS
CURBHITRATE ZERO REPL,RATE_INST GETQMREADB
INTBHITRATE ZERO REPL,RATE_INTVL GETQMREADB
CURWRITRATE ZERO REPL,RATE_INST BUFWRITES
INTWRITRATE ZERO REPL,RATE_INTVL BUFWRITES

MFEPICON

Base fields
Attribute CPSM Reset Calculation
ACQUIRES ZERO DELTA
CONVERSATNS ZERO DELTA
UNSOLICINP ZERO DELTA
CHARSSENT ZERO DELTA
CHARSRECVD ZERO DELTA
RECVTIMEOUT ZERO DELTA
ERRORS ZERO DELTA

120 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Derived fields
Field CPSM Reset Calculation args
CSACQRATE ZERO REPL,RATE_INST ACQUIRES
MIACQRATE ZERO REPL,RATE_INTVL ACQUIRES

MCONNECT

Base fields
Attribute CPSM Reset Calculation
ATISBPRI ZERO DELTA
ATISBSEC ZERO DELTA
BIDSSENT ZERO DELTA
ALLOCATES ZERO DELTA
FAILINKALLOC ZERO DELTA
FAILEDOTHERS ZERO DELTA
FCFUNCSHIP ZERO DELTA
ICFUNCSHIP ZERO DELTA
TDFUNCSHIP ZERO DELTA
TSFUNCSHIP ZERO DELTA
DLIFUNCSHIP ZERO DELTA
TOTFUNCSHIP ZERO DELTA
TERMSHAREREQ ZERO DELTA
MAXQTPURGCNT ZERO
XZIQREJS ZERO
XZIQPRGCNT ZERO
XZIQALLCPRG ZERO
MAXQTALLCPRG ZERO
PRICURRUSED ZERO DELTA
SECCURRUSED ZERO DELTA
DPLFUNCSHIP ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CURFCFSRATE ZERO REPL,RATE_INST TOTFUNCSHIP
INTFCFSRATE ZERO REPL,RATE_INTVL TOTFUNCSHIP

MLSRPOOL

Base fields
Attribute CPSM Reset Calculation
TOTWAITREQ ZERO DELTA
DBLOOKASIDE ZERO DELTA
DBREAD ZERO DELTA
DBUIWRITE ZERO DELTA
DBNUWRITE ZERO DELTA
DCREAD ZERO DELTA

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 121


DCWRITE ZERO DELTA
IBLOOKASIDE ZERO DELTA
IBREADS ZERO DELTA
IBUIWRITE ZERO DELTA
IBNUWRITE ZERO DELTA
ICREAD ZERO DELTA
ICWRITE ZERO DELTA

Intermediate fields
Field CPSM Reset Calculation args
IMMD_SAMPLDWRTCT REPL,SUM DBUIWRITE,DBNUWRITE
IMMD_INTVLDWRTCT REPL,SUM DBUIWRITE,DBNUWRITE
IMMD_SAMPLIWRTCT REPL,SUM IBUIWRITE,IBNUWRITE
IMMD_INTVLIWRTCT REPL,SUM IBUIWRITE,IBNUWRITE

Derived fields
Field CPSM Reset Calculation args
CURDBHITRATE ZERO REPL,RATE_INST DBLOOKASIDE
INTDBHITRATE ZERO REPL,RATE_INTVL DBLOOKASIDE
CURDWRITRATE ZERO REPL,RATE_INST SAMPLDWRTCT
INTDWRITRATE ZERO REPL,RATE_INTVL INTVLDWRTCT
CURDREADRATE ZERO REPL,RATE_INST DBREAD
INTDREADRATE ZERO REPL,RATE_INTVL DBREAD
CURDHWRIRATE ZERO REPL,RATE_INST DCWRITE
INTDHWRIRATE ZERO REPL,RATE_INTVL DCWRITE
CURDHREARATE ZERO REPL,RATE_INST DCREAD
INTDHREARATE ZERO REPL,RATE_INTVL DCREAD
CURIBHITRATE ZERO REPL,RATE_INST IBLOOKASIDE
INTIBHITRATE ZERO REPL,RATE_INTVL IBLOOKASIDE
CURIWRITRATE ZERO REPL,RATE_INST SAMPLIWRTCT
INTIWRITRATE ZERO REPL,RATE_INTVL INTVLIWRTCT
CURIREADRATE ZERO REPL,RATE_INST IBREADS
INTIREADRATE ZERO REPL,RATE_INTVL IBREADS
CURIHWRIRATE ZERO REPL,RATE_INST ICWRITE
INTIHWRIRATE ZERO REPL,RATE_INTVL ICWRITE
CURIHREARATE ZERO REPL,RATE_INST ICREAD
INTIHREARATE ZERO REPL,RATE_INTVL ICREAD

MLSRPBUF

Base fields
Attribute CPSM Reset Calculation
READS ZERO DELTA
USERIWRITE ZERO DELTA
NONUWRITE ZERO DELTA
CREADS ZERO DELTA
CWRITES ZERO DELTA

122 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
Intermediate fields
Field CPSM Reset Calculation args
IMMD_SAMPLDWRTCT REPL,SUM USERIWRITE,NONUWRITE

Derived fields
Field CPSM Reset Calculation args
CURWRITRATE ZERO REPL,RATE_INST SAMPLDWRTCT
INTWRITRATE ZERO REPL,RATE_INTVL SAMPLDWRTCT
CURREADRATE ZERO REPL,RATE_INST READS
INTREADRATE ZERO REPL,RATE_INTVL READS
CURHWRITRATE ZERO REPL,RATE_INST CWRITES
INTHWRITRATE ZERO REPL,RATE_INTVL CWRITES
CURHREADRATE ZERO REPL,RATE_INST CREADS
INTHREADRATE ZERO REPL,RATE_INTVL CREADS

MCMDT

Base fields
Attribute CPSM Reset Calculation
GETCNT ZERO DELTA
GETUPDCNT ZERO DELTA
BROWSECNT ZERO DELTA
ADDCNT ZERO DELTA
UPDATECNT ZERO DELTA
LOCDELCNT ZERO DELTA
DEXCPCNT ZERO DELTA
IEXCPCNT ZERO DELTA
WSTRCNT ZERO DELTA
WSTRCCURCNT ZERO DELTA
READS ZERO DELTA
RECNOTFND ZERO DELTA
ADDFRREAD ZERO DELTA
ADDREQ ZERO DELTA
ADDREJ ZERO DELTA
ADDTFULL ZERO DELTA
REWRITE ZERO DELTA
DELETEREQ ZERO DELTA
MAXTSIZE ZERO DELTA
TOTLREQCNT ZERO DELTA
TOTMREQCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation Args
CURREQRATE ZERO REPL,RATE_INST TOTLREQCNT
INTREQRATE ZERO REPL,RATE_INTVL TOTLREQCNT
CURDEXCPRATE ZERO REPL,RATE_INST DEXCPCNT
INTDEXCPRATE ZERO REPL,RATE_INTVL DEXCPCNT

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 123


CURIEXCPRATE ZERO REPL,RATE_INST IEXCPCNT
INTIEXCPRATE ZERO REPL,RATE_INTVL IEXCPCNT
CURMRQRATE ZERO REPL,RATE_INST TOTMREQCNT
INTMRQRATE ZERO REPL,RATE_INTVL TOTMREQCNT
CURREADRATE ZERO REPL,RATE_INST READS
INTREADRATE ZERO REPL,RATE_INTVL READS

MLOCFILE

Base fields
Attribute CPSM Reset Calculation
GETCNT ZERO DELTA
GETUPDCNT ZERO DELTA
BROWSECNT ZERO DELTA
ADDCNT ZERO DELTA
UPDATECNT ZERO DELTA
LOCDELCNT ZERO DELTA
TOTLREQCNT ZERO DELTA
DEXCPCNT ZERO DELTA
IEXCPCNT ZERO DELTA
WSTRCNT ZERO DELTA
WSTRCCURCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CURDEXCPRATE ZERO REPL,RATE_INST DEXCPCNT
INTDEXCPRATE ZERO REPL,RATE_INTVL DEXCPCNT
CURIEXCPRATE ZERO REPL,RATE_INST IEXCPCNT
INTIEXCPRATE ZERO REPL,RATE_INTVL IEXCPCNT
CURREQRATE ZERO REPL,RATE_INST TOTLREQCNT
INTREQRATE ZERO REPL,RATE_INTVL TOTLREQCNT

MREMFILE

Base fields
Attribute CPSM Reset Calculation
REMDELCNT ZERO DELTA
GETCNT ZERO DELTA
GETUPDCNT ZERO DELTA
BROWSECNT ZERO DELTA
ADDCNT ZERO DELTA
UPDATECNT ZERO DELTA
TOTLREQCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args

124 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
CURREQRATE ZERO REPL,RATE_INST TOTLREQCNT
INTREQRATE ZERO REPL,RATE_INTVL TOTLREQCNT

MJOURNL

Base fields
Attribute CPSM Reset Calculation
TAPESOPEN ZERO DELTA
BLKWRCNT ZERO DELTA
ARCHSUBCNT ZERO DELTA
ARCHWCNT ZERO DELTA
DSOPENCNT ZERO DELTA
AVGSIZE ZERO
RECWRCNT ZERO DELTA
BUFULLCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CURFULLPER ZERO REPL,PCTG_INST BUFULLCNT,BLKWRCNT
INTFULLPER ZERO REPL,PCTG_INTVL BUFULLCNT,BLKWRCNT

MJRNLNAM

Base fields
Attribute CPSM Reset Calculation
NUMWRITES ZERO DELTA
NUMBYTES ZERO DELTA
NUMBUFLUSH ZERO DELTA

MPROGRAM

Base fields
Attribute CPSM Reset Calculation
NEWCOPYCNT ZERO DELTA
USECOUNT ZEROCICS DELTA
FETCHCNT ZERO DELTA
FETCHTIME ZERO DELTA
REMOVECNT ZERO DELTA

Intermediate fields
Field CPSM Reset Calculation args
IMMD_USEMIFETCH REPL,DEDUCT USECOUNT,FETCHCNT

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 125


Derived fields
Field CPSM Reset Calculation args
CURUSERATE ZERO REPL,RATE_INST USECOUNT
INTUSERATE ZERO REPL,RATE_INTVL USECOUNT
CURRUSEPCT ZERO REPL,PCTG_INST USEMIFETCH,USECOUNT
INTRUSEPCT ZERO REPL,PCTG_INTVL USEMIFETCH,USECOUNT
CURAVGFETCH ZERO REPL,AVG_INST FETCHTIME,FETCHCNT
INTAVGFETCH ZERO REPL,AVG_INTVL FETCHTIME,FETCHCNT

MTERMNL

Base fields
Attribute CPSM Reset Calculation
POLLCNT ZERO DELTA
INPMSGCNT ZERO DELTA
OUTMSGCNT ZERO DELTA
TRANCNT ZERO DELTA
STGVCNT ZERO DELTA
XERRCNT ZERO DELTA
TERRCNT ZERO DELTA
PMSGCNT ZERO DELTA
PMSGGRPCNT ZERO DELTA
PMSGCONSEC ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CURIMSGRATE ZERO REPL,RATE_INST INPMSGCNT
INTIMSGRATE ZERO REPL,RATE_INTVL INPMSGCNT
CUROMSGRATE ZERO REPL,RATE_INST OUTMSGCNT
INTOMSGRATE ZERO REPL,RATE_INTVL OUTMSGCNT
CURTRANRATE ZERO REPL,RATE_INST TRANCNT
INTTRANRATE ZERO REPL,RATE_INTVL TRANCNT

MLOCTRAN

Base fields
Attribute CPSM Reset Calculation
RESTARTCNT ZERO DELTA
USECOUNT ZERO DELTA
STGVCNT ZERO DELTA
LOCALCNT ZERO DELTA
ISOLATEST ZERO DELTA
REMSTARTCNT ZERO DELTA
REMOTECNT ZERO DELTA
CPUTIME ZERO ADD
MSGIN ZERO ADD

126 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
CHARIN ZERO ADD
MSGOUT ZERO ADD
CHAROUT ZERO ADD
MSGINSEC ZERO ADD
CHARINSEC ZERO ADD
MSGOUTSEC ZERO ADD
CHAROUTSEC ZERO ADD
ALLOCATES ZERO ADD
USTG24CNT ZERO ADD
USTG31CNT ZERO ADD
USTG24HWM ZERO ADD
USTG31HWM ZERO ADD
USTG24OCC ZERO ADD
USTG31OCC ZERO ADD
PSTG31HWM ZERO ADD
PSTG24HWM ZERO ADD
FCGETCNT ZERO ADD
FCPUTCNT ZERO ADD
FCBRWCNT ZERO ADD
FCADDCNT ZERO ADD
FCDELCNT ZERO ADD
FCCOUNT ZERO ADD
FCAMCNT ZERO ADD
TDGETCNT ZERO ADD
TDPUTCNT ZERO ADD
TDPURCNT ZERO ADD
TDCOUNT ZERO ADD
TSGETCNT ZERO ADD
TSPUTACNT ZERO ADD
TSPUTMCNT ZERO ADD
TSCOUNT ZERO ADD
BMSMAPCNT ZERO ADD
BMSINCNT ZERO ADD
BMSOUTCNT ZERO ADD
BMSCOUNT ZERO ADD
PCLINKCNT ZERO ADD
PCXCTLCNT ZERO ADD
PCLOADCNT ZERO ADD
JCUSRWCNT ZERO ADD
ICCOUNT ZERO ADD
SYNCCOUNT ZERO ADD
DISPTIME ZERO ADD
SUSPTIME ZERO ADD
WAITTIME ZERO ADD
PCLOADTM ZERO ADD
EXWAIT ZERO ADD
TCIOTIME ZERO ADD
FCIOTIME ZERO ADD
JCIOTIME ZERO ADD
TSIOTIME ZERO ADD
IRIOTIME ZERO ADD

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 127


TDIOTIME ZERO ADD
RESPONSE ZERO ADD
CURAVGRESP ZERO ADD
INTAVGRESP ZERO ADD
CURAVGCPUT ZERO ADD
INTAVGCPUT ZERO ADD
DISPCNT ZERO ADD
CPUCNT ZERO ADD
SUSPCNT ZERO ADD
WAITCNT ZERO ADD
PCLOADWCNT ZERO ADD
EXWAITCNT ZERO ADD
TCIOCNT ZERO ADD
FCIOCNT ZERO ADD
JCIOCNT ZERO ADD
TSIOCNT ZERO ADD
IRIOCNT ZERO ADD
TDIOCNT ZERO ADD
RSYSID ADD
TCM62IN2 ZERO ADD
TCC62IN2 ZERO ADD
TCM62OU2 ZERO ADD
TCC62OU2 ZERO ADD
PC24RHWM ZERO ADD
PC31SHWM ZERO ADD
PC24SHWM ZERO ADD
SZALLOCT ZERO ADD
SZRCVCT ZERO ADD
SZSENDCT ZERO ADD
SZSTRTCT ZERO ADD
SZCHROUT ZERO ADD
SZCHRIN ZERO ADD
SZALLCTO ZERO ADD
SZRCVTO ZERO ADD
SZTOTCT ZERO ADD
SZWAIT ZERO ADD
DSPDELAY ZERO ADD
TCLDELAY ZERO ADD
MXTDELAY ZERO ADD
ENQDELAY ZERO ADD
LU61WTT ZERO ADD
LU62WTT ZERO ADD
RMITIME ZERO ADD
RMISUSP ZERO ADD
SZWAITCT ZERO ADD
DSPDELAYCT ZERO ADD
TCLDELAYCT ZERO ADD
MXTDELAYCT ZERO ADD
ENQDELAYCT ZERO ADD
LU61WTTCT ZERO ADD
LU62WTTCT ZERO ADD

128 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
RMITIMECT ZERO ADD
RMISUSPCT ZERO ADD
DCEDELAYTIME ZERO ADD
DCEDELAYCT ZERO ADD
DCEWAITTIME ZERO ADD
DCEWAITCT ZERO ADD
NUMINDOUBWT ZERO ADD
FORACTTRNDF ZERO ADD
FORACTINDTO ZERO ADD
FORACTNOWT ZERO ADD
FORACTOPER ZERO ADD
FORACTOTHER ZERO ADD
ACTMISMATS ZERO ADD
PERRECNT ZERO ADD
SC24SGCT ZERO ADD
SC24GSHR ZERO ADD
SC24FSHR ZERO ADD
SC31SGCT ZERO ADD
SC31GSHR ZERO ADD
SC31FSHR ZERO ADD
JNLWRTCT ZERO ADD
LOGWRTCT ZERO ADD
SYNCTIME ZERO ADD
SYNCTIMCNT ZERO ADD
RLSWAIT ZERO ADD
RLSWAITCNT ZERO ADD
RLSCPUT ZERO ADD
RLSCPUCNT ZERO ADD
LOCKMWT ZERO ADD
LOCKMWC ZERO ADD
EXTERNWT ZERO ADD
EXTERNWC ZERO ADD
CICSWT ZERO ADD
CICSWC ZERO ADD
INTVLWT ZERO ADD
INTVLWC ZERO ADD
CTLWT ZERO ADD
CTLWC ZERO ADD
SHDTSWT ZERO ADD
SHDTSWC ZERO ADD
ICTOTCNT ZERO ADD
PCLURMCT ZERO ADD
CFDTWT ZERO ADD
CFDTWC ZERO ADD
SRVSPWT ZERO ADD
SRVSPWC ZERO ADD
BARSYNCT ZERO ADD
BARASYCT ZERO ADD
BALKPACT ZERO ADD
BADPROCT ZERO ADD
BADACTCT ZERO ADD

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 129


BARSPACT ZERO ADD
BASUPACT ZERO ADD
BARMPACT ZERO ADD
BADCPACT ZERO ADD
BAACQPCT ZERO ADD
BATOTPCT ZERO ADD
BAPRDCCT ZERO ADD
BAACDCCT ZERO ADD
BATOTCCT ZERO ADD
BARATECT ZERO ADD
BADFIECT ZERO ADD
BATIAECT ZERO ADD
BATOTECT ZERO ADD
RUNTRWTT ZERO ADD
RUNTRWTC ZERO ADD
SYNCDLY ZERO ADD
SYNCDLYC ZERO ADD
WBRCVCT ZERO ADD
WBCHRIN ZERO ADD
WBSENDCT ZERO ADD
WBCHROUT ZERO ADD
WBTOTCT ZERO ADD
WBREPWCT ZERO ADD
DHCRECT ZERO ADD
DHINSCT ZERO ADD
DHSETCT ZERO ADD
DHRETCT ZERO ADD
DHTOTCT ZERO ADD
DHTOTDCL ZERO ADD
IMSREQCT ZERO ADD
DB2REQCT ZERO ADD
CHMODECT ZERO ADD
QRDISPT ZERO ADD
QRDISPC ZERO ADD
QRCPUT ZERO ADD
QRCPUC ZERO ADD
MSDISPT ZERO ADD
MSDISPC ZERO ADD
MSCPUT ZERO ADD
MSCPUC ZERO ADD
L8CPUT ZERO ADD
L8CPUC ZERO ADD
J8CPUT ZERO ADD
J8CPUC ZERO ADD
S8CPUT ZERO ADD
S8CPUC ZERO ADD
QRMODDLY ZERo ADD
QRMODDLC ZERO ADD
MXTOTDLY ZERO ADD
MXTOTDLC ZERO ADD
IMSWAIT ZERO ADD

130 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
IMSWAITC ZERO ADD
DB2RDYQW ZERO ADD
DB2RDYQC ZERO ADD
DB2CONWT ZERO ADD
DB2CONWC ZERO ADD
DB2WAIT ZERO ADD
DB2WAITC ZERO ADD
GNQDELAY ZERO ADD
GNQDELAC ZERO ADD
SOIOWTT ZERO ADD
SOIOWTC ZERO ADD
RRMSWAIT ZERO ADD
RRMSWAIC ZERO ADD
PCDPLCT ZERO ADD
SOBYENCT ZERO ADD
SOBYDECT ZERO ADD
TCBATTCT ZERO ADD
JVMTIME ZERO ADD
JVMSUSP ZERO ADD
JVMTIMEC ZERO ADD
JVMSUSPC ZERO ADD

Derived fields
Field CPSM Reset Calculation args
CURTRANRATE ZERO REPL,RATE_INST USECOUNT
INTTRANRATE ZERO REPL,RATE_INTVL USECOUNT

MTASK

Base fields
Attribute CPSM Reset Calculation
START NONE NONE
STOP NONE NONE
MSGIN ADD
CHARIN ADD
MSGOUT ADD
CHAROUT ADD
MSGINSEC ADD
CHARINSEC ADD
MSGOUTSEC ADD
CHAROUTSEC ADD
ALLOCATES ADD
TERMSTG ADD
USTG24CNT ADD
USTG31CNT ADD
USTG24HWM ADD
USTG31HWM ADD
USTG24OCC ADD

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 131


USTG31OCC ADD
PSTG31HWM ADD
PSTG24HWM ADD
FCGETCNT ADD
FCPUTCNT ADD
FCBRWCNT ADD
FCADDCNT ADD
FCDELCNT ADD
FCCOUNT ADD
FCAMCNT ADD
TDGETCNT ADD
TDPUTCNT ADD
TDPURCNT ADD
TDCOUNT ADD
TSGETCNT ADD
TSPUTACNT ADD
TSPUTMCNT ADD
TSCOUNT ADD
BMSMAPCNT ADD
BMSINCNT ADD
BMSOUTCNT ADD
BMSCOUNT ADD
PCLINKCNT ADD
PCXCTLCNT ADD
PCLOADCNT ADD
JCUSRWCNT ADD
ICCOUNT ADD
SYNCCOUNT ADD
DISPTIME ADD
CPUTIME ADD
SUSPTIME ADD
WAITTIME ADD
PCLOADTM ADD
EXWAIT ADD
TCIOTIME ADD
FCIOTIME ADD
JCIOTIME ADD
TSIOTIME ADD
IRIOTIME ADD
TDIOTIME ADD
DISPCNT ADD
CPUCNT ADD
SUSPCNT ADD
WAITCNT ADD
PCLOADWCNT ADD
EXWAITCNT ADD
TCIOCNT ADD
FCIOCNT ADD
JCIOCNT ADD
TSIOCNT ADD
IRIOCNT ADD

132 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
TDIOCNT ADD
TCM62IN2 ADD
TCC62IN2 ADD
TCM62OU2 ADD
TCC62OU2 ADD
PC24RHWM ADD
PC31SHWM ADD
PC24SHWM ADD
SZALLOCT ADD
SZRCVCT ADD
SZSENDCT ADD
SZSTRTCT ADD
SZCHROUT ADD
SZCHRIN ADD
SZALLCTO ADD
SZRCVTO ADD
SZTOTCT ADD
SZWAIT ADD
DSPDELAY ADD
TCLDELAY ADD
MXTDELAY ADD
ENQDELAY ADD
LU61WTT ADD
LU62WTT ADD
RMITIME ADD
RMISUSP ADD
SZWAITCT ADD
DSPDELAYCT ADD
TCLDELAYCT ADD
MXTDELAYCT ADD
ENQDELAYCT ADD
LU61WTTCT ADD
LU62WTTCT ADD
RMITIMECT ADD
RMISUSPCT ADD
DCEDELAYTIME ADD
DCEDELAYCT ADD
DCEWAITTIME ADD
DCEWAITCT ADD
PERRECNT
SC24SGCT
SC24GSHR
SC24FSHR
SC31SGCT
SC31GSHR
SC31FSHR
JNLWRTCT
LOGWRTCT
SYNCTIME ADD
SYNCTIMCNT ADD
RLSWAIT ADD

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 133


RLSWAITCNT ADD
RLSCPUT ADD
RLSCPUCNT ADD
LOCKMWT ADD
LOCKMWC ADD
EXTERNWT ADD
EXTERNWC ADD
CICSWT ADD
CICSWC ADD
INTVLWT ADD
INTVLWC ADD
CTLWT ADD
CTLWC ADD
SHDTSWT ADD
SHDTSWC ADD
ICTOTCNT ADD
PCLURMCT ADD
CFDTWT ADD
CFDTWC ADD
SRVSPWT ADD
SRVSPWC ADD
BARSYNCT ADD
BARASYCT ADD
BALKPACT ADD
BADPROCT ADD
BADACTCT ADD
BARSPACT ADD
BASUPACT ADD
BARMPACT ADD
BADCPACT ADD
BAACQPCT ADD
BATOTPCT ADD
BAPRDCCT ADD
BAACDCCT ADD
BATOTCCT ADD
BARATECT ADD
BADFIECT ADD
BATIAECT ADD
BATOTECT ADD
RUNTRWTT ADD
RUNTRWTC ADD
SYNCDLY ADD
SYNCDLYC ADD
WBRCVCT ADD
WBCHRIN ADD
WBSENDCT ADD
WBCHROUT ADD
WBTOTCT ADD
WBREPWCT ADD
DHCRECT ADD
DHINSCT ADD

134 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
DHSETCT ADD
DHRETCT ADD
DHTOTCT ADD
DHTOTDCL ADD
IMSREQCT ADD
DB2REQCT ADD
CHMODECT ADD
QRDISPT ADD
QRDISPC ADD
QRCPUT ADD
QRCPUC ADD
MSDISPT ADD
MSDISPC ADD
MSCPUT ADD
MSCPUC ADD
L8CPUT ADD
L8CPUC ADD
J8CPUT ADD
J8CPUC ADD
S8CPUT ADD
S8CPUC ADD
QRMODDLY ADD
QRMODDLC ADD
MXTOTDLY ADD
MXTOTDLC ADD
IMSWAIT ADD
IMSWAITC ADD
DB2RDYQW ADD
DB2RDYQC ADD
DB2CONWT ADD
DB2CONWC ADD
DB2WAIT ADD
DB2WAITC ADD
GNQDELAY ADD
GNQDELAC ADD
SOIOWTT ADD
SOIOWTC ADD
RRMSWAIT ADD
RRMSWAIC ADD
PCDPLCT ADD
SOBYENCT ADD
SOBYDECT ADD
TCBATTCT ADD
JVMTIME ADD
JVMTIMEC ADD
JVMSUSP ADD
JVMSUSPC ADD

Intermediate fields
Field CPSM Reset Calculation args

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 135


PFXA_CPUTIME ADD CPUTIME
IMMD_STOPMISTART REPL,STCKDIFF STOP,START

Derived fields
Field CPSM Reset Calculation args
RESPONSE REPL,TALLY STOPMISTART
PFXA_RESPONSE REPL,TALLY STOPMISTART
CURAVGRESP ZERO REPLO,AVG_INST PFXA_RESPONSE,@ALTINTERVAL
INTAVGRESP ZERO REPL,AVG_INTVL RESPONSE,@ALTINTERVAL
CURAVGCPUT ZERO REPL,AVG_INST PFXA_CPUTIME,@ALTINTERVAL
INTAVGCPUT ZERO REPL,AVG_INTVL CPUTIME,@ALTINTERVAL

MREMTRAN

Base fields
Attribute CPSM Reset Calculation
REMOTECNT ZERO DELTA
USECOUNT ZERO DELTA
REMSTARTCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CURTRANRATE ZERO REPL,RATE_INST USECOUNT
INTTRANRATE ZERO REPL,RATE_INTVL USECOUNT
CURAVGRESP ZERO REPL,RATE_INST RESPTIME,USECOUNT
INTAVGRESP ZERO REPL,RATE_INTVL RESPTIME,USECOUNT

MXTRATDQ

Base fields
Attribute CPSM Reset Calculation
OUTCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CUROUTQRATE ZERO REPL,RATE_INST OUTCNT
INTOUTQRATE ZERO REPL,RATE_INTVL OUTCNT

MNTRATDQ

Base fields
Attribute CPSM Reset Calculation

136 © 2002. Xephon UK telephone 01635 33848, fax 01635 38345. USA telephone (303) 410 9344, fax (303) 438 0290.
OUTCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CUROUTQRATE ZERO REPL,RATE_INST OUTCNT
INTOUTQRATE ZERO REPL,RATE_INTVL OUTCNT

MREMTDQ

Base fields
Attribute CPSM Reset Calculation
OUTCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CUROUTQRATE ZERO REPL,RATE_INST OUTCNT
INTOUTQRATE ZERO REPL,RATE_INTVL OUTCNT

MINDTDQ

Base fields
Attribute CPSM Reset Calculation
OUTCNT ZERO DELTA

Derived fields
Field CPSM Reset Calculation args
CUROUTQRATE ZERO REPL,RATE_INST OUTCNT
INTOUTQRATE ZERO REPL,RATE_INTVL OUTCNT

MDB2THRD

Derived fields
Field CPSM Reset Calculation args
CURUSERATE ZERO REPL,RATE_INST USECOUNT
INTUSERATE ZERO REPL,RATE_INTVL USECOUNT

Dr Paul Johnson
CICS Transaction Server Systems Management Planning/Development
IBM (UK) © IBM 2002

© 2002. Reproduction prohibited. Please inform Xephon of any infringement. 137

You might also like