CICS Performance Toolkit

x

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

© Xephon plc July 2002

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 not © 2002. incorporate it in any commercial 01635 38345. USA telephone (303) 410 9344, be used for any 2 sell such code or Xephon UK telephone 01635 33848, faxproduct. No part of this publication mayfax (303) 438 0290. 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 reactivate 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 semirandom 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 nonrecoverable 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 CONL COIØ COIE OMEG CSKL OMEG SØØ2 SØØ3 CSTG TASKNO ØØØØØØ23 ØØØØØØ25 ØØØØØØ27 ØØØØØØ32 ØØØØØØ33 ØØØØØØ34 ØØØØØ2Ø1 ØØØØØ2Ø4 ØØØØØ777 USERID CICDOCM CICDOCM CICDOCM CICDOCM CICDOCM CICDOCM OPERHLZ OPERHLZ SUPPHKX DSA (K) ØØØØØØØØ ØØØØØØØØ ØØØØØØØØ ØØØØØØØ2 ØØØØØØØØ ØØØØØØØ2 ØØØØØØ5Ø ØØØØØØ45 ØØØØØØØ1 EDSA (K) ØØØØØØ2Ø ØØØØØØ19 ØØØØØØ3Ø ØØØØØØØØ ØØØØØØ13 ØØØØØØØØ ØØØØØØ27 ØØØØØØ27 ØØØØØØØ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 R9

DISPSTOR DISPSTOR DISPSTOR

, 31 ANY 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.

EQU EQU SPACE EJECT CSECT AMODE RMODE EXEC

8 9 1

10

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

CICS INQUIRE TASK(TASKNO) FACILITY(FAC) TRANSACTION(TRAN) USERID(USER) RESP(RESP) CLC RESP,DFHRESP(NORMAL) BNE TASKEND EXEC CICS INQUIRE STORAGE NUMELEMENTS(ENUM) ELEMENTLIST(R7) LENGTHLIST(R8) TASK(TASKNO) RESP(RESP) CLC RESP,DFHRESP(NORMAL) BNE FAILQUIT SPACE 1 ST R7,ELIST ST R8,LLIST L R9,ENUM L R4,HEXØ ST R4,DSA ST R4,EDSA ADDLOOP EQU * CLC ADDR24,Ø(R7) BL EDSAADD L R4,Ø(R8) A R4,DSA ST R4,DSA B ADDEND EDSAADD EQU * L R4,Ø(R8) A R4,EDSA ST R4,EDSA ADDEND EQU * A R7,=F'4' A R8,=F'4' BCT R9,ADDLOOP * L R8,HEXØ L R9,DSA D R8,HEX1Ø24 CVD R9,DSAK UNPK DSA#,DSAK OI DSA#+7,C'Ø' * L R8,HEXØ L R9,EDSA D R8,HEX1Ø24

EXEC

+ + + + + Is the task still there? No. next task

+ + + + +

If everything is OK.. Yes. Take the error exit. store address of element & ... length list set element number as counter initialize r4, DSA & EDSA

is it a 24bit address ? no then branch . yes then add the storage ... to DSA

yes then add the storage ... to EDSA

move to next byte counter loop

convert to number of K convert to text force X'FØ'

convert to number of K

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

11

CVD UNPK OI *

R9,EDSAK EDSA#,EDSAK EDSA#+7,C'Ø'

convert to text 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Ø DSAK EDSAK DSA# EDSA# ADDR24 STGSIZE SIZE TRAN FAC USER DISPLAY

DC XL4'ØØØØØØØØ' DS D DS D DS CL8' ' DS CL8' ' DC XL4'ØØFFFFFF' DS F DC F'4' DS CL4' ' DS CL4' ' DS CL8' ' DC CL79' ' END DISPSTOR

Highest 24-bit address Size of getmain

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 <AAY <AAZ <AAØ ISC ISC ISC ISC CONV CONV CONV CONV MRO MRO MRO MRO XAØ7 XAØ7 XAØ7 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 … Peak outstanding allocates Total number of allocates Average number of queued allocates Failed link allocates Failed allocates due to sessions in use ….

CONN1 1ØØ 1ØØØØ <<< THESE 2 LINES WILL 25Ø <<< 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 16953Ø 5339 131 Ø Ø 1546723 168Ø89 5225 123 Ø Ø Ø Ø Ø Ø Ø Ø 5912 5912 5912 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: SMTP (a week later after raising the IOARELEN to 8KB) 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 ongoing 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/ØØ taken: CLSDST ABTASK ABSEND 1Ø:41:Ø7 ABRECV CICSXXXX Module -XXN CSNE Node nnnnnnnn action ((1) name: DFHZNAC) for session -XXN

DFHSN15ØØ Ø9/25/ØØ 1Ø:41:Ø7 CICSXXXX Session signoff is complete. 14 transactions entered with Ø errors. DFHZC3462 I terminated. Ø9/25/ØØ 1Ø:41:Ø7 CICSXXXX -XXN ((2) Module name: DFHZCLS) CSNE

Node

nnnnnnnn

