Start of change

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.

JCL Generator does the following tasks:
  • 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.
Table 1. Skeletal JCL members generated by the JCL Generator
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)

  • LOGIN DD - Input SLDS/OLDS.
  • QCFIN statement - Timestamp of Message Generator SELECT command.
  • LOGOUTnn DD - Each LOGOUTnn DD statement is associated with an Extracted Logs data set, which is generated for each IMSID by the Shared Queue Message Generator SELECT function.
IQCA##R2 Runs the Shared Queue Message Generator CANCEL function R2##imsid

(Generated for each IMS subsystem in an IMSplex)

  • SORTIN DD - Names of Extracted Logs data sets, which are generated by the Message Generator SELECT function. Two or more data sets are generally concatenated.
  • CANCLOUT DD - Names of Recovery Message data sets, which are generated by the Shared Queue Message Generator CANCEL function.
IQCA##R3 Runs Shared Queue Message Loader R3##SQLD
  • SORTIN DD - Names of Recovery Message data sets, which are generated by the Shared Queue Message Generator CANCEL function. Two or more data sets are generally concatenated.

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)

Follow these guidelines for coding the control statements:
  • 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.
The control statements that are recognized by the GENJCL function are :
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.
Read syntax diagramSkip visual syntax diagram FUNCTION GENJCL IMSIDS= ( , specify one or more imsid)
IMSIDS=
Specifies the IMSID to be processed by JCL Generator.
imsid
The 1- to 4-byte IMSID.

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)
//RCV2&IMSID JOB <JOB CARD PARAMETERS>
//*-----------------------------------------------------------
//*
//*           DELETE LOGOUT & SCRAPPED RECORDS DATA SETS
//*
//*-----------------------------------------------------------
//DELETE EXEC PGM=IEFBR14
//DD1    DD  DSN=qcfhlq.SELECT.&IMSID.&TOIMSID.LOGOUT,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DDA    DD  DSN=qcfhlq.SELECT.&IMSID.LOGOUT, 
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DDX    DD  DSN=qcfhlq.SELECT.&IMSID.SCRAPSEL,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//*-----------------------------------------------------------
//*
//*            SELECT logic STEP
//*
//*-----------------------------------------------------------
//SELECT  EXEC PGM=IQCSELSQ
//STEPLIB  DD  DISP=SHR,DSN=hlqual.SIQCLINK
//QCFIN    DD  *
TITLE    SELECT Routine for shared queue messages
WTOMSG
LOGTIME  STCK=hhhhhhhhhhhhhhhh
LOGOUT   IMSID=&IMSID,DDNAME=LOGOUT01
FUNCTION RECOVERSQ
INCLUDE  DESTYPE=TRANS
SELECT   NOCONVMSG,
         NOSYSMSG,
         RECOVMSG,
         NOINTMSG
//*
//MSGSRDS  DD  DSN=smoutdsn,
//             DISP=SHR
//         DD  DSN=smoutdsn2,
//             DISP=SHR
//*
//LOGOUT01 DD  DSN=qcfhlq.SELECT.&IMSID.&TOIMSID.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//LOGOUT   DD  DSN=qcfhlq.SELECT.&IMSID.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//SCRAPSEL DD  DSN=qcfhlq.SELECT.&IMSID.SCRAPSEL,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//*
//QCFPRINT DD  SYSOUT=*
//SNAPDUMP DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//*
//RCV2IMS1 JOB <JOB CARD PARAMETERS>
//*-----------------------------------------------------------
//*
//*           DELETE LOGOUT & SCRAPPED RECORDS DATA SETS
//*
//*-----------------------------------------------------------
//DELETE EXEC PGM=IEFBR14
//**** GENERATED STATEMENTS ****  
//DD1    DD  DSN=qcfhlq.SELECT.IMS1.TOIMS1.LOGOUT,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD2    DD  DSN=qcfhlq.SELECT.IMS1.TOIMS2.LOGOUT,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD3    DD  DSN=qcfhlq.SELECT.IMS1.TOIMS3.LOGOUT,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD4    DD  DSN=qcfhlq.SELECT.IMS1.TOIMSN.LOGOUT,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DDA    DD  DSN=qcfhlq.SELECT.IMS1.LOGOUT, 
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DDX    DD  DSN=qcfhlq.SELECT.IMS1.SCRAPSEL,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//**** END GENERATED STATEMENTS **** 
//*-----------------------------------------------------------
//*
//*            SELECT logic STEP
//*
//*-----------------------------------------------------------
//SELECT  EXEC PGM=IQCSELSQ
//STEPLIB  DD  DISP=SHR,DSN=hlqual.SIQCLINK
//**** GENERATED STATEMENTS ****   //QCFIN.. 
//QCFIN    DD  *
TITLE    SELECT Routine for shared queue messages
WTOMSG
LOGTIME  STCK=DB7EBDCE8954E926
LOGOUT   IMSID=IMS1,DDNAME=LOGOUT01
LOGOUT   IMSID=IMS2,DDNAME=LOGOUT02
LOGOUT   IMSID=IMS3,DDNAME=LOGOUT03
LOGOUT   IMSID=IMSN,DDNAME=LOGOUTNN
FUNCTION RECOVERSQ
INCLUDE  DESTYPE=TRANS
SELECT   NOCONVMSG,
         NOSYSMSG,
         RECOVMSG,
         NOINTMSG
