CQS startup procedure
Use the CQS startup procedure to dynamically override the settings in the CQS initialization parameters member of the IMS PROCLIB data set (CQSIPxxx).
You can start CQS as a started procedure or with JCL. The started procedure JCL for CQS can execute either the CQSINIT0 or the BPEINI00 program.
A sample startup procedure called CQS can be found in the IMS PROCLIB data set. When using CQSINIT0, there is no change to the sample procedure shown in Sample Common Queue Server startup procedure using CQSINIT0.
JCL
The JCL for the CQS procedure using CQSINIT0 is shown in Sample Common Queue Server startup procedure using CQSINIT0.
When using BPEINI00, use the same procedure shown in Sample Common Queue Server startup procedure using CQSINIT0, but change the EXEC statement so that PGM=BPEINI00 is specified. You must also add the BPEINIT=CSQINI00 parameter, which identifies the CQS BPE initialization parameters module. A sample startup procedure using BPEINI00 is shown in Sample Common Queue Server startup procedure using BPEINI00.
Usage
Figure 1 shows the general relationship between execution parameters and members of the IMS PROCLIB data set. In the figure, CQSSL001 and CQSSL002 contain structure definition parameters that are unique to each CQS. CQSSG00A contains the structure definition parameters that are shared by all CQS address spaces connected to the shared queues.
Parameters
You can specify the following execution parameters on the CQS startup procedure. Read the descriptions of the parameters to determine whether you want to accept the system defaults or tailor the system to fit the requirements of your environment.
- ARMRST=
- BPECFG=
- BPEINIT=CQSINI00
- CQSGROUP=
- CQSINIT=
- SSN=
- STRDEFG=
- STRDEFL=
Execution data sets
CQS uses two types of data sets, the system checkpoint data set and the structure recovery data set. Both of these data sets must be VSAM entry-sequenced data sets (ESDSs). These data sets are user data sets (and are not known to SMP/E).
CQS system checkpoint data set
Each CQS address space that is connected to a queue structure maintains a system checkpoint data set for each structure pair. Neither CQS address spaces or queue structures share the system checkpoint data set. The CQS initialization process dynamically allocates the system checkpoint data set.
Use the MVS/DFP DEFINE CLUSTER
functional
command to define the data set to the installation. The DEFINE
CLUSTER
function command and its parameters are described
in z/OS® DFSMS Access Method Services for Catalogs.
DEFINE CLUSTER
functional command to
define the system checkpoint data set, you must specify the following
parameters: - NAME
- Specifies the same name that you specify using the CHKPTDSN= parameter of the CQS local structure definition member of the IMS PROCLIB data set.
- NONINDEXED
- Specifies that the data set is to be an ESDS.
- NONSPANNED
- Specifies that the records must be contained in a single control interval.
- SHAREOPTIONS
- Specifies how a cluster can be shared among users. You must specify SHAREOPTIONS (2,3).
- REUSE
- Specifies that the cluster can be reused.
- RECORDSIZE
- Specifies the average and maximum length in bytes for the records in the cluster. Both the maximum and minimum length of the RECORDSIZE should be 7 bytes less than the CONTROLINTERVALSIZE.
- CONTROLINTERVALSIZE
- Specifies the size of the control interval for the cluster. The recommended CONTROLINTERVALSIZE is 512; whatever value you specify must be a multiple of 512.
DEFINE CLUSTER -
(NAME (MSGQ.CHKPT) -
TRK(2,2) VOL (IMSQAV) NONINDEXED SHAREOPTIONS (2,3) -
RECSZ(505,505) REUSE CISZ (512))
CQS structure recovery data sets
CQS uses two structure recovery data sets per structure pair for its structure checkpoint processing.
Structure recovery data sets are not used for the resource structure.
When a structure checkpoint is requested, CQS dynamically allocates the structure recovery data sets. Structure checkpoint requests alternate between the two structure recovery data sets. During structure checkpoint processing all recoverable data objects on a structure are written to the structure recovery data sets. Thus, the size of each data set should be approximately the size of the primary structure plus the overflow structure to ensure that the entire structure fits in the data set.
Use the MVS/DFP DEFINE
CLUSTER
functional command to define the data set to the
installation. The DEFINE CLUSTER
function command
and its parameters are described in z/OS DFSMS Access Method Services for Catalogs.
DEFINE CLUSTER
functional command to
define the structure recovery data set, you must specify the following
parameters. - NAME
- Specify the same name you specify in the CQS global structure definition member of the IMS PROCLIB data set using the SRSDSDSN1= and the SRSDSDSN2= parameters.
- NONINDEXED
- Specifies that the data set is to be an ESDS.
- NONSPANNED
- Specifies that the records must be contained in a single control interval.
- SHAREOPTIONS
- Specifies how a cluster can be shared among users. You must specify SHAREOPTIONS (2,3).
- REUSE
- Specifies that the cluster can be reused.
DEFINE CLUSTER
functional command:
- RECORDSIZE
- Specifies the average and maximum length in bytes for the records in the cluster. Both the maximum and minimum length of the RECORDSIZE should be 7 bytes less than the CONTROLINTERVALSIZE.
- CONTROLINTERVALSIZE
- Specifies the size of the control interval for the cluster. The recommended control interval size is 32 768; whatever value you specify must be a multiple of 512.
DEFINE CLUSTER -
(NAME (MSGQ.SRDS1) -
TRK(45,5) VOL (DSHR03) NONINDEXED SHAREOPTIONS (2,3) -
RECSZ(32761,32761) REUSE CISZ (32768)
Sample Common Queue Server startup procedure using CQSINIT0
//******************************************************************
//* CQS Procedure
//*
//*
//* Parameters:
//* BPECFG - Name of BPE member
//* CQSINIT - Suffix for your CQSIPxxx member
//* PARM1 - Other override parameters
//* ARMRST - ARM restart on CQS failure (Y/N)
//* CQSGROUP - XCF Group for sharing CQSs
//* SSN - CQS subsystem name
//* STRDEFG - Suffix for CQSSGxxx member
//* STRDEFL - Suffix for CQSSLxxx member
//*
//* example:
//* PARM1='ARMRST=Y,SSN=CQSA,STRDEFG=001,STRDEFL=001'
//*
//******************************************************************
//*
//* Licensed Materials - Property of IBM
//*
//* Restricted Materials of IBM
//*
//* 5655-C56
//*
//* (C) Copyright IBM Corp. 1996,1998
//*
//******************************************************************
//*
//CQS PROC RGN=300M,SOUT=A,
// RESLIB='IMS.SDFSRESL',
// BPECFG=BPECONFG,
// CQSINIT=,
// PARM1=
//*
//CQSPROC EXEC PGM=CQSINIT0,
// REGION=&RGN,
// PARM='BPECFG=&BPECFG,CQSINIT=&CQSINIT,&PARM1'
//*
//STEPLIB DD DSN=&RESLIB,DISP=SHR
// DD DSN=&BPERES,DISP=SHR
// DD DSN=SYS1.CSSLIB,DISP=SHR
//PROCLIB DD DSN=IMS.PROCLIB,DISP=SHR
//SYSPRINT DD SYSOUT=&SOUT
//SYSUDUMP DD SYSOUT=&SOUT
//*
Sample Common Queue Server startup procedure using BPEINI00
//******************************************************************
//* CQS Procedure
//*
//*
//* Parameters:
//* BPECFG - Name of BPE member
//* CQSINIT - Suffix for your CQSIPxxx member
//* PARM1 - Other override parameters
//* ARMRST - ARM restart on CQS failure (Y/N)
//* CQSGROUP - XCF Group for sharing CQSs
//* SSN - CQS subsystem name
//* STRDEFG - Suffix for CQSSGxxx member
//* STRDEFL - Suffix for CQSSLxxx member
//*
//* example:
//* PARM1='ARMRST=Y,SSN=CQSA,STRDEFG=001,STRDEFL=001'
//*
//******************************************************************
//*
//* Licensed Materials - Property of IBM
//*
//* Restricted Materials of IBM
//*
//* 5655-C56
//*
//* (C) Copyright IBM Corp. 1996,1998
//*
//******************************************************************
//*
//CQS PROC RGN=300M,SOUT=A,
// RESLIB='IMS.SDFSRESL',
// BPECFG=BPECONFG,
// CQSINIT=,
// PARM1=
//*
//CQSPROC EXEC PGM=BPEINI00,
// REGION=&RGN,
// PARM='BPECFG=&BPECFG,BPEINIT=CQSINI00,CQSINIT=&CQSINIT,&PARM1'
//*
//STEPLIB DD DSN=&RESLIB,DISP=SHR
// DD DSN=&BPERES,DISP=SHR
// DD DSN=SYS1.CSSLIB,DISP=SHR
//PROCLIB DD DSN=IMS.PROCLIB,DISP=SHR
//SYSPRINT DD SYSOUT=&SOUT
//SYSUDUMP DD SYSOUT=&SOUT
//*