session

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 RELEASED SESSION COUNT (FOR

NON-XM) 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 ORG HEADERA DS LTRANSID DS HEADERTR DS SYSID DS DS APPLID DS DS SMFID DS DS HEADERT DS DS HEADERD DS ORG LINEØ2 DS LINEØ3 DS LINEØ4 DS LINEØ5 DS LINEØ6 DS LINEØ7 DS LINEØ8 DS LINEØ9 DS LINE1Ø DS LINE11 DS LINE12 DS LINE13 DS LINE14 DS LINE15 DS LINE16 DS LINE17 DS LINE18 DS LINE19 DS LINE2Ø DS LINE21 DS LINE22 DS LINE23 DS LINE24 DS SCREENL EQU CONNØ1 DS CONNØ2 DS CONNØ3 DS CONNØ4 DS CONNØ5 DS CONNØ6 DS CONNØ7 DS CONNØ8 DS CONNØ9 DS CONN1Ø DS CONN11 DS

CL(LINEØ1L) LINEØ1 CL2 CL4 CL28 CL4 CL1 CL8 CL4 CL4 CL5 CL8 HH:MM:SS CL2 CL8 MM/DD/YY CL(3) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) CL(LINEL) *-LINEØ1 CL24 CL24 CL24 CL24 CL24 CL24 CL24 CL24 CL24 CL24 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 MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC MVC

LINE21,LINEØ2I LINE22,LINEØ2I LINE23,LINEØ2I LINE24,LINEØ2I CONNØ1,CONNØ1I CONNØ2,CONNØ2I CONNØ3,CONNØ3I CONNØ4,CONNØ4I CONNØ5,CONNØ5I CONNØ6,CONNØ6I CONNØ7,CONNØ7I CONNØ8,CONNØ8I CONNØ9,CONNØ9I CONN1Ø,CONN1ØI CONN11,CONN11I CONN12,CONN12I CONN13,CONN13I CONN14,CONN14I CONN15,CONN15I CONN16,CONN16I CONN17,CONN17I CONN18,CONN18I CONN19,CONN19I CONN2Ø,CONN2ØI CONN21,CONN21I CONN22,CONN22I

* CONNLOOP DS

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) 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 ØH EXEC

X

CICS INQUIRE CONNECTION(CONNNAME) NETNAME(NETNAME) CONNSTATUS(CONNSTA) SERVSTATUS(SERVSTA) NEXT RESP(RETURNC) CLC RETURNC,DFHRESP(NORMAL) BNE CONNDONE

X X

24

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

* CONNDONE DS * TERMINQL DS

LA BCT

5,CONNL(5) 1Ø,CONNLOOP

NEXT ENTRY

ØH EXEC

CICS INQUIRE CONNECTION END RESP(RETURNC)

EXEC CICS INQUIRE TERMINAL START ØH EXEC CICS INQUIRE TERMINAL(TERMID) NEXT RESP(RETURNC) ACQSTATUS(TACQST) NETNAME(TNETNAME) CLC RETURNC,DFHRESP(NORMAL) SEE IF NORMAL RETURN BNE TERMINQE LA LA

X

*

1Ø,22 INTIALIZE LOOP COUNTER 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.

ENDLINEL ENDLINE SENDL

CONNØ1I CONNØ2I CONNØ3I CONNØ4I CONNØ5I CONNØ6I CONNØ7I CONNØ8I CONNØ9I CONN1ØI CONN11I CONN12I CONN13I CONN14I CONN15I CONN16I CONN17I CONN18I CONN19I CONN2ØI CONN21I CONN22I * LINEDSCT DSECT LINEOUT DS CONNO DS DS NETNO DS DS INSSTAO DS DS ACQSTAO DS DS SESSACNT DS DS SESSRCNT DS

DC DC DC DC DC DC DC DC ORG DS DC DC DC DS DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC DC

CL2' ' CL3' ' INS STA CL1' ' CL3' ' ACQ STA CL18' SESSIONS ACQ: ' X'4Ø2Ø212Ø' ACQ CNT CL5' REL:' X'4Ø2Ø212Ø' REL CNT ØH

AL2(L'ENDLINE) CL8Ø' ENTER NEXT TRANSACTION' AL2(SCREENL) ØF CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø' CL4' ',CL8' ',F'Ø',F'Ø',PL2'Ø',PL2'Ø'

CL3 CL4 CL1 CL8 CL2 CL3 CL1 CL3 CL18 CL4 CL5 CL4

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

27

LINEL * CONNDSCT CONNNAME NETNAME CONNSTA SERVSTA SESSACQC SESSRELC CONNL

EQU DS DSECT DS DS DS DS DS DS EQU END

*-LINEOUT ØF CL4 CL8 F F PL2 PL2 *-CONNNAME

//* //ASM.SYSLIB // // // // //LKED.SYSLMOD

DD DD DD DD DD

DD DISP=SHR,DSN=SYS1.MODGEN 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 5second 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

* TERMINQE DS

CICS INQUIRE TERMINAL(TERMID) NEXT RESP(RETURNC) 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 ØH EXEC CICS INQUIRE TERMINAL END RESP(RETURNC) CP COUNT,=P'1' BH DELAY

EXEC

X

*

DELAY

* RETURN

EXEC CICS SET CONNECTION(CONN) RELEASED RESP(RETURNC) EXEC CICS DELAY INTERVAL(ØØØØØ5) EXEC CICS SET CONNECTION(CONN) INSERVICE ACQUIRED RESP(RETURNC) EXEC CICS WRITE OPERATOR TEXT('*** ISC CONNECTION XXXX RELEASE/ACQUIRED') TEXTLENGTH(4Ø) RESP(RETURNC) DS ØH EXEC CICS DELAY INTERVAL(ØØØ455) B RUNXACT ØH CICS WRITE OPERATOR TEXT('*** ISC CHECK/ACQUIRE TRANSACTION ENDED ') TEXTLENGTH(4Ø) RESP(RETURNC) DS ØH EXEC CICS RETURN DC DC DC END CL4'ACQR' CL4'XXXX' CL8'NNNNNNNN' DS EXEC

X X X

X X

RETURNX * TRANSID CONN CONNNETN

//* //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 ———————————————————————————— DFHJØ2 CICS.IV4A53A1.DFHJØ2 DFHLGLOG CICSUSER.IV5A53A1.DFHLGLOG DFHLOG CICS.IV4A53A1.DFHLOG DFHSHUNT CICS.IV4A53A1.DFHSHUNT TYPE MVS MVS MVS MVS STATUS ENABLED ENABLED ENABLED 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

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. LAST I. (I. = SMF INTERVAL) PF 13 DASD SHFT 14 OFFLOAD 15 STG FULL 16 STG THLD 17 STR FULL OFFL.9Ø% 23 AVERAGE 24 TOTALS 11 18

SMF INTERVAL:

1Ø /

Because of the huge amount of data in one interval, session property screen size 27x132 is mandatory. This method has some advantages, including: 1 2 Online access to SMF88 records without needing to run batch jobs. 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 4 5

Every value prefixed by a description and some suffixed with an explanation. Different colours for quantity variables (in green, eg number of bytes written to logger) and event variables (in red, eg structure full). 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 4 5

CICS program definition for IXGRPTC and IXGSMF8 with Language LE370. CICS transaction definition for IXGC (IXGRPTC) and IXG8 (IXGSMF8). 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

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;

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 */

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.

FIXED BIN(31), CTYPE CHAR(8); 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);

