/* REXX */ trace n arg category mcat . "profile noprefix" o. = '' ocntr = 0 l. = '' lcntr = 0 d. = '' dcntr = 0 exlV = 0 xV. = '' exlD = 0 xD. = '' x = outtrap('a.') "execio * diskr exl (finis stem xl." x = outtrap('off') do cntr = 1 to xl.0 select when subword(xl.cntr,1,1) = 'VOLUME' & , subword(xl.cntr,2,1) <> '' then do exlV = exlV + 1 xV.exlV = subword(xl.cntr,2,1) say 'VOLUME >' subword(xl.cntr,2,1) end when subword(xl.cntr,1,1) = 'DSNAME' & , subword(xl.cntr,2,1) <> '' then do exlD = exlD + 1 xD.exlD = subword(xl.cntr,2,1) say 'DSNAME >' subword(xl.cntr,2,1) end otherwise nop end end select when category = "NONVSAM" then nop when category = "ALIAS" then nop when category = "USERCATALOG" then nop when category = "UCAT" then category = "USERCATALOG" otherwise say "CATALOG CATEGORY IS UN-NONE !!" exit 8 end if listdsi("inf file") < 4 then do say ">>> Input From "sysdsname "execio * diskr inf (finis stem a." input = 'file' end else do say ">>> Input From "mcat x = outtrap('a.') "listc cat('"mcat"') "category" all" x = outtrap('off') input = 'cat' end say "START" a.0 do cntr = 1 to a.0 if input = 'file' then a.cntr = substr(a.cntr,2) select when subword(a.cntr,1,1) = "NONVSAM" then do _dsn = subword(a.cntr,3,1) if exlD > 0 then do _dsnX = 'NO' do xcntr = 1 to exlD if substr(_dsn,1,length(xD.xcntr)) = xD.xcntr then _dsnX = 'YES' end end else _dsnX = 'YES' end when subword(a.cntr,1,1) = "USERCATALOG" then do _dsn = subword(a.cntr,3,1) end when subword(a.cntr,1,1) = "ALIAS" then do _ali = subword(a.cntr,3,1) end when substr(a.cntr,8,8) = "USERCAT-" then do _uc = strip(substr(a.cntr,17,44)) x = listdsi("'"_uc"'") select when x <= 4 then _mark = '_' when sysreason = 9 then _mark = 'A' otherwise _mark = '*' end select when category = "ALIAS" then do x = outtrap('c.') "listc cat('"_uc"') lv('"_ali"')" _wrc = rc x = outtrap('off') if _wrc <> 0 then c.0 = '?' say _mark _ali _uc c.0 lcntr = lcntr + 1 l.lcntr = _mark _ali _uc c.0 /* */ ocntr = ocntr + 1 o.ocntr = ' /*'copies(' ',62)'*/' ocntr = ocntr + 1 o.ocntr = ' DELETE ALIAS ('strip(_ali)') -' ocntr = ocntr + 1 o.ocntr = ' CATALOG('strip(mcat)')' ocntr = ocntr + 1 o.ocntr = ' SET LASTCC = 0' ocntr = ocntr + 1 o.ocntr = ' DEFINE ALIAS (NAME('strip(_ali)') -' ocntr = ocntr + 1 o.ocntr = ' RELATE('strip(_uc)')) -' ocntr = ocntr + 1 o.ocntr = ' CATALOG('strip(mcat)')' /* */ end otherwise say ??? end end when substr(a.cntr,8,14) = "DATASET-OWNER-" then do _cre = substr(a.cntr,53,8) end when substr(a.cntr,8,11) = "OWNER-IDENT" then do _cre = substr(a.cntr,53,8) end when substr(strip(a.cntr),1,8) = "VOLSER--" then do _vol = substr(a.cntr,26,6) _unit = substr(a.cntr,52,8) select when _unit = "3010200E" then _unit = "3380" when _unit = "3010200F" then _unit = "3390" otherwise nop end x = listdsi("'"_dsn"' volume("_vol")") select when x <= 4 & sysvolume <> _vol then _mark = '?' when x <= 4 then _mark = '_' when _vol = "ARCIVE" then _mark = 'A' when sysreason = 9 then _mark = 'A' otherwise do x = outtrap('a.') "@VOLTSO "_vol" NONE" x = outtrap('off') _mark = '*' do i = 1 to a.0 if subword(a.i,1,1) = '>' & , index(a.i,_vol) <> 0 then _mark = '@' end select when _dsnX = 'YES' then nop when exlV <= 0 then nop otherwise oldMark = _mark _mark = _mark || 'X' do xcntr = 1 to exlV if substr(_vol,1,length(xV.xcntr)) = xV.xcntr then _mark = oldMark end end end end select when category = "NONVSAM" then do say _mark _dsn _vol _unit _cre lcntr = lcntr + 1 l.lcntr = _mark _dsn _vol _unit _cre if _mark = '*' | _mark = '@' then do dcntr = dcntr + 1 d.dcntr = ' DELETE 'strip(_dsn)' NOSCRATCH -' dcntr = dcntr + 1 d.dcntr = ' CATALOG('strip(mcat)')' end if _mark = '*' | _mark = '@' then do mL = ' /*' mR = '*/' end else do mL = ' ' mR = ' ' end /* */ ocntr = ocntr + 1 o.ocntr = ' /*'copies(' ',62)'*/' ocntr = ocntr + 1 o.ocntr = ' DELETE 'strip(_dsn)' -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' NOSCRATCH -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' CATALOG('strip(mcat)')' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' SET LASTCC = 0' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' DEFINE NONVSAM ( -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' NAME('strip(_dsn)') -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' DEVT('strip(_unit)') -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' VOL('strip(_vol)')) -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' CATALOG('strip(mcat)')' o.ocntr = mL || left(o.ocntr,62) || mR /* */ end when category = "USERCATALOG" then do say _mark _dsn _vol _unit lcntr = lcntr + 1 l.lcntr = _mark _dsn _vol _unit /* */ if _mark = '*' then do mL = ' /*' mR = '*/' end else do mL = ' ' mR = ' ' end ocntr = ocntr + 1 o.ocntr = ' /*'copies(' ',62)'*/' ocntr = ocntr + 1 o.ocntr = ' EXPORT 'strip(_dsn)' DISCONNECT -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' CATALOG('strip(mcat)')' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' SET LASTCC = 0' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' IMPORT CONNECT OBJECT(('strip(_dsn)' -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' DEVT('strip(_unit)') -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' VOL('strip(_vol)'))) -' o.ocntr = mL || left(o.ocntr,62) || mR ocntr = ocntr + 1 o.ocntr = ' CATALOG('strip(mcat)')' o.ocntr = mL || left(o.ocntr,62) || mR /* */ end otherwise say ??? end end otherwise nop end if ocntr > 1000 then do 'execio 'ocntr' diskw outf (stem o.' ocntr = 0 drop o. o. = '' end if lcntr > 1000 then do 'execio 'lcntr' diskw list (stem l.' lcntr = 0 drop l. l. = '' end if dcntr > 1000 then do 'execio 'dcntr' diskw delt (stem d.' dcntr = 0 drop d. d. = '' end end 'execio 'ocntr' diskw outf (finis stem o.' 'execio 'lcntr' diskw list (finis stem l.' 'execio 'dcntr' diskw delt (finis stem d.'