
JCL Generator
JCL Generator, one of the components for the Shared Queue Message Recovery function, generates JCL for running the Shared Queue Message Generator SELECT and CANCEL functions, and the Shared Queue Message Loader.
- Identifies IMS subsystems within an IMSplex by reading RECON information. However, IMS Queue Control Facility is unable to identify target IMS subsystems if multiple shared queue groups are set up; in this case, you must explicitly specify the target IMS subsystems by using the QCFIN DD statement.
- Reads the RECON information and the timestamp information generated by SRDS Reader (QCFLRTS DD) to identify the IMS log data sets (SLDS/OLDS) used by each IMS subsystem in the IMSplex.
- Generates JCL from three types of skeletal JCL in the skeletal JCL library and stores the generated JCL in the tailored JCL library. Tailored JCL is generated according to the naming rules in the following table.
Skeletal JCL name | Purpose | Tailored JCL name | Information added to the tailored JCL |
---|---|---|---|
IQCA##R1 | Runs the Shared Queue Message Generator SELECT function | R1##imsid (Generated for each IMS subsystem in an IMSplex) |
|
IQCA##R2 | Runs the Shared Queue Message Generator CANCEL function | R2##imsid (Generated for each IMS subsystem in an IMSplex) |
|
IQCA##R3 | Runs Shared Queue Message Loader | R3##SQLD |
|
JCL for the JCL Generator
Use the JCLGEN step in your JCL job stream to run JCL Generator. JCL Generator uses skeletal JCL to generate tailored JCL for the recovery of shared messages.
You can run the JCL Generator in batch mode by submitting a JCL job stream.
Sample JCL to run the JCL Generator
The following example shows the JCL required to start a JCLGEN step. This example (IQCAJGNR) is shipped as a sample in hlq.SIQCSAMP data set.
Replace the text in lowercase with the values that are appropriate for your environment:
//RCV1JGNR JOB <JOB CARD PARAMETERS>
//**********************************************
//* SAMPLE JCL TO EXECUTE THE JCL GENERATOR *
//**********************************************
//JCLGEN EXEC PGM=IQCAJGN0
//STEPLIB DD DISP=SHR,DSN=hlqual.SIQCLINK
// DD DISP=SHR,DSN=IMSREL.RESLIB
//QCFPRINT DD SYSOUT=*
//QCFLRTS DD DISP=SHR,DSN=qcflrtsdsn
//*
//*-------------------------------------------------------------------
//* IMSDALIB DD is optional-used for RECON1 & RECON2 & RECON3
//* allocation.
//* RECON1, RECON2 and RECON3 are allocated using information
//* from sources in next order:
//* - DD information in JCL (RECON1, RECON2 and RECON3 DDs
//* - IMSDALIB (RECON1, RECON2 and RECON3 members)
//* - STEPLIB (RECON1, RECON2 and RECON3 members)
//*-------------------------------------------------------------------
//IMSDALIB DD DISP=SHR,DSN=imsdalib
//*
//SYSUDUMP DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//*
//*-------------------------------------------------------------------
//* SYSIN DD is optional
//* if not provided, SYSIN is dynamically allocated
//* SYSIN is the input control cards file for DSPURX00
//*-------------------------------------------------------------------
//SYSIN DD DSN=sysin,UNIT=SYSDA,
// DISP=SHR,
// SPACE=(TRK,(1,1))
//*
//*-------------------------------------------------------------------
//* SYSPRINT DD is optional
//* if not provided, SYSPRINT is dynamically allocated
//* SYSPRINT is the output file from LIST.LOG command
//* SYSPRINT is the input file for log allocation settings
//*-------------------------------------------------------------------
//SYSPRINT DD DSN=sysprint,UNIT=SYSDA,
// DISP=SHR,
// SPACE=(CYL,(10,10))
//*
//*-------------------------------------------------------------------
//* RECON1, RECON2 and RECON3 are optional
//* if not provided, they are dynamically allocated
//* using information in IMSDALIB and STEPLIB
//*-------------------------------------------------------------------
//RECON1 DD DISP=SHR,DSN=recon1
//RECON2 DD DISP=SHR,DSN=recon2
//RECON3 DD DISP=SHR,DSN=recon3
//*
//*-------------------------------------------------------------------
//* QCFJCLIN is PO data set with JCL skeletons
//* for subsequent recovery JCLs
//*-------------------------------------------------------------------
//QCFJCLIN DD DSN=qcfjclin,DISP=SHR
//*
//*-------------------------------------------------------------------
//* QCFJCLOT is PO data set to store output JCL
//* for subsequent recovery JCLs
//*-------------------------------------------------------------------
//QCFJCLOT DD DSN=qcfjclot,DISP=SHR
//*
//
DD statements for JCL Generator job step
- STEPLIB DD
- Defines the library containing the IMS Queue Control Facility program load modules and the library containing the IMS program load modules. Required.
- QCFPRINT DD
- Defines the output report data set. Required.
- QCFLRTS DD
- Defines the input data set that contains the timestamp (STCK) of where to start reading the IMS log generated by SRDS Reader.
- IMSDALIB DD
- Specifies dynamic allocation of RECON data sets.
- SYSPRINT DD
- The standard output data set for DBRC commands; if not provided, SYSPRINT is dynamically allocated.
- RECON1/RECON2/RECON3 DD
- If not provided, RECON1, RECON2, and RECON3 are dynamically allocated.
- SYSIN DD
- The standard input data set for DBRC commands; if not provided, SYSIN is dynamically allocated.
- SYSOUT DD
- Contains information from allocation/look up for the PRISLD and PRIOLDS.
- QCFJCLIN DD
- Specifies the skeletal JCL library data set name for RECOVERSM functions (IQCA##R1, IQCA##R2, and IQCA##R3).
- QCFJCLOT DD
- Specifies the library data set name in which you want to store the tailored JCL for RECOVERSM functions (R1##imsid, R2##imsid, and R3##SQLD).
- QCFIN DD
- Defines the input control statement data set. Optional.
Control statements for GENJCL function (QCFIN DD)
- The control statements can contain no operands or any number of operands in any order. First operand starts in column 10.
- Duplicate operands for the same statement are not allowed.
- One or more operands can be specified per control statement, separated by commas.
- Additional operands can be specified on continuation lines by following the previous operand with a comma and beginning the next operand in column 10 of the next line.
- * comment (See Comment (*) statement)
- IMSIDS
- GENJCL control statement abbreviations
-
You can abbreviate the specification of some of the GENJCL control statements.
This table shows a list of keyword abbreviations that are allowed for GENJCL by the IMS Queue Control Facility control processing interpreter.
Keyword Abbreviation GENJCL GJ IMSIDS II - FUNCTION control statement syntax
- The FUNCTION control statement must follow certain syntactic specifications.
Example: Skeletal JCL and tailored JCL
Replace the text in lowercase in the skeletal JCL with values that are appropriate for your environment. Replace smoutdsn and smoutds2 in the skeletal JCL with values that are specified in SRDS Reader JCL.
Skeletal JCL (IQCA##R1) | Tailored JCL (R1##imsid) |
---|---|
|
|
Skeletal JCL (IQCA##R2) | Tailored JCL (R2##imsid) |
---|---|
|
|
Skeletal JCL (IQCA##R3) | Tailored JCL (R3##SQLD) |
---|---|
|
|
Reports (QCFPRINT DD)
JCL Generator generates the JCL Generator Process report (Jclgen001), which contains the following information:
- Timestamp of where to start reading the IMS log
- List of IMS subsystems in the IMSplex
- Data set name of the skeletal JCL library
- Data set name of the tailored JCL library
- List of tailored JCL instances that were generated
Page 1 IMS Queue Control Facility V4R1 (5698-N50) System Date: 2024.125
Report: Jclgen001 JCL Generator Process Report System Time: 21.07.46
timestamp of the start of IMS log reading: D=2023.211 T=21:53:00.270860
IMS IDs in the IMSPLEX: IMS1 IMS2 IMS3 IMS4
Skeletal JCL Library: IMSDEV.QCF.IQC294.SKELJCL
Tailored JCL Library: IMSDEV.QCF.IQC294.RUNJCL
Generated JCL List in Tailored JCL Library:
----------------------------------------------
JCL List for Shared Queue Message Generator-1:
R1##IMS1 R1##IMS2 R1##IMS3 R1##IMS4
JCL List for Shared Queue Message Generator-2:
R2##IMS1 R2##IMS2 R2##IMS3 R2##IMS4
JCL List for Shared Queue Message Loader:
R3##SQLD
Return codes
Return code | Meaning |
---|---|
00 | The job ended successfully. |
04 | The job failed. An error, such as DD statements not found, occurred. |
08 | The job failed. An error, such as an OPEN error, occurred. |
12 | The job failed. Failed to allocate RECON data sets. |
xx | The job failed. An STOW error occurred. Return code xx indicates the return code from the STOW macro. |