XTYPE DCL XCOMMAREA

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

39

END; OTHERWISE DO;

END;

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; SELECT

EXEC CICS SEND MAP ('INVKEY') MAPSET('IXGMAPS') RESP(XRESP); GOTO RETURN_TO_CICS;

(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.

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;

WHEN (DFHVALUE(FAILED)) OTHERWISE

CSTATUS='FAILED'; CSTATUS=' ???';

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

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),

DCL

1

42

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

SMF88SIB_MAX_TABIDX SMF88SAB_MAX_TABIDX SMF88SII_MAX_TABIDX SMF88SAI_MAX_TABIDX SMF88SC1_MAX_TABIDX SMF88SC2_MAX_TABIDX SMF88SC3_MAX_TABIDX SMF88EDS_MAX_TABIDX SMF88ERI_MAX_TABIDX SMF88ERC_MAX_TABIDX SMF88ESF_MAX_TABIDX SMF88ETT_MAX_TABIDX SMF88ETF_MAX_TABIDX SMF88EOA_MAX_TABIDX SMF88EFS_MAX_TABIDX SMF88EDO_MAX_TABIDX SMF88LAB_MAX_TABIDX SMF88LIB_MIN_TABIDX

FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED FIXED

BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15) BIN(15)

STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC STATIC

INIT(5), INIT(6), INIT(7), INIT(8), INIT(9), INIT(1Ø), INIT(11), INIT(12), INIT(13), INIT(14), INIT(15), INIT(16), INIT(17), INIT(18), INIT(19), INIT(2Ø), INIT(21), 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 CALL END; WHEN('PROCESS_LAST_ITEM') DO; CURRITEM CALL END; WHEN('RETURN_TO_IXGC ') DO; EXEC

= MAXITEM / 2; DISPLAY_SMF88_INTERVAL(CURRITEM);

= MAXITEM; DISPLAY_SMF88_INTERVAL(MAXITEM);

CICS DELETEQ TS QUEUE(TSQNAME) RESP(XRESP); EXEC CICS RETURN TRANSID('IXGC') IMMEDIATE COMMAREA(NULL_CA) LENGTH(ZERO) RESP(XRESP);

WHEN('PROCESS_NEXT_ITEM')

END; DO;

WHEN('PROCESS_PREV_ITEM')

END; DO;

IF CURRITEM = MAXITEM THEN CURRITEM = 1; ELSE IF CURRITEM < MAXITEM THEN CURRITEM = CURRITEM + 1; CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

END; WHEN('DASD_SHFT_MAX') DO;

IF CURRITEM = 1 THEN CURRITEM = MAXITEM; ELSE IF CURRITEM > 1 THEN CURRITEM = CURRITEM - 1; CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

CURRITEM=TSQITEM(SMF88EDS_MAX_TABIDX); CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

END; WHEN('OFFLOAD_MAX') DO;

WHEN('STG_FULL') DO;

END;

CURRITEM=TSQITEM(SMF88EOA_MAX_TABIDX); CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

END; WHEN('STG_THLD') DO;

CURRITEM=TSQITEM(SMF88ETF_MAX_TABIDX); CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

CURRITEM=TSQITEM(SMF88ETT_MAX_TABIDX); CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

END; WHEN('STR_FULL') DO;

END;

CURRITEM=TSQITEM(SMF88LDB_MAX_TABIDX); CALL DISPLAY_SMF88_INTERVAL(CURRITEM);

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; EXEC

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; 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.

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;

TSQITEM(SMF88SIB_MAX_TABIDX)

=

CURRITEM;

© 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-178309) 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 3 SMF88EFS 3 SMF88EDO DCL 1 SMF88SSD 3 SMF88STN 3 SMF88SWB 3 SMF88SIB 3 SMF88SAB 3 RSVD4, 3 SMF88SII 3 SMF88SAI 3 SMF88SC1 3 SMF88SC2 3 SMF88SC3 3 RSVD5