//*
//**** GENERATED STATEMENTS ****  
//LOGIN    DD  DSN=SYS.IMS.SLDS.LOG1.T06E54,
//             DISP=SHR
//         DD  DSN=SYS.IMS.SLDS.LOG2.T07D83,
//             DISP=SHR
//         DD  DSN=SYS.IMS.SLDS.LOG3.T08C62,
//             DISP=SHR
//         DD  DSN=SYS.IMS.SLDS.LOG4.T09C1D,
//             DISP=SHR
//         DD  DSN=SYS.IMS.SLDS.LOG5.T0B26D,
//             DISP=SHR
//**** END GENERATED STATEMENTS ****
//MSGSRDS  DD  DSN=smoutdsn,
//             DISP=SHR
//         DD  DSN=smoutds2,
//             DISP=SHR
//*
//**** GENERATED STATEMENTS ****  
//LOGOUT01 DD  DSN=qcfhlq.SELECT.IMS1.TOIMS1.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//LOGOUT02 DD  DSN=qcfhlq.SELECT.IMS1.TOIMS2.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//LOGOUT03 DD  DSN=qcfhlq.SELECT.IMS1.TOIMS3.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//LOGOUTNN DD  DSN=qcfhlq.SELECT.IMS1.TOIMSN.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//LOGOUT   DD  DSN=qcfhlq.SELECT.IMS1.LOGOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//SCRAPSEL DD  DSN=qcfhlq.SELECT.IMS1.SCRAPSEL,
//             UNIT=SYSDA,DISP=(NEW,CATLG),
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))
//**** END GENERATED STATEMENTS ****
//*
//QCFPRINT DD  SYSOUT=*
//SNAPDUMP DD  SYSOUT=*
//SYSUDUMP DD  SYSOUT=*
//*
Skeletal JCL (IQCA##R2) Tailored JCL (R2##imsid)
//RCV3&IMSID JOB <JOB CARD PARAMETERS>                 
//*--------------------------------------------------------- 
//*                                                     
//*           DELETE SORTED RECORDS DATA SET     
//*                                             
//*--------------------------------------------------------- 
//DELETE EXEC PGM=IEFBR14                               
//DD1    DD  DSN=qcfhlq.SORTA.&IMSID.SORTOUT,  
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1)) 
//*---------------------------------------------------------
//*                                              
//*            SORTA JOB STEP                      
//*                                        
//*---------------------------------------------------------
//SORTA   EXEC PGM=SORT,            
//             PARM='CORE=MAX'    
//SORTLIB  DD  DISP=SHR,DSN=SYS1.SORTLIB     
//SORTIN   DD  DSN=qcfhlq.SELECT.&IMSID,&TOIMSID,LOGOUT,
//             DISP=SHR                        
//SORTOUT  DD  DSN=qcfhlq.SORTA.&IMSID.SORTOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),    
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),  
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))     
//SYSOUT   DD  SYSOUT=*           
//SORTWK01 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK02 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK03 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK04 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK05 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)   
//SORTWK06 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)   
//SORTWK07 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)   
//SORTWK08 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK09 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK10 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK11 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK12 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK13 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK14 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK15 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK16 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SYSIN    DD  *
 SORT FIELDS=(53,32,BI,A,39,1,BI,D,97,4,BI,D,87,2,BI,A),
             FILSZ=E200000                       
 RECORD TYPE=V                   
 END                                              
