Zeke job scheduler - syncsort_scc_monitor - Latest

Syncsort™ Storage Management Monitor Predictive Recall User Guide

Product type
Software
Portfolio
Integrate
Product family
Syncsort™ software
Product
Syncsort™ Storage Management > Syncsort™ SCC Monitor
Version
Latest
ft:locale
en-US
Product name
Syncsort Storage Management
ft:title
Syncsort™ Storage Management Monitor Predictive Recall User Guide
Copyright
2025
First publish date
1991
ft:lastEdition
2025-12-05
ft:lastPublication
2025-12-05T10:35:25.864000
L1_Product_Gateway
Integrate
L2_Product_Segment
IBM Infrastructure
L3_Product_Brand
Precisely Syncsort
L4_Investment_Segment
Mainframe
L5_Product_Group
Mainframe Storage Optimization
L6_Product_Name
Syncsort Storage Management

The output from the Zekeschedule load job is used as input for the Predictive Recall Job.

The following is a sample input file produced from a Zeke schedule load job report. The MONZKRX REXX script provided is passed a list of arguments consisting of application names to parse.

Tip: You can use the MONZKRX script to parse specific application names from the report.
REPORT ZEKE02M-04 RUN 6403 JOBS ADDED TO SCHEDULE BY SCHEDULE
EVENT VERSN EARLY SCHED LATE EVNT APP GRP USERID EVENT NAME JOB NAME
NUMBER TIME TIME TIME TYPE ID
32 0 - 00:00 - JOB DS CCA1800D CCA1800D
134 0 - 00:00 - JOB TEC TEC4016D TEC4016D
1015 0 - 00:00 - JOB EDI EDI2050D-1 EDI2050D
1017 0 - 00:00 - JOB EDI EDISYS1E EDISYS1E   

The MONZKRX REXX application is located in the DTS.R71.SLyyddd.SAMPLIB distribution dataset. Examine the contents of MONZKRX. Each program has comments at the beginning of the member with further instructions about processing the input file.

Note: The entire job stream is located in DTS.R71.SLyyddd.SAMPLIB(MONZKJCL).

The list of jobs generated by the job scheduling program is used as input into a REXX program.

One or more parameters are supplied to the REXX program to indicate which job sets are to be included. The program will parse the list of jobs and create control statements that contain a list of jobs to be evaluated by the Predictive Recall application.

Important: The DTS REXX application must be copied to a REXX library specified by the SYSEXEC DD statement.
//MONZEKE JOB MSGCLASS=A
//*
//* THIS STEP ASSUMES ZEKE REPORT IS INPUTDD
//* ON PARM AFTER ABCZKFRX IS A LIST OF JOB APPS
//* SEPARATED BY COMMAS MONZKFRX BCT,BCZ,C01
//*
//S01 EXEC PGM=IRXJCL,PARM='MONZKRX XYZ '
//SYSTSIN DD DUMMY
//SYSTSPRT DD SYSOUT=A
//INPUTDD DD DSN=ZEKE.LIST,DISP=SHR << ZEKE LISTING
//OUTDD DD SPACE=(CYL,(10,20),RLSE),UNIT=SYSALLDA,DISP=(,PASS)
//SYSEXEC DD DSN=SYS1.REXX,DISP=SHR << PRODUCTION REXX LIBRARY   

EXEC IXRJCL PARM=

The REXX exec is passed a REXX program in the parameter field MONZKRX with app parms.

The INPUTDD statement contains the job scheduler listing dataset (ZEKE, CA-7, or Control-M).

The OUTDD statement is the parsed output containing INCLUDE member statements to be processed in subsequent job steps.

The SYSEXEC statement identifies where the REXX application source code exists.

The data file produced from the first step produces Monitor INCLUDE control statements for JCL members, for example:

INCLUDE(MEMBER(XYZ2050D,
XYZSYS1E,
. . . . . XYZ8320D, XYZ8400D))    

Step 2 - Expand the JCL and PROCS