CHAR(4), CHAR(4), CHAR(4); BASED(SMF88SOF), CHAR(16), CHAR(8), CHAR(8), CHAR(8), BIT(32), BIT(32), BIT(32), BIT(32), BIT(32), 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.

PF23 PF24

DFHMDF POS=(27,95),LENGTH=2,COLOR=TURQUOISE,INITIAL='23' DFHMDF POS=(27,98),LENGTH=9,COLOR=YELLOW,INITIAL='AVERAGE DFHMDF POS=(27,1Ø8),LENGTH=2,COLOR=TURQUOISE,INITIAL='24' 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, BUFNO=1,RECFORM=VARUNB, TYPEFLE=OUTPUT …………… DFHDCT TYPE=EXTRA, DESTID=DJNA, DSCNAME=DCPMJNA, ……………. DFHDCT TYPE=INDIRECT, DESTID=DCPM, INDDEST=DJNA …………………….. DFHDCT TYPE=SDSCI, DSCNAME=DCPMJNF, RECSIZE=142, BUFNO=1,RECFORM=VARUNB, TYPEFLE=OUTPUT …………… DFHDCT TYPE=EXTRA, DESTID=DJNF, DSCNAME=DCPMJNF, ……………. DFHDCT TYPE=INDIRECT, DESTID=SKØ3, INDDEST=DJNA BLKSIZE=146,

OPEN=INITIAL

BLKSIZE=146,

OPEN=INITIAL

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 extrapartition 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 //DCPMJNL //DCPMJNA //DCPMJNF DD DD DD DD SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=66Ø),FREE=CLOSE SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=66Ø),FREE=CLOSE SYSOUT=M,DCB=(DSORG=PS,RECFM=V,BLKSIZE=73Ø) 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 DCPMJNF DCPMJNL DCPMJNT DCPMJNA DCPMJNF DCPMJNL DCPMJNT SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP 139 138 137 136 135 134 133 132 MMU M MMU M MMU M MMU M MMU M LOCAL MMU M LOCAL MMU M LOCAL MMU M LOCAL 3,257 1,352 1,446 28,49Ø 2,74Ø 8Ø6 787 13,2Ø3 389,474 1 154,574 1 136,37Ø 1 2M 1 319,299 1 115,948 1 68,Ø1Ø 1 1M 1

3 12 3 11 3 1Ø 3 9

LINE LINE LINE LINE

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

63

DCPMJNA DCPMJNF DCPMJNL DCPMJNT DCPMJNF DCPMJNA DCPMJNL DCPMJNT GDMT DFHCXRF

SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP SS5ØCICP

131 13Ø 129 128 125 124 123 122 11Ø 1Ø6

MMU M MMU M MMU M MMU M MMU M MMU M MMU M MMU M MMU A MMU T

LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL LOCAL

4,628 567,519 782 115,Ø9Ø 942 83,Ø43 37,998 3M 417 61,972 2,5Ø3 281,485 1,353 13Ø,Ø76 19,131 1M Ø 68 7,816

1 1 1 1 1 1 1 1 1

3 3 3 3 3 3 3 3

8 7 6 5 3 4 2 1 1

LINE LINE LINE LINE LINE LINE LINE LINE

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 //ISFOUT //ISFIN PGM=SDSF,PARM='++24,131' DD SYSOUT=T DD *

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

*

MOD

//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

EXALLOC

FAILED NOTOPEN NOTIFY

RC12 BRTRN

DDSRCH

NEXT1

NONAME TOOLONG TEXTLEN

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 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 MVC MSG(29),MSG4 ACTION FAILED B BRTRN MVC MSG(29),MSG6 ACTION FAILED - NOT OPEN B BRTRN CH RRC,=H'8' MVC MSG(29),MSG2 DDNAME NOT SPECIFIED B BRTRN MVC MSG(29),MSG3 DDNAME TOO LONG DS ØH EXEC CICS SEND FROM(MSG) LENGTH(29) EXEC CICS RETURN 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,Ø 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 LA RRC,8 DDNAME MISSING BR RBAL LA RRC,12 DDNAME TOO LONG BR RBAL 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) L R4,4(R1) * LOAD STRING ADDRESS * LOAD SUBSTRING ADDRESS

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

75

LH R5,Ø(R3) LH R6,Ø(R4) LA R8,Ø(R3,R5) BCTR R5,Ø BCTR R6,Ø CR R5,R6 BL TOOLONG CH R5,=H'255' BH TOOLONG CH R6,=H'255' BH TOOLONG LA R3,2(R3) LA R4,2(R4) XC TAB(256),TAB XR R1,R1 IC R1,Ø(R4) LA R2,TAB LA R2,Ø(R1,R2) STC R1,Ø(R2) EXTRT DS ØH EX R5,TRT BZ NOTFOUND CR R1,R8 BH NOTFOUND EX R6,CLC BE FOUND LR R9,R1 SR R1,R3 SR R5,R1 CR R5,R6 BL NOTFOUND LTR R5,R5 BZ NOTFOUND LA R3,1(R9) 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

* * EX TRT * NOT FOUND ? GO TO END * TRT STOP AFTER STRING LIMIT ? * NOT LOW ? NOT FOUND * EX CLC * YES ? GO TO END * SAVE TRT ADDRESS * R1 = TRT ADVANCE IN BYTES * HOW MUCH LEFT * LEFT < SUBTRING LENGTH * YES ? NOT FOUND * * * POINT NEXT CHAR * * * * * * * * * * * * * * *

