$ZOOM – Mother of all EDIT macro’s

  • Post category:ISPF
  • Reading time:2 mins read

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

Db2 SQL in batch

  • Post category:JCL
  • Reading time:1 min read

Again a simple solution for a common problem: how to run a Db2 query from a batch script. Here we use the utility DSNTEP2 that is provided for this purpose with the Db2 installation. In the STEPLIB, specify your names for Db2 runtime libraries. In the SYSTEM (xxxx) clause specify your Db2 subsystem. The SQL in the SYSIN label can be taken from in-stream, or from a dataset as below. //GO EXEC PGM=IKJEFT01,DYNAMNBR=20  //STEPLIB DD DSN=SYS2.SDSNEXIT,DISP=SHR  //        DD DSN=SYS2.SDSNLOAD,DISP=SHR      //SYSTSPRT DD SYSOUT=*   //SYSTSIN DD * DSN SYSTEM (xxxx)                                         RUN PROG (DSNTEP2) //SYSPRINT DD SYSOUT=* //SYSUDUMP DD SYSOUT=* //*SYSIN    DD DISP=SHR,DSN=YOURDSN.DB2.SQL(YOURSQL) OR //SYSIN DD * SELECT * FROM YOURTABLE /* //Dean