JCL Requirements and Examples

This section describes the job control information required to run ADARES on the z/OS operating system and shows examples of job streams.

Notes:

  1. The DDSIAUS1/2 device type used to copy the protection log may not support the BACKOUT function if it is an IDRC (hardware compression) device. For more information, see the description of the PLCOPY function earlier in this document.
  2. When running with the optional Recovery Aid (ADARAI), all temporary data sets must also be cataloged in the job control.

This document covers the following topics:


Requirements to Run ADARES JCL

Data Set DD Name Storage More Information
Sequential protection log or ADASAV DDSAVEn output DDSIIN tape/ disk Input log for COPY, REGENERATE, and REPAIR functions.
Multiple protection log DDPLOGRn disk Input logs for PLCOPY function, and BACKOUT DPLOG/MPLOG .
Multiple command log DDCLOGRn disk Input logs for CLCOPY function.
Sequential protection log DDBACK tape/ disk Input log for BACKOUT function (not BACKOUT DPLOG).
Copied log DDSIAUS1 tape/ disk Output of COPY, CLCOPY, PLCOPY functions.
Extra copied log DDSIAUS2 tape/ disk Required only if two copies are to be produced by a copy function (with TWOCOPIES).
Recovery log (RLOG) DDRLOGR1 disk Required when using ADARAI.
Data Storage DDDATARn disk Required only for REGENERATE if FROMCP=SYN1 or SYN4.
Associator DDASSORn disk  
ADARUN parameters DDCARD reader Operations
ADARES parameters DDKARTE reader  
ADARUN messages DDPRINT printer Messages and Codes
ADARES messages DDDRUCK printer Messages and Codes

ADARES JCL Examples

Copy Sequential Protection Log

