VSAMREC CLIST
VSAMREC is the name of a list command and line operator that can be issued from the ISMF Data Set List panel. Use the ISMF data set list feature to group VSAM spheres based on user-defined selection criteria.
Issue VSAMREC from the ISMF data set list to call CICS® VR panels, allowing you to create a recovery job for individual or all data sets in the list. See CICS VR User's Guide for more information.
VSAMREC is actually an alias for data set DWWRECVR. VSAMREC is a member of the SDWWCNTL data set. Before VSAMREC can be started, you must tailor the VSAMREC member to match your specific installation.
VSAMREC must be allocated to the SYSPROC ddname. You must either allocate the entire SDWWCNTL PDS to the SYSPROC ddname (possibly in the TSO/E logon procedure) or you must copy the VSAMREC member to a PDS that is already allocated to the SYSPROC ddname. Enter the TSO ISRDDN command to display all ddnames allocated to your current TSO session. See z/OS® TSO/E CLISTs for more information.
The VSAMREC CLIST, verifies that it was issued as an ISMF line operator or by list command from the ISMF data set list panel. The VSAMREC CLIST then allocates the data sets required for the execution of the CICS VR dialog interface. Edit these data set allocations to match your CICS VR installation. Refer to the comments before each allocation for further description. If you have included these allocations in your TSO/E logon procedure, you can remove or “comment-out” these allocations in the VSAMREC CLIST. The VSAMREC CLIST then starts the CICS VR dialog interface, passing the appropriate variables to indicate if it was started as a line operator or list command.
If you want to capture tracing and diagnostic information while executing the CICS VR dialog, add allocations for the DWWDUMP and DWWDMSG ddnames to VSAMREC. The DCB for these data sets is (RECFM=VBA,LRECL=84,BLKSIZE=3120).
PROC 0 TEST(NO) LIST(NO)
/**********************************************************************/
/* */
/* $MAC(DWWRECVR) COMP(GY101): INVOKE CICSVR TO RECOVER THE */
/* REQUESTED DATA SET(S) */
/* */
/* @BANNER_START 01 */
/* Licensed Materials - Property of IBM */
/* */
/* 5655-GY1 DWWRECVR */
/* */
/* (C) Copyright IBM Corp. 2002, 2014 */
/* (C) Copyright HCL Technologies Ltd. 2025 */
/* */
/* @BANNER_END */
/* */
/* */
/* DESCRIPTIVE NAME: CLIST TO INVOKE THE CICSVR DIALOG */
/* FROM THE ISMF DATA SET LIST PANEL. */
/* */
/* ALIAS: VSAMREC IS THE ALIAS FOR THE DWWRECVR CLIST. */
/* */
/* STATUS: CICS VSAM RECOVERY VERSION 6 RELEASE 1 */
/* */
/* FUNCTION: */
/* THIS CLIST CAN BE INVOKED AS A LINE OPERATOR OR LIST COMMAND. */
/* IT WILL INVOKE THE CICSVR ISPF INTERFACE TO CREATE A RECOVERY */
/* JOB FOR THE SELECTED VSAM DATA SETS. */
/* 1. DISABLE ATTENTION DURING CICSVR DIALOG EXECUTION */
/* 2. ISSUE A CONTROL STATEMENT TO SET RUN OPTIONS */
/* 3. ISSUE ISPF VGET TO OBTAIN REQUIRED VARIABLES FROM SHARED */
/* VARIABLE POOL: */
/* - APPLICATION ID &ZAPPLID */
/* - PANEL ID &ZPANELID */
/* - CMD/LINEOP INDICATOR &DGTTYPEC */
/* - NAME OF COMMAND &DGTCMDNM */
/* 4. ENSURE VSAMREC IS INVOKED ONLY FROM DATA SET APPLICATION */
/* 5. DISPLAY VARIABLE NAMES AND VALUES THEN RETURN IF TEST MODE*/
/* 6. ALLOCATE REQUIRED DATA SETS FOR THE CICSVR ISPF INTERFACE */
/* 7. INVOKE CICSVR PASSING THE APPROPRIATE PARAMETERS */
/* 8. FREE ALL ALLOCATIONS MADE FOR THE CICSVR ISPF INTERFACE */
/* 9. PLACE VARIABLES AND MESSAGES INTO SHARED VARIABLE POOL */
/* */
/* INPUT: */
/* 1-TEST PARAMETER: &TEST */
/* 2-LIST PARAMETER: &LIST */
/* 3-COMMAND NAME: &DGTCMDNM */
/* 4-ISMF SHARED POOL VARIABLES: &XXXXXXXX */
/* */
/* OUTPUT: */
/* TEST MODE: ALL CLIST VARIABLES */
/* NON TEST MODE: */
/* RCSAVE: */
/* 0 = FUNCTION PERFORMED */
/* 4 = VSAM SPHERE NOT FOUND */
/* >4 = FUNCTION FAILED */
/* SHORT ERROR MESSAGE (DGTCSMSG) */
/* LONG ERROR MESSAGE (DGTCLMSG) */
/* CONTINUE LIST PROCESSING FLAG (DGTCONTN) */
/* LINEOP HISTORY UPDATE FLAG (DGTLISTC) */
/* */
/* MESSAGES: */
/* SHORT MESSAGE: "VSAMREC ERROR" */
/* LONG MESSAGE: */
/* "CICSVR DIALOG COMPLETED, RC = X" */
/* - IF ERROR > 4 FROM CICSVR DIALOG EXECUTION */
/* "ALLOCATE OF DDNAME XXXXXXXX FAILED WITH RC= XX" */
/* - IF ERROR FROM ALLOCATIONS OF DATA SETS FOR CICSVR */
/* */
/* PROCESSOR: TSO CLIST PROCESSOR */
/* */
/* NOTE: PLEASE UPDATE THE CICSVR DATA SET ALLOCATIONS TO REFLECT */
/* YOUR CICSVR INSTALLATION. YOU MAY REMOVE OR */
/* "COMMENT-OUT" THESE ALLOCATIONS IF THEY ARE INCLUDED IN */
/* YOUR ISPF LOGON PROCEDURE. */
/* */
/* CHANGE ACTIVITY: */
/* PN= REASON REL YYMMDD ID: REMARKS */
/* $L0= ....... 320 020101 ......... Creation */
/* $L1= ....... 410 050916 ......... Added SDWWLENU */
/* $L2= ....... 510 120707 ......... Update for release 5.1.0 */
/* $L3= ....... 520 130420 ......... Update for release 5.2.0 */
/* R71977 520 130930 hd-oam: CICSVR customization */
/**********************************************************************/
ISPEXEC VGET ZUSER SHARED /* GET USERID */
/* --------------------------------------------------------------- */
/* Replace the value of the HLQ variable with what you have */
/* specified for @hlq@ in the DWWALLOC job. */
/* --------------------------------------------------------------- */
SET HLQ = DWW.V610 /* HIGH LEVEL QUALIFIER FOR */
/* CICSVR LIBRARIES */
/* --------------------------------------------------------------- */
/* Replace the value of the UHLQ variable with the high level */
/* qualifier that you have used for allocation the following */
/* data sets: */
/* &uhlq..DWWMSG */
/* &uhlq..DWWPRINT */
/* &uhlq..DWWDMSG */
/* &uhlq..ISPFILE */
/* --------------------------------------------------------------- */
SET UHLQ = DWW.&ZUSER /* HIGH LEVEL QUALIFIER FOR */
/* USER DATA SETS */
/* --------------------------------------------------------------- */
/* Replace the values for the PREF and the SUFF variables */
/* to allocate the RCDS data sets: */
/* &pref.DWWCON1.GRP&suff */
/* &pref.DWWCON2.GRP&suff */
/* &pref.DWWCON3.GRP&suff */
/* --------------------------------------------------------------- */
SET PREF = DWW.V610 /* RCDS PREFIX */
SET SUFF = PROD /* RCDS SUFFIX */
/* --------------------------------------------------------------- */
SET &DGTCSMSG = &STR()
SET &DGTCLMSG = &STR()
/**********************************************************************/
/* DISABLE ATTENTION KEY SO CICSVR DIALOG WILL TERMINATE NORMALLY */
/**********************************************************************/
ATTN +
DO
RETURN
END
/**********************************************************************/
/* SET THE RUN OPTIONS VIA CONTROL STATEMENT */
/**********************************************************************/
IF &STR(&LIST) EQ &STR(YES) THEN +
CONTROL LIST MSG SYMLIST CONLIST NOPROMPT NOFLUSH
ELSE +
CONTROL NOLIST NOMSG NOPROMPT NOFLUSH
/**********************************************************************/
/* GET NEEDED VARIABLES FROM SHARED VARIABLE POOL */
/**********************************************************************/
ISPEXEC VGET (ZAPPLID DGTTYPEC DGTCMDNM ZPANELID) SHARED
SET &DGTCMDNM = &STR(VSAMREC)
/**********************************************************************/
/* ENSURE VSAMREC IS INVOKED ONLY FROM DATA SET APPLICATION */
/**********************************************************************/
IF (&ZPANELID NE &STR(DGTLGP11) && &ZPANELID NE &STR(DWWPPVLT)) +
| (&SUBSTR(1:3,&ZAPPLID) NE &STR(DGT)) THEN +
DO /* NOT DATA SET LIST */
ISPEXEC LIBDEF ISPMLIB
ISPEXEC LIBDEF ISPMLIB DATASET ID('&HLQ..SDWWMENU')
SET &COMMAND = &STR(VSAMREC )
IF &SUBSTR(1:3,&ZAPPLID) NE &STR(DGT) THEN +
ISPEXEC SETMSG MSG(DWWP705) /* NOT ISMF */
ELSE +
ISPEXEC SETMSG MSG(DWWP706) /* ISMF BUT NOT DATA SET LIST */
ISPEXEC LIBDEF ISPMLIB
SET &RCSAVE = 8
GOTO TERM
END
/**********************************************************************/
/* DISPLAY VARIABLE VALUES AND RETURN IF TEST MODE IS INVOKED */
/**********************************************************************/
IF &STR(&TEST) EQ &STR(YES) THEN +
DO
WRITE
WRITE CLIST "VSAMREC" RECEIVED CONTROL.
WRITE
WRITE VARIABLE CURRENT
WRITE NAME VALUE
WRITE ________ _______
WRITE ZAPPLID &ZAPPLID
WRITE DGTCMDNM &DGTCMDNM
WRITE DGTTYPEC &DGTTYPEC
WRITE
ISPEXEC LIBDEF ISPMLIB
ISPEXEC LIBDEF ISPMLIB DATASET ID('&HLQ..SDWWMENU')
ISPEXEC GETMSG MSG(DWWP707) SHORTMSG(SHMSG) /* Tested mode */
ISPEXEC GETMSG MSG(DWWP707) LONGMSG(LONGMSG)
IF &DGTTYPEC = &STR(C) THEN +
DO
SET &DGTCONTN = &STR(N)
SET &DGTLISTC = &STR(N)
END
ISPEXEC LIBDEF ISPMLIB
SET &RCSAVE = 8
GOTO ENDCLIST
END
/**********************************************************************/
/* THE FOLLOWING WILL ALLOCATE THE REQUIRED DATA SETS FOR THE */
/* INVOCATION OF THE CICSVR ISPF INTERFACE. PLEASE UPDATE THE CICSVR */
/* DATA SET ALLOCATIONS TO REFLECT YOUR CICSVR INSTALLATION. YOU */
/* MAY REMOVE OR "COMMENT-OUT" THESE ALLOCATIONS IF THEY ARE INCLUDED */
/* IN YOUR ISPF LOGON PROCEDURE. */
/**********************************************************************/
ISPEXEC CONTROL ERRORS RETURN /* RETURN ISPF ERRORS TO CLIST */
ISPEXEC VGET ZPFSHOW PROFILE /* CHANGE PFSHOW SO THAT THE */
SET PFSAVE = &ZPFSHOW /* PF-KEYS ARE DISPLAYED DURING*/
SET PFCMD = &STR(PFSHOW ON) /* THE CICSVR DIALOG INTERFACE */
ISPEXEC DISPLAY COMMAND(PFCMD)
ISPEXEC LIBDEF ISPFILE
ISPEXEC LIBDEF ISPPLIB
ISPEXEC LIBDEF ISPMLIB
ISPEXEC LIBDEF ISPTLIB
FREE FI(DWWCON1,DWWCON2,DWWCON3,DWWMSG,DWWPRINT,MYFILE,ISPFILE)
FREE FI(DWWSLIB,DWWLLIB,DWWDMSG)
FREE FI(DWWLOAD)
/* ---------------------------------------------------- DWWCON1 */
ALLOC FI(DWWCON1) DA('&PREF..DWWCON1.GRP&SUFF') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWCON1
GOTO SETMSG3
END
/* ---------------------------------------------------- DWWCON2 */
ALLOC FI(DWWCON2) DA('&PREF..DWWCON2.GRP&SUFF') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWCON2
GOTO SETMSG3
END
/* ---------------------------------------------------- DWWCON3 */
ALLOC FI(DWWCON3) DA('&PREF..DWWCON3.GRP&SUFF') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWCON3
GOTO SETMSG3
END
/* ---------------------------------------------------- DWWMSG */
ALLOC FI(DWWMSG) DA('&UHLQ..DWWMSG') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWMSG
GOTO SETMSG3
END
/* ---------------------------------------------------- DWWPRINT */
ALLOC FI(DWWPRINT) DA('&UHLQ..DWWPRINT') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWPRINT
GOTO SETMSG3
END
/* ---------------------------------------------------- DWWDMSG */
/** ALLOC FI(DWWDMSG) SYSOUT(X) DEST(XXXX) ***/
ALLOC FI(DWWDMSG) DA('&UHLQ..DWWDMSG') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWDMSG
GOTO SETMSG3
END
/* ---------------------------------------------------- ISPLLIB */
ISPEXEC LIBDEF ISPLLIB DATASET ID('&HLQ..SDWWLOAD', +
'&HLQ..SDWWLENU')
/* ---------------------------------------------------- DWWLOAD */
SET &DSN = &STR('&HLQ..SDWWLENU')
SET &LIBS = &STR('&HLQ..SDWWLOAD')
SET &LIBS = &STR(&LIBS , &DSN)
ALLOC FI(DWWLOAD) DA(&LIBS) SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWLOAD
GOTO SETMSG3
END
/* ---------------------------------------------------- DWWLLIB */
SET &LIBS = &STR('&HLQ..SDWWLOAD')
SET &DSN1 = &STR('&HLQ..SDWWLENU')
SET &LIBS = &STR(&LIBS , &DSN1 )
ALLOC FI(DWWLLIB) DA(&LIBS) SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWLLIB
GOTO SETMSG3
END
/* ---------------------------------------------------- ISPPLIB */
ISPEXEC LIBDEF ISPPLIB DATASET ID('&HLQ..SDWWPENU')
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = ISPPLIB
GOTO SETMSG3
END
/* ---------------------------------------------------- ISPMLIB */
ISPEXEC LIBDEF ISPMLIB DATASET ID('&HLQ..SDWWMENU')
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = ISPMLIB
GOTO SETMSG3
END
/* ---------------------------------------------------- ISPTLIB */
ISPEXEC LIBDEF ISPTLIB DATASET ID('&HLQ..SDWWTENU')
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = ISPTLIB
GOTO SETMSG3
END
/* --------------------------------------------------- DWWSLIB */
SET &LIBS = &STR('&UHLQ..ISPFILE')
SET &DSNO= &STR('&HLQ..SDWWSENU')
SET &LIBS = &STR(&LIBS , &DSNO)
ALLOC FI(DWWSLIB) DA(&LIBS) SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = DWWSLIB
GOTO SETMSG3
END
/* ----------------------------------------- MYFILE AND ISPFILE */
ALLOC FI(MYFILE) DA('&UHLQ..ISPFILE') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = MYFILE
GOTO SETMSG3
END
ALLOC FI(ISPFILE) DA('&UHLQ..ISPFILE') SHR
SET RCSAVE = &LASTCC
IF &RCSAVE NE 0 THEN DO
SET DDNAME = ISPFILE
GOTO SETMSG3
END
/**************************************************************/
/* BASED ON IF VSAMREC WAS ISSUED AS A LINE OP OR A LIST */
/* COMMAND, THE APPROPRIATE CICSVR PARAMETER IS SET */
/**************************************************************/
IF &DGTTYPEC = C THEN +
SET &PARMVAL = &STR(ISMFLCMD) /* THIS IS A LIST COMMAND */
IF &DGTTYPEC = L THEN +
SET &PARMVAL = &STR(ISMFLIOP) /* THIS IS A LINE OPERATOR */
/**************************************************************/
/* EXECUTE CICSVR AND SET RETURN CODE */
/**************************************************************/
ISPEXEC SELECT PGM(DWWPM) PARM(&PARMVAL) +
NEWAPPL(DWW) PASSLIB
SET RCSAVE = &LASTCC
SET LONGMSG = &STR(CICSVR DIALOG COMPLETED WITH RC = &RCSAVE)
GOTO FINISH
/**************************************************************/
/* SET ALLOCATION ERROR MESSAGE IF IT OCCURRED */
/**************************************************************/
SETMSG3: +
SET LONGMSG = &STR(ALLOCATE OF DDNAME &DDNAME FAILED WITH RC= &RCSAVE)
/**************************************************************/
/* CLEANUP ALL CICSVR DATA SET ALLOCATIONS */
/**************************************************************/
FINISH: +
ISPEXEC LIBDEF ISPFILE
ISPEXEC LIBDEF ISPPLIB
ISPEXEC LIBDEF ISPMLIB
ISPEXEC LIBDEF ISPTLIB
ISPEXEC LIBDEF ISPLLIB /** ONLY IF NOT IN LOGON PROC **/
FREE FI(DWWCON1,DWWCON2,DWWCON3,DWWMSG,DWWPRINT,MYFILE,ISPFILE)
FREE FI(DWWSLIB,DWWLLIB,DWWDMSG)
FREE FI(DWWLOAD)
IF &RCSAVE NE 0 THEN +
SET SHMSG = &STR(&DGTCMDNM ERROR)
SET PFCMD = &STR(PFSHOW &PFSAVE) /* RESTORE PFKEY DISPLAY TO */
ISPEXEC DISPLAY COMMAND(PFCMD) /* PREVIOUS STATUS */
/**************************************************************/
/* IF VSAMREC ISSUED AS A LIST COMMAND */
/* DON'T CONTINUE PROCESSING EACH ITEM IN THE LIST */
/* DON'T UPDATE LINE OP VALUE */
/**************************************************************/
IF &DGTTYPEC EQ &STR(C) THEN +
DO
SET &DGTCONTN = &STR(N)
SET &DGTLISTC = &STR(N)
END
/**************************************************************/
/* SET SHORT AND LONG MESSAGE FOR ISMF DATA SET LIST */
/**************************************************************/
ENDCLIST: +
SET &DGTCSMSG = &STR(&SHMSG)
SET &DGTCLMSG = &STR(&LONGMSG)
ISPEXEC VPUT (DGTCONTN DGTLISTC DGTCSMSG DGTCLMSG) SHARED
TERM: +
EXIT CODE(&RCSAVE) .