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/