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).

Figure 1. VSAMREC CLIST
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                   */ 
/**************************************************************/  
Figure 2. VSAMREC CLIST

 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) .