/* Rexx *__________________________________________________________________* | | | PROGRAM - @SPOOFY | | Coded - Nancollis | | DATE - October MMII | | PURPOSE - To allow SPUFI to run in Batch | | - Amend routine Set_up to determine the name of the | | - Clist and Panel libraries you want (also the variable | | - Reslove_from_table) | | - Other than that he should run "as-is" | *__________________________________________________________________*/ Q = "'" /* Literals & defaults*/ DsetInfo = 'SPOOFOUT FILE' spufsys = '' spufiso = 'CS' spufnumw = 33 spufchrw = 80 spufmaxl = 2000 spufclst = Reslove_from_table = 'YES' /* Change to YES to resolve from Tables in Set_up routine */ me = sysvar(sysuid) /* Who am I */ PlayingOn= mvsvar(sysname) /* Where am I */ /*__________________________________________________________________* | | | Get the parameters for this run | *__________________________________________________________________*/ "EXECIO * DISKR SPOOFCTL (stem parm. FINIS" /* Read Control data */ Say 'Input Parameters follow ' /* Tell all to expect */ Do i = 1 to parm.0 If substr(parm.i,1,1) = '*' Then Iterate /* Comment */ Say parm.i /* Tell 'em what */ Interpret parm.i /* Evaluate parameter */ End If spufsys = '' Then Do /* No subsys -No party*/ Say 'No subsystem given ' Exit(66601) End Call Set_up /* Set up lpar/subsys specific bits */ Call Default_profile /* Save a def. profile*/ "EXECIO * DISKR SPOOFIN (stem spoofin. FINIS" /* SQL to process */ If rc <> 0 Then EXIT(66602) /* ooops */ Call Allocate_Input /* tempfile for SQL */ "EXECIO "SPOOFIN.0" DISKW SPUFIN (STEM SPOOFIN. FINIS" /* Write it */ If rc <> 0 Then EXIT(66603) /* ooops */ "FREE F(SPUFIN)" /* Free him */ rc = LISTDSI(Dsetinfo) /* DSinfo of output */ If rc <> 0 Then Do /* ooops */ Say 'Error getting DatasetInfo RC=' rc 'Reason='SYSREASON Exit(66604) End DSNESV15 = Q||me||'.'||spufin||Q /* SPUFI INPUT */ DSNESV16 = Q||SYSDSNAME||Q /* SPUFI OUTPUT */ DSNEOV01 = spufsys /* DB2 SUBSYSTEM */ DSNESV2C = SYSLRECL /* LRECL */ DSNESV21 = SYSBLKSIZE /* BLOCK SIZE */ DSNESV2F = spufiso /* Isolation */ DSNESV22 = SYSRECFM /* RECORD FORMAT */ DSNESV24 = spufnumw /* width num cols */ DSNESV25 = spufchrw /* width char cols */ DSNESV2D = spufmaxl /* max lines selected*/ Address ISPEXEC /* Save overrides */ "VPUT ( DSNESV15, DSNESV16, DSNEOV01, DSNESV2C, DSNESV21, DSNESV2F, DSNESV22, DSNESV24, DSNESV25, DSNESV2D ) PROFILE" /*__________________________________________________________________* | | | Tailor ISPF environment | *__________________________________________________________________*/ Address TSO "Alloc Fi(DSNCLIB) Da("The_Clistlib") Shr Reuse" "Altlib activate application(clist) library(DSNCLIB) uncond" "Alloc FI(DSNPLIB) Da("The_DsnPlib") Shr Reuse" /*__________________________________________________________________* | | | P L A Y T I M E | *__________________________________________________________________*/ Address ISPEXEC "Libdef ispplib library id(dsnplib) uncond" "Select CMD(DSNESC01 FUNC(SPUFI))" /* Off we go ...... */ "Libdef ispplib library" /*__________________________________________________________________* | | | Tidy Up | *__________________________________________________________________*/ Address TSO "Altlib Reset" X = OUTTRAP('JUNK.') /* Delete SQL dataset*/ "DELETE " SPUFIN If RC <> 0 Then Exit(66604) "FREE FI(DSNCLIB, DSNPLIB)" /* Free Libs */ If RC <> 0 Then Exit(66605) X = OUTTRAP('OFF') EXIT(0) /******************************************************************** * * * S U B R O U T I N E S F O L L O W * * * ********************************************************************/ Set_up : /*__________________________________________________________________* | | | This routine will establish the clist and panel library you want| | based on subsys to allow for version changes | *__________________________________________________________________*/ The_DsnPlib = Q||'DB2.@@@@.ISPPLIB'||Q /* My panelib */ The_Clistlib= Q||'DB2.V610.A0202.SDSNCLST'||Q /* DB2s CLIST lib */ If Reslove_from_table = 'NO' Then Return /* always use above */ system =strip(PlayingOn) /* LPAR */ /* Table of clist libraries by lpar/subsys to allow for upgrades */ CLIST.ABCDMVS.DZS1 = 'DB2.DZS1.SDSNCLST' /* ABCDMVS */ CLIST.ABCDMVS.DZS2 = 'DB2.DZS2.SDSNCLST' CLIST.EFGHMVS.DJD1 = 'DB2.DEVL.SDSNCLST' /* EFGHMVS */ CLIST.WXYZ.DB2D = 'DB2.DEV.DSNCLIST' /* XYZ test */ etc.etc.etc = 'you get the picture' /* Table of Panel libraries by lpar/subsys to allow for upgrades */ PLIB.ABCDMVS.DZS1 = 'DB2.@@@@.ISPPLIB' /* ABCDMVS */ PLIB.ABCDMVS.DZS2 = 'DB2.@@@@.ISPPLIB' PLIB.EFGHMVS.DJD1 = 'DB2.@@@@.ISPPLIB' /* EFGHMVS */ PLIB.WXYZ.DB2D = 'DB2.@@@@.ISPPLIB.V7' /* XYZ test */ etc.tc.etc = 'you get the picture' The_Clistlib = Q||CLIST.system.spufsys||Q /* add quotes */ The_DsnPlib = Q||PLIB.system.spufsys||Q /* add quotes */ Return Default_profile : /*__________________________________________________________________* | | | Set all the bits and bobs that you would normally enter on the | | SPUFI panels. Not sure if its all need but ............... | *__________________________________________________________________*/ DSNEOV01 = 'DSN ' /* DB2 SUBSYSTEM */ DSNEOV04 = 50 /* LINES/PAGE (5-999) */ DSNEOV02 = 0 DSNEOV03 = 'COB2' DSNEOV05 = 'I' DSNEOV06 = 'DEFAULT' DSNEOV07 = 'DEFAULT' DSNEOV08 = '.' DSNEOV20 = '' DSNEOV21 = '' DSNEOV22 = '' DSNEOV23 = '' DSNEOV25 = 'G' DSNEAV03 = 0 DSNEAV04 = '' DSNE1M = 'NO' DSNEREL = '' DSNEPV15 = 8 DSNEMV01 = The_Clistlib /* DB2 CLIST LIBRARY */ DSNEAPSG = '' DSNECOMR = '' DSNEINST = '' DSNEUGRE = '' ZDSNE1S = 'NO' DSNESV1E = '' DSNESV1F = '' DSNESV1W = 'SECOND TIME' DSNESV1X = 610 DSNESV1L = '' DSNESV24 = 33 /* width num cols */ DSNESV25 = 80 /* width char cols */ DSNESV26 = 'NAMES' DSNESV2C = 4092 /* LRECL */ DSNESV21 = 4096 /* BLOCK SIZE */ DSNESV2F = 'VB' /* BETTER THAN RR ! */ DSNESV22 = 'CS' /* RECORD FORMAT */ DSNESV2E = 'SYSDA' /* DEVICE TYPE */ DSNESV3Z = 'C' DSNESV2B = ';' DSNESV1A = 'NO' /* CHANGE DEFAULTS */ DSNESV17 = 'NO' /* EDIT INPUT */ DSNESV18 = 'YES' /* EXECUTE */ DSNESV1D = 'YES' /* AUTOCOMMIT */ DSNESV19 = 'NO' /* BROWSE OUTPUT */ ZSAREA1 = 'SES' DSNESV15 = ' ' /* SPUFI INPUT */ DSNESV16 = ' ' /* SPUFI OUTPUT */ DSNEAV05 = 'NO' /* Trace option */ DSNESV2D = 2000 /* MAX LINES SELECTED */ /* Save 'em away for a rainy day */ Address ISPEXEC "VPUT ( DSNEOV01, DSNEOV04, DSNEOV02, DSNEOV03, DSNEOV05, DSNEOV06, DSNEOV07, DSNEOV08, DSNEOV20, DSNEOV21 ) PROFILE" "VPUT ( DSNEOV22, DSNEOV23, DSNEOV25, DSNEAV03, DSNEAV04, DSNEREL, DSNEPV15, DSNEMV01, DSNEAPSG, DSNECOMR ) PROFILE" "VPUT ( DSNEINST, DSNEUGRE, ZDSNE1S, DSNESV1E, DSNESV1F, DSNESV1W, DSNESV1X, DSNESV1L, DSNESV24, DSNESV25 ) PROFILE" "VPUT ( DSNESV26, DSNESV2C, DSNESV21, DSNESV2F, DSNESV22, DSNESV2E, DSNESV3Z, DSNESV2B, DSNESV1A, DSNESV17 ) PROFILE" "VPUT ( DSNESV18, DSNESV1D, DSNESV19, ZSAREA1, DSNESV15, DSNESV16, DSNEAV05, DSNESV2D, DSNE1M ) PROFILE" Return Allocate_input : Address TSO TIM = 'T'||TIME('S') SPUFIN = TIM'.SPUFIN' X = OUTTRAP('JUNK.') "FREE F(SPUFIN)" "ALLOC F(SPUFIN) DA("SPUFIN") LRECL(80) BLKSIZE(0) NEW" If RC <> 0 Then Exit(66610) X = OUTTRAP('OFF') Return