Defining the global catalog

The global catalog is a VSAM key-sequenced data set (KSDS). In an XRF environment there is only one global catalog. It is shared passively between the active and the alternate CICS® regions. The global catalog is used:

For further information about what is written to the global catalog, and about how CICS uses the global catalog for startup and restart, see The role of the CICS catalogs.

JCL to define and initialize the global catalog

Before its first use, you must define and initialize the CICS global catalog as a KSDS. You can use the sample job in Figure 13 to do this, or you can run the CICS-supplied job, DFHDEFDS, to define and initialize the global catalog as one of the data sets for the CICS region. For information about the DFHDEFDS job, see the CICS Transaction Server for z/OS® Installation Guide.

Figure 13. Example job to define and initialize the global catalog
//GLOCAT   JOB accounting info,,CLASS=A
//DEFGCD   EXEC PGM=IDCAMS
//SYSPRINT DD   SYSOUT=*
//SYSIN    DD   *
      DEFINE CLUSTER -
               (NAME(CICSTS31.CICS.applid.DFHGCD) -                1 
               INDEXED                      -
               CYLINDERS(n1 n2)             -                      2 
               FREESPACE(10 10)             -
               SHAREOPTIONS(2)              -
               RECORDSIZE(4089 4089)
               REUSE                        -                      3 
               VOLUMES(volid))              -
             DATA                           -                      4 
               (NAME(CICSTS31.CICS.applid.DFHGCD.DATA)  -
               CONTROLINTERVALSIZE(8192)    -                      5 
               KEYS(28 0))                  -
             INDEX                          -
               (NAME(CICSTS31.CICS.applid.DFHGCD.INDEX) )
