CONTROL ASIS /* PURPOSE: SHOW DIRECTORY NAMES FOR EVERY MEMBER OF THE PDS /* BEGIN EDITED, OR IF NO DSNAME INCLUDED, FOR DSN IF IT /* IS /* CONTRIBUTED: F. DAVID MCRITCHIE 1985/12/04 (AHC) /* USER CONTACT: F. DAVID MCRITCHIE /* CODE MAINT.: SYSTECH GROUP /* ASSOCIATED CLISTS: @DIREDIT, @DIRPARM /************************************************************** /* DOCUMENTED IS03.SHARE.TEXT(@DIR) /* EXAMPLES: ==> @DIR DEFAULT IS LIBRARY IN EDIT /* ==> @DIR IS03.SHARE.CNTL /* ==> @DIR IS03.SHARE.TEXT 1986/01/01 UPDATED ON/AFTER /************************************************************** /* ADDING DIRECTORY ENTRIES TO END OF MEMBER IN EDIT /* ==> @DIR LISTMEM /**************************************************************** /* IF THIS MACRO CLIST TERMINATES DUE TO STRANGE MEMBERNAMES *** /* LIKE ") FCCARQ" YOU MAY TRY USING A BATCH JOB INSTEAD *** /* // EXEC DIRLIST,SYSOUT=V,LIB='IMSVS.FORMAT' *** /**************************************************************** /* DSN CAN BE PROVIDED WITH OR WITHOUT QUOTES /* -- WILL NOT PREFIX THE USERID TO THE DSNAME. /* (OMITTED) DISPLAY OF MEMBERS IN LIBRARY CURR. IN ISPF /* EDIT /* USER (OMITTED) DISPLAY ALL MEMBERS IN LIBRARY /* DISPLAY ONLY MEMBERS UPDATED BY THIS USERID /* * DISPLAY ALL MEMBERS AND UPDATING USERID /* INDEX() SELECTION CRITERIA BASED ON FINDING STRING WITHIN /* MASK() SAME AS USED BY PGM=IZ2019 /* A-Z 0-9 MUST BE AN EXACT MATCH TO CORRESPONDING POSITION /* OF MEMBERNAME /* * MUST BE BLANK IN CORRESPONDING POSITION OF /* OF MEMBERNAME /* % MUST BE ALPHA IN CORRESPONDING POSITION OF /* OF MEMBERNAME /* MUST BE 0-9 (NUMERIC DIGIT) IN CORRESPONDING /* POSITION OF MEMBERNAME /* - IGNORE CHECKING /* (BLANK) IGNORE CHECKING /* ONAFTER 1986/01/01 RESTRICT DISPLAY TO UPDATED ON/AFTER 1986/01/01 /* LISTMEM ADD SELECTED MEMBER LINES TO END OF MEMBER /* IN EDIT /* AUTOMATIC WITH ALIGN,$BUILD$, OR $BUILD$T /* BEGIN() LISTMEM DIRECTORY STRING PREFIXED BY CONTENT /* COL() IF MEMBERNAME ALREADY EXISTS IN THE CURRENT /* MEMBER, IN THIS /* COLUMN THEN DIRECTORY STRING NOT APPENDED /* TO MEMBER. /* RECS(RR) COLUMN THAT NUMBER OF RECORDS WILL GO INTO /* IF COL(NN) HITS /* REQUIRES SIX BLANK COL AT COL RR, LAST /* COLUMN REMAINS BLANK /* FOUND(FF) REQUIRES ONE BLANK COL AT COL FF, WILL /* RECEIVE "*" IF FOUND -- DEFAULT AST(*) /* ALIGN CREATES/MODIFIES BEGIN() SO THAT RESULT /* MATCHES COL() CHOICE /* FROM1:TO2 LIMIT SELECTIONS TO MEMBERS NAMED FROM1 THRU /* TO2. SEE ALSO FROM() AND TO(). /* FROM1: *INVALID*, USE FROM1:Z, OR USE MASK(FROM1) /* FROM() LIMIT SELECTIONS TO MEMBERS NAMED FROM(XXX) /* OR LATER /* TO() LIMIT SELECTIONS TO MEMBERS NAMED TO(XXX) /* OR EARLIER. ALSO SEE FORM FROM:TO /* LIST SAME AS LIST(1), SELECT FROM PRE-SORTED /* LIST AT COLUMN 1 /* LIST() MEMBER IN EDIT SHOULD BE A PRE-SORTED LIST /* OF MEMBERS /* WANTED AND WHOSE MEMBER NAMES BEGIN IN /* COLUMN LIST(NN). /* FIND() SELECTION MUST BE AMONG MEMBERS LISTED IN /* COLUMN FIND(NN). MUST BE FOUND AS A WORD. /* SLOWER THAN LIST() OPTION BUT MAY BE EASIER /* TO USE. /* FINDMEM() SELECTION MUST BE AMONG MEMBERS LISTED IN /* COLUMN FIND(NN). MAY GET A HIT IF MEMBERNAME /* LISTED IS LONGER THAN ACTUAL MEMBERNAME. /* TO USE. /* TEXT USED WITH FIND() -- TEXT OF LINE STORED AS */ /* @DIRTEXT FOR USE OF MACRO(). */ /* IMAC USE IF @DIR WILL BE AN INITIAL MACRO --DWIDTH*/ /* NUSER(XXX) REASSIGN SELECTED MEMBER(S) TO A NEW USERID. /* $NDU UPDATE LINE_AFTER WITH @DIRNOTE FROM MACRO,X-*/ /* NDU DO NOT UPDATE DATES, USE X-USERID FOR USERID /* STET DO NOT UPDATE DATES, OR USERID /* FIND() SELECTION MUST NOT BE AMONG MEMBERS LISTED IN /* COLUMN XFIND(NN). WORD SEARCH IS USED. /* FINDMEM(), XFIND(), FIND() ARE MUTUALY EXCLUS. /* L8 FORCE $NAME$ SUBSTITUTIONS TO THE FULL 8 CHARACTERS /* OF THE PDS MEMBERNAME. /* PATTERN(XXX) COPY INDICATED PATTERN AFTER LAST CARD, THEN /* CHANGE $NAME$ TO MEMBERNAME ON THE ADDED CARDS. /* DOITMAC() -OBSOLETE USE MACRO()-- INVOKE AN EDIT /* CLIST FOR EACH SELECTED MEMBER /* CMD(COPYAFT) COPY SELECTED MEMBER AFTER .ZLAST /* MACRO() INVOKE AN EDIT CLIST FOR EACH SELECTED MEMBER /* NX RESTRICT COL() FOUND TO NX LINES /* SPECIAL AFTER INITIAL PREFIX "&MEMBER.:^^" FOR /* IS03.SHARE.CNTL(@INDEX) /* $BUILD$ USE ZLMDATE ZLMTIME ZLUSER /* ZLCNORC AFTER MEMBERNAME /* $BUILD$80 USE ZLMDATE ZLMTIME ZLUSER ZLCNORC /* ....ZLUSER.... ZLUSER AFTER MEMBERNAME /* $BUILD$T USE ZLMDATE ZLMTIME ZLUSER ZLCNORC ZLUSER /* ....... ZLUSER AFTER MEMBERNAME /* ..DEFAULT.. MEMBER VV.MM LCDATE LMDATE MTIME /* LCNORC LINORC LMNORC LUSER /* ..DEFAULT.. AFIXNC78 01.02 1985/12/27 1985/12/27 17:32 /* 24 23 0 IS03.... /***************************************************************** /** NO CHANGES TO MEMBER IN EDIT -- REASON THIS IS AN EDIT MACRO /** IS SO THAT THE DATAID CAN BE OBTAINED /** -- SO THAT DSNAME NEED NOT BE SPECIFIED. /***************************************************************** ISREDIT MACRO (TOK1,TOK2,TOK3,TOK4,TOK5,TOK6,TOK7,TOK8,TOK9,TOK10,+ TOK11,TOK12,TOK13,TOK14,TOK15,TOK16,TOK17,TOK18,TOK19,TOK20,+ TOK21,TOK22,TOK23,TOK24,TOK25,TOK26,TOK27,TOK28,TOK29,TOK30,+ TOK31,TOK32,TOK33,TOK34,TOK35,TOK36,TOK37,TOK38,TOK39,TOK40,+ TOK41,TOK42,TOK43,TOK44,TOK45,TOK46,TOK47,TOK48) SET AST = &STR(*) SET B40 = &STR( ) SET B40 = &STR( ) SET BLANK80 = &STR(&B40.&B40.) SET USERLIST = &STR() SET NEGU = 0 SET MASKMAX = 0 SET U = 0 SET I = 1 ISREDIT (DMEMBER) = MEMBER ISPEXEC VGET (@DIRPARM) SHARED SET @DIRSAVE = &STR(&@DIRPARM) DO WHILE &I <= 48 SET TOKEN = &&TOK&I SET TOKEN = &STR(&SYSCAPS(&TOKEN)) SET ARGSL = &STR(&ARGS.) SET ARGS = &STR(&ARGS. &TOKEN.) IF &STR(&TOKEN) = &STR() THEN GOTO END_TOK /* SET JUNK = &SUBSTR(3,&STR(&TOKEN) ) IF DSN = &STR(&TOKEN) THEN DO WRITE SUPPLY FULLY QUALIFIED DATASET NAME WITHOUT QUOTES READ DSN IF &STR() = &DSN. THEN EXIT CODE(12) GOTO NXT_TOK END IF &SUBSTR(3,&STR(&TOKEN )) = &STR(/) THEN DO IF &STR(&ONAFTER) = &STR() THEN DO SET ONAFTER = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TODATE) = &STR() THEN DO SET TODATE = &STR(&TOKEN) GOTO NXT_TOK END SET &ZEDSMSG = &STR(3RD DATE????) SET &ZEDLMSG = &STR(CAN'T HANDLE "&TOKEN." IN CONTEXT OF + "&ONAFTER." THRU "&TODATE.") ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END SET J = 1 DO WHILE &J <= 11 IF &SUBSTR(&J,&STR(&TOKEN.) ) = &STR(.) OR + &SUBSTR(&J,&STR(&TOKEN.) ) = &STR(') THEN DO SET DSN = &TOKEN SET ARG = &STR(&ARGL.) GOTO NXT_TOK END SET J = &J + 1 END IF &STR(&TOKEN) = HELP THEN DO SET HELP = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = TEXT THEN DO SET TEXT = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = LIB THEN DO SET LIB = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = IMAC THEN DO SET IMAC = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = L8 THEN DO SET L8 = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = NX THEN DO SET NX = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = NDU THEN DO SET NDU = &STR(&TOKEN) GOTO NXT_TOK END IF &STR(&TOKEN) = STET THEN DO SET NDU = NDU SET STET = STET GOTO NXT_TOK END IF &STR(&TOKEN) = $NDU THEN DO SET NDU = NDU SET $NDU = $NDU /* SORT OF A LISTMEM OPTION */ GOTO NXT_TOK END IF &STR(&TOKEN) = $BUILD$ | &STR(&TOKEN) = $BUILD$80 | + &STR(&TOKEN) = $BUILD$T THEN DO SET $BUILD$ = &STR(&TOKEN) IF $BUILD$80 = &STR(&TOKEN) THEN DO SET $BUILD$ = $BUILD$T SET $BUILD$80 = $BUILD$80 END SET LISTMEM = LISTMEM /* IMPLIED */ GOTO NXT_TOK END /************* FROM(MEMBER1) TO(MEMBER2) INDEX(STRING) ***/ SET LP = &STR(( SET RP = &STR()) SET T1 = &SYSINDEX(&STR(:),&NRSTR(&TOKEN.) IF &T1 > 1 THEN DO SET FROM = &SUBSTR(1:&EVAL(&T1.-1),&STR(&TOKEN.)) SET TO = &SUBSTR(&EVAL(&T1.+1):&LENGTH(&STR(&TOKEN.)),+ &STR(&TOKEN.)) GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(INDEX&STR(&LP)) + THEN DO SET INDEX = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN.) ) SET T1 = &SYSINDEX(&STR(-),&NRSTR(&INDEX.)) IF &T1 > 1 THEN DO SET INDEX = &SUBSTR(1:&EVAL(&T1.-1),&STR(&INDEX.)) SET INDEX = &NRSTR(&INDEX. ) END GOTO NXT_TOK END IF &SUBSTR(1:5,&STR(&TOKEN) ) = &STR(FROM&STR(&LP)) THEN DO SET FROM = &SUBSTR(6:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF &SUBSTR(1:3,&STR(&TOKEN) ) = &STR(TO&STR(&LP)) THEN DO SET TO = &SUBSTR(4:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(BEGIN&STR(&LP)) + THEN DO SET BEGIN = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF &SUBSTR(1:4,&STR(&TOKEN) ) = &STR(COL&STR(&LP)) THEN DO SET COL = &SUBSTR(5:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET COL = &EVAL(&COL) GOTO NXT_TOK END IF &SUBSTR(1:4,&STR(&TOKEN) ) = &STR(AST&STR(&LP)) THEN DO SET AST = &SUBSTR(5:5,&STR(&TOKEN) ) /* DO NOT USE AS A PATTERN BECAUSE ONLY ONE COLUMN IS USED*/ GOTO NXT_TOK END IF &SUBSTR(1:5,&STR(&TOKEN) ) = &STR(RECS&STR(&LP)) THEN DO SET RECS = &SUBSTR(6:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET RECS = &EVAL(&RECS) GOTO NXT_TOK END IF &SUBSTR(1:5,&STR(&TOKEN) ) = &STR(MASK&STR(&LP)) THEN DO /* MUST USE MASK(--A) AS MASK( A) WILL NOT WORK */ SET MASKMAX = &MASKMAX + 1 SET MASK = &SUBSTR(6:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET MASK = &SUBSTR(1:8,&STR(&MASK. ) SET MASK&MASKMAX = &STR(&MASK.) GOTO NXT_TOK END /* ----- BEGIN -- LIST(NN) 1987/06/01 IF &STR(&TOKEN) = LIST THEN SET TOKEN = LIST(1) IF &SUBSTR(1:5,&STR(&TOKEN) ) = &STR(LIST&STR(&LP)) THEN DO SET LISTP = &SUBSTR(6:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET LISTP = &LISTP + 0 SET LISTP2 = &LISTP + 7 ISREDIT (LISTLAST) = LINENUM .ZLAST GOTO NXT_TOK END IF &SUBSTR(1:5,&STR(&TOKEN) ) = &STR(FIND&STR(&LP)) THEN DO SET FINDP = &SUBSTR(6:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) ISREDIT LABEL .ZLAST = .FINDPL GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(NUSER&STR(&LP)) THEN DO SET NUSER = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET NUSER = &SUBSTR(1:7,&STR(&NUSER. ) GOTO NXT_TOK END IF &SUBSTR(1:8,&STR(&TOKEN) ) = + &STR(FINDMEM&STR(&LP)) THEN DO SET FINDP = &SUBSTR(9:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET FINDMEM = &FINDP. ISREDIT LABEL .ZLAST = .FINDPL GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(XFIND&STR(&LP)) THEN DO SET FINDP = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET FINDMEM = &FINDP. SET XFIND = &FINDP. ISREDIT LABEL .ZLAST = .FINDPL GOTO NXT_TOK END /* ----- END ---- LIST(NN) 1987/06/01 IF &STR(&TOKEN) = LISTMEM THEN DO SET LISTMEM = LISTMEM GOTO NXT_TOK END IF &SUBSTR(1:5,&STR(&TOKEN.) ) = &STR(VPUT&STR(&LP)) + THEN DO SET @DIRVPUT = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) ISPEXEC VPUT (@DIRVPUT) SHARED GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(FOUND&STR(&LP)) + THEN DO SET FOUND = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(MACRO&STR(&LP)) + THEN DO SET DOITMAC = &SUBSTR(7:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET @DIRPARM = &DOITMAC ISPEXEC VPUT (@DIRPARM) SHARED IF &DOITMAC = @DIREDIT THEN SET SUPPRESS = SUPPRESS GOTO NXT_TOK END IF &SUBSTR(1:6,&STR(&TOKEN) ) = &STR(PANEL&STR(&LP)) + THEN DO SET PANEL = &TOKEN. GOTO NXT_TOK END IF &SUBSTR(1:8,&STR(&TOKEN) ) = &STR(PROFILE&STR(&LP)) + THEN DO SET PROFILE = &TOKEN. GOTO NXT_TOK END /* DOITMAC() STILL INCLUDED BECAUSE WAS DOCUMENTED OTHERWISE + SINCE 1986/05/23 MACRO() IS AVAILABLE IF &SUBSTR(1:8,&STR(&TOKEN) ) = &STR(DOITMAC&STR(&LP)) + THEN DO SET DOITMAC = &SUBSTR(9:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) SET @DIRPARM = &DOITMAC ISPEXEC VPUT (@DIRPARM) SHARED IF &DOITMAC = @DIREDIT THEN SET SUPPRESS = SUPPRESS GOTO NXT_TOK END IF &SUBSTR(1:8,&STR(&TOKEN) ) = &STR(PATTERN&STR(&LP)) + THEN DO SET PATTERN = &SUBSTR(9:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF &SUBSTR(1:7,&STR(&TOKEN) ) = &STR(CMDAFT&STR(&LP)) + THEN DO SET CMDAFT = &SUBSTR(8:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF &SUBSTR(1:4,&STR(&TOKEN) ) = &STR(CMD&STR(&LP)) + THEN DO SET CMD = &SUBSTR(5:&EVAL(&LENGTH(&STR(&TOKEN))-1),+ &STR(&TOKEN) ) GOTO NXT_TOK END IF EDIT = &STR(&TOKEN) THEN DO SET DOITMAC = @DIREDIT SET @DIRPARM = &DOITMAC ISPEXEC VPUT (@DIRPARM) SHARED IF &DOITMAC = @DIREDIT THEN SET SUPPRESS = SUPPRESS GOTO NXT_TOK END IF &STR(&TOKEN) = BROWSE THEN DO SET BROWSE = BROWSE SET DOITMAC = &STR(BROWSE) SET @DIRPARM = &STR(&DOITMAC) ISPEXEC VPUT (@DIRPARM) SHARED SET SUPPRESS = SUPPRESS GOTO NXT_TOK END IF &STR(&TOKEN) = SUPPRESS THEN DO /* DO NOT SHOW DIRECTORY LIST WITH WRITE STATEMENTS*/ SET SUPPRESS = SUPPRESS GOTO NXT_TOK END IF &STR(&TOKEN) = ALIGN THEN DO SET ALIGN = ALIGN SET LISTMEM = LISTMEM GOTO NXT_TOK END /******************************************************/ /** SAMPLE DOITMAC CLIST /** ISREDIT MACRO /** ISREDIT X ALL /** ISREDIT F ALL ' STRING1 ' /** ISREDIT F ALL ' STRING1 ' /** ISREDIT SEEK NX P'-' /** ISREDIT (SEEKSTRS,SEEKLNS) = SEEK_COUNTS /** IF &EVAL(&SEEKSTRS) = 0 THEN ISREDIT CANCEL /** .... YOU REMAIN IN EDIT AND MUST SAVE OR CANCEL /******************************************************** IF &STR(&TOKEN) = &STR(*) THEN DO SET SHOWUSER = SHOWUSER GOTO NXT_TOK END IF &STR(&TOKEN) = NOSHOW THEN DO SET NOSHOW = NOSHOW GOTO NXT_TOK END IF &STR(&TOKEN) = DATE THEN DO SET SHOWDATE = SHOWDATE SET SHOWUSER = SHOWUSER GOTO NXT_TOK END IF &STR(&TOKEN) = &STR(^*) THEN DO SET SHOWBLANK = SHOWBLANK GOTO NXT_TOK END IF &STR(&TOKEN) = &STR(**) | &STR(&TOKEN) = &STR(*^*) THEN DO SET SHOWBLANK = SHOWBLANK SET SHOWDATE = SHOWDATE SET SHOWUSER = SHOWUSER GOTO NXT_TOK END IF &TOKEN = &STR()) THEN DO SET &ZEDSMSG = &STR(LOST PARENTHESIS) SET &ZEDLMSG = BLANKS SEPARATE ALL OPERANDS; THEREFORE + INVALID IN FROM() TO() COL() BEGIN() ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END SET J = 1 + 0 DO WHILE &J <= &LENGTH(&STR(&TOKEN)) IF &J > 8 | &SUBSTR(&J,&STR(&TOKEN.) ) = + &STR(&LP.) THEN DO SET &ZEDSMSG = &STR(PARM? &STR(&TOKEN.)) SET &ZEDLMSG = &STR(PARAMETER UNKNOWN TO @DIR -- + &STR(&TOKEN.) -- NOT A USERID) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END SET J = &J + 1 END SET &USERLIST = &STR(&USERLIST. &TOKEN) SET U = &U + 1 SET USER&U = &STR(&TOKEN) SET USERCX = &STR(USER)&U SET &USERCX = 0 IF &SUBSTR(1,&STR(&TOKEN) ) = &STR(^) THEN SET NEGU = &NEGU + 1 NXT_TOK: - SET I = &I + 1 END END_TOK: SET I = &I /***************************************************************** /************************************************************** IF &FROM. NE &STR() THEN + IF &SUBSTR(1:&LENGTH(&TO.),&FROM. ) > &TO. THEN DO SET &ZEDSMSG = &STR(&FROM.:&TO REVERSED) WRITE &STR(FROM(&FROM.) > TO(&TO.) OR &FROM.+ :&TO. VALUES REVERSED OR INCORRECT) SET &ZEDLMSG = &STR(FROM(&FROM.) > TO(&TO.) OR &FROM.+ :&TO. VALUES REVERSED OR INCORRECT) /* ISPEXEC CONTROL DISPLAY LOCK ISPEXEC SETMSG MSG(ISRZ000) SET @DIRPARM = &STR(&@DIRSAVE) ISPEXEC VPUT (@DIRPARM) SHARED ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END IF $NDU = &$NDU THEN ISREDIT LINE_AFTER .ZL = + DATALINE "=== &SYSDATE. &SYSTIME. @DIR &ARGS =====" IF &STR(&RECS.&FOUND.) ^= &STR() THEN DO SET LISTMEM = LISTMEM IF &STR() = &COL THEN DO SET &ZEDSMSG = &STR(COL&LP.NN&RP.) SET &ZEDLMSG = &STR(COL&LP.NN&RP. MUST BE SPECIFIED WHEN + USING RECS&LP.&RP.|FOUND&LP.&RP.) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END END ISREDIT (LASTLN) = LINENUM .ZLAST /* IF &STR(&TODATE) = THEN SET TODATE = &STR(1999/12/31) IF &NEGU ^= 0 THEN DO IF &NEGU ^= &U THEN DO SET &ZEDSMSG = &STR(^USER AND USER) SET &ZEDLMSG = &STR(CANNOT ASK FOR SPECIFIC USERS AND + REJECT SPECIFIC USERS AT SAME TIME) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(12) END SET SHOWUSER = SHOWUSER SET NEGU = NEGU END SET B25 = &STR( ) IF IMAC NE &IMAC THEN DO ISREDIT (DAR019,DAR030) = DISPLAY_COLS SET LLEN = 0&DAR030 + 1 - 0&DAR019 IF &LLEN < 40 THEN SET LLEN = 72 ISREDIT (DWIDTH) = DATA_WIDTH END ELSE DO SET DWIDTH = 80 SET LLEN = 72 END IF &HELP = HELP THEN IF &STR(&USER) = &STR() THEN DO WRITE HELP REQUESTED FOR @DIR MACRO USED WITHIN ISPF + EDIT MEMBER WRITE DSNAME IS OPTIONAL WILL USE &SYSUID..LIBR.CNTL WRITE USER IS OPTIONAL (ONLY BYTES 1-4 OF ACTUAL USERID + WILL BE COMPARED HOWEVER) WRITE &B &SYSUID. SELECT ONLY THIS + USERID, SHORT FORMAT WRITE &B ^&SYSUID. SELECT ONLY IF NOT THIS + USERID, LONG FORMAT WRITE &B *^&SYSUID. SELECT ONLY IF NOT THIS + USERID, LONG FORMAT PLUS LMOD-DATE WRITE &B * SELECT USERID OR BLANK + USERID, LONG FORMAT WRITE &B ^* | *^* SELECT ONLY BLANK + USERID, SHORT FORMAT WRITE &B (BLANK) IGNORE SELECTION/REJECTION + CHOOSE ALL WRITE MASK() IS OPTIONAL A-Z 0-9 %=ALPHA +=NUMERIC + ^=NON-BLANK .=IGNORE SET DSN = &STR(&SYSUID..LIBR.CNTL) SET USER = &STR(&SYSUID.) SET ONAFTER = &STR(&SYSDATE.) SET ONAFTER = &STR(&SUBSTR(1:3,&ONAFTER)01&SUBSTR(6:8,+ &ONAFTER)) WRITE ONAFTER IS OPTIONAL WILL USE &ONAFTER WRITE AS IF YOU HAD ENTERED ===> @DIR &DSNAME. + &USER. &ONAFTER. <========== WRITE SHOULD ALSO TRY ===> @DIR WRITE AND ===> @DIR * WRITE AND ===> @DIR ^* WRITE AND ===> @DIR ^&SYSUID. END IF &STR(&ALIGN) = ALIGN AND &STR(&BEGIN.) = AND &COL > 1 AND + &COL < 26 THEN DO SET LISTMEM = LISTMEM SET ALIGN = &EVAL(&COL.-1) SET BEGIN = &STR(&BEGIN.&B25.) SET BEGIN = &SUBSTR(1:&ALIGN,&STR(&BEGIN)) END /***************** DSNAME SUPPLIED TO LMINIT **************** IF &STR(&DSN) = &STR() THEN DO /*NO DSN SUPPLIED*/ ISREDIT (DSN) = DATASET SET DSN = '&DSN' SET DSNUSED = 1 END IF &SUBSTR(1:1,&STR(&DSN.) ) ^= &STR(') THEN DO /* ATTEMPT TO + PREFIX USERID*/ SET DSNAME = &STR('&SYSUID..&SYSCAPS(&DSN.)') SET CHK = &STR(&SYSDSN(&DSNAME.) IF &STR(&CHK.) = OK THEN SET DSN = &STR(&DSNAME) END IF LIB = &LIB. THEN DO WRITE PLEASE SUPPLY FULLY QUALIFIED DATASET NAME + FOR DIRECTORY ENTRIES READ DSN WRITE YOUR CHOICE IS "&DSN." END SET DSNAME = &STR(&SYSCAPS(&DSN.)) IF &SUBSTR(1:1,&STR(&DSNAME.) ) ^= &STR(') THEN - SET DSNAME = &STR('&DSNAME.') SET CHK = &STR(&SYSDSN(&DSNAME.) IF &STR(&CHK.) = OK THEN DO ISPEXEC LMINIT DATAID(XCX) DATASET(&STR(&DSNAME)) /* ENQ(SHRW) ORG(PDSORG) -- POSSIBLE ADDITION TO ABOVE*/ END ELSE DO SET &ZEDSMSG = &STR(DSNAME) SET &ZEDLMSG = &STR(&ZEDSMSG.=&DSNAME &CHK.) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(16) END /************************************************************ IF &STR(&USERLIST) ^= &STR() THEN - WRITE UPDATE USER ID MUST MATCH ONE OF THESE <&USERLIST. > IF &STR(&ONAFTER) ^= &STR() THEN - SET ONAFTER2 = &STR(&SUBSTR(7:8,&ONAFTER + )/&SUBSTR(1:5,&STR(&ONAFTER.) )) IF &STR(&TODATE) ^= &STR() THEN - SET TODATE2 = &STR(&SUBSTR(7:8,&TODATE + )/&SUBSTR(1:5,&STR(&TODATE.) )) IF &SHOWDATE = SHOWDATE THEN DO IF &STR(&USER) = &STR() THEN DO SET USER = &STR(%****) /* FIRST TIME ONLY ??? */ END SET USER = &SUBSTR(2:&EVAL(&LENGTH(&STR(&USER))),+ &STR(&USER) ) END IF LISTMEM = &LISTMEM THEN DO ISREDIT (VAR037) = LINENUM .ZLAST IF &VAR037 = 000000 THEN ISREDIT LINE_AFTER 0 = " " END ELSE DO IF &STR(&COL.) = &STR() THEN ISREDIT LINE_AFTER 0 = + NOTELINE "LISTMEM OPTION NOT USED, OR MISSING" END /********** @DIR WILL SAVE CURRENT PFKEYS -- USER MAY CHANGE + DURING INVOCATION BUT WILL BE RESET ISPEXEC VGET (ZPF01 ZPF02 ZPF03 ZPF04 ZPF05 ZPF06 ZPF07 ZPF08 + ZPF09 ZPF10 ZPF11 ZPF12) PROFILE ISPEXEC VGET (ZPF13 ZPF14 ZPF15 ZPF16 ZPF17 ZPF18 ZPF19 ZPF20 + ZPF21 ZPF22 ZPF23 ZPF24) PROFILE /* -- */ ISPEXEC LMOPEN DATAID(&XCX) OPTION(INPUT) /* OPEN DATAID + FOR INPUT */ SET LMRC = &LASTCC /* -- CONTROL NOLIST NOCONLIST NOSYMLIST SET MEMBER = &FROM. DO WHILE (&LMRC = 0 ) IF &LMRC = 0 THEN DO /* IF RETURNED A MEMBERNAME*/ ISPEXEC LMMLIST DATAID(&XCX) - OPTION(LIST) MEMBER(MEMBER) STATS(YES) /* BUILD MEMBERLIST AND ... /* RETURN + NEXT MEMBER NAME */ SET &LMRC = &LASTCC /*CAPTURE RETURN CODE */ END IF &LMRC = 0 THEN DO /* IF RETURNED A MEMBERNAME */ SET CNTT = 0&CNTT + 1 /* CONTAINED IN FILE */ /* ----- BEGIN -- LIST(NN) 1987/06/01 IF &STR(&LISTP) ^= &STR() THEN DO LPCHK: - IF XX&STR(&LISTPMEM) < XX&STR(&MEMBER) THEN DO SET LISTPL = 0&LISTPL + 1 IF &LISTPL > &LISTLAST THEN SET LISTPMEM = + &STR(0Z000000) ELSE DO ISREDIT (VAR036) = LINE &LISTPL. IF &LENGTH(&STR(&VAR036)) < &LISTP THEN + GOTO LPCHK SET LISTPP = &STR(&LISTPMEM) SET LISTPMEM = + &SUBSTR(&LISTP.:&LISTP2.,+ &STR(&VAR036) ) IF &STR(&LISTPMEM) < &STR(&LISTPP) THEN DO SET &ZEDSMSG = &STR(&LISTPMEM. + < &LISTPP.) SET &ZEDLMSG = &STR(&ZEDSMSG. -- THIS + LIST NOT SORTED ON COLUMNS &LISTP. + &LISTP2.) ISPEXEC SETMSG MSG(ISRZ000) EXIT CODE(16) END GOTO LPCHK END END IF XX&STR(&LISTPMEM) ^= + XX&STR(&MEMBER) THEN GOTO + IGNORE END IF &STR(&FINDP) ^= &STR() THEN DO IF &STR(&FINDMEM.) ^= &STR() THEN DO IF &STR(&XFIND.) ^= &STR() THEN DO SET FINDMEM = &MEMBER. ISREDIT FIND FIRST &NX &FINDP .ZFIRST + .FINDPL WORD "&FINDMEM." IF &LASTCC = 0 THEN GOTO IGNORE END ELSE DO ISREDIT FIND FIRST &NX &FINDP .ZFIRST + .FINDPL WORD "&FINDMEM." IF &LASTCC ^= 0 THEN GOTO IGNORE /* ISREDIT (@DIRTEXT) = LINE .ZCSR /* ISPEXEC VPUT (@DIRTEXT) SHARED /* WRITE &@DIRTEXT. = @DIR WRITE END END ELSE DO SET MEMBER = &MEMBER. /* 1993/09/30 */ ISREDIT FIND FIRST &NX &FINDP .ZFIRST .FINDPL + WORD "&MEMBER." /* ADDED WORD 1993/09/30*/ IF &LASTCC ^= 0 THEN GOTO IGNORE ISREDIT (@DIRTEXT) = LINE .ZCSR ISPEXEC VPUT (@DIRTEXT) SHARED /* WRITE &@DIRTEXT. = @DIR WRITE22 END END /* ----- END -- LIST(NN) 1987/06/01 IF &STR(&FROM) ^= &STR() THEN - IF &SUBSTR(1:&LENGTH(&FROM),&MEMBER ) < + &STR(&FROM.) THEN GOTO IGNORE IF &STR(&TO) ^= &STR() THEN - IF &SUBSTR(1:&LENGTH(&TO),&MEMBER ) > &TO + THEN GOTO IGNORE SET CNTR = 0&CNTR + 1 /* WITHIN MEMBERNAME RANGE IF &STR(&INDEX.) ^= &STR() THEN DO SET T1 = &SYSINDEX(&NRSTR(&INDEX.),&STR(&MEMBER.)) IF &EVAL(&T1.) ^= &EVAL(0) THEN GOTO MASKOK GOTO IGNORE END IF &MASKMAX > 0 THEN DO SET T1 = 1 MASKCHKA: SET MASK = &STR(&&MASK&T1) SET MASK = &STR(&MASK ) SET P1 = 1 MASKTSTP: SET X1 = &SUBSTR(&P1:&P1,&STR(&MASK.) ) SET X2 = &SUBSTR(&P1:&P1,&STR(&MEMBER.) ) IF &STR(&X1) = &STR(&X2) THEN GOTO NXTMASKP IF &STR(&X1) = &STR( ) OR &STR(&X1) = &STR(-) + THEN GOTO NXTMASKP IF &STR(&X1) = &STR(*) AND &STR(&X2) = &STR( ) + THEN GOTO NXTMASKP IF &STR(&X1) = &STR(+) AND &STR(&X2) >= &STR(0) + THEN GOTO NXTMASKP IF &STR(&X1) = &STR(%) THEN DO IF &STR(&X2) > &STR(Z) THEN GOTO MASKTNXT IF &STR(&X2) = &STR(@) | &STR(&X2) = &STR(#) + | &STR(&X2) = &STR($) THEN GOTO NXTMASKP IF &STR(&X2) < &STR(A) THEN GOTO MASKTNXT GOTO NXTMASKP END IF &STR(&X1) ^= &STR(^) THEN GOTO MASKTNXT NXTMASKP: SET P1 = &P1 + 1 IF &P1 < 9 THEN GOTO MASKTSTP GOTO MASKOK MASKTNXT: SET T1 = &T1 + 1 IF &EVAL(&T1) > &EVAL(&MASKMAX) THEN GOTO IGNORE GOTO MASKCHKA END MASKOK: - IF &U = 0 THEN GOTO OKUSER IF &STR(&ZLUSER.) = &STR() THEN DO IF SHOWBLANK = &SHOWBLANK THEN DO SET CNTU = 0&CNTU + 1 GOTO OKUSER END GOTO IGNORE END SET I = 1 DO WHILE &I <= &U SET USERX = &&USER&I SET USERX = &USERX SET USERCX = &&USERC&I SET USERCX = &USERX IF NEGU = &NEGU THEN DO IF &SUBSTR(2:5,&STR(&USERX.) ) = + &SUBSTR(1:4,&STR(&ZLUSER. ) THEN DO GOTO IGNORE END GOTO NREJECTD END IF &SUBSTR(1:4,&STR(&USERX) ) = + &SUBSTR(1:4,&STR(&ZLUSER. ) THEN DO /* DOESN'T WORK SET USERC&I = &EVAL(&&USERC&I) + 1 GOTO OKUSER END NREJECTD: - SET I = &I + 1 END IF &NEGU = NEGU THEN GOTO OKUSER GOTO IGNORE OKUSER: IF &STR(&ONAFTER2) ^= &STR() THEN DO IF &STR(&ZLMDATE.) < &STR(&ONAFTER2.) THEN DO SET CNTB = 0&CNTB + 1 GOTO IGNORE END END IF &STR(&TODATE2) ^= &STR() THEN DO IF &STR(&ZLMDATE.) > &STR(&TODATE2.) THEN DO SET CNTA = 0&CNTA + 1 GOTO IGNORE END END IF &STR(&PATTERN.) ^= &STR() THEN DO ISREDIT (VAR037) = LINENUM .ZLAST SET VAR037 = &VAR037 + 1 ISREDIT COPY &PATTERN AFTER .ZL ISREDIT LABEL &VAR037 = .AA IF &STR(&L8.) = &STR(L8) THEN - SET MEMBRRR = &STR(&MEMBER.) ELSE SET MEMBRRR = &MEMBER. ISREDIT C ALL .AA .ZL '$NAME$' '&MEMBRRR.' GOTO IGNORE END IF NOSHOW = &NOSHOW THEN GOTO IGNORE /* CONTROL NOLIST NOCONLIST NOSYMLIST IF &STR(&CMD.) ^= &STR() THEN DO IF &STR(&CMD.) = COPYAFT THEN DO IF &MEMBER ^= &DMEMBER. THEN + ISREDIT COPY &MEMBER. AFTER .ZLAST ELSE WRITE (&MEMBER. NOT COPIED) END ELSE WRITE FUTURE -- ISREDIT &CMD. &MEMBER. END IF &STR(&CMDAFT.) ^= &STR() THEN DO WRITE FUTURE -- ISREDIT &CMDAFT. &MEMBER. .ZLAST END IF LISTMEM = &LISTMEM THEN DO SET MP03 = 0&MP03. + 1 /* PROCESS CNT -- + SAME USER */ /* JUST TESTED FOR A MATCHING USERID IN STATS + TO CONTINUE PROCESSING*/ IF $BUILD$ = &$BUILD$ | $BUILD$T = &$BUILD$ + THEN DO SET XYZ = &STR(&MEMBER. &ZLMDATE. &ZLMTIME. + &ZLCNORC.) IF $BUILD$T = &$BUILD$ THEN DO IF $BUILD$80 = &$BUILD$80 - THEN SET XYZ = &STR(&XYZ. + ....&SUBSTR(1:4,&ZLUSER. )&STR(.) ELSE SET XYZ = &STR(&XYZ. &ZLUSER. ) IF &STR(&DWIDTH.) > 131 THEN DO SET XYZ = &STR(&XYZ.-------------------+ --------------------------------- + &ZLUSER.-----) SET XYZ = &STR(&XYZ.XXX + &ZLCDATE.--&ZLUSER.) END ELSE SET XYZ = + &STR(&XYZ...............................+ &ZLUSER.) END END ELSE DO SET XYZ = &STR(&MEMBER &ZLVERS..&ZLMOD. + &ZLCDATE &ZLMDATE.) SET XYZ = &STR(&XYZ. &ZLMTIME. &ZLCNORC + &ZLINORC. &ZLMNORC.) SET XYZ = &STR(&XYZ. &ZLUSER.) END SET MP04 = 0&MP04. + 1 /* PROCESS CNT -- + MACRO USED*/ /********** BEGIN INSERTED UNIQUE CODE + *********************/ IF SPECIAL = &SPECIAL THEN SET XYZ = + &STR(&MEMBER.:^^&XYZ.) ISREDIT LOCATE 0 ISREDIT FIND FIRST &NX &COL "&MEMBER." SET CC = &LASTCC IF &STR(&COL) = &STR() THEN SET CC = 4 IF &CC ^= 0 THEN DO SET CNTADDED = 0&CNTADDED + 1 IF &EVAL(&CNTADDED.) = 1 THEN DO ISPEXEC LMINIT DATAID(DATA1) + DATASET(&STR(&DSNAME)) ISREDIT LINE_AFTER .ZLAST = DATALINE + "&BEGIN. ======== &SYSDATE. + &SUBSTR(1:5,&SYSTIME.) @DIR &DSN + &ARGS.==============================+ ======================" IF &LENGTH(&STR(&ARGS)) > 20 AND &LLEN < + 81 THEN + ISREDIT LINE_BEFORE .ZLAST = DATALINE + "&BEGIN. ======== &SYSDATE. + &SUBSTR(1:5,&SYSTIME.) @DIR &ARGS. + &DSN.===============================+ ====================" END ISREDIT LINE_AFTER .ZLAST = DATALINE + "&BEGIN.&XYZ" END ELSE DO IF &STR(&RECS) ^= &STR() THEN DO IF &STR(&ZLCNORC)^=&STR() THEN ISREDIT + CHANGE .ZCSR .ZCSR FIRST &NX &RECS + ' ' '&ZLCNORC. ' END IF &STR(&FOUND) ^= &STR() THEN ISREDIT + CHANGE .ZCSR .ZCSR FIRST &NX &FOUND ' ' + '&STR(&AST)' IF &STR(&FOUND) ^= &STR() THEN ISREDIT + CHANGE .ZCSR .ZCSR FIRST &NX &FOUND '-' + '&STR(&AST)' IF SPECIAL = &SPECIAL AND &EVAL(6) = + &EVAL(&COL) AND &STR(&BEGIN.) = + &STR(00006) THEN - ISREDIT CHANGE .ZCSR .ZCSR 1 3 ALL '000' + '*00' END /********** END OF CODE INCLUDED FOR AN EDIT + *************/ END IF &SHOWDATE = SHOWDATE | &SHOWUSER = + SHOWUSER - | &SUBSTR(1:1,&STR(&USER) ) = &STR(^) THEN DO IF &SHOWDATE = SHOWDATE THEN DO SET G = + &SUBSTR(1:23,&STR(&MEMBER.-&SUBSTR(1:5,+ &ZLUSER. )-&ZLMDATE.###&B25)) SET CNTL = 0&CNTL + 23 END ELSE DO SET G = &STR(&MEMBER.&STR(-&ZLUSER)) SET G = + &SUBSTR(1:16,&STR(&G. ) SET CNTL = 0&CNTL + 16 END END ELSE DO SET G = &STR(&MEMBER.) SET CNTL = 0&CNTL + 8 END SET CNTL = 0&CNTL + 2 /*WRITE HAS AUTOMATIC + 1-SPACE, AND I ADD 1-SPACE BELOW*/ SET CNTF = 0&CNTF + 1 IF &EVAL(&CNTF) = &EVAL(1) THEN DO SET CNTL = &CNTL + &CNTL END IF &EVAL(0&CNTL) > &EVAL(&LLEN. + 2) THEN DO IF &STR(&SUPPRESS) = &STR() THEN WRITE &STR(&G. ) SET CNTL = &LENGTH(&STR(&G. ) END ELSE DO IF &STR(&SUPPRESS) = &STR() THEN WRITENR &STR(&G. ) END IF &STR(&NUSER.) ^= &STR() THEN DO /* SPECIAL ABILITY TO CHANGE USERID */ ISPEXEC LMMSTATS DATAID(&XCX.) MEMBER(&MEMBER.) + USER(&NUSER.) GOTO IGNORE END IF &STR(&DOITMAC) ^= &STR() AND X&STR(&MEMBER.) + ^= X&STR(&DMEMBER.) + THEN DO SET XYZ = &STR(&MEMBER &ZLVERS..&ZLMOD. &ZLCDATE + &ZLMDATE.) SET XYZ = &STR(&XYZ. &ZLMTIME. &ZLCNORC + &ZLINORC. &ZLMNORC.) SET XYZ = &STR(&XYZ. &ZLUSER.) SET @DIRSTAT = &STR(&XYZ) ISPEXEC VPUT (@DIRSTAT) SHARED IF BROWSE = &STR(&BROWSE) THEN DO SET VSTSRVTI = &STR(&DSN. MEMBER=&MEMBER.) SET DSNDESC = + &SUBSTR(9:80,&STR(&@DIRSTAT.&BLANK80)) SET SYSBROX2 = &STR(M&SYSLC(EMBER) &MEMBER. -- &DSNDESC.) SET SYSBROX3 = &STR(===== TO TERMINATE @DIR QUICKLY + ==> @DIRPARM ABORT THEN 'CANCEL') ISPEXEC VPUT (DSNDESC SYSBROX2 SYSBROX3) SHARED ISPEXEC BROWSE DATAID(&XCX) MEMBER(&MEMBER) + PANEL(SYSBROX3) SET LRC = &LASTCC END ELSE DO SET @DIRNOTE = &STR(&$NDU.) ISPEXEC VPUT (@DIRNOTE) SHARED ISPEXEC EDIT DATAID(&XCX) MEMBER(&MEMBER) + MACRO(&DOITMAC) &PANEL. &PROFILE. SET LRC = &LASTCC END IF &LRC > 4 THEN GOTO ABORT ISPEXEC VGET (@DIRPARM) SHARED IF &@DIRPARM ^= &STR(&DOITMAC) THEN DO WRITE QUICK TERMINATION REQUESTED @DIRPARM + IS SET TO "&@DIRPARM." GOTO ABORT END /* TO MAKE THIS HAPPEN FROM EDIT TYPE ===> + @DIRPARM ABORT /**************---*/ IF NDU = &NDU. AND &EVAL(&LRC.) = &EVAL(0) THEN DO /* NDU -- NO DIRECTORY UPDATE (EXCEPT USERID */ SET NDUSER = &STR(&ZLUSER.) IF &SUBSTR(1:1,&ZLUSER.X) ^= X THEN SET - NDUSER = &SUBSTR(1:7,&STR(X-&NDUSER.) ) ELSE - SET NDUSER = &SUBSTR(1:7,&STR(&NDUSER.)$ ) IF STET = &STET THEN + SET NDUSER = &SUBSTR(1:7,&STR(&ZLUSER.) ) ISPEXEC LMMSTATS DATAID(&XCX.) MEMBER(&MEMBER.) + VERSION(&ZLVERS) MODLEVEL(&ZLMOD) + CREATED(&ZLCDATE) MODDATE(&ZLMDATE) + MODTIME(&ZLMTIME) INITSIZE(&ZLZLINORC) + USER(&NDUSER.) END IF $NDU = &$NDU. THEN DO ISPEXEC VGET (@DIRNOTE) SHARED IF &STR(&@DIRNOTE.) ^= &STR() THEN - ISREDIT LINE_AFTER .ZL = DATALINE "&STR(&MEMBER. + &SYSDATE. &SYSUID. &SYSTIME.) &@DIRNOTE." END /**************---*/ END IGNORE: SET II = 0 END END ABORT: - ISPEXEC LMMLIST DATAID(&XCX) OPTION(FREE) /* ... FREE MEMBER LIST */ ISPEXEC LMCLOSE DATAID(&XCX) /* ... CLOSE DATAID */ ISPEXEC LMFREE DATAID(&XCX) /* ... FREE DATAID */ ENDEND: - IF &CNTB = THEN SET CNTB = 0 IF &CNTA = THEN SET CNTA = 0 IF &CNTU = THEN SET CNTU = 0 IF &CNTF = THEN SET CNTF = 0 WRITE WRITENR **SELECTED &CNTF OF &CNTT, IF &STR(&USER.) = &STR() THEN DO WRITENR NO SELECTION CRITERION ON USERID, END ELSE DO IF &CNTU = 0 THEN WRITENR NO UNMATCHED USERIDS, ELSE WRITENR REJECTED &CNTU W/O USERID + &USERLIST., END IF &STR(&ONAFTER2.) = &STR() THEN DO WRITE NO SELECTION CRITERION ON LAST MODIFIED DATE. END ELSE DO IF &CNTB = 0 AND &CNTA = 0 THEN WRITE ALL MEMBERS + CHOSEN WERE WITHIN &ONAFTER. THRU &TODATE. ELSE DO WRITE REJECTED &CNTB BEFORE LMOD-DATE &ONAFTER. WRITE REJECTED &CNTA AFTER LMOD-DATE &TODATE. END END IF &CNTADDED > 0 THEN DO ISREDIT LOC &LASTLN ISREDIT UP 5 END /* ALLOW @DIR TO BE USED RECURSIVELY BY RESETTING @DIRPARM SET @DIRPARM = &STR(&@DIRSAVE) ISPEXEC VPUT (@DIRPARM) SHARED CONTROL NOMSG /* ATTEMPT TO FREE DATASET IF NOT THE ONE CURRENTLY IN EDIT*/ IF &STR(&DSNUSED.) NE 1 THEN FREE DA(&DSN.) CONTROL MSG /********** @DIR WILL RESTORE ORIGINAL PFKEYS -- USER CHANGES + DURING INVOCATION LOST. ISPEXEC VPUT (ZPF01 ZPF02 ZPF03 ZPF04 ZPF05 ZPF06 ZPF07 ZPF08 + ZPF09 ZPF10 ZPF11 ZPF12) PROFILE ISPEXEC VPUT (ZPF13 ZPF14 ZPF15 ZPF16 ZPF17 ZPF18 ZPF19 ZPF20 + ZPF21 ZPF22 ZPF23 ZPF24) PROFILE EXIT CODE(0)