Preferred practices
In this chapter, we provide information about CICS Interdependency Analyzer (IA) preferred practices to consider before you use CICS IA.
We look at how to configure CICS IA to do the following actions:
2.1 Collecting CICS IA data in a production region
CICS IA dependency and affinity data is analyzed to help you make decisions in order to reduce the cost, risk, and impact of changes to your application and the environment on which it runs. The quality of these decisions is directly related to the quality of the data. Many customers feel that collecting data in their production regions gives them the best data in order to gain an understanding of the relationships and dependencies of their CICS applications and environment.
In this section, we look at the CICS IA settings that allow you to run CICS IA collections in a production region with the minimum impact to the performance of your applications.
There are many ways to control the performance of the CICS IA collection. In this section, we look at the following options:
Using the Optimum Collection option
IA threadsafe considerations
IA exclude lists
IA resource compression and prefix list
Dynamic COBOL calls
2.1.1 Using the Optimum Collection option
In CICS IA V5.2, we introduced two new options to the “General Options” administration panel, which is available via the CINT transaction. The following options are available:
Trigger for Task Collection
Collect Long Running Tasks
These two new options apply to the collection of dependency data only. They are not used during the collection of “Affinity” data. The collection of “Affinity” data in a production region is covered in 4.2.1, “Configuring affinity options” on page 94.
The “Trigger for Task Collection” option allows you to specify on how many CICS tasks you want to collect data for. The value for this option is a numeric in the range 1 - 9999. If the value is set to “n,” CICS IA collects dependency data for every “n”th task that is started. For example, if you set the value to 10, CICS IA collects dependency data on every 10th task. To collect data for all tasks, set the value to 1.
The performance impact of the CICS IA collector exits on your application is governed by how much machine instruction is executed by the exits. By reducing the number of tasks that you collect data for, you reduce the impact of each exit invocation. If the “Trigger for Task Collection” is set to 10, the collector exits will still be called for each task that is started, but will be fully processed for the 10th task when the data is written to the data space. For the other nine tasks, the exits are invoked, the task number checked, and the exit terminates and returns control to the application.
So what is the “optimum” value for this field?
The CICS performance team in Hursley carried out some tests and their optimum value for this field was 50. Setting a value higher than 50 did not show any significant increase in performance savings. The results of the tests can be seen in Appendix B, “Task collection frequency: Performance results” on page 235.
2.1.2 CICS IA threadsafe consideration
The CICS IA collection exits are driven by your application invoking a CICS command, DB2 command, IMS command, or an IBM MQ command. These exits can run on both the QR TCB and open TCBs and therefore must be threadsafe. All of the exits update the CICS IA dataspace. To make the exits threadsafe, the access to the data space must be serialized. This is done by using the CICS ENQUEUE and DEQUEUE technique.
As well as your applications accessing the data space, our long running task, CINB, also needs access to the data space to enable the offload to the VSAM files. Therefore, we use the ENQUEUE and DEQUEUE technique in the CINB transaction as well. This is illustrated in Figure 2-1 on page 26.
 