* LOAD LENGTH OF STRING * LOAD LENGTH OF SUBSTRING * R8 POINT AT END OF STRING * MAKE LENGTH FOR EX COMMAND * MAKE LENGTH FOR EX COMMAND * IS STRING SHORTER THEN SUBSTRING ? * YES ? GO TELL CALLER * IS LENGTH OVER ALLOWED LENGTH ? * YES ? GO TELL CALLER * IS LENGTH OVER ALLOWED LENGTH ? * YES ? GO TELL CALLER * LOAD ADDR FIRST CHAR OF STRING * LOAD ADDR FIRST CHAR OF SUBSTRING * CLEAR TRT TABLE * CLEAR REGISTER * FIRST CHAR OF SUBSTRING * LOAD TAB ADDRESS * OFFSET OF FIRST CHAR OF SUBSTRING * INSERT INTO TAB FOR TRT

76

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

TRT CLC TAB

TRT CLC DC END

Ø(*-*,R3),TAB Ø(*-*,R1),Ø(R4) 256X'ØØ' 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 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'

START_PROG

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

77

* LABEL

SETVAR %JN DATA 'JNA' GOTO TDQ DJN2 SETVAR %N_D DATA 'DJNF' SETVAR %JN DATA 'JNF' GOTO TDQ DJN3 SETVAR %N_D DATA 'DJNL' SETVAR %JN DATA 'JNL' GOTO TDQ DJN4 SETVAR %N_D DATA 'DJNT' SETVAR %JN DATA 'JNT' GOTO TDQ

* LABEL

* LABEL

* 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 linkedited 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 ‘lowcore’, 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 ØØØ233 1 AP ØØE1 EIP ENTRY HANDLE-ABEND ØØØ233 1 AP ØØE1 EIP ØØØ233 1 AP ØØE1 EIP ØØØ233 ØØØ233 1 1 AP AP 1942 Ø79Ø APLI SRP EXIT HANDLE-ABEND

OK

OK

ENTRY READ *EXC* *EXC* Program-Check 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 deactivate 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

IDBE PLAN – for browsing DB2ENTRYs names EQUAL PlanName.
CONN

For example, to know the statistics of DB2CONN type: 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

Ø2

Ø2

Ø2

Ø2

Ø2

Ø2

Ø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. MS-TITU4. Ø4 FILLER PIC X(Ø1) VALUE '*'. Ø4 FILLER PIC X(78) VALUE ALL '='. Ø4 FILLER PIC X(Ø1) VALUE '*'. 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 '|'. MS-TITU6. Ø4 FILLER PIC X(Ø1) VALUE '+'. Ø4 FILLER PIC X(78) VALUE ALL '='. Ø4 FILLER PIC X(Ø1) VALUE '+'. 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 '|'. 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 '|'. 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.

Ø2

Ø2

Ø2

Ø2

Ø2

Ø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 '|'. 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 '|'. 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 '|'. 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 '|'. MS-TITU13. Ø4 FILLER PIC X(Ø1) VALUE '*'. Ø4 FILLER PIC X(78) VALUE ALL '='. Ø4 FILLER PIC X(Ø1) VALUE '*'. MS-TITU14. Ø4 FILLER PIC X(8Ø) VALUE SPACES.

'.

'.

'.

'.

'.

'.

'.

'.

'.

'.

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

95

Ø1

Ø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. 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.

Ø2

Ø2

Ø2

Ø2

Ø2

Ø2

Ø2

Ø2

Ø4 FILLER PIC X(16) VALUE '# Peak Ø4 M2G-TCB-HWM PIC ZZZ,ZZ9BBB. Ø4 FILLER PIC X(Ø1) VALUE '|'. 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 '|'. MC-TITU1Ø. Ø4 FILLER PIC X(Ø1) VALUE '+'. Ø4 FILLER PIC X(78) VALUE ALL '='. Ø4 FILLER PIC X(Ø1) VALUE '+'. MC-TITU11. Ø4 FILLER PIC X(Ø1) VALUE '|'. Ø4 FILLER PIC X(78) VALUE 'DB2 CONNECTION POOL STATISTICS '. Ø4 FILLER PIC X(Ø1) VALUE '|'. 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 '|'. 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 '|'. 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 '|'. MC-TITU15. Ø4 FILLER PIC X(Ø1) VALUE '+'. Ø4 FILLER PIC X(78) VALUE ALL '='. Ø4 FILLER PIC X(Ø1) VALUE '+'. MC-TITU16.

: '.

: '.

: '. : '. : '.

: '. : '. : '.

: '. : '. : '.

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

97

Ø1

Ø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. 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.

Ø1

Ø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. 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

Ø1

Ø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. 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.

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.

Ø2

