zOs/REXX/TMPLGEN
$#@
$*( generate and distribute standard templates
How-To :
-----------------------------------------------------------------
MEMBER : was?
-----------------------------------------------------------------
1.GEN : wsh zum generieren der LISTDEF member
(outLib variable prüfen, kann test or produktive sein
-----------------------------------------------------------------
2.##DIST: wsh zum verteilen in alle RZs
Tipp :
mit dem block-command "qq" kann man z.b. nur ein
einzelnes RZ verteilen. wsh führt nur den code von "qq"
bis "qq" aus.
-----------------------------------------------------------------
What is generated?
-----------------------------------------------------------------
TEMPL (altes) Standard Template
copy mit 2 Varianten für mgmtClas
(1) 1 Woche auf Disk ==> für copyArchivierungs Ablauf
(2) adb#sub1: sofort archiviert (ohne copyArchivierung)
TEMPL#LO gelöscht
TEMPL#S neues System Template mit &SSID..S&PB...
TEMPL#U neues User Template mit &SSID..U&PB...
XBTEMPL Elar Template
XBTEMPL1 Elar Template
XBTEMPLN Elar Template
DXTEMPL Elar für DXB* DBs mit &SSID..U&PB..&DB(2)
history --------------------------------
v16 31. 8.16 Anpassung DISP für RECU für Q und PTA (neue VAR $dispRecU)
v15 21. 6.16 dataclass pro rz fuer recU
v14 18. 2.15 member mit plexBuchstaben statt rzNr
v13 18. 2.15 code von templ#lo eliminiert
v12 12.12.14 rz1 + templ#lo deaktiviert
v12 25. 8.14 reformat templ#lo durch templ überschrieben
v11 20. 8.14 reformat
v10 22. 7.14 erste Version mit gen
$*)
$=outLib = dsn.source.tmpl
$=outLib = A540769.tst.tmpl
$** $proc gTrg $@[ $=trg = $rz/$dbSys.DBAA.LISTDEF $]
$proc gTrg $@[ $=trg = $rz/A540769.TSTTMPL.$dbSys $]
$=csDist =- jOpen(file($outLib"(##dist) ::f"), '>')
call jWrite $csDist, $'$#@'
call jWrite $csDist, $'$** wsh script zum Verteilen von templates'
$= storAll = $'STORCLAS (ALL$N)'
$= storFar = $'STORCLAS(FAR$N)'
call iiIni
if 0 then $@[ $** collect all temp from all rz -----------------------
$do ix=1 while iiIxPut(ix) $@[
lib = $rz'/'$dbSys'.DBAA.LISTDEF'
mbId = 'T#'$rzC$dbSysC'#'
say $rz $dbSys mbrList(qq, lib'(*TEMPL*)') '==>' mbId
do qx=1 to m.qq.0
say ' ' qx m.qq.qx
call dsnCopy lib'('m.qq.qx')',
, 'A234579.tst.listOrig('repAll(m.qq.qx, 'TEMPL', mbId)')'
end
$]
exit
$] else if 0 then $@[ $** del all old members ------------------------
$do ix=1 while iiIxPut(ix) $@[
$@gTrg
parse value $trg with rz '/' dsn
call jWrite $csDist, "say '"$rz $dbSys"'"
call jWrite $csDist, "call dsnDel" rz", '"dsn"(TEMPL#DC)'"
call jWrite $csDist, "call dsnDel" rz", '"dsn"(TEMPL#LO)'"
call jWrite $csDist, "call dsnDel" rz", '"dsn"(TEMPL#NI)'"
$]
$] else $@[ $** generate all templates ------------------------------
$do ix=1 while iiIxPut(ix) $@[
$= mbId = T#$rzP$dbSysC#
call jWrite $csDist, "say '"$rz $dbSys $mbId"'"
$= pbDB = &DB.
$= uxDB = &DB.
$= lql = 3
if wordPos($dbSys, 'DBOF DBTF DE0G DPXG DPYG DPZG') > 0 then $@[
$= copyMgmt = COM#A041
$] else $@[
$= copyMgmt = SUB#ADB1
$]
if wordPos($rz , 'RZ2 RZ4 RQ2') > 0 then $@[
$= dtclsRecu = ENN59
$] else $@[
$= dtclsRecu = ENN35
$]
if wordPos($rz , 'RR2 RQ2') > 0 then $@[
$= dispRecU = DISP(NEW,DELETE,CATLG)
$] else $@[
$= dispRecU = DISP(NEW,DELETE,DELETE)
$]
$@%[oneTempl - '?', 'standard system template' $]
$@%[oneTempl - '?#S', 'standard system template' $]
if $dbSysElar then $@[
if $dbSys == 'DVBP' then $@[
$= xbUM = SUB#ELA2
$= xbUQ = $''
$= xbCS = (5000,5000) CYL
$= xbTS = (5000,5000) CYL
$= xbUS = (1000,100) CYL
$= xbPu = P0.&DB..&SN..SYSPUNCH.&UNIQ.
$= xbRe = P0.&DB..&SN..SYSREC.&UNIQ.
$] else $@[
$= xbUM = COM#A019
$= xbUQ = .&UNIQ.
$= xbCS = (1500,10000) TRK
$= xbTS = (2000,600) CYL
$= xbUS = (2000,600) CYL
$= xbPu = S0.&DB..&SN..D&YE(3).&MO.&DA..T&MI.&SC.
$= xbRe = S0.&DB..&SN..APROC(+1)
$]
$@%[oneTempl - 'XB?', 'xb template' $]
if $dbSys <> 'DVBP' then $@[
$= pbDB = U&PB..&DB.
$= uxDB = UX.&DB.
$= lql = 2
$]
$@%[oneTempl - 'XB?N', 'xb template' $]
$@%[oneTempl - 'XB?1', 'xb template' $]
$= pbDB = U&PB..&DB(2).
$= uxDB = UX.&DB(2).
$= lql = 2
$@%[oneTempl - 'DX?', 'dxb (temporary) template' $]
$]
$= pbDB = U&PB..&DB.
$= uxDB = UX.&DB.
$= lql = 2
$@%[oneTempl - '?#U', 'standard user template' $]
$]
$]
call jClose $csDist
call adrIsp "view dataset('"$outLib"(##dist)')", 4
$** -------------------------------------------------------------------
$proc $@/oneTempl/
$@ parse arg , mMsk, txt
$= mbSrc =- repAll(mMsk, '?', $mbId)
$= mbr =- repAll(mMsk, '?', templ)
$= txt =- txt
$= reo =- left('REO', $lql)
$= srt =- if($lql = 3, 'SRT', 'SO')
$= err =- left('ERR', $lql)
$= map =- left('MAP', $lql)
$= dis =- left('DIS', $lql)
$= pun =- left('PUN', $lql)
$@gTrg
call jWrite $csDist, "call dsnCopy '"$outLib"("$mbSrc")' ,"
call jWrite $csDist, " , '"$trg"("$mbr")'"
if mMsk == 'XB?' then $@[
$@templXB $> $outLib($mbSrc)
$] else if mMsk == 'XB?N' then $@[
$@templXBN $> $outLib($mbSrc)
$] else if mMsk == 'XB?1' then $@[
$@templXB1 $> $outLib($mbSrc)
$] else $@[
$@templAll $> $outLib($mbSrc)
$]
$/oneTempl/
$proc $@=/templHead/
-- $-[overlay($txt $mbr, right($rz $dbSys 'v=14', 69))$]
-- $-[right('generiert am' f('%t s') $*+
'durch rz4/dsn.source.tmpl(gen)', 69)$]
$/templHead/
$proc $@/templAll/
$@templHead
$@%[templA2 - 1 $]
$/templAll/
$proc $@=/templA2/
$@ parse arg , genPun
TEMPLATE TCOPYD -- COPYDDN fuer copy etc. (1 Tag/Woche auf Disk)
DSN('&SSID..$pbDB.&SN..P&PART..&UNIQ.')
DATACLAS(ENN35) MGMTCLAS($copyMgmt) $storFar
SPACE (1500,10000) TRK
TEMPLATE TCOPYS -- COPYDDN anlog TCOPYD, aber mit space
DSN('&SSID..$pbDB.&SN..P&PART..&UNIQ.')
DATACLAS(ENN35) MGMTCLAS($copyMgmt) $storFar
SPACE (800,500) CYL
TEMPLATE TCOPYD8 -- COPYDDN 1 Woche auf Disk, mit space
DSN('&SSID..$pbDB.&SN..P&PART..&UNIQ.')
DATACLAS(ENN35) MGMTCLAS(COM#A041) $storFar
SPACE (1500,10000) TRK
TEMPLATE TCOPYT -- COPYDDN auf Tape
DSN('&SSID..$pbDB.&SN..P&PART..&UNIQ.')
UNIT 3490 RETPD 23 STACK YES
TEMPLATE TSRECD -- UNLDDN fuer Unload
DSN('&SSID..$uxDB.&SN..P&PART..D&YE(3).&MO.&DA..REC')
DATACLAS(ENN35) MGMTCLAS(COM#A032)
SPACE TRK MAXPRIME 600
TEMPLATE TSRECO -- UNLDDN fuer offline Reorg, Delete nach 5 Tagen
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$reo')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE TRK MAXPRIME 600
TEMPLATE TSRECU -- UNLDDN fuer UTS Migration, mit sofort Delete
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..UTS')
$dispRecU
DATACLAS($dtclsRecu) MGMTCLAS(COM#E001)
SPACE CYL
TEMPLATE TSYUTD -- WORKDDN(1,) = SYSUT1 fuer check, load, merge
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..UT')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE TRK MAXPRIME 600
TEMPLATE TSYUTS -- WORKDDN(1,) = SYSUT1 wie tSyUtD mit Space
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..UT')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE (100,10000) TRK
TEMPLATE TSOUTD -- WORKDDN(,2) = SORTOUT fuer checkData, load
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$srt')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE TRK MAXPRIME 600
TEMPLATE TSOUTS -- WORKDDN(,2) = SORTOUT wie tSOutD mit space
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$srt')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE (100,10000) TRK
TEMPLATE TERRD -- ERRDDN fuer Load, CheckData
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$err')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE (100,10000) TRK
TEMPLATE TMAPD -- MAPDDN fuer load mit enforce constraints
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$map')
DATACLAS(ENN35) MGMTCLAS(COM#E005)
SPACE (100,10000) TRK
TEMPLATE TDISC -- DISCARDDN fuer Load, Reorg
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$dis')
DATACLAS(ENN35) MGMTCLAS(COM#A032)
SPACE (100,10000) TRK
$@ if genPun then $@=[
TEMPLATE TPUNCH -- PUNCHDDN fuer reorg unload
DSN('&SSID..$uxDB.&SN..P&PART..D&YE(3).&MO.&DA..PUN')
DATACLAS(NULL8) MGMTCLAS(COM#A032)
SPACE(1,10) TRK
$]
TEMPLATE TPUNO -- PUNCHDDN fuer offline Reorg, mit sofort Delete
DSN('&SSID..$uxDB.&SN..P&PART..&UNIQ..$pun')
DATACLAS(NULL8) MGMTCLAS(COM#A032)
SPACE(1,10) TRK
$/templA2/
$proc $@=/templXB/
$@templHead
TEMPLATE TCOPYD -- COPYDDN fuer copy etc.
DSN('&SSID..$pbDB.&SN..P&PART..&UNIQ.')
DATACLAS(ENN35) MGMTCLAS(COM#A011) $storFar
SPACE $xbCS
TEMPLATE TCOPYT -- COPYDDN auf Tape
DSN '&SSID..$pbDB.&SN..P&PART..&UNIQ.'
UNIT 3490 RETPD 9999 STACK YES
TEMPLATE TPUNCH
DSN('XB.&DB..&SN..P&PART..SYSPCH$xbUQ')
DATACLAS(NULL8) MGMTCLAS(COM#A019)
SPACE (1,1) TRK
TEMPLATE TPUNCHT
DSN 'XB.&DB..&SN..P&PART..SYSPCH$xbUQ'
UNIT 3490 RETPD 9999 STACK YES
TEMPLATE TUNL
DSN('XB.&DB..&SN..P&PART..SYSREC.&UNIQ.')
$storAll MGMTCLAS (COM#A019) DATACLAS (ENN35)
SPACE $xbTS
TEMPLATE TUNLT
DSN 'XB.&DB..&SN..P&PART..SYSREC.&UNIQ.'
UNIT 3490 RETPD 9999 STACK YES
$/templXB/
$proc $@=/templXBN/
$@templHead
TEMPLATE TCOPYD
DSN('&SSID..$pbDB.&SN..P&PART..&UNIQ.')
DATACLAS(ENN35) MGMTCLAS(COM#A011) $storFar
SPACE (1500,10000) TRK
TEMPLATE TPUNCH
DSN('XB.&DB..&SN..P&PART..SYSPCH')
$storFar MGMTCLAS ($xbUM) DATACLAS (NULL8)
SPACE (1,1) TRK
TEMPLATE TUNL
DSN('XB.&DB..&SN..P&PART..SYSREC.&UNIQ.')
$storFar MGMTCLAS ($xbUM) DATACLAS (ENN35)
SPACE (100,12000) TRK
$/templXBN/
$proc $@=/templXB1/
$@templHead
TEMPLATE TPUNCHT
UNIT 3490
DSN 'XB.DIV.$xbPu'
RETPD 9999
STACK YES
TEMPLATE TUNLT
UNIT 3490
DSN 'XB.DIV.$xbRe'
RETPD 9999
STACK YES
TEMPLATE TPUNCH
DSN 'XB.DIV.$xbPu'
DATACLAS(NULL8) MGMTCLAS(COM#A019)
SPACE (1,1) TRK
TEMPLATE TUNL
DSN 'XB.DIV.$xbRe'
DATACLAS(ENN35) MGMTCLAS(COM#A019)
SPACE $xbUS
$/templXB1/
$#out 20161114 09:42:32
$#out 20161114 09:38:56
$#out 20160831 15:23:47
$#out 20160831 15:23:26
$#out 20160728 15:14:18
$#out 20160728 15:13:21
$#out 20160621 15:46:30
$#out 20160621 15:44:51
$#out 20160621 15:44:11
*** run error ***
adr ispExec rc 20 in view dataset('~.tst.tmpl(##dist)'): '~.TST.TMPL' was not...
$#out 20160520 11:16:54
$#out 20160520 11:13:24
$#out 20160520 08:28:44
$#out 20160520 07:35:25
$#out 20160520 07:18:15
$#out 20160520 07:02:19
*** run error ***
undefined var uts
$#out 20160520 07:01:14
*** run error ***
undefined var uts
$#out 20160519 09:56:57
*** run error ***
undefined var uts
$#out 20160519 09:55:51
*** run error ***
undefined var uts
$#out 20160519 09:42:37
*** run error ***
adrTso rc= 12 stmt=alloc dd(CAT1) new catalog dataset('A234579.TST.TMPL') recfm(
IKJ56893I DATA SET A234579.TST.TMPL NOT ALLOCATED+
IGD308I DATA SET ALLOCATION REQUEST FAILED -
RACF FUNCTION: RACDEF FOR
DATA SET: A234579.TST.TMPL WITH RETURN CODE 08 REASON CODE 00
$#out 20150219 08:06:00
$#out 20150218 20:45:31