zOs/SQL/BIPA2MI2
delete from OA1P.tAdm42BindVal;
delete from OA1P.tAdm41BindKey ;
----- val rdl = rz db2system location ----------------------------------
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2000', 20, 'RZ1', 'DBAF') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2008', 22, 'RZ8', 'DC0G') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2000', 40, 'RZ1', 'DBTF') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2008', 42, 'RZ8', 'DD0G') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2008', 44, 'RZZ', 'DE0G') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2000', 60, 'RR2', 'DBOF') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DBOF', '01.01.2000', 80, 'RZ2', 'DBOF') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DVBP', '01.01.2012', 22, 'RZ8', 'DCVG') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DVBP', '01.01.2000', 40, 'RZ1', 'DVTB') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DVBP', '01.01.2008', 42, 'RZ8', 'DDVG') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DVBP', '01.01.2008', 44, 'RZZ', 'DEVG') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DVBP', '01.01.2000', 60, 'RR2', 'DVBP') ;
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
values('rdl', 'DVBP', '01.01.2000', 80, 'RZ2', 'DVBP') ;
insert into OA1P.tAdm42BindVal
(type, key, installBegin, seq, va1, va2)
select type, 'DBOF>DVBP', installBegin, seq, va1, va2
from OA1P.tAdm42BindVal where type = 'rdl' and key = 'DBOF';
insert into OA1P.tAdm42BindVal
(type, key, installBegin, seq, va1, va2)
select type, 'DBOF>DVBP', installBegin, seq+1, va1, va2
from OA1P.tAdm42BindVal where type = 'rdl' and key = 'DBOF';
update OA1P.tAdm42BindVal set va3 = 'CHROI000DCVG'
where type = 'rdl' and key = 'DBOF>DVBP' and seq = 23;
update OA1P.tAdm42BindVal set va3 = 'CHSKA000DVTB'
where type = 'rdl' and key = 'DBOF>DVBP' and seq = 41;
update OA1P.tAdm42BindVal set va3 = 'CHROI000DDVG'
where type = 'rdl' and key = 'DBOF>DVBP' and seq = 43;
update OA1P.tAdm42BindVal set va3 = 'CHROI00ZDEVG'
where type = 'rdl' and key = 'DBOF>DVBP' and seq = 45;
update OA1P.tAdm42BindVal set va3 = 'CHSKA000DVBP'
where type = 'rdl' and key = 'DBOF>DVBP' and seq = 61;
update OA1P.tAdm42BindVal set va3 = 'CHSKA000DVBP'
where type = 'rdl' and key = 'DBOF>DVBP' and seq = 81;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select type, 'DBOF>DBOL', seq, va1, va2, installBegin
from OA1P.tAdm42BindVal where type = 'rdl' and key = 'DBOF';
insert into OA1P.tAdm42BindVal
(type, key, seq, va1, va2, va3, installBegin)
values('rdl', 'DBOF>DBOL', 81, 'RZ2', 'DBOF','CHSKA000DBOL'
, '01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
select type, 'DVBP>DBOF', installBegin, seq, va1, va2
from OA1P.tAdm42BindVal where type = 'rdl' and key = 'DVBP';
insert into OA1P.tAdm42BindVal (type, key, installBegin, seq, va1, va2)
select type, 'DVBP>DBOF', installBegin, seq+1, va1, va2
from OA1P.tAdm42BindVal where type = 'rdl' and key = 'DVBP';
update OA1P.tAdm42BindVal set va3 = 'CHROI000DC0G'
where type = 'rdl' and key = 'DVBP>DBOF' and seq = 23;
update OA1P.tAdm42BindVal set va3 = 'CHSKA000DBTF'
where type = 'rdl' and key = 'DVBP>DBOF' and seq = 41;
update OA1P.tAdm42BindVal set va3 = 'CHROI000DD0G'
where type = 'rdl' and key = 'DVBP>DBOF' and seq = 43;
update OA1P.tAdm42BindVal set va3 = 'CHROI00ZDE0G'
where type = 'rdl' and key = 'DVBP>DBOF' and seq = 45;
update OA1P.tAdm42BindVal set va3 = 'CHSKA000DBOF'
where type = 'rdl' and key = 'DVBP>DBOF' and seq = 61;
update OA1P.tAdm42BindVal set va3 = 'CHSKA000DBOF'
where type = 'rdl' and key = 'DVBP>DBOF' and seq = 81;
----- key rdl = rz db2system location ----------------------------------
insert into OA1P.tAdm41BindKey (type, prio, key, installBegin)
values ('rdl', '00', 'DBOF', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, appl, key, installBegin)
values ('rdl', '00', 'ELA%', 'DVBP', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, pgm, key, installBegin)
with a as
(
select appl a, pgm p , collid c, date(createdTS) r,
strip(ssid) || '>' || strip(location) || '-' || strip(qualifier) t
from oa1p.bind_exceptions
where ssid <> 'DAEG'
)
, b as
( select a, p, c, r,
row_number() over(partition by a, p, c
order by t) l,
t
from a
)
, c (a, p, c, r, l, t, u) as
( select a, p, c, r, 1, t, varchar(t, 2000) from b where l = 1
union all select c.a, c.p, c.c, min(c.r, b.r),
c.l+1, b.t, c.u || ' ' || b.t
from b, c
where b.a = c.a and b.p = c.p and b.c = c.c and b.l = c.l+1
and c.l < 100
)
, d as
(
select a, p, c, min(r) r, max(l) l, min(t) tFr, max(t) tTo, max(u) t
from c
group by a, p, c
)
, e as
( select
case when a in ('A18Q', 'DBTST', 'DB2J') then '-'
when p = 'AU5070' or p like 'YAU03%' then 'DBOF>DVBP'
when p = 'YCDPUT2' then '-'
when l = 12 and tFr = 'DBBA>-OA1A'
and left(tTo, 17) = 'DVTB>CHSKA000DBTF' then 'DVBP>DBOF'
when l > 4 and tFr = 'DBAF>-OA1A'
and (tTo = 'DBTF>CHSKA000DVTB-OA1T'
or tTo like 'DE0G>CH%DEVG-OA1P') then 'DBOF>DVBP'
when t = 'DBOF>-OA1P DBOF>CHSKA000DBOL-OA1P' then 'DBOF>DBOL'
else '???'
end n,
d.* from d
)
select 'rdl', '20', p, n, r --- , l, tFr, tTo, t
from e where n <> '-'
;
----- key q: base qualifier ----(no val|) ------------------------------
insert into OA1P.tAdm41BindKey (type, prio, key, installBegin)
values ('q', '00', 'OA1P', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, appl, key, installBegin)
values ('q', '02', 'ELA%', 'BUA', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, dbSy, key, installBegin)
values ('q', '05', 'DBAF', 'OA1A', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, dbSy, key, installBegin)
values ('q', '05', 'DBTF', 'OA1T', '01.01.2000');
----- val cq: collection qualifier ------------------------------------
declare global temporary table session.i
(i int not null, c2 char(2) not null) ccsid unicode;
insert into session.i
select i, right('0000' || strip(char(i)), 2) c2
from (select row_number() over() -1 i
from sysibm.sysColumns fetch first 100 rows only)s
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', '$', 1, '$', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'AV-03', i, 'AV' || c2, '$' || c2, '01.01.2000'
from session.i where i > 0 and i <= 3
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'AV-03-22', i, 'AV' || c2, '$' || c2, '01.01.2000'
from session.i where i in (1, 2, 3, 21, 22)
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'AV-10-32', i, 'AV' || c2, '$' || c2, '01.01.2000'
from session.i where i in(1,2,3,5,6,7,8,9,10,28,29,30,31,32)
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'AVALL', i, 'AV' || c2, '$' || c2, '01.01.2000'
from session.i where i > 0 and i <= 32 and i <> 4
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'AV0101', 1, 'AV01', '$01', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'AV0101', 1, 'AV02', '$01', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'AV12', 1, 'AV', '$12', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'BE-04', i, 'BE' || c2, '$' || c2, '01.01.2000'
from session.i where i > 0 and i <= 4
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'BE+04', 0, 'BE', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'BE+04', i, 'BE' || c2, '$' || c2, '01.01.2000'
from session.i where i > 0 and i <= 4
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'CD', 1, 'CD', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'CTCZ', 1, 'CT', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'CTCZ', 2, 'CZ', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'KE', 1, 'KE', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'NI-02', 2, 'NI01', '$01', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'NI-02', 3, 'NI02', '$02', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'NI+02', 0, 'NI', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'NI+02', 1, 'NI01', '$01', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'NI+02', 2, 'NI02', '$02', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'PC-02', i, 'PC' || c2, '$' || c2, '01.01.2000'
from session.i where i > 0 and i <= 2
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'PCALL', i, 'PC' || c2, '$' || c2, '01.01.2000'
from session.i where i > 0 and i <= 16
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
select 'cq', 'XCALL', i, 'XC' || c2, '$' || c2, '01.01.2000'
from session.i where i >= 0 and i <= 9
;
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'YY+', 1, '$', '$', '01.01.2000');
insert into oa1p.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('cq', 'YY+', 10, 'YY', '$', '01.01.2000');
----- key cq: collection qualifier ------------------------------------
insert into OA1P.tAdm41BindKey (type, pgm, prio, key, installBegin)
values('cq', '%', '00', '$', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, pgm, prio, key, installBegin)
with a as --- left join old tables -------------------------------------
(
select value(p.appl , e.appl) appl
, value(p.pgm , e.pgm ) pgm
, value(p.collid, e.collid) col
, value(p.installdate, e.installdate) installDate
, value(p.qualifier, '') pQua
, value(e.qualifier, '') eQua
, value(e.ssid, '') eDbSy
, value(e.location, '') eLoc
from oa1p.bind_parameters p left join oa1p.bind_exceptions e
on p.appl = e.appl
and p.pgm = e.pgm
and p.collid = e.collid
and p.installdate = e.installdate
)
, b as --- add default Qualifier and Collection
(
select a.*
, case when appl like 'ELA%' then 'BUA' else 'OA1$' end quaVar
, case when appl like 'ELA%' then 'BUA'
when eDbSy = 'DBAF' then 'OA1A'
when eDbSy = 'DBTF' then 'OA1T'
else 'OA1P' end quaDef
, case when left(pgm, 2) = 'YX' then 'YX'
when left(pgm, 2) = 'YY' then 'YY'
when left(pgm, 1) = 'Y' then substr(pgm, 2, 2)
else left(pgm, 2) end colDef
, row_number() over(partition by appl, pgm, eDbSy, eLoc
order by col) r
from a
where appl <> 'A18Q' and appl <> 'B18Q'
and pgm not in ('DEFAULT', 'DBWK1', 'DB2WK1'
-- ,'YAVCPID', 'YAVX012', 'YAV0129', 'NI8340'
-- ,'NI8660', 'NI6880')
)
and col not in ('DI_DRDA', 'EK_DRDA', 'RM_DRDA', 'TR_DRDA')
)
, d as --- add qualifier ----------------------------------------------
(
select b.*
, case when eQua is not null and eQua <> '' then eQua
when pQua is not null and pQua <> '' then pQua
else raise_error(77001, pgm || ': no qua')
end qua
from b
)
, e --- recursive build lists of colls/quals --------------------------
( appl, pgm, col, installdate, eDbSy, eLoc
, quaVar, quaDef, colDef, r, qua, quals, colls) as
(
select appl, pgm, col, installdate, eDbSy, eLoc
, quaVar, quaDef, colDef, r, qua
, cast(strip(qua) as varchar(1000))
, cast(strip(col) as varchar(1000))
from d where r = 1
union all select e.appl, e.pgm, d.col, e.installdate
, e.eDbSy, e.eLoc, d.quaVar, d.quaDef, d.colDef, e.r+1, d.qua
, e.quals || ' ' || strip(d.qua)
, e.colls || ' ' || strip(d.col)
from e join d
on e.appl = d.appl and e.pgm = d.pgm
and e.eDbSy = d.edbSy
and e.eLoc = d.eLoc and e.r + 1 = d.r and e.r < 999
)
, f as --- select maximal lists ----------------------------------------
(
select appl, pgm, max(installdate) installDate, eDbSy, eLoc
, min(col) colFr, max(col) colTo
, min(colDef) colDef
, min(qua) quaFr, max(qua) quaTo
, min(quaVar) quaVar, max(quaVar) quaVarMax
, min(quaDef) quaDef, max(quaDef) quaDefMax
, max(r) r
, max(quals) quals
, max(colls) colls
from e
group by appl, pgm, eDbSy, eLoc
)
, g1 as --- special quals ---------------------------------------------
(
select f.*
, case when quaDef <> quaDefMax
then raise_error(77031, pgm || '@' || eDbSy
|| ' quaDef ' || quaDef || ' ==> ' || quaDefMax)
when quaDef in ('OA1A', 'OA1T', 'OA1P')
then replace(quals, quaDef, 'OA1$') else quals end qualD
, case when eDbSy = 'DBBA'
then replace(quals, 'OA1A', 'OA1&')
when eDbSy = 'DVTB'
then replace(quals, 'OA1T', 'OA1&')
else replace(replace(quals, quaDef, 'OA1&')
, 'OA1$', 'OA1&') end qualV
from f
)
, g as --- group over all dbSys/Location -----------------------------
(
select appl, pgm, max(installdate) installDate
, min(colFr) colFr
, max(colTo) colTo
, min(colDef) colDef, max(colDef) colDefMax
, min(colls) colls, max(colls) collMax
, min(quaFr) quaFr
, max(quaTo) quaTo
, min(quaVar) quaVar, max(quaVarMax) quaVarMax
, min(quals) quals, max(quals) qualMax
, min(qualD) qualD, max(qualD) quaDMax
, min(qualV) qualV, max(qualV) quaVMax
, count(*) gR
from g1
group by appl, pgm
)
, h2 as --- check wether no bad change within dbSys/Location ----------
(
select appl, pgm, installDate, colFr, colTo, colDef
, quaVar, quaFr, quaTo, colls
, case when colDef <> colDefMax
then raise_error(77011, pgm || ' colDef '
|| colDef || ' ==> ' || colDefMax)
when colls <> collMax
then raise_error(77013, pgm || ' colls '
|| colls || ' ==> ' || collMax)
when quaVar <> quaVarMax
then raise_error(77032, pgm
|| ' quaVar ' || quaVar || ' ==> ' || quaVarMax)
when quals = qualMax then quals
when qualD = quaDMax then qualD
when qualV = quaVMax then qualV
else raise_error(77022, pgm
|| ' quals ' || quals || ' ==> ' || qualMax
|| ' qualD ' || qualD || ' ==> ' || quaDMax
|| ' qualV ' || qualV || ' ==> ' || quavMax)
end quals
from g
)
, h as --- colls und quals komprimieren --------------------------------
(
select h2.*
, replace(colls, ' ' || left(colls, 2), '=') collR
, replace(quals, ' ' || left(quals, 4), '=') qualR
from h2
)
, i as --- den neuen cq key bestimmen ----------------------------------
(
select h.*
, cast(case --- default
when colls = colDef and quals = quaVar then '-'
--- spezial: colls und quals nicht in sync --------
--- au
when quals = 'OA1&' and colls = 'AU' then 'AU&'
--- av
when collR = 'AV01=02=03=05=06=07=08=09=10=11=12=13=14=15'
|| '=16=17=18=19=20=21=22=23=24=25=26=27=28=29=30=31=32'
and qualR='OA1$01=02=03=09=09=09=09=09=10=09=09=09=09=09'
|| '=09=09=09=09=09=09=09=09=09=09=09=09=09=09=09=09=09'
then 'AV/Y/X012'
when collR = 'AV01=02=03=05=06=07=08=09=10=11=12=13=14=15'
|| '=16=17=18=19=20=21=22=23=24=25=26=27=28=29=30=31=32'
and qualR='OA1$01=02=03=05=06=07=08=09=10=11=12=12=12=12'
|| '=16=17=18=19=20=21=22=23=24=25=26=27=28=29=30=31=32'
then 'AV/Y/0129'
when collR = 'AV01=02' and qualR = 'OA1$01=01'
then 'AV0101'
when collR = 'AV01=02=03=05=06=07=08=09=10=11=12=13=14=15'
|| '=16=17=18=19=20=21=22=23=24=25=26=27=28=29=30=31=32'
and qualR='OA1$02=02=03=05=06=07=08=09=10=11=12=13=14=15'
|| '=16=17=18=19=20=21=22=23=24=25=26=27=28=29=30=31=32'
then 'AV/Y/CPID'
when collR = 'AV' and quals = 'OA1P12' then 'AV12'
--- be
when collR = 'BE=01=02=03=04' and qualR = 'OA1$01=01=02=03=04'
then 'BE+04'
when colls = 'CT CZ' and qualR = 'OA1$=' then 'CTCZ' --- ctcz
when colls = coldef ||' YY' and qualR = 'OA1$=' --- + yy
then 'YY+'
when colls = 'OA1P01 OA1P02' and qualR = 'OA1$01=02' --- oa1p
then 'OA1P-02'
--- allgemei
when quals = 'OA1&' and colls = colDef then 'DVTB&'
when quals = 'OA1A' and colls = colDef then 'OA1A'
--- error if colls und quals nicht in sync--------
when 'OA1$' || substr(collR, 3) <> qualR --en '???quals/coll'
then raise_error(77021, pgm || ' colls ' || collR
|| ' mismatches quals ' || qualR)
--- av
when right(collR, 83) = '05=06=07=08=09=10=11=12=13=14=15=16'
|| '=17=18=19=20=21=22=23=24=25=26=27=28=29=30=31=32'
and left(collR, 14) in ('AV01=02=03=05='
, 'AV01=02=05=06=', 'AV05=06=07=08=' )
then 'AVALL'
when collR in ('AV01=02=03', 'AV01=02','AV03') then 'AV-03'
when collR in ('AV01=02=03=05=06=07=08=09=10'
,'AV01=02=03=28=29=30=31=32'
,'AV01=02=09=10=28=29=30=31=32'
,'AV28=29=30=31=32') then 'AV-10-32'
when collR = 'AV01=02=03=21=22' then 'AV-03-22'
when collR = 'BE01=02=03=04' then 'BE-04' --- be
when collR = 'NI01=02' then 'NI-02' --- ni
when collR = 'NI=01=02' then 'NI+02'
when collR in ('PC01=02', 'PC01') then 'PC-02' --- pc
when collR in
('PC01=02=03=04=05=06=07=08=09=10=11=12=13=14=15=16'
,'PC01=02=03=04=05=06=07=08=09=10=11=13=14=15=16')
then 'PCALL'
--- xc
when collR = 'XC00=01=02=03=04=05=06=07=08=09' then 'XCALL'
--- allgemei
when colls in ('BE', 'CD', 'KE') then colls
else '???'
end as char(10)) cq
from h
)
select 'cq', pgm, '20', cq, installDate
from i
where cq <> '-'
;
update OA1P.tAdm41BindKey set type = 'q'
, dbSy = 'DVTB'
, key = 'OA1T'
where type = 'cq' and key = 'AU&'
;
----- val ov: bindOptions values --------------------------------------
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 110, 'OWNER', 'CMNBATCH','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 210, 'ISOLATION', 'CS','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 220, 'DEGREE', '1','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 310, 'DYNAMICRULES', 'BIND','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 320, 'VALIDATE', 'BIND','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 910, 'EXPLAIN', 'YES','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 920, 'FLAG', 'I','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 930, 'SQLERROR', 'NOPACKAGE','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'default', 9999, 'ACTION', 'REPLACE','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'degAny', -9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'degAny', 220, 'DEGREE', 'ANY','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'valRun', -9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'valRun', 320, 'VALIDATE', 'RUN','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'optHBD1',-9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'optHBD1', 330, 'OPTHINT', 'HBD1','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'optOH', -9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'optOH', 330, 'OPTHINT', 'OH' ,'01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'reoAlw', -9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'reoAlw', 340, 'REOPT', 'ALWAYS','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'dynRun', -9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'dynRun', 310, 'DYNAMICRULES', 'RUN','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'dynValRun',-9999,'-->parent','dynRun', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'dynValRun', 320, 'VALIDATE', 'RUN','01.01.2000');
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'relDea', -9999, '-->parent', 'default', '01.01.2000') ;
insert into OA1P.tAdm42BindVal (type, key, seq, va1, va2, installBegin)
values('ov', 'relDea', 230, 'RELEASE', 'DEALLOCATE','01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, appl, pgm, rz, dbSy,
key, installBegin)
values('ov', '00', '%', '%', '%', '%', 'default',
'01.01.2000')
;
insert into OA1P.tAdm41BindKey (type, prio, appl, pgm, rz, dbSy,
key, installBegin)
with n as
( select APPL
, PGM
, COLLID
, INSTALLDATE
,case when OWNER <> '' then owner else null end owner
,case when QUALIFIER <> '' then QUALIFIER else null end QUALIFIER
,case when ISOLATION <> '' then ISOLATION else null end ISOLATION
,case when EXPLAIN <> '' then EXPLAIN else null end EXPLAIN
,case when CURRENTDATA <> '' then CURRENTDATA else null end CURRENTDATA
,case when RELEASE <> '' then RELEASE else null end RELEASE
,case when DBPROTOCOL <> '' then DBPROTOCOL else null end DBPROTOCOL
,case when DEGREE <> '' then DEGREE else null end DEGREE
,case when DYNAMICRULES <> '' then DYNAMICRULES else null end
DYNAMICRULES
,case when KEEPDYNAMIC <> '' then KEEPDYNAMIC else null end KEEPDYNAMIC
,case when REOPT <> '' then REOPT else null end REOPT
,case when OPTHINT <> '' then OPTHINT else null end OPTHINT
,case when IMMEDWRITE <> '' then IMMEDWRITE else null end IMMEDWRITE
,case when FLAG <> '' then FLAG else null end FLAG
,case when PATH <> '' then PATH else null end PATH
,case when VALIDATE <> '' then VALIDATE else null end VALIDATE
,case when SQLERROR <> '' then SQLERROR else null end SQLERROR
,case when SQLRULES <> '' then SQLRULES else null end SQLRULES
,case when DEFER <> '' then DEFER else null end DEFER
,case when ENCODING <> '' then ENCODING else null end ENCODING
,case when ROUNDING <> '' then ROUNDING else null end ROUNDING
from oa1p.bind_parameters
)
, d as
( select
case when s.pgm <> 'DEFAULT' then 's' else ' ' end
|| case when a.appl <> 'DEFAULT' then 'a' else ' ' end
|| case when d.appl is null then ' ' else 'd' end sad
--alue(s.$ ,a.$ ,d.$ ) $
,value(s.APPL ,a.APPL ,d.APPL ) APPL
,value(s.PGM ,a.PGM ,d.PGM ) PGM
,value(s.COLLID ,a.COLLID ,d.COLLID ) COLLID
,value(s.INSTALLDATE ,a.INSTALLDATE ,d.INSTALLDATE ) INSTALLDATE
,value(s.OWNER ,a.OWNER ,d.OWNER ) OWNER
,value(s.QUALIFIER ,a.QUALIFIER ,d.QUALIFIER ) QUALIFIER
,value(s.ISOLATION ,a.ISOLATION ,d.ISOLATION ) ISOLATION
,value(s.EXPLAIN ,a.EXPLAIN ,d.EXPLAIN ) EXPLAIN
,value(s.CURRENTDATA ,a.CURRENTDATA ,d.CURRENTDATA ) CURRENTDATA
,value(s.RELEASE ,a.RELEASE ,d.RELEASE ) RELEASE
,value(s.DBPROTOCOL ,a.DBPROTOCOL ,d.DBPROTOCOL ) DBPROTOCOL
,value(s.DEGREE ,a.DEGREE ,d.DEGREE ) DEGREE
,value(s.DYNAMICRULES,a.DYNAMICRULES,d.DYNAMICRULES) DYNAMICRULES
,value(s.KEEPDYNAMIC ,a.KEEPDYNAMIC ,d.KEEPDYNAMIC ) KEEPDYNAMIC
,value(s.REOPT ,a.REOPT ,d.REOPT ) REOPT
,value(s.OPTHINT ,a.OPTHINT ,d.OPTHINT ) OPTHINT
,value(s.IMMEDWRITE ,a.IMMEDWRITE ,d.IMMEDWRITE ) IMMEDWRITE
,value(s.FLAG ,a.FLAG ,d.FLAG ) FLAG
,value(s.PATH ,a.PATH ,d.PATH ) PATH
,value(s.VALIDATE ,a.VALIDATE ,d.VALIDATE ) VALIDATE
,value(s.SQLERROR ,a.SQLERROR ,d.SQLERROR ) SQLERROR
,value(s.SQLRULES ,a.SQLRULES ,d.SQLRULES ) SQLRULES
,value(s.DEFER ,a.DEFER ,d.DEFER ) DEFER
,value(s.ENCODING ,a.ENCODING ,d.ENCODING ) ENCODING
,value(s.ROUNDING ,a.ROUNDING ,d.ROUNDING ) ROUNDING
from n s
left join n a
on a.appl = s.appl and a.pgm = 'DEFAULT'
and a.collid = 'DEFAULT'
left join oa1p.bind_parameters d
on d.appl = 'DEFAULT' and d.pgm = 'DEFAULT'
and d.collid = 'DEFAULT'
)
, e as
(
select
left(release, 4) || left(degree, 4) || left(dynamicRules, 4)
|| left(reopt, 4) || left(opthint, 4) || left(validate, 4) comb,
d.*
from d
)
, f as
( select case
when comb = ' ANY BIND BIND' then 'degAny '
when comb = ' 1 BIND BIND' then 'default '
when comb = ' 1 BIND RUN ' then 'valRun '
when comb = ' 1 BIND HBD1BIND' then 'optHBD1 '
when comb = ' 1 BIND OH BIND' then 'optOH '
when comb = ' 1 BINDALWA BIND' then 'reoAlw '
when comb = ' 1 RUN BIND' then 'dynRun '
when comb = ' 1 RUN RUN ' then 'dynValRun'
when comb = 'DEAL1 BIND BIND' then 'relDea '
else '$$$' end neu,
e.*
from e
)
select 'ov' type
, case when pgm <> 'DEFAULT' then '20'
else '10' end prio
, left(case when appl = 'DEFAULT' or pgm <> 'DEFAULT'
then '%' else appl end, 4) appl
, case when pgm = 'DEFAULT' then '%' else pgm end pgm
, '%' rz
, '%' dbSy
-- , '%' location
, neu key
, installDate installBegin
-- , f.*
from f
where appl not like 'A18Q%'
and neu <> 'default'
;x;
insert into OA1P.tAdm41BindKey (type, prio, key, installBegin)
values ('path', '00', 'DBOF', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, appl, key, installBegin)
values ('path', '00', 'ELA%', 'DVBP', '01.01.2000');
insert into OA1P.tAdm41BindKey (type, prio, pgm, key, installBegin)
with a as
(
select appl a, pgm p , collid c, date(createdTS) r,
strip(ssid) || '>' || strip(location) || '-' || strip(qualifier) t
from oa1p.bind_exceptions
where ssid <> 'DAEG'
)
, b as
( select a, p, c, r,
row_number() over(partition by a, p, c
order by t) l,
t
from a
)
, c (a, p, c, r, l, t, u) as
( select a, p, c, r, 1, t, varchar(t, 2000) from b where l = 1
union all select c.a, c.p, c.c, min(c.r, b.r),
c.l+1, b.t, c.u || ' ' || b.t
from b, c
where b.a = c.a and b.p = c.p and b.c = c.c and b.l = c.l+1
and c.l < 100
)
, d as
(
select a, p, c, min(r) r, max(l) l, min(t) tFr, max(t) tTo, max(u) t
from c
group by a, p, c
)
, e as
( select
case when a in ('A18Q', 'DBTST', 'DB2J') then '-'
when p = 'AU5070' or p like 'YAU03%' then 'DBOF>DVBP'
when p = 'YCDPUT2' then '-'
when l = 12 and tFr = 'DBBA>-OA1A'
and left(tTo, 17) = 'DVTB>CHSKA000DBTF' then 'DVBP>DBOF'
when l > 4 and tFr = 'DBAF>-OA1A'
and tTo = 'DBTF>CHSKA000DVTB-OA1T' then 'DBOF>DVBP'
when t = 'DBOF>-OA1P DBOF>CHSKA000DBOL-OA1P' then 'DBOF>DBOL'
else '???'
end n,
d.* from d
)
select 'path', '20', p, n, r
from e where n <> '-'
;
delete from OA1P.tBiPaPgm;
commit;