© 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 Ø3 D2R-DB2ENTRY-NAME Ø3 D2R-PLAN-NAME Ø3 D2R-PLANEXIT-NAME Ø3 D2R-AUTHID Ø3 D2R-AUTHTYPE 88 D2R-AUTHTYPE-NA 88 D2R-AUTHTYPE-USERID 88 D2R-AUTHTYPE-OPID 88 D2R-AUTHTYPE-GROUP 88 D2R-AUTHTYPE-SIGNID 88 D2R-AUTHTYPE-TERM 88 D2R-AUTHTYPE-TXID Ø3 D2R-ACCOUNTREC 88 D2R-ACCOUNTREC-NONE 88 D2R-ACCOUNTREC-TXID 88 D2R-ACCOUNTREC-TASK 88 D2R-ACCOUNTREC-UOW Ø3 D2R-THREADWAIT 88 D2R-THREADWAIT-YES 88 D2R-THREADWAIT-NO 88 D2R-THREADWAIT-POOL Ø3 D2R-PRIORITY 88 D2R-PRIORITY-HIGH 88 D2R-PRIORITY-EQUAL 88 D2R-PRIORITY-LOW Ø3 D2R-CALLS Ø3 D2R-SIGNONS Ø3 D2R-COMMITS Ø3 D2R-ABORTS Ø3 D2R-SINGLE-PHASE Ø3 D2R-THREAD-REUSE Ø3 D2R-THREAD-TERM Ø3 D2R-THREAD-WAIT-OR-OVERF Ø3 D2R-THREAD-LIMIT Ø3 D2R-THREAD-CURRENT Ø3 D2R-THREAD-HWM Ø3 D2R-PTHREAD-LIMIT Ø3 D2R-PTHREAD-CURRENT Ø3 D2R-PTHREAD-HWM Ø3 D2R-TASK-CURRENT Ø3 D2R-TASK-HWM Ø3 D2R-TASK-TOTAL Ø3 D2R-READYQ-CURRENT Ø3 D2R-READYQ-HWM Ø3 FILLER PROCEDURE DIVISION. *------------------* RTN-PRINCIPAL. *-------------*

XXX. X(8). X(8). X(8). X(8). X. VALUE ' '. VALUE '?'. VALUE '?'. VALUE '?'. VALUE '?'. VALUE '?'. VALUE '?'. PIC X. VALUE '?'. VALUE '?'. VALUE '?'. VALUE '?'. PIC X. VALUE '?'. VALUE '?'. VALUE '?'. PIC X. VALUE '?'. VALUE '?'. VALUE '?'. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC S9(8) COMP. PIC X(36).

PIC PIC PIC PIC PIC PIC

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

103

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.

EXEC CICS HANDLE

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 Sysid : CICPBB1A Display of DB2CONN Statistic Online Date : 11/Ø6/Ø1 : PT9Ø DB2 Sysid : DSNP Time : 1Ø:18:35 | | : : 66 27 # Current : 63 # Peak : 63 | | | # of CALLS Ø 6 # of Reuses # Pool Limit : : : 27 Ø 1 # of Signons # Terminates # Current : : : Ø 37,675 4 | | | | : 1 # Peak : Ø |

*==============================================================================* |DB2 Connection name : RCT1A |TCBS STATISTICS |# Maximo |# Free +==============================================================================+

+==============================================================================+ |DB2 CONNECTION POOL STATISTICS |Plan name |# of Commits |# of Waits : : : DEFAULT

+==============================================================================+ |DB2 CONNECTION DSNC COMMAND STATISTICS |# Calls : Ø # Maximo

*==============================================================================* CLEAR = EXIT ENTER = REFRESH

IDBE DB2E PAF3
Applid Sysid : CICPBB1A Display DB2Entry Statistics Online Date : 11/Ø6/Ø1 : PT9Ø Plan Name : BPPBAPE # Calls 165 9Ø Ø 2 Ø # W/O # Peak : : : 318,Ø29 5,4Ø8 1 6 2 7 # Limit Prot.Limit: Total Task: : 6 2 5,4Ø8 Time : 1Ø:22:47 ThreadWait: POOL Signons # Reuses : : 6 5,281 | | | | | | |

*==============================================================================* |DB2 Entry Name: PAF3 |Priority |Aborts |Terminates: |# Current : |Prot.Curr : |Curr.Task : : EQUAL : +==============================================================================+ Single Pha:

Prot.Peak : Peak Task :

*==============================================================================* CLEAR = EXIT ENTER = REFRESH

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

109

IDBE DISP B24
Applid Sysid : CICPBB1A : PT9Ø PlanName BPPBIPE BPPASPE BPPGPPE BPPCRPE

>=

1000
Browse DB2Entrys Statistics Online Date : 11/Ø6/Ø1 Time : 1Ø:31:Ø3

*==============================================================================* |DB2Entry |B24 |COUNT |ENTRY |WARRANT | | CLEAR = Exit ENTER = Foward # Calls # Reuses 5,548 623 7,635 1,Ø13 # Term. 48 45 49 24 W/O Ø Ø Ø Ø #Lim. 1Ø 4 1Ø 6 #Peak 5 2 5 3 #Curr.| Ø| Ø| Ø| Ø| | | | *==============================================================================* 4Ø9,835 4,241 29Ø,384 14,839

| *** END OF DB2ENTRYS ***

*==============================================================================*

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

*==============================================================================* |DB2Entry |B24 |HZØ2 |JZ99 |IZ33 |MZØ5 *==============================================================================*

*==============================================================================*

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 REALSTG CPUTIME PRGMRCMP

OUXBPOUT RAXFMCTRAX ASCBRSME ASCBEJST+ ASCBSRBT LDGDSAST Sum(LDGDPSCR, AT LDGMAXDSA)

LOADPNIU

Sum(LDGPROGNIU, LDGMAXDSA)

LOADRNIU

Sum(LDGRECNIU, LDGMAXDSA)

LOADTNIU

Sum(LDGDPSCT, LDGMAXDSA)

MVSSYSID CICSDSA NCICSDSA SIZE

CVT SMSBODY

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 Percent PCTFREE [SMS(E)DSALIMITfree in SMS(E)DSATOTAL+ storage Sum( SMSBODY.SMSFSTG, area SMSNPAGP)] *1000/ LIMIT