Figure 2-1 CICS IA access to the data space
The long running task CINB can be woken up to start a save to VSAM in two ways:
Perform Periodic saves
Trigger for CINB starts
The “Perform Periodic saves” option causes the CINB transaction to wake up every 5 minutes and start a save.
The “Trigger for CINB starts” option causes the CINB transaction to wake up every time a preconfigured number of records is updated.
Having CINB wake-up during collection can lead to the following contentions as shown in Figure 2-1:
Increased ENQ/DEQ contention on the IA data space
IO contention on several CICS regions writing out to the VSAM files
Therefore, the advice is to switch off the CINB save process during the collection and only save to VSAM during a PAUSE or STOP of the collector.
You can switch off both periodic saves and triggered saves by selecting the following general options using the CINT transaction:
Perform periodic saves: N (Y=Yes, N=No)
Trigger for CINB start: 1 (2 - 9999 thousand record updates)
For more information about the CINT transaction, see the CICS IA Users Guide, which is in the IBM Knowledge Center:
http://www.ibm.com/support/knowledgecenter/SSPPUS/welcome.html
When the CINB save function is switched off, the only ENQ/DEQs are caused by the applications driving the CICS IA exits and therefore the contention is greatly reduced.
To force a daily save of the data from the data space to the CICS IA VSAM files, use option 2, “Time and Date” options as shown in Figure 2-2.
The default time and date options are shown in Figure 2-3 on page 28. This is set to collect all day, every day, every week, and so on.
CIU290 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/12
Resource Options for 01:26:34PM
CICS Sysid: DFTS CICS Applid: DEFAULTS
Type action code then press ENTER: 2
1 = General Options
2 = Time/Date Options
Interdependency Options Affinity Options
3 = CICS Options for APIs 7 = Affinity Options
4 = CICS Options for SPIs
5 = DB2/IMS/MQ/CPSM Options CICS TS Applications
6 = Natural Options 8 = Application Data
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC78
CIU7029I Action processed successfully.
F1=Help F2= F3=Exit F4= F5= F6=
F7= F8= F9= F10= F11= F12=Exit
Figure 2-2 Select option 2 for time and date options
CIU280 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/12
Time and Date Options for 01:31:10PM
CICS Sysid: DFTS CICS Applid: DEFAULTS
Modify the options and press Enter to update or F12 to Cancel.
Hour slots: Y=Yes, N=No, A=Affinity, I=Dependency, B=Both
Month, Day, and Week slots: Y=Yes, N=No
Hour of day: 0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Day of week: Mon Tue Wed Thu Fri Sat Sun
Y Y Y Y Y Y Y
Day of month: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 20 1 2 3 4 5 6 7 8 9 30 1
Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y
Month of year: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Y Y Y Y Y Y Y Y Y Y Y Y
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC78
F1=Help F2= F3=Exit F4= F5= F6=
F7= F8= F9= F10= F11= F12=Cancel
Figure 2-3 Default time and date options
You can override the default options for each CICS region being collected to stop the collector for an hour every day and thus save your data to VSAM file. In Figure 2-4 on page 29, we selected to choose to switch off the collector for region IYDZZ528 for 1 hour from midnight. This causes the data in the data space to be written out to VSAM. You can stagger the writing of data to the VSAM files from your shared collection regions by selecting a different hour for each CICS region and override the default.
CIU280 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/12
Time and Date Options for 01:34:46PM
CICS Sysid: Z528 CICS Applid: IYDZZ528
Modify the options and press Enter to update or F12 to Cancel.
Hour slots: Y=Yes, N=No, A=Affinity, I=Dependency, B=Both , or BLANK
Month, Day, and Week slots: Y=Yes, N=No , or BLANK
Hour of day: 0-1-2-3-4-5-6-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24
N
Day of week: Mon Tue Wed Thu Fri Sat Sun
Day of month: 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 20 1 2 3 4 5 6 7 8 9 30 1
Month of year: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC78
F1=Help F2= F3=Exit F4= F5= F6=
F7= F8= F9= F10= F11= F12=Cancel
Figure 2-4 Switch off the collector for region IYDZZ528
By using these options, you can manage both the ENQ/DEQ contention and the IO contention.
2.1.3 Using the IA exclude lists
CICS IA provides a number of exclude lists that can be used to reduce the performance impact of running both the dependency collector and the command flow collector:
Transaction exclude list You can use this list to exclude transactions from collection.
Program exclude list You can use this list to exclude programs from collection.
Command exclude list You can use this list to exclude certain CICS commands from collection. This list was added in CICS IA V5.3.
All three exclude lists come in the form of an assembler DSECT that can be assembled and linked. Sample source and sample JCL are supplied by CICS IA.
The linked load modules are loaded into storage when the collectors are started. The exclude lists that are loaded are configurable using the “General Options” using the CINT transaction. Following are the options:
Program exclude list: CIUXPROG (1 - 8 characters)
Transaction exclude list: CIUXTRAN (1 - 8 characters)
Command exclude list: CIUXCOMM (1 - 8 characters)
Similar options are provided with the CINC Command Flow transaction.
You can take these samples and modify them to suit your environment as the default exclude lists for all your CICS regions or you can take a copy of the lists and create region-specific lists. We create a region-specific list for the transaction exclude list in the next section.
Transaction exclude list
The sample source for the transaction exclude list can be found in:
<hlq>.SCIUSRCE(CIUXTRAN)
The sample JCL to assemble and link CIUXTRAN can be found in:
<hlq>.SCIUSAMP(CIUJCLXT)
We now show the steps required to exclude all transactions starting SSC from collection using a transaction exclude list called CIUXTSSC and then configure a CICS region to use this exclude list rather than the default list.
First, we need to take a copy of the shipped source shown in Figure 2-5 and edit it to add transaction prefix SSC and change the DSECT name to CIUXTSSC as shown in Figure 2-6 on page 31.
CIUXTRAN CSECT
CIUXTRAN AMODE 31
CIUXTRAN RMODE ANY
DS 0F
* Add user prefixes here
* DC AL1(3),C'TST' Example
DC AL1(0) End of list
END CIUXTRAN
Figure 2-5 Sample transaction exclude list: This exclude list is empty
 
