zOs/REXX/ELARGEN
$#:
* WSH Script fuer ElarDDL generate ddl execution jobs
*
*
lib = XB.ELAR.INFRA.FAM.NDBS.FINAL $** ddl input
lib = DSN.ELAR.GENPROD
gen = DSN.ELAR.GENDDL $** generiert jobs
gen = A540769.TST.ELAR $** generiert jobs
$** chkOut = DSN.ELAR.GENDDL.CHKOUT
creDb = 0 $** create databases if missing
dbSys = DEVG
rxLib = DSN.DB2.EXEC
$<>
$>. fEdit($-gen'(XBDDLEXE) ::f')
$@ddlExe
$<>
$*(
$>. fEdit($-gen'(XBDDLCHK) ::f')
$@ddlChk
$*)
$proc $@/ddlExe/
$= dbEx = 1
$= jn = XBDDLEXE
if $creDb then $@[
call sqlConnect $dbSys
call sqlQueryPrep 7, "select name from sysibm.sysDatabase" ,
"where name = ?"
$]
$;
lmmId = lmmBegin($lib)
allDb = ''
$do mx=1 to 9999 $@[
mbr = lmmNext(lmmId)
if mbr = '' then
leave
call readDsn "'"$lib"("mbr")'", i.
db = ''
cnt = 0
cCA = 0
do ix=1 to i.0
li = translate(i.ix)
cCA = cCA + (wordPos('CREATE', li) > 0) ,
+ (wordPos('ALTER', li) > 0)
if wordPos('IN', li) > 0 then do
nd = word(li, wordPos('IN', li) + 1)
nd = word(translate(nd, ' ', '.'), 1)
if nd = '' then
call 'err' mbr ix 'bad in:' i.ix
if db = '' then
db = nd
else if db \== nd then
call err 'db was' db 'but now' nd 'in' mbr ix':'i.ix
cnt = cnt + 1
end
if wordPos('DROP', li) > 0 then do
if abbrev(li, '--') then nop
else if subWord(li, wordPos('DROP', li)-2, 2) ,
== 'RESTRICT ON' then nop
else
call err 'drop in' mbr ix':'i.ix
end
end
if db <> '' & wordPos(db, allDb) < 1 then
allDB = allDb db
if db = '' then
if cCA <> 0 then
call err 'no db found in' mbr
if mx // 20 = 0 then
say mx mbr 'db' db 'cnt' cnt 'cCA' cCA
$=mbr=- mbr
$=db =- db
if $creDb & db <> '' then $@[
call sqlQueryArgs 7, db
$=dbEx =- sqlFetch(7, ee)
call sqlClose 7
$=mx =- right(mx, 4, 0)
$]
if mx // 50 = 1 then $@=/jc/
//$jn JOB (CP00,KE50),'DB2 ELARDDL',
// MSGCLASS=T,TIME=1440,
// NOTIFY=&SYSUID,REGION=0M,SCHENV=DB2
//*MAIN CLASS=LOG
//* ddl execution generiert von dsn.elar.ddlGen(elarGen)
//* im $-[sysvar(sysNode) 'um' f('%t s')$]
$/jc/
$@=/jcl/
//******** $mx db=$db mbr=$mbr *************************
// IF RC=0 THEN
//S${mx}DDL EXEC PGM=IKJEFT01,DYNAMNBR=200,TIME=99
//SYSTSIN DD *
DSN SYSTEM($dbSys)
RUN PROGRAM(DSNTEP2) PARMS('ALIGN(LHS)') PLAN(DSNTEP2)
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//SYSTERM DD DUMMY
//SYSIN DD *
-- elar createDDl $mx db=$db mbr=$mbr -------------
--#SET MAXERRORS 0
set current sqlid = 'S100447';
$@[ if \ $dbEx then $@=[
create database $db
BUFFERPOOL BP2 INDEXBP BP1 CCSID EBCDIC
STOGROUP GSMS4
;
$] $]
// DD DISP=SHR,DSN=$lib($mbr)
// ENDIF
$@/sleep/ if mx // 10 = 0 then $@=[
// IF RC = 0 THEN
//SLE$mx EXEC PGM=IKJEFT01
//SYSTSPRT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSPROC DD DISP=SHR,DSN=$rxLib
//WSH DD DUMMY
//SYSTSIN DD *
wsh @ call sleep 30
// ENDIF
$] $/sleep/
$/jcl/
$]
call lmmEnd lmmId
$=allDb =- allDb
$/ddlExe/
$proc $@=/ddlChk/
$=jn = XBDDLCHK
//$jn JOB (CP00,KE50),'DB2 ELARDDL',
// MSGCLASS=T,TIME=1440,
// NOTIFY=&SYSUID,REGION=0M,SCHENV=DB2
//*MAIN CLASS=LOG
//CLEANUP EXEC PGM=IDCAMS
//SYSPRINT DD SYSOUT=*
//SYSIN DD *
DEL ('DSN.DBX.*.ELARDDL.RQ1') PURGE NOSCRATCH
SET MAXCC = 0
$@do dx=1 to words($allDb) $@=/oneDb/
$= db =- word($allDb, dx)
//******************** $dx $db
//SQL$dx EXEC PGM=IKJEFT01,REGION=0M
//SYSEXEC DD DISP=SHR,DSN=DSN.GENERAL.EXEC
//RXPARM DD DISP=SHR,DSN=DSN.DBX.ELARDDL.SETUP(ELARDDL)
//SYSUDUMP DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSTSPRT DD SYSOUT=*
//SYSTSIN DD *
%EXECSQL CONNECTID="$dbSys" -
[TAYLORING] TAYLORING=YES HLQ="DSN.DBX" -
TAYLOR.0=4 -
TAYLOR.1.NAME="&FAMILY" TAYLOR.1.VALUE=NULL -
TAYLOR.2.NAME="&DBNAME" TAYLOR.2.VALUE="'$db'" -
TAYLOR.3.NAME="&CREATE_FROM" TAYLOR.3.VALUE="'10.12.2014'" -
TAYLOR.4.NAME="&CREATE_TO" TAYLOR.4.VALUE="'13.12.9999'"
//*
//* copy to output lib
//*
//COP$dx EXEC PGM=IEBGENER
//SYSPRINT DD SYSOUT=*
//SYSUT2 DD DISP=SHR,DSN=$chkOut($db)
//SYSUT1 DD DISP=(MOD,DELETE,DELETE),
// DSN=DSN.DBX.&SYSUID..ELARDDL.RQ1
//SYSIN DD DUMMY
$/oneDb/
$/ddlChk/
$#out 20150106 11:40:09
$#out 20150106 11:39:47
*** run error ***
adr ispExec rc 8 in LMINIT DATAID(lmmId) DATASET('XB.ELAR.INFRA.FAM.NDBS.FINAL')
$#out 20141218 10:54:46
*** run error ***
adr ispExec rc 8 in LMINIT DATAID(lmmId) DATASET('XB.ELAR.INFRA.FAM.NDBS.FINAL.N
$#out 20141218 10:43:28
$#out 20141218 10:41:04