SMCASIDSMCABASE SMSDSASZ

Total page outs Total frame count Total CPU time Programs removed by cmpressio n No of programs on NIU queue No of reclaims from NIU queue Times removed program on queue MVS sysid

Figure1a: Operations and Monitoring fields

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

113

Operations Monitoring
N/A NCMDT

Attribute
TOTLREQCNT

CICS DSECT DFHA17DS

DSECT Field
A17DSRD+ A17DSGU+ A17DSBR+ A17DSWRA+ A17DSWRU+ A17DSDEL A17DTRDS+ A17DTRNF+ A17DTAVR+ A17DTADS+ A17DTARJ+ A17DTATF+ A17DTRWS+ A17DTDLS A17DSRD+ A17DSGU+ A17DSBR+ A17DSWRA+ A17DSWRU+ A17DSDEL A17DSRD+ A17DSGU+ A17DSBR+ A17DSWRA+ A17DSWRU+ A17RMDEL A14ESTFC+ A14ESTIC+ A14ESTTD+ A14ESTTS+ A14ESTDL+ A14ESTPC Sum(DSGTCBCA, DSGASIZE)

Comments
Total request count

TOTMREQCNT

Total request count

N/A

NLOCFILE

TOTLREQCNT

DFHA17DS

Total request count

N/A

NREMFILE

TOTLREQCNT

DFHA17DS

Extra partition count

N/A

NCONNECT TOTFUNCSHIP DFHA14DS

Total function ships

CICSRGN NCICSRGN CUTCBCNT

DSGTCB

TOTLTASKS

DFHXMGDS XMGTNUM+ XMGNUM SMCABASE SMCASID CVT CVTSNAME ASCB OUXB ASCBIOSC OUXBPIN+ OUXBCAPI

SYSID MVSSYSNAME SIOREQ PAGEIN

Store Number of TCBs Total tasks since startup MVS Sysid MVS sysname Total IO count Page ins

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 2 3 Activation of monitoring.seedValue = CICS value at this time CICS Reset.seedValue = seedValue – last CICS value before reset 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 MON Nusecount 12 seedvalue 12 Musecount 0

Sample Sample CICS Sample Sample CPSM Sample Sample Reset reset 24 30 36 10 20 36 46 12 12 -24 -24 -24 20 20 20 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 MAXTRCNT LOADREQS LOADTIME PRGMUCNT LOADWCNT LOADWAIT RDEBRBLD PRGMRCMP LOADTNIU LOADRNIU SDMPTOTL SDMPSUPP TDMPTOTL TDMPSUPP CPUTIME PAGEIN PAGEOUT SIOREQ VTMRPLMAX VTMRPLPOST VTMSOSCNT VTMACBDOPE TOTACTVUSRTR TOTDELYUSRTR TOTQUETIME PROGAUTOATTM PROGAUTOXREJ PROGAUTOFAIL CPSM Reset ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZEROCICS ZEROCICS ZEROCICS ZEROCICS ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO Calculation DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA DELTA

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

117

INTVTRANS

ZERO

DELTA

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

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

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

MTRANCLS Base fields
Attribute QUEUED PURGETHRESH ATTACHES PURGEIMMED ACCEPTIMMED CPSM Reset ZERO
ZERO ZERO ZERO

Calculation
DELTA DELTA DELTA DELTA

118

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

ACCEPTAFTRQD TIMESATMAX PURGTHRTIMES QUEUETIME CURQUEDTIME

ZERO ZERO ZERO ZERO ZERO

DELTA DELTA DELTA DELTA DELTA

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

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

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

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

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

119

BUFFWAITS BUFWRITES WRTFRECVR BUFREADS FMTWRT IOERRS STRINGWAIT

ZERO ZERO ZERO ZERO ZERO ZERO ZERO

DELTA DELTA DELTA DELTA DELTA DELTA DELTA

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

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

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

120

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

Derived fields
Field CSACQRATE MIACQRATE CPSM Reset ZERO ZERO Calculation REPL,RATE_INST REPL,RATE_INTVL args ACQUIRES ACQUIRES

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

DELTA DELTA DELTA

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

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

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

121

DCWRITE IBLOOKASIDE IBREADS IBUIWRITE IBNUWRITE ICREAD ICWRITE

ZERO ZERO ZERO ZERO ZERO ZERO ZERO

DELTA DELTA DELTA DELTA DELTA DELTA DELTA

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

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

MLSRPBUF Base fields
Attribute READS USERIWRITE NONUWRITE CREADS CWRITES CPSM Reset ZERO ZERO ZERO ZERO ZERO Calculation DELTA DELTA DELTA DELTA 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 IMMD_SAMPLDWRTCT Calculation REPL,SUM args USERIWRITE,NONUWRITE

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

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

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

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

123

CURIEXCPRATE INTIEXCPRATE CURMRQRATE INTMRQRATE CURREADRATE INTREADRATE

ZERO ZERO ZERO ZERO ZERO ZERO

REPL,RATE_INST REPL,RATE_INTVL REPL,RATE_INST REPL,RATE_INTVL REPL,RATE_INST REPL,RATE_INTVL

IEXCPCNT IEXCPCNT TOTMREQCNT TOTMREQCNT READS READS

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

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

MREMFILE Base fields
Attribute REMDELCNT GETCNT GETUPDCNT BROWSECNT ADDCNT UPDATECNT TOTLREQCNT CPSM Reset ZERO ZERO ZERO ZERO ZERO ZERO ZERO Calculation DELTA DELTA DELTA DELTA DELTA DELTA 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 INTREQRATE