CIUXSSCT CSECT
CIUXSSCT AMODE 31
CIUXSSCT RMODE ANY
DS 0F
* Add user prefixes here
DC AL1(3),C'SCC' All transactions starting SSC
DC AL1(0) End of list
END CIUXSSCT
Figure 2-6 Transaction exclude list for all SSC transactions
We then need to assemble and link the source to create the exclude list load module. Again, use the sample JCL job CIUJCLXT and modify as shown in Figure 2-7.
//ASM EXEC PGM=ASMA90,
// PARM='OBJECT,LIST,ALIGN,TERM'
//SYSIN DD DISP=SHR,
// DSN=ANTZ.CICS.IA.DEV.EMSINT.SCIUSRCE(CIUXTSSC)
//SYSPRINT DD SYSOUT=*
//SYSTERM DD SYSOUT=*
//SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT2 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSUT3 DD UNIT=SYSDA,SPACE=(CYL,(5,5))
//SYSLIN DD DSN=&&OBJ,DISP=(,PASS),UNIT=SYSDA,
// SPACE=(TRK,(15,5))
//* LINK-EDIT MODULE
//LKED EXEC PGM=IEWL,COND=(4,LT),
// PARM='RENT,LIST,LET,MAP,NCAL'
//SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(2,1))
//SYSLMOD DD DISP=SHR,
// DSN=ANTZ.CICS.IA.DEV.EMSINT.SCIULOAD(CIUXTSSC)
//SYSPRINT DD SYSOUT=*
//SYSLIN DD DSN=&&OBJ,DISP=(OLD,DELETE)
Figure 2-7 Sample job to assemble and link CIUXTSSC
You now need to add a CICS resource definition for this program in the DFHCSD for the CICS regions that use this exclude list as shown in Figure 2-8. If you are using program auto-install, skip this step.
DEFINE PROGRAM(CIUXTSCC) GROUP(CINTGR53)
DESCRIPTION(TRANSACTION EXCLUDE LIST for SCC)
LANGUAGE(ASSEMBLER)
RELOAD(NO) RESIDENT(NO)
USAGE(NORMAL) USELPACOPY(NO)
STATUS(ENABLED) CEDF(NO)
DATALOCATION(ANY) EXECKEY(CICS)
Figure 2-8 Program definition for CIUXTSCC
Lastly, override the default value for the CICS region in which you want to use this exclude list. We use our new list, CIUXTSCC, in CICS region IYDZZ528. Using the CINT option 2 for “Configure Region options,” select option 4 for “options” against region IYDZZ528 as shown in Figure 2-9.
CIU200 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/13
Region Configuration Menu 12:04:41PM
Type action code then press ENTER. More :
1=Add Region 2=Copy Region 3=Delete Region 4=Options
CICS CICS New New
Act Applid Sysid Applid Sysid Status Collecting
DEFAULTS DFTS
ALL ALL
IYDZZ518 Z518 STOPPED
4 IYDZZ528 Z528 STOPPED
IYDZZ538 Z538 STOPPED
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC30
F1=Help F2= F3=Exit F4= F5= Refresh F6=
F7=Page Up F8=Page Down F9= F10= F11= F12=
Figure 2-9 Configure the options for region IYDZZ528
You then select 1 for “General Options” and enter CIUXTSSC for the transaction exclude list as shown in Figure 2-10 on page 33.
CIU260 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/13
General Options for 12:08:19PM
CICS Sysid : Z528 CICS Applid : IYDZZ528
Modify the options and press Enter to update, or PF12 to Cancel.
Control options (Fields may be set to blanks for default)
Data to Collect . . . . . . : (A=Affinity, I=Interdependency, B=Both)
Perform periodic saves . . . : (Y=Yes, N=No)
Trigger for CINB start . . . : (2 to 9999 thousand record updates)
Restore data on start . . . : (Y=Yes, N=No)
Maintain usage counts . . . : (Y=Yes, N=No)
Size of dataspace . . . . . : (10 to 2000 Mbytes)
Transid prefix (optional). . : (1 to 4 characters)
Program exclude list . . . . : (1 to 8 characters)
Transaction exclude list . . : CIUXTSCC (1 to 8 characters)
Command exclude list . . . . : (1 to 8 characters)
Resource compression list. . : (1 to 8 characters)
Dump HLQ . . . . . . . . . . : (1 to 8 characters)
Dynamic call . . . . . . . . : (Y=Yes, N=No)
Trigger for Task collection. : (1 to 9999)
Collect Long Running Tasks . : (Y=Yes, N=No)
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC30
F1=Help F2= F3=Exit F4= F5= F6=
F7= F8= F9= F10= F11= F12=Cancel
Figure 2-10 Set the transaction exclude list to CIUXTSCC
Program exclude list
The sample source for the program exclude list can be found in:
<hlq>.SCIUSRCE(CIUXPROG)
The sample JCL to assemble and link CIUXPROG can be found in:
<hlq>.SCIUSAMP(CIUJCLXP)
The sample for the program exclude list contains program prefixes for some of the IBM licensed programs as shown in Figure 2-11 on page 34.
Again, you can update the default table CIUXPROG or create region-specific exclude lists as we did for the transaction exclude list.
CIUXPROG CSECT
CIUXPROG AMODE 31
CIUXPROG RMODE ANY
DS 0F
* Add user prefixes here
* DC AL1(4),C'TEST' Example
* Predefined prefixes
DC AL1(3),C'DFH' CICS
DC AL1(3),C'CEE'
DC AL1(3),C'EQA'
DC AL1(3),C'IBM'
DC AL1(3),C'EDC'
DC AL1(3),C'IGZ'
DC AL1(3),C'CAU' Affinities utility
DC AL1(3),C'CIU' Interdependency utility
DC AL1(3),C'DSN' DB2
DC AL1(3),C'EYU' CICSPlex SM
DC AL1(3),C'CJA' CICSPlex SM for CICS640
DC AL1(3),C'CJB' CICSPlex SM for CICS650
DC AL1(3),C'CJC' CICSPlex SM for CICS660
DC AL1(3),C'CJD' CICSPlex SM for CICS670
DC AL1(3),C'CJE' CICSPlex SM for CICS680
DC AL1(3),C'CSQ' MQ
DC AL1(3),C'CMZ' CICS PM
DC AL1(3),C'CPA' CICS PA
DC AL1(3),C'ABL' OTTO
DC AL1(3),C'CBM' CICS BEP
DC AL1(3),C'DWW' CICS VR
DC AL1(3),C'ISZ' Session manager
DC AL1(3),C'VID' VT
DC AL1(3),C'CBK' CICS BAC
DC AL1(3),C'CCV' CICS CM @R57780C
DC AL1(3),C'CTG' CICS TRANSACTION GATEWAY
DC AL1(3),C'CPH' CICS DA
DC AL1(4),C'IN25'
DC AL1(8),C'ADABAS ' Natural ... @R97019A
DC AL1(8),C'ADACICT ' related @R97019A
DC AL1(0) End of list
END CIUXPROG
Figure 2-11 Sample program exclude list
Command exclude list
The sample source for the command exclude list can be found in:
<hlq>.SCIUSRCE(CIUXCOMM)
The sample JCL to assemble and link CIUXCOMM can be found in:
<hlq>.SCIUSAMP(CIUJCLXC)
This list was added in CICS IA V5.3. It was added to provide the ability to have more control on the actual CICS commands we collect. The “CICS options for APIs” and the “CICS options for SPIs” in the CINT transaction provides you with some degree of control on the CICS commands you want to collect. This list gives you further control by allowing you to specify the EIBFN code for the command you want to exclude. You can also exclude by command groups.
The example in Figure 2-12 excludes all the TDQUEUE commands and the WRITE JOURNAL command.
EJECT
CIUXCOMM CSECT
CIUXCOMM AMODE 31
CIUXCOMM RMODE ANY
DS 0F
* Add command and group code here
DC AL1(2),X'0800' Exclude TDQ commands
DC AL1(2),X'1402' Exclude write journal command
DC AL1(0) End of list
END CIUXCOMM
Figure 2-12 Example command exclude list
Again, you can update the default table CIUXCOMM or create region-specific exclude lists as we did for the transaction exclude list.
2.1.4 Using the IA resource compression list
In CICS IA V5.3, we provide a resource compression list. This list replaces the resource prefix list provided by earlier releases of CICS IA.
The purpose of the resource compression list is to compress records in CICS IA dataspace to reduce memory usage, avoid output of unnecessary data into DB2 tables, and improve performance. In CICS IA V5.3, we now have three formats of the resource list. The three formats are not compatible and cannot be used in the same DSECT.
The resource compression is performed against the following commands:
IBM MQ commands
CHANNELs/CONTAINERs commands
ENQ/DEQ commands
TS Queue commands
CANCEL/POST/DELAY commands
Records that match rules specified in this resource list are collected as just one record. If a match is found, the rest of the resource name is changed to contain + (plus) signs.
Version 1 format
The format for this rule is as follows:
The prefix length (range 1 - 32)
The resource name prefix, which is a string of valid symbols
For example, if we have a TSQUEUE name that is made up of a PREFIX “DEPT10” followed by a numeric field as shown below:
DEPT10nnnnnn
Without compression, we would write a record in the dataspace and subsequently a DB2 row for all instances. If we had WRITEQ, READQ, and DELETEQ for this resource name, we could see up to 3,000,000 records:
100,000 records for each of the three commands starting with DEPT10000000 through to DEPT10999999
By using the compression rule shown in Example 2-1, we can reduce the number of records to three:
One record for each of the three commands named DEPT10++++++
 