//ADARESCP  JOB
//*
//*    ADARES: COPY SEQUENTIAL PROTECTION LOG
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD        <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1  <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1  <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1  <=== WORK
//DDSIIN    DD   DSN=EXAMPLE.DByyyyy.SIBA,            <=== PLOG
//            VOL=SER=vvvvvv,DISP=OLD,UNIT=TAPE       
//DDSIAUS1  DD   DSN=EXAMPLE.DByyyyy.PLOG(+1),        <=== PLOG COPY
//            VOL=SER=vvvvvv,UNIT=TAPE,DISP=(NEW,CATLG)
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES COPY
/*

Refer to ADARESCP in the JOBS data set for this example.

Copy Dual/Multiple Protection Log

//ADARESCD  JOB
//*
//*    ADARES: COPY DUAL/MULTIPLE PROTECTION LOG
//*             TWO COPIES OF OUTPUT ARE TO BE CREATED
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1  <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1  <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1  <=== WORK
//DDPLOGR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.PLOGR1  <=== PLOG1
//DDPLOGR2  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.PLOGR2  <=== PLOG2
//DDSIAUS1  DD   DSN=EXAMPLE.DByyyyy.PLOG1(+1),       <=== PLOG COPY 1
//            VOL=SER=vvvvvv,UNIT=TAPE,DISP=(NEW,CATLG)
//DDSIAUS2  DD   DSN=EXAMPLE.DByyyyy.PLOG2(+1),       <=== PLOG COPY 2
//            VOL=SER=vvvvvv,UNIT=TAPE,DISP=(NEW,CATLG)
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES PLCOPY TWOCOPIES
/*

Refer to ADARESCD in the JOBS data set for this example.

Automatically Copy/Merge Nucleus Cluster Protection Logs

Note
Note that when intermediate data sets are used for both CLCOPY and PLCOPY, the data set names must be unique so that they are not overwritten.

Following is sample JCL for allocating the required intermediate data sets MERGIN1 and MERGIN2:

//ALLOC JOB 
//*
//* Example to allocate the MERGIN1 and the MERGIN2 data sets 
//*
//ALLOC   EXEC PGM=IEFBR14
//MERGIN1 DD  DISP=(NEW,CATLG,DELETE),DSN=EXAMPLE.PINTERI,
//             SPACE=(CYL,(1,10,0)),UNIT=3390,VOL=SER=volser,
//             RECFM=VB,BLKSIZE=27998,LRECL=27994
//MERGIN2 DD  DISP=(NEW,CATLG,DELETE),DSN=EXAMPLE.PINTERO,
//             SPACE=(CYL,(1,10,0)),UNIT=3390,VOL=SER=volser,
//             RECFM=VB,BLKSIZE=27998,LRECL=27994

Refer to ADARESMP in the JOBS data set for this example.

Automatically Copy/Merge Nucleus Cluster Protection Logs Ignoring PPT

//ADARESIP  JOB
//*                                                                 
//*    ADARES: COPY/MERGE DUAL/MULTIPLE PROTECTION LOGS FROM ALL   
//*             NUCLEI IN AN ADABAS CLUSTER                         
//*             PPT IS TO BE IGNORED                                
//*             THIS IS ONLY FOR EMERGENCY USE WHEN THE PPT HAS BEEN
//*             OVER-WRITTEN - USE CAUTION WHEN SUBMITTING          
//*                                                                 
//RES      EXEC PGM=ADARUN                             
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD      <=== ADABAS LOAD
//*                                                                  
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.ASSOR1   <=== ASSO      
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.DATAR1   <=== DATA      
//DDPLOG01  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.PLOGR1   <=== PLOG1 NUC1
//DDPLOG02  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.PLOGR2   <=== PLOG2 NUC1
//DDPLOG03  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.PLOGR1A  <=== PLOG1 NUC2
//DDPLOG04  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.PLOGR2A  <=== PLOG2 NUC2
//DDPLOG05  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.PLOGR1B  <=== PLOG1 NUC3
//DDPLOG06  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.PLOGR2B  <=== PLOG2 NUC3
//MERGIN2   DD   DISP=SHR,DSN=EXAMPLE.INTERO           <=== INTER     
//MERGIN1   DD   DISP=SHR,DSN=EXAMPLE.INTERI           <=== INTER    
//DDSIAUS1  DD   DSN=EXAMPLE.DBYYYYY.PLOG1(+1),        <=== PLOG COPY 
//            VOL=SER=ADAXXX,UNIT=TAPE,DISP=(NEW,CATLG)            
//DDDRUCK   DD   SYSOUT=X                                          
//DDPRINT   DD   SYSOUT=X                                          
//SYSUDUMP  DD   SYSOUT=X                                          
//DDCARD    DD   *                                                 
ADARUN PROG=ADARES,MODE=MULTI,SVC=XXX,DEVICE=3390,DBID=YYYYY       
/*                                                                 
//DDKARTE   DD   *                                                 
ADARES PLCOPY NOPPT                                                
/*                                                                 
//                                                           

Refer to ADARESIP in the JOBS data set.

Copy Dual/Multiple Command Log

//ADARESCC  JOB
//*
//*     ADARES: COPY DUAL/MULTIPLE COMMAND LOG
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1 <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1 <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1 <=== WORK
//DDCLOGR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.CLOGR1 <=== CLOG1
//DDCLOGR2  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.CLOGR2 <=== CLOG2
//DDSIAUS1  DD   DSN=EXAMPLE.DByyyyy.CLOG,           <=== OUTPUT OF
//            VOL=SER=vvvvvv,UNIT=TAPE,DISP=(NEW,CATLG)       CLCOPY
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES CLCOPY
/*

Refer to ADARESCC in the JOBS data set for this example.

Automatically Copy/Merge Nucleus Cluster Command Logs

Note
Note that when intermediate data sets are used for both CLCOPY and PLCOPY, the data set names must be unique so that they are not overwritten.

Following is sample JCL for allocating the required intermediate data sets MERGIN1 and MERGIN2:

//ALLOC JOB 
//*
//* Example to allocate the MERGIN1 and the MERGIN2 data sets 
//*
//ALLOC   EXEC PGM=IEFBR14
//MERGIN1 DD  DISP=(NEW,CATLG,DELETE),DSN=EXAMPLE.CINTERI,
//             SPACE=(CYL,(1,10,0)),UNIT=3390,VOL=SER=volser,
//             RECFM=VB,BLKSIZE=27998,LRECL=27994
//MERGIN2 DD  DISP=(NEW,CATLG,DELETE),DSN=EXAMPLE.CINTERO,
//             SPACE=(CYL,(1,10,0)),UNIT=3390,VOL=SER=volser,
//             RECFM=VB,BLKSIZE=27998,LRECL=27994

Refer to ADARESMC in the JOBS data set for this example.

Manually Merge Sequential Command Logs in a Nucleus Cluster Environment

//ADARESCM  JOB                                        
//*                                                                    
//*    ADARES: MERGE SEQUENTIAL COMMAND LOGS                          
//*             FOR USE WITH AN ADABAS NUCLEUS CLUSTER                 
//*
//RES      EXEC PGM=ADARUN                             
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*                                                                    
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.ASSOR1  <=== ASSO      
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.DATAR1  <=== DATA      
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.WORKR1  <=== WORK      
//DDCLOG01  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.CLOGR1A <=== CLOG1     
//DDCLOG02  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.CLOGR1B <=== CLOG2     
//DDCLOG03  DD   DISP=SHR,DSN=EXAMPLE.DBYYYYY.CLOGR1C <=== CLOG3     
//DDSIAUS1  DD   DSN=EXAMPLE.DBYYYYY.CLOGM,           <=== OUTPUT OF  
//            VOL=SER=ADAXXX,UNIT=TAPE,DISP=(NEW,CATLG)       CLOG MERGE    
//DDDRUCK   DD   SYSOUT=X                                              
//DDPRINT   DD   SYSOUT=X                                              
//SYSUDUMP  DD   SYSOUT=X                                              
//DDCARD    DD   *                                                     
ADARUN PROG=ADARES,MODE=MULTI,SVC=XXX,DEVICE=3390,DBID=YYYYY           
/*                                                                     
//DDKARTE   DD   *                                                     
ADARES MERGE CLOG,NUMLOG=3  
/*                          
//                         

Refer to ADARESCM in the JOBS data set for this example.

Backout from a Sequential Protection Log

//ADARESSP  JOB
//*
//*    ADARES: BACKOUT FROM A SEQUENTIAL PLOG
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1 <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1 <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1 <=== WORK
//DDBACK    DD   DSN=EXAMPLE.DByyyyy.PLOG(-5),       <=== PLOG TAPE
//               UNIT=TAPE,DISP=OLD
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES BACKOUT PLOGNUM=nnn
/*

Refer to ADARESSP in the JOBS data set for this example.

Backout from Dual/Multiple Protection Log

//ADARESB   JOB
//*
//*    ADARES: BACKOUT FROM DUAL/MULTIPLE PLOG
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1 <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1 <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1 <=== WORK
//DDPLOGR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.PLOGR1 <=== PLOG1
//DDPLOGR2  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.PLOGR2 <=== PLOG2
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES BACKOUT DPLOG
/*

Refer to ADARESB in the JOBS data set for this example.

Regenerate Function

//ADARESR   JOB
//*
//*    ADARES: REGENERATE
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1 <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1 <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1 <=== WORK
//DDSIIN    DD   DSN=EXAMPLE.DByyyyy.PLOG(-5),       <=== PLOG TAPE
//            UNIT=TAPE,DISP=OLD
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES REGENERATE FILE=1
/*

Refer to ADARESR in the JOBS data set for this example.

Repair Data Storage

//ADARESRP  JOB
//*
//*    ADARES:  REPAIR DATASTORAGE
//*
//RES      EXEC PGM=ADARUN
//STEPLIB   DD   DISP=SHR,DSN=ADABAS.ADAvrs.LOAD       <=== ADABAS LOAD
//*
//DDASSOR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.ASSOR1 <=== ASSO
//DDDATAR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.DATAR1 <=== DATA
//DDWORKR1  DD   DISP=SHR,DSN=EXAMPLE.DByyyyy.WORKR1 <=== WORK
//DDSIIN    DD   DSN=EXAMPLE.DByyyyy.SAVE,           <=== SAVE OUTPUT
//             DISP=OLD,UNIT=TAPE
//          DD   DSN=EXAMPLE.DByyyyy.PLOG(-5),       <=== PLOG TAPE
//             DISP=OLD,UNIT=TAPE
//DDDRUCK   DD   SYSOUT=X
//DDPRINT   DD   SYSOUT=X
//SYSUDUMP  DD   SYSOUT=X
//DDCARD    DD   *
ADARUN PROG=ADARES,MODE=MULTI,SVC=xxx,DEVICE=dddd,DBID=yyyyy
/*
//DDKARTE   DD   *
ADARES REPAIR DSRABN=3456-3490

Refer to ADARESRP in the JOBS data set for this example.