/* REXX -- SYSDSN -- Verify existance of dataset name at cursor */ /* SYSDSN EDIT -- edit the dataset after verifying existence */ /* SYSDSN BROWSE -- browse the dataset after verifying existence */ /* SYSDSN DSLIST -- DSLIST panel with datasetname (w/o member) */ /* SYSDSN ** CREATED BY D.MCRITCHIE 1992/03/23 "The REXX Macros Toolbox" */ /* **USAGE WOULD BE TO SET UP A PFKEY SUCH AS 19 ===> SYSDSN EDIT */ /* place curson on the dataset name, and then hit PFK19 */ /*********************************************************************/ /* suggested PFKEYS currently used by D.McRitchie */ /* 1-6 HELP, SPLIT, END, :TS, RFIND, RCHANGE, */ /* 7-12 UP, DOWN, SWAP, LEFT, RIGHT, CURSOR */ /* 13-18 PIR AT, PIR, ***, PIR S, *, SYSDSN */ /* 19-24 SYSDSN EDIT, EDITMEM, *, !EDCHEK, (*TEMP*), RETRIEVE */ /* PFK23 is frequently changed to PRINT or PRINT//print// */ /* PFK15 is left as *** to keep fingers off of this row for a PF3 */ /* PFK17 is probably set at SYSDSN BROWSE but not necessarily */ /*********************************************************************/ /* see June, 1992 CIS Newsletter, article by David McRitchie, page 15*/ Address "ISREDIT" "MACRO (TOKEN)" TOKEN = translate(TOKEN) " (MEMBERX) = MEMBER " " (DSNX) = DATASET" "(ROW,COL) = CURSOR" IF COL = 0 THEN COL = 1 " (LINE) = line " ROW line = translate(line) IF substr(line,col,4) = 'DSN=' then col = col + 4 "(LABEL) = LABEL .ZCSR" if rc \= 0 then "LABEL .zcsr = .EDIT 0" if ROW = 0 then do ZEDSMSG = "SYSDSN cursor" ZEDLMSG="SYSDSN -- no name found, since cursor has not been placed" address "ISPEXEC" "SETMSG MSG(ISRZ001)" return 1 end from = COL /* in case cursor on a blank or something invalid */ do i = COL to 1 by -1; L=verify(substr(line,i,1),'1234567890abcdefghijklmnopqrstuvwxyz'||, '-ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$().') if l \= 0 then leave from = i end line = substr(line,from) L=verify(line,'1234567890abcdefghijklmnopqrstuvwxyz'||, '-ABCDEFGHIJKLMNOPQRSTUVWXYZ@#$().*%') if l \=1 then do if substr(line,l-1,1) = '(' then do i = pos(')',line) if i \= 0 then line = substr(line,1,i) ZEDLMSG = "Proceeding after dropping membername portion" line address "ISPEXEC" "SETMSG MSG(ISRZ001)" l = l - 1 /*dsname(&member.)*/ /* -"- allows for dsname(&member.) and "dsn.name("member")"*/ /* by using only the dsname portion */ end line=substr(line,1,l-1) if substr(line,l-1,1) = '.' then line=substr(line,1,l-2) end else do ZEDSMSG = "no name" ZEDLMSG = "SYSDSN did not find a name at line" ROW ', col ' COL address "ISPEXEC" "SETMSG MSG(ISRZ001)" return 1 end gotone: /******|provided for-------| *** |DSLIST limitations----|*************/ /* is03.share.text(cut) is03.xyz.uuu(+1) */ /* is03.share.text(editmem) is03.share.text(art*) */ /* is03.libr.clist(SYSDSN) is03.*.text */ /* () is03.libr.clist(&mem.) is03.*.text */ /* is03.share.text sysdsn) */ /*********************************************************************/ I = pos("DSLIST",token) if i \= 0 then do address "ISPEXEC" "VGET ZDLDSNLV PROFILE" olddsn = zdldsnlv i = pos('(',line) if i \=0 then line = substr(line,1,i-1) ZDLDSNLV = LINE address "ISPEXEC" "VPUT ZDLDSNLV PROFILE" /* ACCORDING TO Q417856 QUALIFIED DATASET*/ /* SHOULD HAVE USED LMMDISP. */ /* METHOD USED HAS PANEL OPTIONS AVAILABLE*/ address "ISPEXEC" "SELECT PGM(ISRUDL) PARM(ISRUDLP)" ZDLDSNLV = OLDDSN address "ISPEXEC" "VPUT ZDLDSNLV PROFILE" EXIT 0 end x = SYSDSN("'"||line||"'") if x \= "OK" then do /* even though ISREDIT EDIT would work -- make this fail*/ ZEDSMSG = x ZEDLMSG = "SYSDSN('"line"') failed --" x "LINE_AFTER .ZCSR = NOTELINE ""SYSDSN('"line"') failed -- " X"""" address "ISPEXEC" "SETMSG MSG(ISRZ001)" return 1 end EDorBR = "BROWSE" I =pos("BROWSE",token) if i \= 0 then "LABEL .zcsr = .BROWS 0" IF i = 0 then Do I =pos("EDIT",token) if i \= 0 then EDorBR = "EDIT" end IF i \= 0 THEN DO Address "ISPEXEC" "CONTROL ERRORS RETURN" address "ISPEXEC" EDorBR "DATASET('"line"')" lastcc = rc Address "ISPEXEC" "CONTROL ERRORS CANCEL" if lastcc >= 12 then do ZEDSMSG = zerrsm ZEDLMSG = zerrmsg zerrlm "RC="lastcc address "ISPEXEC" "SETMSG MSG(ISRZ001)" "LINE_AFTER .ZCSR = NOTELINE ""RC="lastcc zerrmsg zerrlm"""" IF lastcc = 20 then if EDorBR = "EDIT" then do "LINE_AFTER .ZCSR = NOTELINE ""EDIT failed will try BROWSE""" address "ISPEXEC" BROWSE "DATASET('"line"')" ZEDSMSG = zerrsm ZEDLMSG = zerrmsg zerrlm "RC="lastcc end return 1 end ZEDSMSG = "COMPLETED" ZEDLMSG = EDorBR "completed via SYSDSN" EDorBR "for - " line address "ISPEXEC" "SETMSG MSG(ISRZ001)" "CURSOR =" ROW COL END ELSE DO ZEDSMSG = x ZEDLMSG = "SYSDSN('"line"') --" x address "ISPEXEC" "SETMSG MSG(ISRZ001)" "CURSOR =" ROW COL return 0 END return 0