Note: Any of the supported resources starting with the name DEPT10 will also be replaced.
Example 2-1 Format 1 of the compression rule
CIUXRCOM CSECT
CIUXRCOM AMODE 31
CIUXRCOM RMODE ANY
DS 0F
* Add your own rules here.
DC AL1(6),C'DEPT10'
DC AL1(0) End of list
END CIUXRCOM
* End of the list:
Version 2 format
The format for this rule is as follows:
The command types to be compressed
Starting position of the key (range 1 - 32)
The key length (range 1 - 32)
The key that is a string, which can be a prefix, an infix, or a suffix
The following command types are supported:
decimal 1 = MQ
decimal 4 = CHANNELs/CONTAINERs
decimal 7 = ENQ/DEQ
decimal 10 = TS Queue
decimal 11 = CANCEL/POST/DELAY
In this example, we have a REQID compromising of a numeric followed by ABCD as shown in nnnnABCD.
This REQID can be associated with the CANCEL, POST, and DELAY command.
Again, without a compression rule we could have many records in the dataspace and in the DB2 tables.
By using the compression rule shown in Example 2-2, we can reduce the number of records to 3:
One record for each of the three commands named ++++ABCD
Example 2-2 Format 2 of the compression rule
CIUXRCOM CSECT
CIUXRCOM AMODE 31
CIUXRCOM RMODE ANY
DS 0F
* Add your own rules here.
DC AL1(11),AL1(4),AL1(4),C'ABCD' CANCEL/POST/DELAY
DC AL1(0) End of list
END CIUXRCOM
* End of the list:
Version 3 format
The format for this rule is as follows:
The command types to be compressed
Compression trigger (range 1 - 255)
Starting position of the save area (range 1 - 32)
The save area length (range 0 - 32)
Starting position of the key (range 1 - 32)
The key length (range 0 - 32)
Starting position of the key (range 1 - 32)
The key that is a string, which can be a prefix, an infix, or a suffix
The following command types are supported:
decimal 1 = MQ
decimal 4 = CHANNELs/CONTAINERs
decimal 7 = ENQ/DEQ
decimal 10 = TS Queue
decimal 11 = CANCEL/POST/DELAY
The save area defines a part of the resource name that will be preserved (not filled with +). It may include the key.
The compression trigger is the number of records at which the compression rule is applied and compression is started.
Before adding rules, first specify the eyecatcher to let CICS IA know that version 3 of resource compression list is used:
DC CL8'PLIST V3'
In this example, we compress TSQUEUE commands using a resource name of TSQnnnnn where “nnnnnn” increments form 0 - 999999. We also distinguish between TSQ1nnnn, TSQ2nnnn, and TSQ3nnnn, and so on, and only start the compression after we have seen two instances for TSQ1, TSQ2, and so on.
Example 2-3 Format 3 of the compression rule
CIUXRCOM CSECT
CIUXRCOM AMODE 31
CIUXRCOM RMODE ANY
DS 0F
* Add your own rules here.
DC CL8'PLIST V3'
DC AL1(10),AL1(3),AL1(4),AL1(1),AL1(1),AL1(3),C'TSQ'
DC AL1(0) End of list
END CIUXRCOM
* End of the list:
By applying the rule in Example 2-3, we get the following resource names associated with the TSQUEUE commands:
TSQ00001
 
