DWWBKNT REXX procedure
The REXX procedure DWWBKNT performs multiple calls of the CICS VR NOTIFY utility DWWNT for IDCAMS REPRO backups listed in the input data set. It can be used in TSO and in a batch environment.
DWWBKNT has the following three parameters on call:
- Input data set name
- Specifies the data set with backups list. Each line in the data
set has the following format:
- DSNAME
- Specifies the fully qualified base cluster name of the VSAM data set that the backup was created for.
- BACKUPNAME
- Specifies the fully qualified name of the VSAM data set backup.
- DATE
- Local date in format YYYY/MM/DD.
- TIME
- Local time in format HHMMSS.
- High level qualifier
- Specifies the high level qualifier for SDWWLOAD data set.
- Preallocation
- Specifies (YES or NO) if the product that created the backup preallocated the target data set at the time of the restore. It is an optional parameter, default value is NO.
/*REXX: ************************************************************/
/* */
/* Licensed Materials - Property of IBM */
/* */
/* 5655-P30 DWWBKNT */
/* */
/* (C) Copyright IBM Corp. 2014 */
/* (C) Copyright HCL Technologies Ltd. 2025 */
/* */
/* $MAC(DWWBKNT) COMP(P3001): MULTIPLE BACKUP NOTIFICATION */
/* */
/* FUNCTION: Sample REXX to perform multiple calls of DWWNT */
/* for backups listed in the input data set. */
/* */
/* INPUT: */
/* 1. DSNI - Input data set name */
/* Layout of each line: */
/* Sphere data set name char(44) */
/* One or more blanks */
/* Backup data set name char(44) */
/* One or more blanks */
/* Creation Date (YYYY/MM/DD) char(10) (e.g., 2013/04/25) */
/* One or more blanks */
/* Creation Time (HHMMSS) char(6) (e.g., 030534) */
/* One or more blanks */
/* 2. HLQ - high level qualifier for SDWWLOAD data set */
/* 3. ALLOCP - YES/NO (default is NO), input parameter for DWWNT */
/* */
/* OUTPUT: */
/* Zero return code after successful completion. */
/* Non-zero return code if an error was encountered or */
/* DWWNT returns non-zero return code. */
/* */
/* NOTES: */
/* - Creation Date and Creation Time are optional parameters. */
/* If specified it is local date and time. */
/* - ALLOCP is optional parameter. */
/* - Product identifier is set to REPRO for VSAM data set backup. */
/* */
/* EXAMPLES: */
/* 1. Invoking the REXX from TSO: */
/* */
/* EXEC 'DWW.CVR520.SDWWCNTL(DWWBKNT)' 'CICSVR.IN DWW.CVR520 YES' */
/* */
/* 2. Invoking the REXX in batch: */
/* */
/* //XXXXXXXX JOB ... */
/* //SETPARM SET DSNI=CICSVR.IN */
/* // SET HLQ=DWW.CVR520 */
/* // SET ALLOCP=YES */
/* //REXXDEF EXEC PGM=IKJEFT01,REGION=0M, */
/* // PARM='DWWBKNT &DSNI &HLQ &ALLOCP' */
/* //SYSEXEC DD DSN=DWW.CVR520.SDWWCNTL,DISP=SHR */
/* //SYSTSPRT DD SYSOUT=* */
/* //DWWMSG DD SYSOUT=* */
/* //SYSTSIN DD DUMMY */
/* */
/*******************************************************************/
/* CHANGE ACTIVITY: */
/* */
/* REASON REL YYMMDD ID REMARKS */
/* R14088 520 120116 Creation */
/* */
/*******************************************************************/
Subcom TSO
If RC \= 0 Then Do
Say "*** Couldn't initialize TSO environment"
Exit 8
End
Address TSO
Arg DSNI HLQ ALLOCP
HLQ = Strip(HLQ)
DSNI = Strip(DSNI)
ALLOCP = Strip(ALLOCP)
If ALLOCP = '' Then ALLOCP = 'NO'
If (DSNI = '')|(HLQ = '')|((ALLOCP \= 'YES')&(ALLOCP \= 'NO')) Then Do
Say "*** Please, check the parameters specified"
Exit 8
End
"FREE FI(INLIST,DWWIN)"
"ALLOC FI(DWWMSG) TRACKS SPACE(1,1) LRECL(80)"
"ALLOC FI(DWWIN) TRACKS SPACE(1,1) LRECL(80)"
"ALLOC FI(INLIST) DSN('"DSNI"') SHR"
RCC = RC
If RCC > 0 Then Do
Say '*** Input data set cannot be allocated'
Exit RCC
End
RCC = 0
XCC = 0
S1:Do I=1 by 1 While RCC=0
'Execio 1 Diskru INLIST'
RCC = RC
S2:If RCC = 0 Then Do
Pull DSN BN IDATE ITIME REST
If REST \= '' Then Do
Say '*** Too many input parameters'
Exit 12
End
If IDATE \= '' Then
If ITIME \= '' Then
Call USD2JJD /* CONVERT YYYY/MD/DD TO YYYY.DDD */
Else Do
Say '*** Invalid input date or/and time'
Exit 12
End
Makebuf
Queue " NOTIFY -"
Queue " DSN("DSN") -"
Queue " BN("BN") -"
If IDATE \= '' Then
Queue " TIME("OTIME",LOCAL) -"
Queue " PROD(REPRO) ALLOC("ALLOCP")"
If IDATE \= '' Then
Execio 5 Diskw DWWIN "(FINI)"
Else
Execio 4 Diskw DWWIN "(FINI)"
Dropbuf
CDSN = HLQ".SDWWLOAD(DWWNT)"
Address TSO Call "'"CDSN"'"
XCC = RC
If XCC > 0 Then Do
RCC = XCC
Say '*** DWWNT terminated. RC='XCC
End
E2:End
E1:End
'Execio 0 Diskru INLIST (FINI'
"FREE FI(INLIST,DWWIN,DWWMSG)"
Say '*** NOTIFY exec terminated. RC='XCC
Exit XCC
/*******************************************************************/
/* CONVERT YYYY/MD/DD TO YYYY.DDD */
/*******************************************************************/
USD2JJD:
Parse var IDATE YYYY '/' MD '/' DD
Parse var ITIME HH 3 MM 5 SS
Select
When (MD=01) Then JAY=DD
When (MD=02) Then JAY=DD+31
When (MD=03) Then JAY=DD+59
When (MD=04) Then JAY=DD+90
When (MD=05) Then JAY=DD+120
When (MD=06) Then JAY=DD+151
When (MD=07) Then JAY=DD+181
When (MD=08) Then JAY=DD+212
When (MD=09) Then JAY=DD+243
When (MD=10) Then JAY=DD+273
When (MD=11) Then JAY=DD+304
When (MD=12) Then JAY=DD+334
Otherwise Do
Say '*** Invalid input date'
Exit 12
End
End
If (YYYY // 4 = 0) Then /* THIS IS A LEAP YEAR */
If (MD > 2) Then /* AND PAST FEBRUARY */
JAY = JAY+1 /* JULIAN IS ONE EXTRA */
DDD = Right(JAY,3,0)
OTIME = YYYY'.'DDD'/'HH':'MM':'SS
Return