ZERO ZERO

REPL,RATE_INST REPL,RATE_INTVL

TOTLREQCNT TOTLREQCNT

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

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

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

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

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

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

125

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

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

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

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

126

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

CHARIN MSGOUT CHAROUT MSGINSEC CHARINSEC MSGOUTSEC CHAROUTSEC ALLOCATES USTG24CNT USTG31CNT USTG24HWM USTG31HWM USTG24OCC USTG31OCC PSTG31HWM PSTG24HWM FCGETCNT FCPUTCNT FCBRWCNT FCADDCNT FCDELCNT FCCOUNT FCAMCNT TDGETCNT TDPUTCNT TDPURCNT TDCOUNT TSGETCNT TSPUTACNT TSPUTMCNT TSCOUNT BMSMAPCNT BMSINCNT BMSOUTCNT BMSCOUNT PCLINKCNT PCXCTLCNT PCLOADCNT JCUSRWCNT ICCOUNT SYNCCOUNT DISPTIME SUSPTIME WAITTIME PCLOADTM EXWAIT TCIOTIME FCIOTIME JCIOTIME TSIOTIME IRIOTIME

ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

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

127

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

ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

128

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

RMITIMECT RMISUSPCT DCEDELAYTIME DCEDELAYCT DCEWAITTIME DCEWAITCT NUMINDOUBWT FORACTTRNDF FORACTINDTO FORACTNOWT FORACTOPER FORACTOTHER ACTMISMATS PERRECNT SC24SGCT SC24GSHR SC24FSHR SC31SGCT SC31GSHR SC31FSHR JNLWRTCT LOGWRTCT SYNCTIME SYNCTIMCNT RLSWAIT RLSWAITCNT RLSCPUT RLSCPUCNT LOCKMWT LOCKMWC EXTERNWT EXTERNWC CICSWT CICSWC INTVLWT INTVLWC CTLWT CTLWC SHDTSWT SHDTSWC ICTOTCNT PCLURMCT CFDTWT CFDTWC SRVSPWT SRVSPWC BARSYNCT BARASYCT BALKPACT BADPROCT BADACTCT

ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

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

129

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

ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERo ZERO ZERO ZERO ZERO

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

130

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

IMSWAITC DB2RDYQW DB2RDYQC DB2CONWT DB2CONWC DB2WAIT DB2WAITC GNQDELAY GNQDELAC SOIOWTT SOIOWTC RRMSWAIT RRMSWAIC PCDPLCT SOBYENCT SOBYDECT TCBATTCT JVMTIME JVMSUSP JVMTIMEC JVMSUSPC

ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO ZERO

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

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

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

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

131

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

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

132

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

TDIOCNT TCM62IN2 TCC62IN2 TCM62OU2 TCC62OU2 PC24RHWM PC31SHWM PC24SHWM SZALLOCT SZRCVCT SZSENDCT SZSTRTCT SZCHROUT SZCHRIN SZALLCTO SZRCVTO SZTOTCT SZWAIT DSPDELAY TCLDELAY MXTDELAY ENQDELAY LU61WTT LU62WTT RMITIME RMISUSP SZWAITCT DSPDELAYCT TCLDELAYCT MXTDELAYCT ENQDELAYCT LU61WTTCT LU62WTTCT RMITIMECT RMISUSPCT DCEDELAYTIME DCEDELAYCT DCEWAITTIME DCEWAITCT PERRECNT SC24SGCT SC24GSHR SC24FSHR SC31SGCT SC31GSHR SC31FSHR JNLWRTCT LOGWRTCT SYNCTIME SYNCTIMCNT RLSWAIT

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

ADD ADD ADD

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

133

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

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

134

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

DHSETCT DHRETCT DHTOTCT DHTOTDCL IMSREQCT DB2REQCT CHMODECT QRDISPT QRDISPC QRCPUT QRCPUC MSDISPT MSDISPC MSCPUT MSCPUC L8CPUT L8CPUC J8CPUT J8CPUC S8CPUT S8CPUC QRMODDLY QRMODDLC MXTOTDLY MXTOTDLC IMSWAIT IMSWAITC DB2RDYQW DB2RDYQC DB2CONWT DB2CONWC DB2WAIT DB2WAITC GNQDELAY GNQDELAC SOIOWTT SOIOWTC RRMSWAIT RRMSWAIC PCDPLCT SOBYENCT SOBYDECT TCBATTCT JVMTIME JVMTIMEC JVMSUSP JVMSUSPC

ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD ADD

Intermediate fields
Field CPSM Reset Calculation args

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

135

PFXA_CPUTIME IMMD_STOPMISTART

ADD REPL,STCKDIFF

CPUTIME STOP,START

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

ZERO ZERO ZERO ZERO

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

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

MXTRATDQ Base fields
Attribute OUTCNT CPSM Reset ZERO Calculation DELTA

Derived fields
Field CUROUTQRATE INTOUTQRATE CPSM Reset ZERO ZERO Calculation REPL,RATE_INST REPL,RATE_INTVL args OUTCNT 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 CUROUTQRATE INTOUTQRATE CPSM Reset ZERO ZERO Calculation REPL,RATE_INST REPL,RATE_INTVL args OUTCNT OUTCNT

MREMTDQ Base fields
Attribute OUTCNT CPSM Reset ZERO Calculation DELTA

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

MINDTDQ Base fields
Attribute OUTCNT CPSM Reset ZERO Calculation DELTA

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

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

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

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

137