TSQ00002
 
TSQ0++++ compression starts after seeing more than two “TSQ0****” entries
 
TSQ10000
 
TSQ10001
 
TSQ1++++ compression starts after seeing more than two “TSQ1****” entries
 
TSQ20000
 
TSQ20001
 
TSQ2++++ compression starts after seeing more than two “TSQ2****” entries
 
...
 
TSQ90000
 
TSQ90001
 
TSQ9++++ compression starts after seeing more than two “TSQ1****” entries
Again, you can update the default table CIUXRCOM or create region-specific compression lists as we did for the “Transaction exclude list” on page 30.
2.1.5 Dynamic COBOL calls
The CICS IA collector can detect dynamic COBOL calls in an IBM Language Environment®. To support the collection of dynamic IBM COBOL Language Environment calls, CICS IA assumes that the Call parameter list for IBM COBOL for OS/390® program conforms to the structure documented in the publication Language Environment Vendor Interfaces for COBOL Call routine. In order to detect dynamic COBOL calls for IBM COBOL for OS/390 and IBM VS COBOL II programs, the CBLPSHPOP Language Environment option must be active. The Language Environment option ALL31(ON/OFF) is supported for dynamic calls from IBM COBOL for OS/390 programs.
For more information about what can and cannot be collected, see the section “Collecting dynamic COBOL calls” in the CICS IA Users Guide, which is in the IBM Knowledge Center:
There are two requirements that CICS IA needs to achieve in order to support dynamic COBOL calls:
Identifying the actual dynamic call, for example, PROGA calls PROGB
EXEC CICS commands or any RMI commands issued by PROGB are reported under PROGB
The first requirement is met only if the CBLPSHPOP Language Environment option is active.
The second requirement is met by using the CICS SPI call IDENTIFY_PROGRAM. This call can be CPU intensive, and with this fact in mind, we added an option to switch the collection of COBOL dynamic calls ON or OFF for both the dependency collector and the command flow collector.
For the dependency collector, go to the “General Options” panel using CINT and update the following option:
Dynamic call . . . . . . . . : Y (Y=Yes, N=No)
The same option can be found on the “Command Flow Options” panel using the CINC transaction.
2.2 Collecting the DB2 resource name
CICS IA interfaces with DB2 in two ways:
It collects DB2 resources and commands used within a CICS region. In this case, we may collect resource information for many different DB2 subsystems depending on which DB2 subsystem the CICS region is connected to.
It stores the collected data in a DB2 database. Usually, you have one CICS IA database where you can load all your collected data. This database can include data collected from development, test, and production regions. It can also include data from all the DB2 subsystems connected to these CICS regions.
The DB2 resource collection is performed by using the XRMIIN and XRMIOUT CICS exits. When an application issues an EXEC SQL command, information is written to the dataspace. An entry is written to the IA dataspace for this command including the “stmtno”, “sequence number” and the “plan name.”
 
