PROC 2 DDNAME MEMBER ALL EDIT NB DSN1() DSN2() DSN3() - DSN4() DSN5() DSN6() DSN7() DSN8() DSN9() DSN10() - DSN11() DSN12() DSN13() DSN14() DSN15() DSN16() DSN17() DSN() /* TITLE: PDSDD -- PARTITIONED DATASET DISPLAY -- CLIST PANELS PROC /* USERS: TSO ISPF EDIT USERS /* ENTRY: USED AS A TSO CLIST COMMAND ===> PDSDD CLIST CLIST /* CONTRIBUTED: 1986/01/17 DAVID MCRITCHIE /* EXAMPLE: ===> PDSDD CLIST CLIST /* ===> PDSDD PANELS ISREDDE /*===> PDSDD PANELS @INDEX DSN1(IS03.SHARE.CNTL) DSN2(IS03.SHARE.TEXT) /**************************************************************** */ /* ***** Example of Usage: ===> TSO PDSDD SYSPROC membername /* ***** Example of Usage: ===> TSO PDSDD CLIST membername /* ***** Also of Interest: ===> TSO CLIST membername /* ***** Also of Interest: ===> TSO DDNAME SYSPROC /* ***** Also of Interest: ===> TSO PROC membername /* * Also of Interest: ===> TSO LISTALC (STATUS) (HISTORY) (SYSNAMES) /**************************************************************** */ SET DDNAME = &SYSCAPS(&STR(&DDNAME)) SET MEMBER = &SYSCAPS(&STR(&MEMBER)) SET MULTIMEM = &SYSINDEX(&STR(*),&STR(&MEMBER.)) IF &MULTIMEM = 0 THEN - SET MULTIMEM = &SYSINDEX(&STR(%),&STR(&MEMBER.)) SET DDNAMEX = &STR(&DDNAME) SET DSN0 = &STR(&DSN) IF &DDNAME = PROC THEN DO %PROC &MEMBER. IF &STR(&DSN1()&DSN2()&DSN3()&DSN4()) = &STR() THEN DO WRITE ADDITIONAL DSNAMES WILL NOT BE CHECKED EXIT CODE(0) END ELSE WRITE ADDITIONAL DSNAMES WILL NOW BE CHECKED SET DDNAME = &STR(*) /* PERMIT TO CHECK FOR DSN1() ETC. */ END IF &STR(&DDNAME) = &STR(*) THEN DO SET RCX = 0 SET HRC = 0 SET DRC = 0 GOTO SKIPDD END IF &DDNAME = CLIST THEN SET DDNAME = SYSPROC IF &DDNAME = MESSAGE THEN SET DDNAME = ISPMLIB IF &DDNAME = PANELS THEN SET DDNAME = ISPPLIB IF &DDNAME = PROFILE THEN SET DDNAME = ISPTLIB IF &DDNAME = SKELETON THEN SET DDNAME = ISPSLIB IF &DDNAME = HELP THEN SET DDNAME = SYSHELP SET SYSOUTTRAP = 400 LISTALC STA SET N = &SYSOUTLINE SET SYSOUTTRAP = 0 SET RCX = 0 /* FILES TO BE CHECKED LATER RACF/BROWSE */ SET I = 2 SET HIT2 = 0 SET HIT1 = 0 DO WHILE &I <= &N SET X = &STR(&&SYSOUTLINE&I..) SET X = &STR(&X.) IF &HIT1 = 1 THEN DO IF &SUBSTR(1:4,&STR(&X.) ) ^= &STR( ) THEN SET HIT1 = 0 END IF &HIT1 = 0 THEN DO IF &SUBSTR(1:2,&STR(&X.) ) ^= &STR( ) THEN GOTO NIX IF &SUBSTR(1:10,&STR(&X. )) = &STR( &STR(&DDNAME)) + THEN SET HIT1 = 1 ELSE GOTO NIX END SET DX = &STR(&&SYSOUTLINE&EVAL(&I.-1).) SET DX = &STR(&DX) SET RCX = &RCX + 1 SET XDSN&RCX = &DX SET I = &I. + 1 NIX: - SET I = &I. + 1 END /* ------------- ADD ADDITIONAL LIBRARIES IF CLIST IS DDNAME ------- */ /* ------------- BASED ON A PRODUCTION JOB AHIV2B69 1986/01/21 ------- */ SET HRC = &RCX IF &ALL ^= ALL THEN DO IF &DDNAMEX = CLIST THEN DO SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.TSOCLIST) END END IF &ALL = ALL THEN DO IF &DDNAMEX = PANELS THEN DO /* ISPPLIB */ SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.ISPPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.V2R1M2.ISRPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.V2R1M2.ISPPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.ISFPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.ISSCO.TAG60.IVISPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(DMS70.ISPPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.SGIMPNL0) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.SBLSPNL0) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.IOF.REL5.ISPPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.APEX.SPF) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.DB2.ISPPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.ICQPLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.QMF.DSQPLIBE) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.HRFPANL) END IF &DDNAMEX = MESSAGE THEN DO /* ISPMLIB */ SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.QMF.DSQMLIBE) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.V2R1M2.ISRMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.V2R1M2.ISPMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.ISSCO.TAG60.IVISMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(DMS70.ISPMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.ISPMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.SGIMMSG0) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.SBLSMSG0) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.IOF.REL5.ISPMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.DB2.ISPMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.ICQMLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.HRFMSG) END IF &DDNAMEX = SKELETON THEN DO /*ISPSLIB*/ SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.QMF.DSQSLIBE) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.ISPSLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.V2R1M2.ISRSLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.V2R1M2.ISPSLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.ISSCO.TAG60.IVISSLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(DMS70.ISPSLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.SGIMPRC0) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.ICQSLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.HRFSKEL) END IF &DDNAMEX = CLIST THEN DO /* SYSPROC */ SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.V2R1M2VB.ISRCLIB) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.TSOCLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.IPCS.CLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(DB2PROD.REBLK.CLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS6.ISSCO.TAG60.CLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.ICQADMIN.CLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.ICQUSER.CLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(TECH.SMGR.CLIST) SET RCX = &RCX + 1 SET XDSN&RCX = &STR(SYS1.QMF120VB.DSQCLSTE) END END SKIPDD: SET JJ = 0&JJ + 0 /* ------------- ADD ADDITIONAL LIBRARIES IF DD1() DD2() ETC. USED- */ SET DRC = &RCX SET J = 0 DO WHILE &J <= 10 SET DSN = &STR(&&DSN&J) IF &SUBSTR(1:1,&STR(&&DSN&J)) = &STR(') THEN DO SET DSN = &SUBSTR(2:&EVAL(&LENGTH(&DSN)-1),&STR(&DSN)) END IF &STR(&DSN) ^= &STR() THEN DO SET RCX = &RCX + 1 SET XDSN&RCX = &STR(&DSN) END SET J = &J + 1 END /* ---- HAVE OBTAINED ALL DSNAMES NOW DO CHECKING------------------ */ /* ---- UTILIZING CODE ESSENTIALLY BORROWED FROM THE BROWSE CLIST - */ SET I = 1 IF &EVAL(&RCX) = &EVAL(0) THEN DO WRITE &STR() WRITE &STR() WRITE DDNAME OF "&DDNAME." DOES NOT EXIST + USE CORRECT FORM AS BELOW WRITE ===> TSO PDSDD DDNAME MEMBERNAME <--- FORMAT WRITE ===> TSO PDSDD CLIST|MESSAGE|PANELS|PROFILE|SKELETON+ HELP &MEMBER. WRITE ===> TSO PDSDD SYSPROC|ISPMLIB|ISPPLIB|ISPTLIB|ISPSLIB+ SYSHELP &MEMBER. WRITE ===> TSO PDSDD SYSPROC CLIST (ALL) END DO WHILE &I <= &RCX. SET RDSN = '&STR(&&XDSN&I)' SET DSN = '&STR(&&XDSN&I(&MEMBER.))' IF &MULTIMEM. = 0 THEN + SET CHK = &STR(&SYSDSN(&DSN)) ELSE SET CHK = &STR(&SYSDSN(&RDSN)) SET CHK&I = &STR(&CHK) SET CC1 = &LASTCC IF &STR(&CHK.) = OK THEN DO /* ------- MAKE AVAILABLE TO OTHER CLISTS --------*/ ISPEXEC VPUT DSN SHARED ISPEXEC VPUT RDSN SHARED /* ------- TRAP SYSOUT FOR RACF CHECKING ---------*/ SET SYSOUTTRAP = 100 LD DATASET(&RDSN) SET SYSOUTTRAP = 0 SET N = &SYSOUTLINE IF &SUBSTR(1:3,&STR(&SYSOUTLINE1.) ) = ICH THEN - IF &SUBSTR(1:8,&STR(&SYSOUTLINE1.) ) ^= ICH35003 + THEN DO SET &ZEDSMSG = &STR(NOT AUTHORIZED) SET &ZEDLMSG = &STR(&SYSOUTLINE1.) &STR(-- HIT + ENTER NOT PFK-3) ISPEXEC SETMSG MSG(ISRZ000) WRITE &ZEDLMSG. SET CHK&I = &STR(&DSN NOT AUTHORIZED TO RACF -- ) GOTO BYBROW END /* ------- DATASET EXISTS AND RACF S/B HAPPY ------*/ IF &I <= &HRC THEN DO /* CHECK HI-WATER MARK */ SET VSTSRVTI = &STR(&DSN.) ISPEXEC VPUT (VSTSRVTI) SHARED SET DSNDESC = &STR(TSO CLIST -- PDSDD &DDNAME + &MEMBER &ALL) ISPEXEC VPUT (DSNDESC) SHARED /* ------- MAKE AVAILABLE TO OTHER CLISTS --------*/ ISPEXEC VPUT DSN SHARED ISPEXEC VPUT RDSN SHARED IF &MULTIMEM ^= 0 THEN ISPEXEC CONTROL ERRORS RETURN IF NB ^= &NB THEN + IF EDIT ^= &EDIT + THEN ISPEXEC BROWSE DATASET(&STR(&DSN.)) PANEL(SYSBROB2) ELSE ISPEXEC EDIT DATASET(&STR(&DSN.)) END BYBROW: SET KK = 0 END IF &STR(&&CHK&I) = THEN - SET CHK&EVAL(&I) = &STR(&CHK) /* SET CHK&EVAL(&I) = &STR(&CHK) SET I = &I + 1 END /* ---------------------------------------------------------------- */ SET RDSN = ISPEXEC VPUT RDSN SHARED SET DSN = ISPEXEC VPUT DSN SHARED SET VSTSRVTI = ISPEXEC VPUT (VSTSRVTI) SHARED /* -------------------------------------------------------------- */ SET I = 1 IF &STR(&DDNAME) ^= &STR(&DDNAMEX) THEN DO WRITE SUMMARY ----------------- PDSDD &STR(&DDNAME) + &MEMBER &ALL &NB DSN1() DSN2() WRITE ENTERED AS ----===> TSO PDSDD &STR(&DDNAMEX) + &MEMBER &ALL &NB END ELSE WRITE SUMMARY -------- ===> TSO PDSDD &DDNAME &MEMBER &ALL &NB WRITE AS DETERMINED &SYSDATE. &SYSTIME. + FOR &SYSUID. USING PROC=&SYSPROC. SET STR44 = &STR(............................................) DO WHILE &I <= &RCX IF &I = &EVAL(&HRC + 1) | &I = &EVAL(&DRC + 1) THEN DO IF &I = &EVAL(&DRC + 1) THEN - WRITE ------------ NO BROWSE BELOW THIS LINE + -- DSN1(&DSN1) DSN2() ETC. ELSE WRITE ------------ NO BROWSE BELOW THIS LINE + -- FOR DATASETS IN COMBINED LIBRARIES END SET DSN = '&STR(&&XDSN&I(&MEMBER.))' SET CHK = &STR(&&CHK&I) IF &I < 10 THEN WRITE &STR(0&I) + &SUBSTR(1:44,&STR(&STR(&DSN) &STR(&STR44))) &CHK. ELSE WRITE &STR(&I) + &SUBSTR(1:44,&STR(&STR(&DSN) &STR(&STR44))) &CHK. SET I = &I + 1 END SET DSN = SET XDSN = ISPEXEC VPUT DSN SHARED ISPEXEC VPUT RDSN SHARED /* ----+++ */ /* NOTES THE CLISTS "CLIST" AND "PANELS" WILL WORK FASTER THAN THE /* PDSDD CLIST HOWEVER THE FASTER CLISTS SPECIFY WHICH DSNAMES ARE TO /* BE USED, THE LIST OF DSNAMES CAN BE UPDATED WITH THE HELP OF THE /* CLIST @STRAPD /* E.G. ==> @STRAPD SYSPROC WHERE SYSPROC IS THE DDNAME