The most useful ISPF EDIT macro ever. I think it was written by Paul van Goethem from Belgium, somewhere before 1993. It has quickly spread through many sites.
Point your cursor at at dataset name in a file your are editing en executing the macro will launch an EDIT session of that file.
I always put in under PF key PF4 which by default has the not very useful default value RETURN.
Note the value of the variable INVALID in the below may be corrupted. It should contain any character that is not valid as part of a dataset. The binary values it can contain are not very portable.
/****************************REXX***********************************/ /* FUNCTION: RECURSIVE EDIT OF BROWSE VIA DSNAAM AND,OR MEMBER */ /* SPECIFIED VIA CURSOR SENSITIVE EDIT MACRO */ /* FORMATS ACCEPTED: */ /* DATA.SET.NAME : EDIT/BROWSE OF THIS */ /* DATA.SET.NAME(MEMBER) : EDIT/BROWSE THIS */ /* MEMBER : EDIT/BROWSE IN SAME LIBRARY AS INDEX */ /****************************REXX***********************************/ ADDRESS ISPEXEC INVALID= ",'\<\>,:;+��▖!�%�-=" ADDRESS ISREDIT 'MACRO (FUNCTIE)' FUNCTIE = TRANSLATE(FUNCTIE) IF SUBSTR(FUNCTIE,1,1)='B' THEN FUNCTIE='BROWSE' ELSE FUNCTIE='EDIT' LIN=0 ADDRESS ISREDIT '(LIN,COL) = CURSOR' ADDRESS ISREDIT '(CLINE) = LINE 'LIN /* FIND CURRENT WORD */ T=SUBSTR(CLINE,1,COL) T =TRANSLATE(T,' ',INVALID) Y=LASTPOS(' ',T) IF Y=0 THEN T=CLINE ELSE T=SUBSTR(CLINE,Y+1) PARSE VAR T WOORD . WOORD =TRANSLATE(WOORD,' ',INVALID) "CONTROL ERRORS RETURN" IF INDEX(WOORD,'(') /= 0 THEN DO /* TAKE DSN IF SPECIFIED */ PARSE VAR WOORD DSNAME '(' MEMBER ')' FUNCTIE" DATASET('"SPACE(DSNAME)"("MEMBER")')" FRC=RC END ELSE DO IF INDEX(WOORD,'.')/=0 THEN DO PARSE VAR WOORD DSNAME . FUNCTIE" DATASET('"SPACE(DSNAME)"')" END ELSE DO ADDRESS ISREDIT "(DSNAME) = DATASET" WOORD = SPACE(TRANSLATE(WOORD,' ','.()')) FUNCTIE" DATASET('"DSNAME"("WOORD")')" END FRC=RC END ADDRESS ISPEXEC "CONTROL ERRORS CANCEL" IF FRC> 4 & SYMBOL(ZERRMSG)/= 'LIT' THEN DO MSG= ZERRMSG':'ZERRLM "SETMSG MSG(ZOM000A)" END RETURN