/*
//INITGCD  EXEC PGM=DFHRMUTL,REGION=1M                             6 
//STEPLIB  DD DSNAME=CICSTS31.CICS.SDFHLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=A
//DFHGCD   DD DSNAME=CICSTS31.CICS.applid.DFHGCD,DISP=OLD
//SYSIN    DD *
SET_AUTO_START=AUTOINIT
/*
                                                                   7 

Notes:

 1  The data set name in the CLUSTER definition must be the same as the DSN parameter in the DD statement for the global catalog in the CICS startup job stream.

 2  The primary and secondary extent sizes are shown as n1 and n2 cylinders. Calculate the size required to meet your installation’s needs, and substitute your values for n1 and n2.

Whichever IDCAMS parameter you use for the GCD space allocation (CYLINDERS, TRACKS, or RECORDS), make sure that you specify a secondary extent. CICS abends if your GCD fills and VSAM cannot create a secondary extent.

 3  To enable the global catalog to be opened again and again as a reusable cluster, specify the REUSE option on the DEFINE CLUSTER command. REUSE should also be specified if you intend to use the COLD_COPY input parameter of the DFHRMUTL utility.

 4  Specify a RECORDSIZE value for the global catalog. The default average and maximum record size is 4089 bytes. If your maximum record size is greater than 4089, you must specify this value instead in the sample job. For information about record sizes, see Table 14.

 5  You can vary the CONTROLINTERVALSIZE from the values shown in the VSAM definition. However, although larger values reduce the number of control interval (CI) and control area (CA) splits, other factors increase CICS shutdown times, and slow down a cold start.

This job stream does not specify a BUFFERSPACE parameter, although you can code an explicit value if you want to define buffers of a specific size. BUFFERSPACE is the minimum bufferspace permitted; VSAM defaults to a bufferspace value equal to twice the CI size of the data component, plus the CI size of the index, which gives a default of 20480 bytes in the example job. A larger minimum buffer size (bufferspace) may improve cold start and warm restart times, and may significantly reduce CICS shutdown times.

Another way to define buffer space for the GCD is by means of the AMP parameter on the DD statement for the GCD in the CICS startup job stream, which you can use to override the default or defined value. (Note, however, that the BUFSP parameter defines the maximum bufferspace. If you define a BUFFERSPACE value on the AMP parameter that is smaller than the BUFFERSPACE value specified in the DEFINE statement, the BUFFERSPACE value takes precedence.

For performance reasons, CICS defines a STRNO (number of strings) value of 32. Based on the example job stream in Figure 13, the absolute minimum value of BUFSP is calculated as follows:

Start of changeBUFND = (STRNO + 1)
BUFNI = STRNO
BUFSP = 33 * 8192 (BUFND * CI size) + 32 * 1536  (BUFNI * CI size) =
        319488 bytesEnd of change

Note: This is the smallest figure that can be used for BUFSP.

The principal factors affecting CICS startup and shutdown times are:

 6  The job step INITGCD uses the recovery manager utility program, DFHRMUTL, to initialize the data set. DFHRMUTL writes a record to the data set, specifying that, on its next run using this global catalog, if START=AUTO is specified, CICS is to perform an initial start and not prompt the operator for confirmation. This record is called the autostart override record.

DFHRMUTL can also be used to override the type of start that would occur on an automatic startup, to be cold.

For full information about DFHRMUTL, and further examples of its use, see the CICS Operations and Utilities Guide.

In earlier releases of CICS, IDCAMS was used to write an initial record, using REPRO, to initialize the global catalog. Although you can still run this step, either before or after running DFHRMUTL, this practice has been replaced by the use of DFHRMUTL to initialize the global catalog. See Figure 13.

 7  It is recommended that you also run the DFHCCUTL utility in this same job. Run DFHRMUTL first and check its return code before running DFHCCUTL. If you do this, the global and local catalogs should never get out of step. For information about running DFHCCUTL, see the CICS Operations and Utilities Guide.

Reusing the global catalog to perform a cold start

If you need to perform a cold start, do not delete and redefine the global catalog data set. If you were to delete and redefine the global catalog, CICS would perform an initial start, and all recovery information for remote systems would be lost. When remote systems reconnected, CICS would inform them that it had lost any information that they needed to resynchronize their units of work, and messages would be produced to record the fact, on both the local and the remote systems.

Instead, to specify that the next start should be cold, use the DFHRMUTL utility with the SET_AUTO_START=AUTOCOLD option. This has the following advantages:

You can speed up a cold start by using the DFHRMUTL COLD_COPY option to copy only those records that are needed for the cold start to another catalog data set. If the return code set by DFHRMUTL indicates that the copy was successful, a subsequent job-step can copy the new (largely empty) catalog back to the original catalog data set. The performance gain occurs because, at startup, CICS does not have to spend time deleting all the definitional records from the catalog. This technique will also speed up initial starts, for the same reason. Figure 14 is an example of this technique.

Note:
Before you use COLD_COPY, you should be certain that you wish to perform a cold or initial start. As a safeguard, make a backup copy of the original global catalog before you copy the new catalog output by DFHRMUTL over it. For more information about the use of the global catalog in a cold start of CICS, see Controlling start and restart.
Figure 14. DFHRMUTL example--setting the global catalog for a cold start. The COLD_COPY option is used to improve startup performance. Note that the NEWGCD and DFHGCD data sets must have been defined with the REUSE attribute.
//RMUTL    EXEC PGM=DFHRMUTL,REGION=1M
//STEPLIB  DD DSNAME=CICSTS31.CICS.SDFHLOAD,DISP=SHR
//SYSPRINT DD SYSOUT=A
//DFHGCD   DD DSNAME=CICSTS31.CICS.applid.DFHGCD,DISP=OLD
//NEWGCD   DD DSNAME=CICSTS31.CICS.applid.COPY.DFHGCD,DISP=OLD
//SYSIN    DD *
SET_AUTO_START=AUTOCOLD,COLD_COPY
/*
//         IF (RMUTL.RC<16) THEN
//*  Steps to be performed if RMUTL was a success
//COPY     EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=A
//DFHGCD   DD DSNAME=CICSTS31.CICS.applid.DFHGCD,DISP=OLD
//NEWGCD   DD DSNAME=CICSTS31.CICS.applid.COPY.DFHGCD,DISP=OLD
//SYSIN    DD *
   REPRO INFILE(NEWGCD) OUTFILE(DFHGCD) REUSE
/*
//*  End of steps to be performed if RMUTL was a success
//         ENDIF

Space calculations

Each global catalog record has a 28-byte key.

To estimate the amount of space needed in your global catalog to keypoint installed resource definitions, table entries, and control blocks, use the sizes specified in Table 14.

Each entry is one VSAM record, and the records for each type of table have different keys.

The space requirements for a VSAM KSDS such as DFHGCD can vary for different CICS cold starts. This can occur even if no changes have been made to the CICS definitions to be stored on the VSAM KSDS. This is because VSAM will utilize the space in the data set differently depending on whether the data set has just initialized, or has data from a previous run of CICS. CICS will call VSAM to perform sequential writes. VSAM honors the ’freespace’ value specified on the data set's definition if the keys of the records being added sequentially are higher than the highest existing key. However, if the data set contains existing records with a higher key than the ones being inserted, ’freespace’ is only honored once a CI split has occurred.

The size of the index portion of the data set may also vary depending on the number of CI and CA splits that have occurred. This affects the index sequence set.

When you are initializing the global catalog, you can use the COLD_COPY parameter, (SET_AUTO_START=AUTOCOLD,COLD_COPY). The cold copy will create a reduced copy of the global catalog data set, that will improve the performance of the cold start. The CI splits will cease after the first cold start, and the data set will not expand into additional extents. Another solution is to reorganize or reinitialize the data set from time to time.

Table 14. Sizes for entries in the global catalog
Installed definition, table entry, or control block Number of bytes
per entry
Installed PARTNER definitions  96 bytes
Installed program definitions  44 bytes
Installed indirect queue definition  92 bytes
Installed intrapartition queues definition  236 bytes
Installed extrapartition queue definition  296 bytes
Installed remote queue definition  84 bytes
Installed TRANSACTION definitions (without TPNAME)  112 bytes
Installed TRANSACTION definitions (with TPNAME
or XTPNAME)
 176 bytes
Installed VSAM file (or data table) definition  260 bytes
Installed TRANCLASS definitions  8 bytes
BDAM file control table entry (FCT)  118 bytes
BDAM data control blocks  112 bytes
VSAM LSR share control blocks  1   1156 bytes
Data set names (JCL or dynamically allocated)  2   52 bytes
Data set name blocks  115 bytes
File control recovery blocks  3   97 bytes
Terminal control table entry (TCT) 1500 bytes (approx)
Dump table entry  48 bytes
Interval control element (ICE)  68 bytes
Automatic initiator descriptor (AID)  68 bytes
Transient data destination record  18 bytes
Transient data destination auxiliary record  6 bytes
Installed TYPETERM definitions  4   582 bytes
Installed model TERMINAL definitions  4   582 bytes
Deferred work element (DWE)  5   80 bytes
Installed journal  88 bytes
Installed journalmodel  80 bytes
Recovery manager remote names  106 bytes
Start of changeInstalled PIPELINE definitionEnd of change Start of change 1384 bytesEnd of change
Start of changeInstalled TCPIPSERVICE definitionEnd of change Start of change 484 bytesEnd of change
Start of changeInstalled WEBSERVICE definitionEnd of change Start of change 900 bytesEnd of change
Start of changeInstalled DOCTEMPLATE definitionEnd of change Start of change 128 bytesEnd of change
   

Notes:

 1  One for each LSR pool, i.e. 8.

 2  If you open a VSAM path you get two of these, for BDAM or VSAM base data sets you get one.

 3  You will only have these if you use the VSAM RLS SHCDS option NONRLSUPDATEPERMITTED. In this case, for each data set that you have specified NONRLSUPDATEPERMITTED for, you could have an upper limit. This limit is the number of different file names through which you access the data set multiplied by the number of tasks that update the data set. You will normally only have a few, if any, of these control blocks.

 4  The TYPETERM and model TERMINAL definitions are present if you are using autoinstall. They are stored directly in the global catalog when the definitions are installed, either by a CEDA transaction, or as members of a group installed through a group list. For example, if you start up CICS with the startup parameter GRPLIST=DFHLIST, the CICS-supplied TYPETERM and model terminal definitions, defined in the groups DFHTERM and DFHTYPE, are recorded in the global catalog. Allow space in your calculations for all autoinstall resources installed in your CICS region.

 5  The value given is for a DWE chained off an LU6.1 session, or an APPC session.

Job control statement for CICS execution

If you define the global catalog using the sample job in Figure 13, the data definition statement for the CICS execution is:

//DFHGCD  DD  DSN=CICSTS31.CICS.applid.DFHGCD,DISP=OLD

This is a minimum specification for a global catalog for use by a single CICS region. Add the relevant AMP subparameters to help improve restart and shutdown time. The AMP parameter is described in the OS/390 MVS JCL Reference manual, and an example is shown in the CICS startup job stream in CICS startup.

If you are running CICS with XRF, the global catalog is passively shared by the active and alternate CICS regions, and you must specify DISP=SHR.

[[ Contents Previous Page | Next Page Index ]]