// JOB (ACCT),'NAME',NOTIFY=&SYSUID
//*********************************************************************
// EXPORT SYMLIST=*
// SET ARG1=target pdse dsname
//*********************************************************************
//* TSO BACTH SESSION --- DO REXX AND ISPF SERVICE ---
//*********************************************************************
//PDSUPDTE PROC
//DOUPDTE EXEC PGM=IEBUPDTE,PARM=NEW --- GENERATE PDS MEMBER ---
//SYSPRINT DD DUMMY
//SYSUT2 DD DISP=(,PASS),DSN=&&TMPPDS,UNIT=SYSDA,
// SPACE=(TRK,(1,,1)),DCB=(RECFM=FB,LRECL=80)
// PEND
//*--------------------------------------------------------------------
//ISPBATCH PROC
//DOISPF EXEC PGM=IKJEFT01,DYNAMNBR=256
//ISPLOG DD SYSOUT=*,DCB=(RECFM=VBA,LRECL=125,BLKSIZE=0)
//ISPLIST DD SYSOUT=*,DCB=(RECFM=FBA,LRECL=121,BLKSIZE=0)
//SYSPROC DD DISP=(OLD,DELETE),DSN=&&TMPPDS
//ISPPROF DD DISP=(,PASS),UNIT=SYSDA,
// SPACE=(CYL,(1,1,10)),DCB=(RECFM=FB,LRECL=80)
//ISPLLIB DD DISP=SHR,DSN=ISP.SISPLOAD
//ISPPLIB DD DISP=SHR,DSN=ISP.SISPPENU
//ISPMLIB DD DISP=SHR,DSN=ISP.SISPMENU
//ISPTLIB DD DISP=SHR,DSN=ISP.SISPTENU
//ISPSLIB DD DISP=SHR,DSN=ISP.SISPSLIB
// DD DISP=SHR,DSN=ISP.SISPSENU
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *,SYMBOLS=JCLONLY
ISPSTART CMD(%REXXEXEC &ARG1 &ARG2 &ARG3) /* EXECUTE COMMAND NAME */
// PEND
//*********************************************************************
//ADDMEMBR EXEC PDSUPDTE
//SYSIN DD *,DLM='++',SYMBOLS=JCLONLY
./ ADD NAME=CANCEL
ISREDIT MACRO
ISREDIT CANCEL
ISREDIT END
./ ADD NAME=REXXEXEC
/* REXX */
/* =================================================================
Print The Member List with The Relative Generation number
in PDSE2 Version2.
(This REXX exec valid for z/OS v2r4 or later. If you have z/OS
v2r3 or earlier, set the maximum generations number of target
PDSE dataset instead of the system variable SYSMAXGENS.)
================================================================= */
ARG dsn /* GET DSNAME */
rc=LISTDSI("'"dsn"' DIRECTORY") /* GET MAXGENS */
IF rc /= 0 THEN exit(4) /* IF NO DATASET FOUND... */
maxgens = SYSMAXGENS /* SET MAX GENERATIONS */
ADDRESS ISPEXEC "CONTROL ERRORS RETURN"
SAY "PDSE Version2 MEMBER List of Exist Generations, DSN="dsn,
"MAXGENS="maxgens
scale = "MEMBER 0----+----1----+----2----+----3----+----4----+----"
scale = scale||"5----+----6----+----7----+----8----+----9----+----A"
SAY scale /* SHOW SCALE LINE */
x=OUTTRAP('memlist.')
ADDRESS TSO "LISTDS PDSEVER2 MEMBERS" /* BUILD MEMBER LIST */
DO i=7 TO memlist.0 /* TEST EXISTENCE FOR MEMBERS */
member = STRIP(memlist.i) /* OF EACH GENERATION */
genmark = '*'
DO j=1 TO maxgens /* EXECUTE ISPF VIEW FUNCTION FOR EACH MEMBER */
ADDRESS ISPEXEC "VIEW DATASET('"dsn"("member")')",
"MACRO(CANCEL) GEN(-"j")"
/* ESCAPE FROM LOOP WHEN REACHED HIGHEST GENERATION */
IF RC > 0 THEN LEAVE
genmark = insert('*',genmark,j,1) /* PLACE '*' FOR EXIST MEMBER */
END
SAY SUBSTR(member,1,8) genmark /* SHOW MEMBER GENERATION SCALE */
END
exit(0)
++
//*********************************************************************
//DOREXX EXEC ISPBATCH
//
//