ISREDIT MACRO (TOK1) /* PURPOSE: EDIT DATASET('&SYSUID..&TOK..LIST) MACRO(DUADD) /* CONTRIBUTED: F. DAVID MCRITCHIE 1987/03/06 /* USER CONTACT: F. DAVID MCRITCHIE /* CODE MAINT.: SYSTECH GROUP SET DSNAME = &STR(&SYSUID..&TOK1..LIST) /* CLIST IS PATTERNED ON THE $EDIT CLIST /**************************************************************** /* A COMPLETE DSNAME MUST BE PROVIDED /* -- CAN BE ENCLOSED IN QUOTES, IF YOU SO WISH. /* -- MEMBERNAME MAY BE INCLUDED AS PART OF DSNAME. /* -- WILL NOT PREFIX THE USERID TO THE DSNAME. /***************************************************************** /* ----------- INSURE DSNAME IS SURROUNDED BY QUOTES AND ... + ---*/ /* ----------- CREATE RDSNAME (WITHOUT MEMBERNAME) TO CHECK + RACF ---------*/ SET LP = &STR(( LPL: SET L = 0&L + 1 IF &EVAL(&L) > &EVAL(&LENGTH(&DSNAME.)) THEN DO SET L = 0 GOTO LPLE END IF &SUBSTR(&L.:&L.,&STR(&DSNAME.)) = &STR(&LP.) THEN GOTO + LPLE GOTO LPL LPLE: - IF &SUBSTR(1:1,&DSNAME.) ^= &STR(') THEN DO SET DSNAME = '&DSNAME.' IF &EVAL(&L) = &EVAL(0) THEN SET RDSNAME = &DSNAME ELSE SET RDSNAME = &SUBSTR(1:&L.,&DSNAME)&STR(') END ELSE DO IF &EVAL(&L) = &EVAL(0) THEN SET RDSNAME = &DSNAME. ELSE SET RDSNAME = + &SUBSTR(1:&EVAL(&L.-1),&STR(&DSNAME.))&STR(') END /* ----------- CHECK FOR EXISTENCE OF THE DATASET ----*/ SET CHK = &STR(&SYSDSN(&DSNAME.) SET CC1 = &LASTCC IF &STR(&CHK.) = OK THEN DO /* ------- MAKE AVAILABLE TO OTHER CLISTS --------*/ ISPEXEC VPUT DSNAME SHARED ISPEXEC VPUT RDSNAME SHARED /* ------- TRAP SYSOUT FOR RACF CHECKING ---------*/ SET SYSOUTTRAP = 100 LD DATASET(&RDSNAME.) 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) EXIT CODE(12) END /* ------- DATASET EXISTS AND RACF S/B HAPPY ------*/ ISPEXEC EDIT DATASET(&DSNAME.) MACRO(DUADD) EXIT CODE(0) END /* ----------- DATASET DOES NOT EXIST ----------------*/ WRITE &DSNAME. &STR(&CHK.) SET &ZEDSMSG = &STR(INVALID DSN) SET &ZEDLMSG = &STR(FAILED -- &CHK. -- &DSNAME.) ISPEXEC SETMSG MSG(ISRZ000) WRITE TSO $EDIT FAILED FOR DSNAME=&DSNAME. DUE TO + "&STR(&CHK.)" WRITE AN EXAMPLE WITH A CORRECT SYNTAX IS ===> TSO $EDIT + &SYSUID..LIBR.CNTL WRITE TSO $EDIT FAILED FOR DSNAME=&DSNAME. DUE TO + "&STR(&CHK.)" EXIT CODE(12)