Note: The actual resource name associated with the command is unavailable to us.
The resource name is obtained during the save process from the dataspace to the VSAM file for DB2 data. The resource name is obtained by accessing the SYSIMB.SYSPACKSTMT table or the SYSIBM.SYSSTMT tables. At many customer sites these tables are not maintained and can include millions of rows. In order to improve the performance of the CINB save process for DB2, we supply DB2 indexes for these tables.
The supplied index can be found in the following command:
<hlq>.SCIUSQL(CIUIBM1)
A sample job to create this index can be found in the following command:
<hlq>.SCIUSAMP(CIUDBCT)
This job needs to be run for each DB2 subsystem that you intend to collect DB2 data for.
Many customer sites do not allow these indexes to be created. Therefore, we have two options to avoid performance issues during CINB save.
Turn off access to the SYSIBM tables
Use transaction CINT and select 2 for “Configure Region Options.” Then, enter option 4 for the DEFAULT record or a specific region record, as shown in Figure 2-13.
CIU200 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/13
Region Configuration Menu 02:44:01PM
Type action code then press ENTER. More :
1=Add Region 2=Copy Region 3=Delete Region 4=Options
CICS CICS New New
Act Applid Sysid Applid Sysid Status Collecting
4 DEFAULTS DFTS
ALL ALL
IYDZZ518 Z518 STOPPED
IYDZZ528 Z528 STOPPED
IYDZZ538 Z538 STOPPED
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC30
 
Figure 2-13 Select “Options” for the DEFAULT record
Then, select option 5 for “DB2/IMS/MQ/CPSM Options” and switch off the “Collect resource name” flag, as shown in Figure 2-14.
CIU250 CICS Interdependency Analyzer for z/OS - V5R3M0 2015/10/13
DB2/MQ/IMS/CPSM Resource Options for 02:47:47PM
CICS Sysid : DFTS CICS Applid : DEFAULTS
Modify the options and press Enter to update, or PF12 to Cancel.
Detect command types: Y=Yes, N=No
DB2 Options
Collect DB2 Resources . . . . . : Y
Collect resource name . . . . . : N (Y/N) (Access the SYSIBM.SYSPACKSTMT
and the SYSIBM.SYSSTMT tables)
MQ Options
Collect MQ Resources . . . . . : Y
IMS Options
Collect IMS Resources . . . . . : Y
CPSM Options
Collect CPSM Resources . . . . : Y
CICS Sysid: Z538 CICS Applid: IYDZZ538 TermID: TC30
 
Figure 2-14 Switch off “Collect resource name”
 
Note: By switching off the Collect resource name option, we still capture that the program issued an SQL command, but we have a blank resource name.
Create a copy of the SYSIBM tables
First, you must take a daily copy of the SYSPACKSTMT table overnight using a different qualifier or ALIAS. In our example, we use a DB2 qualifier of “IAQUAL”.
By default, the CINB programs are currently bound to use the SYSIBM qualifier to access the SYSIBM tables. You need to configure the DB2 collector options to use your modified qualifier. To do this modification, run the configuration exec by entering the following TSO command:
ex '<iahlq>.SCIUEXEC(ciucnfg1)' '<iahlq> ENU'
Then, select option 3 to configure a new CICS collection or 4 to configure an existing CICS collection. In this example, we use an existing collection as shown in Figure 2-15.
************** CICS Interdependency Analyzer for z/OS - V5R3M0 **************
Command ===>
Press ENTER to complete, PF3 to go back or PF1 for help.
Please select an option from the list below:
4 0. Settings
1. Configure new DB2
2. Configure existing DB2
3. Configure new CICS
4. Configure existing CICS
5. Configure new UDB
6. Configure existing UDB
Figure 2-15 Select an existing CICS collection
Then, select “f” for a full configuration of IYDZZ528, as shown in Figure 2-16.
************** CICS Interdependency Analyzer for z/OS - V5R3 Row 1 to 10 of 10
Command ===> Scroll ===> CSR
CICS IA CICS Customization Function
Press ENTER to complete, PF3 to go back or PF1 for help.
For selecting a CICS configuration from the list below, please type
S for Short Configuration, F for Full Configuration, D for Delete,
C for Copy or R for Rename.
Cmd Configuration CICSVersion Description
IYDZT524 V520 test
IYDZZ518 V510 test
IYDZZ524 V520 test
f IYDZZ528 V520 test
IYDZZ529 V520 test
Figure 2-16 Select configuration IYDZZ528
Then, scroll down to the DB2 variables and change the “DB2 Table Qualifier” from SYSIBM to the qualifier of your copy, as shown in Figure 2-17.
************** CICS Interdependency Analyzer for z/OS - V5R3M0 **************
Command ===>
More: - +
DB2 variables for CINT:
COLLECTING DB2 INFORMATION . . . YES (YES or NO)
DB2 VERSION . . . . . . . . . . V10
DB2 COMPATIBILITY MODE . . . . . NO (YES or NO)
DB2 LOAD DATA SET NAME . . . . . SYS2.DB2.V10.SDSNLOAD
DB2 RUNLIB DATA SET NAME . . . . DSNV102F.RUNLIB.LOAD
DB2 SUB SYSTEM . . . . . . . . . DI2F
DB2 TABLE QUALIFIER . . . . . . IAQUAL
DB2 TABLE OWNER . . . . . . . . CICSIAD
DB2 BUFFERPOOL FOR INDEX . . . . BP1
DB2 PLAN NAME FOR DSNTEP2 . . . DSNTEP10
DB2 PLAN NAME FOR CICS . . . . . CIUCIC53
DB2 COLLECTION ID . . . . . . . IACOLL53
DB2 AUTHORIZATION ID . . . . . . PUBLIC
 