//* 
//*----------------------------------------------------------
//*                                                    
//*           DELETE CANCLOUT & SCRAPCAN DATA SETS        
//*                                                        
//*---------------------------------------------------------- 
//DELCAN EXEC PGM=IEFBR14                               
//DD1    DD  DSN=qcfhlq.CANCEL.&IMSID.CANCLOUT,  
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD2    DD  DSN=qcfhlq.CANCEL.&IMSID.SCRAPCAN,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD3    DD  DSN=qcfhlq.CANCEL.&IMSID.CANCORPH,
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//*----------------------------------------------------------
//*                                                         
//*            IQCCANCL JOB STEP                         
//*                                                        
//*---------------------------------------------------------- 
//CANCEL  EXEC PGM=IQCCANSQ,COND=(0,NE,SORTA)               
//STEPLIB  DD  DISP=SHR,DSN=hlqual.SIQCLINK   
//QCFIN        DD *                    
TITLE    CANCEL Routine for shared queue messages    
WTOMSG                                                  
//*                                                       
//CANCLIN  DD  DSN=qcfhlq.SORTA.&IMSID.SORTOUT,     
//             DISP=SHR                               
//CANCLOUT DD  DSN=qcfhlq.CANCEL.&IMSID.CANCLOUT,     
//             UNIT=SYSDA,DISP=(NEW,CATLG),                 
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),     
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))        
//SCRAPCAN DD  DSN=qcfhlq.CANCEL.&IMSID.SCRAPCAN,   
//             UNIT=SYSDA,DISP=(NEW,CATLG),           
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),    
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))        
//CANCORPH DD  DSN=qcfhlq.CANCEL.&IMSID.CANCORPH,      
//             UNIT=SYSDA,DISP=(NEW,CATLG),        
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),   
//             SPACE=(CYL,(100,100))                   
//QCFPRINT DD  SYSOUT=*                              
//SNAPDUMP DD  SYSOUT=*                                     
//SYSUDUMP DD  SYSOUT=* 
//RCV3IMS1 JOB <JOB CARD PARAMETERS>                 
//*--------------------------------------------------------- 
//*                                                     
//*           DELETE SORTED RECORDS DATA SET     
//*                                     
//*--------------------------------------------------------- 
//DELETE EXEC PGM=IEFBR14           
//**** GENERATED STATEMENTS ****
//DD1    DD  DSN=qcfhlq.SORTA.IMS1.SORTOUT,  
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1)) 
//**** END GENERATED STATEMENTS ****   
//*---------------------------------------------------------
//*                                              
//*            SORTA JOB STEP                      
//*                                        
//*---------------------------------------------------------
//SORTA   EXEC PGM=SORT,            
//             PARM='CORE=MAX'    
//SORTLIB  DD  DISP=SHR,DSN=SYS1.SORTLIB   
//**** GENERATED STATEMENTS ****   
//SORTIN   DD  DSN=qcfhlq.SELECT.IMS1.TOIMS1,LOGOUT,
//             DISP=SHR              
//         DD  DSN=qcfhlq.SELECT.IMS2.TOIMS1.LOGOUT,
//             DISP=SHR                   
//         DD  DSN=qcfhlq.SELECT.IMS3.TOIMS1.LOGOUT,
//             DISP=SHR                   
//         DD  DSN=qcfhlq.SELECT.IMSN.TOIMS1.LOGOUT,
//             DISP=SHR                  
//SORTOUT  DD  DSN=qcfhlq.SORTA.IMS1.SORTOUT,
//             UNIT=SYSDA,DISP=(NEW,CATLG),    
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000)) 
//**** END GENERATED STATEMENTS ****    
//SYSOUT   DD  SYSOUT=*           
//SORTWK01 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK02 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK03 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK04 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK05 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK06 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK07 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK08 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK09 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK10 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK11 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK12 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK13 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK14 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK15 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK16 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SYSIN    DD  *
 SORT FIELDS=(53,32,BI,A,39,1,BI,D,97,4,BI,D,87,2,BI,A),
             FILSZ=E200000                       
 RECORD TYPE=V                   
 END                                              
//* 
//*----------------------------------------------------------
//*                                                    
//*           DELETE CANCLOUT & SCRAPCAN DATA SETS        
//*                                                        
//*---------------------------------------------------------- 
//DELCAN EXEC PGM=IEFBR14 
//**** GENERATED STATEMENTS ****
//DD1    DD  DSN=qcfhlq.CANCEL.IMS1.CANCLOUT,  
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD2    DD  DSN=qcfhlq.CANCEL.IMS1.SCRAPCAN,  
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//DD3    DD  DSN=qcfhlq.CANCEL.IMS1.CANCORPH, 
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1)) 
//**** END GENERATED STATEMENTS ****  
//*----------------------------------------------------------
//*                                                         
//*            IQCCANCL JOB STEP                         
//*                                                        
//*---------------------------------------------------------- 
//CANCEL  EXEC PGM=IQCCANSQ,COND=(0,NE,SORTA)               
//STEPLIB  DD  DISP=SHR,DSN=hlqual.SIQCLINK   
//QCFIN        DD *                    
TITLE    CANCEL Routine for shared queue messages    
WTOMSG                                                  
//*       
//**** GENERATED STATEMENTS ****
//CANCLIN  DD  DSN=qcfhlq.SORTA.IMS1.SORTOUT,  
//             DISP=SHR                               
//CANCLOUT DD  DSN=qcfhlq.CANCEL.IMS1.CANCLOUT, 
//             UNIT=SYSDA,DISP=(NEW,CATLG),             
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB), 
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000))     
//SCRAPCAN DD  DSN=qcfhlq.CANCEL.IMS1.SCRAPCAN,   
//             UNIT=SYSDA,DISP=(NEW,CATLG),           
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000)) 
//CANCORPH DD  DSN=qcfhlq.CANCEL.IMS1.CANCORPH, 
//             UNIT=SYSDA,DISP=(NEW,CATLG),        
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB), 
//             SPACE=(CYL,(100,100)) 
//**** END GENERATED STATEMENTS ****                   
//QCFPRINT DD  SYSOUT=*                              
//SNAPDUMP DD  SYSOUT=*                               
//SYSUDUMP DD  SYSOUT=*
Skeletal JCL (IQCA##R3) Tailored JCL (R3##SQLD)
//RCV4JCL  JOB <JOB CARD PARAMETERS>                    
//*----------------------------------------------------------
//*                                                     
//*           DELETE SORTED RECORDS DATA SET           
//*                                                   
//*----------------------------------------------------------
//DELETE EXEC PGM=IEFBR14                                   
//DD1    DD  DSN=qcfhlq.SORTB.SORTOUT,            
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//*----------------------------------------------------------
//*                                                   
//*            SORTB JOB STEP                          
//*                                                   
//*----------------------------------------------------------
//SORTB   EXEC PGM=SORT,                           
//             PARM='CORE=MAX'                        
//SORTLIB  DD  DISP=SHR,DSN=SYS1.SORTLIB            
//SORTIN   DD  DSN=qcfhlq.CANCEL.&IMSID.CANCLOUT, 
//             DISP=SHR                              
//SORTOUT  DD  DSN=qcfhlq.SORTB.SORTOUT,     
//             UNIT=SYSDA,DISP=(NEW,CATLG),  
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),  
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000)) 
//SYSOUT   DD  SYSOUT=*   
//SORTWK01 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SORTWK02 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SORTWK03 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SORTWK04 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK05 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK06 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK07 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK08 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK09 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK10 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK11 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK12 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK13 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK14 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK15 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK16 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SYSIN    DD  *            
 SORT FIELDS=(41,12,BI,A,97,4,BI,A,53,32,BI,A,87,2,BI,A),    
             FILSZ=E200000   
 RECORD TYPE=V 
 END                       
//*                              
//*----------------------------------------------------------
//*                                                
//*            SQ MSG LOADER JOB STEP          
//*                                       
//*----------------------------------------------------------
//SQMSGLD  EXEC PGM=IQCASML0
//STEPLIB  DD DISP=SHR,DSN=hlqual.SIQCLINK   
//         DD DISP=SHR,DSN=IMSREL.RESLIB    
//QCFPRINT DD SYSOUT=*
//QCFRVMSG DD DISP=OLD,DSN=qcfhlq.SORTB.SORTOUT
//SYSUDUMP DD SYSOUT=*     
//QCFIN    DD *                                     
FUNCTION LOADTOSQ,CQSSSN=CQS1,SQMSTRNM=CQSQMSG1
//*   
//RCV4JCL  JOB <JOB CARD PARAMETERS>              
//*----------------------------------------------------------
//*                                                     
//*           DELETE SORTED RECORDS DATA SET           
//*                                                   
//*----------------------------------------------------------
//DELETE EXEC PGM=IEFBR14                                   
//DD1    DD  DSN=qcfhlq.SORTB.SORTOUT,         
//           UNIT=SYSDA,DISP=(MOD,DELETE),SPACE=(TRK,(1))
//*----------------------------------------------------------
//*                                                   
//*            SORTB JOB STEP                          
//*                                                   
//*----------------------------------------------------------
//SORTB   EXEC PGM=SORT,                           
//             PARM='CORE=MAX'                        
//SORTLIB  DD  DISP=SHR,DSN=SYS1.SORTLIB   
//**** GENERATED STATEMENTS ****         
//SORTIN   DD  DSN=qcfhlq.CANCEL.IMS1.CANCLOUT, 
//             DISP=SHR                          
//         DD  DSN=qcfhlq.CANCEL.IMS2.CANCLOUT,  
//             DISP=SHR                     
//         DD  DSN=qcfhlq.CANCEL.IMS3.CANCLOUT,  
//            DISP=SHR                 
//         DD  DSN=qcfhlq.CANCEL.IMSN.CANCLOUT, 
//            DISP=SHR     
//**** END GENERATED STATEMENTS ****   
//SORTOUT  DD  DSN=qcfhlq.SORTB.SORTOUT,     
//             UNIT=SYSDA,DISP=(NEW,CATLG),  
//             DCB=(LRECL=22844,BLKSIZE=22848,RECFM=VB),  
//             DSNTYPE=LARGE,SPACE=(CYL,(2000,2000)) 
//SYSOUT   DD  SYSOUT=*   
//SORTWK01 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SORTWK02 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SORTWK03 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SORTWK04 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK05 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK06 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK07 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK08 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK09 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK10 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK11 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK12 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK13 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)
//SORTWK14 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)  
//SORTWK15 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG) 
//SORTWK16 DD  UNIT=SYSDA,SPACE=(CYL,(200,100),,CONTIG)    
//SYSIN    DD  *            
 SORT FIELDS=(41,12,BI,A,97,4,BI,A,53,32,BI,A,87,2,BI,A),
             FILSZ=E200000   
 RECORD TYPE=V 
 END                       
//*                              
//*----------------------------------------------------------
//*                                                
//*            SQ MSG LOADER JOB STEP          
//*                                       
//*----------------------------------------------------------
//SQMSGLD  EXEC PGM=IQCASML0,PARM='CQS1,GJECQSMSG1' 
//STEPLIB  DD DISP=SHR,DSN=hlqual.SIQCLINK   
//         DD DISP=SHR,DSN=IMSREL.RESLIB    
//QCFPRINT DD SYSOUT=*
//QCFRVMSG DD DISP=OLD,DSN=qcfhlq.SORTB.SORTOUT
//SYSUDUMP DD SYSOUT=*     
//**** GENERATED STATEMENTS ****                 
//IMSLOG00 DD  DISP=SHR,            
//             DSN=SYS.IMS.SLDS.LOG5.T0B26D    
//**** END GENERATED STATEMENTS **** 
//QCFIN    DD *                                     
FUNCTION LOADTOSQ,CQSSSN=CQS1,SQMSTRNM=CQSQMSG1
//* 

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.
End of change