In this step, the control file produced from the first step is appended to other Monitor control statements which will expand and read JCL and procedure libraries. Rule criteria is applied to produce an output file specified by the DSNLIST DD statement. The output will contain a list of data set names to be considered for recalls, and passed to the next step to be used as input. The expanded JCL listing output will be written to the JCLLIST DD statement and can be used for problem determination.
//********************************************************************
//* PRECALL STEP 2 - This expands the JCL using the procedure
//* libraries specified on the PROCLIB DD statement.
//*
//* Note: Update the JCL DD statement to allocate the dataset(s) that
//* contain the JCL members
//*
//* Note: Update the JCLPROC DD statement to allocate the dataset(s)
//* used to expand the JCL. If necessary, concatenate
//* additional procedure libraries to JCLPROC
//*
//* Note: Update the STEPLIB and PARMLIB DD statements to allocate to
//* the DTS production data sets.
//********************************************************************
//PRECALL2 EXEC PGM=MONRUN
//STEPLIB DD DISP=SHR,DSN=DTS.R71.LOADLIB <= SCC DIST LOADLIB
//PARMLIB DD DISP=SHR,DSN=DTS.R71.PARMLIB <= SCC DIST PARMLIB
//JCL DD DISP=SHR,DSN=SYS1.JCL <= JCL LIBRARY
//JCLPROC DD DISP=SHR,DSN=SYS1.PROCLIB <= PROCLIB1
// DD DISP=SHR,DSN=SYS2.PROCLIB <= PROCLIB2
//SYSPRINT DD SYSOUT=*
//JCLLIST DD SYSOUT=*
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSUT1 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT2 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//SYSUT3 DD UNIT=SYSALLDA,SPACE=(CYL,(1,1))
//DSNLIST DD DISP=(,PASS),SPACE=(CYL,(10,10),RLSE),UNIT=SYSALLDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSIN DD *
INCLUDE(ENV(DD))
SORT(DSNAME)
SELECT(FIRST DSNAME)
SETTINGS(JCL(10000 15000))
DDNAME(SYSOUT(DSNLIST))
RULES(NAME(@PRCSTP1) LIST)
JCL(DDNAME(JCL) CHECK(NONE))
// DD DISP=(OLD,DELETE),DSN=*.PRECALL1.OUTDD

Control Statement Definitions

INCLUDE(ENV(DD)) /* scan DD statements */
SETTINGS(JCL(10000 15000)) /* up to 10000 jcl members */
/* swa buffer size for large jcl */
DDNAME(SYSOUT(DSNLIST)) /* output ddname for dataset list */
SORT(DSNAME) /* sort dataset list */
SELECT(FIRST DSNAME) /* no duplicate dataset names */
RULES(NAME(@PRCSTP1) LIST ) /* rule member name */
JCL(DDNAME(JCL,jcln,jclnx) /* JCL ddname list */
CHECK(NONE) /* don't perform JCL QA */
)
INCLUDE(MEMBER(……… /* JCL member names */
For a detailed description of the control statements, examine MONRUN Control Statements on page 10-1 in the MON-Snapshot User's Guide.

Rules

*
* ONLY PROCESS DISP=SHR/OLD AND NO VOLUME
*
DEFRULE DSN
IF DISP1 = (SHR,OLD,MOD)
* TEMP = NO
VOLSER = ""
THEN
ISSUE WRITEREC(DSN)
DEFREC DSN
FIELD &DSNAME LENGTH(44)

Step 3 - Query Catalog for volume of MIGRAT and Generate HRECALL Commands

This step reads the GDGBASE data set list file created from the previous step and executes Monitor rules to issue a catalog lookup on the data set name to obtain all generations and determine if the data set is migrated (volser is MIGRAT). An HRECALL command for each migrated data set generation is generated and appended to a file allocated to the //TSOCMD DD statement. This file is passed to the final step where the HRECALL commands are invoked.

In the event the data set is actually a GDGBASE, another specially formatted data set list is created and passed to the next step to query the catalog and expand all generations to determine if any of the generations are migrated.

//********************************************************************
//* PRECALL STEP 3 - Reads the list on Input data sets and generates
//* a recall request for all data sets with a VOLSER
//* of MIGRAT.
//********************************************************************
//PRECALL3 EXEC PGM=MONRUN
//STEPLIB DD DISP=SHR,DSN=*.PRECALL2.STEPLIB
//PARMLIB DD DISP=SHR,DSN=*.PRECALL2.PARMLIB
//SYSPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//DSNLIST DD DISP=(OLD,DELETE),DSN=*.PRECALL2.DSNLIST
//GDGBASE DD DISP=(,PASS),SPACE=(CYL,(1,1)),UNIT=SYSALLDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//TSOCMD DD DISP=(,PASS),SPACE=(CYL,(1,1)),UNIT=SYSALLDA,
// DCB=(RECFM=FB,LRECL=80,BLKSIZE=0)
//SYSIN DD *
RULES(NAME(@PRCSTP2) LIST LOCALLOG)
EXTERNALRECORDS(DSNLIST)
INCLUDE(ENV(EXTERNAL))    

Control statement definitions

RULES(NAME(@PRCSTP2) LIST LOCALLOG) /* rule member name */
/* output record to local dd */
EXTERNALRECORDS(DSNLIST)/* ddname of record input file */
INCLUDE(ENV(EXTERNAL)) /* process external records */

Rules

DEFREC DSN MAPFIELD(EXTRECORD)
FIELD DSN LENGTH(44)
*
* SEE IF EACH DATASET HAS A CURRENT VOLSER OF MIGRAT
*
DEFRULE MIGRAT
SET SET_DSNAME = &DSN
IF CATALOG:VOLSER = (MIGRAT)
THEN ISSUE WRITEMSG(RECALL)
IF CATALOG:VOLSER = ''
CATALOG:DSTYPE = B THEN
SET USRFLDC1 = "&DSNAME..**"
ISSUE WRITEREC(GDGBASE)
DEFMSG RECALL " HRECALL &CAT_DSNAME" DD(TSOCMD LOCAL)
DEFREC GDGBASE DDNAME(GDGBASE)
FIELD &USRFLDC1