Figure 2-17 DB2 variables for CINT
When the configuration is complete, you need to rebind the CINB programs by running the following command:
<hlq>.SCIUSAMP(CIUDBNT)
2.3 Using the collection ID to manage your data
In this section, we look at these topics:
What collection ID value should you use
How to set the collection ID
and how we can use the collection ID to:
Manage our analysis in the plug-in
Compare data collected for different collection IDs
Delete data by collection ID
2.3.1 What value should you assign to my collection ID?
A collection ID is assigned to the CICS IA Dependency data when it is loaded from the VSAM file in to the CICS IA DB2 database. A collection ID can be a string up to 16 characters. It can include numerics and special characters.
The collection ID can be used in a number of different ways and it can depend on:
Why are you collecting the data
Your environment
If you are collecting data for a specific project, for example:
Threadsafe analysis
A major application upgrade
CICS upgrade
Then, we suggest that all the data you collect before the change is assigned to the same collection ID during the load job. This setting enables you to analyze the “before” image of the data. When you have performed the changes, recollect the data and assign a new collection ID. This setting enables you to analyze the “after” image of the data and by using the IA plug-in you can compare the “before” and “after” images.
If you are collecting data in a stable production environment, you can use the same collection ID. This setting could be used as your base collection ID. You would only change the collection ID if there is a change to your environment.
If you are collecting data in a volatile development environment where there are many changes, you might want to consider doing a weekly load and using a weekly identification for your collection ID. These settings would allow you to compare weekly and delete data associated with collection IDs that are, for example, 5 weeks old.
CICS IA allows you to load data from your development, test, and production regions into the same IA DB2 database. You can use different collection IDs to distinguish between the data. Again, you can then analyze, compare, and delete by using these collection IDs.
You can also use the collection ID to assist you in analyzing a specific problem by collecting data just in the CICS region and a transaction causing the problem. Then, when you load the data in to the IA DB2 database, use a collection ID that relates to that transaction and problem.
2.3.2 How to assign a collection ID
The collection ID for the dependency data is done during the DB2 load. It is used in the following jobs:
CIUUPDB: Load all dependency tables
CIUUPDB1: Load CICS and detail dependency tables
CIUUPDB2: Load DB2 dependency tables
CIUUPDB3: Load MQ dependency tables
CIUUPDB4: Load IMS/DLI dependency tables
CIUUPDBN: Load Natural/ADABAS dependency tables
The setting of the variable depends on your level of JES2. If you are on JES2 z/OS 2.1, we use the new SYMLIST parameter feature as shown in Figure 2-18. In this case, you only need to change it in one place.
// EXPORT SYMLIST=(COLL)
// SET COLL='_collid_'
....
//STEP000 EXEC PGM=IKJEFT1B,
// DYNAMNBR=20
//SYSTSIN DD *,SYMBOLS=EXECSYS
DSN SYSTEM(DI2F)
RUN PROGRAM(CIUUREG) -
PLAN(IAINC53B) LIB('ANTZ.CICS.IA.DEV.BSF.SCIULOAD') -
PARMS('DEP,COLLID=&COLL')
END
/*
Figure 2-18 Setting the collection ID in JES2 zOS V2.1
If you are on an earlier release of JES2, you need to change the collection ID in several places. This change is best done by using the CHG ALL command as shown in Figure 2-19.
EDIT CICSIA51.SCIUSAMP.CICS.TEST(CIUUPDB) - 01.01 Columns 00001 00080
Command ===> chg _collid_ CICS510 all Scroll ===> CSR
****** ********************************* Top of Data **********************************
- - - - - - - - - - - - - - - - - - - - - 129 Line(s) not Displayed
000128 DSN SYSTEM(DI2F)
000129 RUN PROGRAM(CIUUREG) -
000130 PLAN(IAINC51B) LIB('CTSTOOLS.CIA510.SCIULOAD') -
000131 PARMS('DEP,COLLID=_collid_')
- - - - - - - - - - - - - - - - - - - - - 110 Line(s) not Displayed
000242 DSN SYSTEM(DI2F)
000243 RUN PROGRAM(CIUU055) -
000244 PLAN(IAINC51B) LIB('CTSTOOLS.CIA510.SCIULOAD') -
000245 PARMS('UPDATE,COLLID=_collid_')
000246 END
- - - - - - - - - - - - - - - - - - - - - 55 Line(s) not Displayed
Figure 2-19 Change all collection IDs
2.3.3 Using the collection ID to manage our analysis
All of the collection IDs you assigned to the CICS IA database are displayed in the upper left side of the CICS IA perspective, as shown in Figure 2-20.
Figure 2-20 The Collection IDs view
In this section and following sections, we use these collection IDs to perform the following functions:
Manage the amount of data returned
Compare data across collection IDs
Delete data associated with a collection ID
To manage the data you analyze and the amount of data returned when using the CICS IA plug-in, you can set a collection ID scope. When you set a specific scope, all the analysis you do including queries and reports will be restricted to the collection ID scope you selected. Setting the scope to a specific collection ID has two advantages:
Reduces the amount of data returned over your JDBC connection
Clarifies your analysis
To set a scope, right-click the collection ID you require and select “Set as current scope,” as shown in Figure 2-21.
Figure 2-21 Set collection ID CICS510 to be the current scope
The collection ID you selected is displayed in the menu as shown in Figure 2-22.
Figure 2-22 Collection ID is set to CICS520
You can clear the collection ID scope by clicking the “erase” icon as shown in Figure 2-23.
Figure 2-23 Clear the collection ID
As mentioned earlier, by selecting a scope you reduce the amount of data you analyze. You can see this reduction in the data that is shown in the Regions folder and the Transactions or Program views.
In Figure 2-24, there is no scope set and you see all of the collected data. You can see four CICS regions and eight transactions.
Figure 2-24 No collection ID scope
If you now set the scope to be the IVP collection ID, the amount of data returned in these views is reduced as shown in Figure 2-25.
Figure 2-25 Collection ID scope set to GENAPP_IVP
The scope is also applied when analyzing data, running reports, and running queries, for example, if we select to see the resources used by transaction SSC1 and select a specific region as shown in Figure 2-26.
Figure 2-26 Show resources used by SSC1 for a specific region
If there is no collection ID scope set, all of the CICS regions where data for transaction SSC1 will be selectable as shown in Figure 2-27.
Figure 2-27 No collection ID scope set
If the collection ID scope is set to GENAPP_IVP, only one CICS region is selectable as shown in Figure 2-28.
Figure 2-28 Collection ID scope set to GENAPP_IVP
If you run a threadsafe report with the collection ID set to GENAPP_IVP, the scope is associated with the report as shown in Figure 2-29.
Figure 2-29 Threadsafe report for collection ID GENAPP_IVP
2.3.4 Comparing collection IDs
In this section, we run a query against different collection IDs, save the results, and then compare them.
We use a simple query to list the programs used as shown in Figure 2-30. You could use this type of query to determine the amount of testing you have done when you are upgrading your CICS system. In this example, we collected automated test data in our CICS V510 region and set the collection ID to CICS510. We have all also collected the data in our CICS V520 region and set the collection ID to CICS520. By comparing the output, you can see which programs you have not tested against V520.
Figure 2-30 Simple query to list programs used
We now set the scope to CICS510 and run the query. The output is shown in Figure 2-31. There are 28 programs (shown in the upper-right corner) and this query has a scope of CICS510 (shown in upper-left corner).
Figure 2-31 Programs used in CICS510
We now save the output. Select File  Save as shown in Figure 2-32 and enter a meaningful name for your query as shown in Figure 2-33.
Figure 2-32 Save the results of your query
Figure 2-33 Enter a query description
We now switch the collection ID scope to CICS520 and rerun the query and the save.
In the Queries folder, we can now see that we have two results saved for the Programs Used query as shown in Figure 2-34.
Figure 2-34 Results saved for query “Programs Used”
Note: The date is also stored when the query output is saved. You can use this feature to save the results on a weekly basis as you proceed with your CICS TS upgrade testing.
We can now compare the result sets to see how many programs we have not tested in V520. You need to open both result sets in the Show Resources view and then select the “compare” icon found in the upper-right corner of the view as shown in Figure 2-35.
Figure 2-35 Compare results
In “Compare search results,” select the results you want to compare as shown in Figure 2-36 on page 55.
Figure 2-36 Compare programs used in CICS510 and not in CICS520
The output is also displayed in the Show Resources view as shown in Figure 2-37 on page 56. We can see that there are 11 programs used in CICS510 that we have not collected data for in CICS520.
Figure 2-37 Output for compare programs used
2.3.5 Deleting data by collection ID
In this section, we use the CICS IA plug-in to delete the data associated with the IVP collection ID.
Right-click the “GENAPP_IVP” collection ID and select “Delete associated data” as shown in Figure 2-38.
Figure 2-38 Delete data associated with GENAPP_IVP
You get an opportunity to confirm or cancel as shown in Figure 2-39.
Figure 2-39 Confirm the delete
Select Yes to confirm the delete and the data is deleted and a deletion report is given as shown in Figure 2-40 on page 58.
Figure 2-40 Data associated with GENAPP_IVP has been deleted
 
..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset