zOs/SQL/LOGEXLOA
$#@
m.dsl.1 = DSN.ABLF.LOGE2.RZ2.TADM60A1.D14276.T160821
m.dsl.2 = DSN.ABLF.LOGE2.RZ2.TADM63A1.D14276.T160821
m.dsl.3 = DSN.ABLF.LOGE2.RZ2.TADM64A1.D14276.T160821
m.dsl.4 = DSN.ABLF.LOGE2.RZ2.TADM65A1.D14276.T160822
m.dsl.0 = 4
$=rz=RZ2
$=ab=logE2
$=now =- f('%t s')
if $rz = RZ4 then
$=paPr = DSN.ABLF.LOGE2
else if pos($rz, RZ2 RR2 RQ2) > 0 then
$=paPr = DBOF.DBAA.ABLF.LOGE2
else
$=paPr = DE0G.DBAA.ABLF.LOGE2
$<>
$>. fEdit()
$@=/job/
//QMW8300P JOB (CP00,KE50),'DB2 MVEXT',
// MSGCLASS=T,TIME=1440,
// NOTIFY=&SYSUID,REGION=0M,SCHENV=DB2
//*MAIN CLASS=P2
//*
//* db2 log Extract ablauf $ab from $rz
//* generated by abub at $now
//*
$do dx=1 to m.dsl.0 $@/table/
$** .DE0G.TADM60A1.D14107.T080224
$=iDsn =- strip(m.dsl.dx)
px = pos('.'$rz'.', $iDsn)
d1 = substr($iDsn, px + 5)
tb = left(d1, 8)
if px < 1 | translate(substr(d1, 9),
, 000000000, 123456789) \== '.D00000.T000000' then $@[
$$ //* bad dsn $iDsn
iterate
$] else if tb == 'TADM60A1' then $@[
$= tb = TimeO
$= crTb = OA1P.TQZ060TIMEOUT
m.doneTimeO = 1
$] else if tb == 'TADM63A1' then $@[
$= tb = UOW
$= crTb = OA1P.TQZ063UOW
m.doneUOW = 1
$] else if tb == 'TADM64A1' then $@[
$= tb = LockE
$= crTb = OA1P.TQZ064LOCKESCAL
m.doneLockE = 1
$] else if tb == 'TADM65A1' then $@[
$= tb = Abend
$= crTb = OA1P.TQZ065ABEND
m.doneAbend = 1
$] else $@[
$$- '//* bad tb' tb 'in dsn' $iDsn
iterate
$]
$$- '//* dsn' $iDsn
$$- '//* tb' tb '==>' $tb '==>' $crTb
$=iDsn=- m.dsl.dx
if $rz = sysvar(sysnode) then
$= csm = $''
else
$= csm = SUBSYS=(CSM,'SYSTEM=$rz'),
$@=[
//* ------ load $rz $iDsn
//L$dx EXEC PGM=DSNUTILB,
// PARM=(DP4G,'LOA#DELIMITER')
//DSSPRINT DD SYSOUT=*
//SYSPRINT DD SYSOUT=*
//SYSUDUMP DD SYSOUT=*
//UTPRINT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSTEMPL DD DSN=DP4G.DBAA.LISTDEF(TEMPL),DISP=SHR
//IN DD DISP=SHR,$csm
// DSN=$iDsn
//SYSIN DD *
EXEC SQL
delete from $crTb WHERE RZ = '?'
ENDEXEC
LOAD DATA RESUME YES INDDN IN LOG YES
SHRLEVEL CHANGE
WORKDDN(TSYUTS,TSOUTS)
FORMAT DELIMITED COLDEL ','
INTO TABLE $crTb
(
$@%[colsNoRz $tb $]
)
EXEC SQL
delete from $crTb n
where rz = '?'
and exists (select 1 from $crTb a
where rz = '$rz' -- for pta, beta has only 3 months
and loadDate > current date - 100 days
and a.timestamp = n.timestamp
and a.dbSys = n.dbSys and a.ssid = n.ssid
and a.event_type = n.event_type
$]
if $tb == 'TimeO' then $@=[
and a.victim_corr_id = n.victim_corr_id )
-- and a.holder_corr_id = n.holder_corr_id
-- and a.name = n.name)
$] else if $tb == 'UOW' then $@=[
and a.plan_name = n.plan_name
and a.corrid_id = n.corrid_ID )
-- and a.logRec = n.logRec)
$] else if $tb == 'LockE' then $@=[
and a.plan_name = n.plan_name
and a.corrid_id = n.corrid_ID )
-- and a.conn_id = n.conn_id
-- and a.package_name = n.package_name)
$] else if $tb == 'Abend' then $@=[
and a.jobname = n.jobname
and a.corrid_id = n.corrid_ID )
-- and a.conn_id = n.conn_id
-- and a.authid = n.authid )
$] else $@=[
implement table $crTb in DSN.ABUB.A.SKELS(QMW83)
$]
$@=[
ENDEXEC
EXEC SQL
update $crTb set rz = '$rz'
where rz = '?'
ENDEXEC
// IF L$dx.RUN AND (L$dx.RC = 0 OR L$dx.RC = 4) THEN
//D$dx EXEC PGM=IEFBR14 $*(
//DEL DD DISP=(OLD,DELETE),$csm
// DSN=$iDsn $*)
// ENDIF
$]
$/table/
$@[ if m.doneTimeO == 1 & m.doneUOW == 1 & m.doneLockE == 1 ,
& m.doneAbend == 1 then $@=[
// IF RC <= 4 AND NOT ABEND THEN
//PARMCOPY EXEC PGM=CSMUTIL,PARM='CSM,COPYREPLACE'
//SYSPRINT DD SYSOUT=*
//SYSUT1 DD DSN=$paPr.PARMNEW,
// ${csm}DISP=SHR
//SYSUT2 DD DSN=$paPr.PARMOLD,
// ${csm}DISP=(MOD,CATLG),
// MGMTCLAS=COM#A092,DCB=(RECFM=FB,DSORG=PS,LRECL=(80)),
// SPACE=(TRK,(1,1))
// ENDIF
$] else $@=[
//* parm wird nicht kopiert da nicht alle Loads
//* doneTimeO $-[m.doneTimeO $]
//* doneUOW $-[m.doneUOW $]
//* doneLockE $-[m.doneLockE $]
//* doneAbend $-[m.doneAbend $]
//* paPr $paPr
$]
$]
$/job/
$proc $@/colsNoRz/
parse arg , tb
$@=[
TIMESTAMP
, DBSYS
, SSID
, EVENT_TYPE
$] if tb == 'TimeO' then $@=[
, VICTIM_PLAN
, VICTIM_CORR_ID
, VICTIM_CONN_ID
, HOLDER_PLAN
, HOLDER_CORR_ID
, HOLDER_CONN_ID
, REASON_CODE
, TYPE
, NAME
$] else if tb == 'UOW' then $@=[
, PLAN_NAME
, CORRID_ID
, CONN_ID
, AUTHID
, LOGREC
$] else if tb == 'LockE' then $@=[
, PLAN_NAME
, PACKAGE_NAME
, COLLECTION_ID
, CORRID_ID
, CONN_ID
, RESOURCE
, LOCK_STATE
, STATEMENT
$] else if tb == 'Abend' then $@=[
, CORRID_ID
, JOBNAME
, CONN_ID
, AUTHID
, ASID
, TCB
$] else
call err 'bad tb' tb
$/colsNoRz/