zOs/SQL/CATCOPW

call adrSqlConnect dbaf
$£ timing() 'elapsed' time(e)
$;
$<<eof
select
    c.dbname, c.tsName, c.dsNum, s.pgSize, s.partitions,
    icType, copyPagesf, nPagesF, cPagesF, dsName, timestamp
    from sysibm.syscopy c, sysibm.systablespace s
    where icType in ('F', 'I') and c.dbName like 'MF01%'
        and s.dbName = c.dbName and s.name = c.tsName
    order by 1, 2,3, timestamp desc
    with ur
eof call sql 1 $! $@{
    lst = ''
    parts = 0
    copys = 0
    allKeys = 'DDF DDI DAF DAI ADF ADI AAF AAI' ,
              'NDF NDI NAF NAI TDF TDI TAF TTI UDF UDI UAF UAI'
    do kx=1 to words(allKeys)
        k = word(allKeys, kx)
        v.k = 0
        v.k.kb = 0
        end
    first = 1
    $@for c $@{
    copys = copys + 1
    dsn = ${c.DSNAME}
    crn = ${c.DBNAME}'.'${c.TSNAME}'.'${c.DSNUM}
    if crn <> lst then do
        if lst <> '' then do
        $** $£ lst 'with' f 'full and' i 'incremental'
            end
        f = 0
        i = 0
        parts = parts + 1
        lst = crn
        if first then do
            first = 0
            $£ 'first' crn dsn
            end
        if time('e') > 4 then do
            $£ 'elapsed time guillotine' time('e') crn dsn
            leave
            end
        end
    if f < 1 then
        key = 'D'
    else
        key = 'A'
    if ${c.ICTYPE} = 'F' then
        f = f + 1
    else if ${c.ICTYPE} = 'I' then
        i = i + 1
    else
        say 'bad type' ${c.ICTYPE}
    rc = listdsi("'"dsn"'" smsInfo)
    if sysReason = 0 then do
        key = 'D'key
        if sysUnits = 'CYLINDER' then
            cy = sysUsed
        else if sysUnits = 'TRACK' then
            cy = sysUsed / sysTrksCyl
        else if sysUnits = 'BLOCK' then
            cy = sysUsed / sysTrksCyl / sysBlksTrk
        else
            cy = '?'
        if cy <> '?' then do
           sz = cy * 720
           ct = ${c.COPYPAGESF} * ${c.PGSIZE}
           if sz < 0.8 * ct | sz > max(ct + 720, 1.2 * ct) then
               say 'sizeMismatch' sz '<> cat' ct 'dsn' dsn
           end
        end
    else if sysReason =  5 then do
        key = 'N'key $** not catalogued
        end
    else if sysReason =  8 then do
        key = 'T'key $** not direct access
        end
    else if sysReason = 19 then do
        key = 'U'key $** multiple volumes ---> unknown
        end
    else if sysReason = 25 then do
        key = 'A'key $** archived
        end
    else do
        $£ 'reason:' sysReason 'l1:' sysMsgLvl1 'l2:' sysMsgLvl2 $*+
                  'for' dsn
        key = 'U'key
        end
    key = key || ${c.ICTYPE}
    if ^ (sysUnit = '' | sysUnit = '3390') then
        $£ key 'unit' sysUnit dsn
    v.key = v.key + 1
    v.key.kb = v.key.kb + ${c.COPYPAGESF} * ${c.PGSIZE}
    $}
   $*(  if lst <> '' then do
            $£ 'last' lst 'with' f 'full and' i 'incremental'
            end
   $*)
    $£  copys 'copies in' parts 'partitions'
    do kx=1 to words(allKeys)
        k = word(allKeys, kx)
        $£ k right(v.k, 10) format(v.k.kb, 1,3,1,0)
        end
$} $;
$£ timing() 'end elapsed' time(e)
call adrSqlDisconnect
$***out            20080114 17:06:10
17:06:11 0     60.34 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 4.010811 MF01A1A.A150H.21 DBAF.MF01A1A.A150H.P0021.D0801
868 copies in 290 partitions
DDF          0 0.000
DDI          0 0.000
DAF          0 0.000
DAI          0 0.000
ADF        289 4.383E+7
ADI          0 0.000
AAF        578 8.765E+7
AAI          0 0.000
NDF          0 0.000
NDI          0 0.000
NAF          0 0.000
NAI          0 0.000
TDF          0 0.000
TDI          0 0.000
TAF          0 0.000
TTI          0 0.000
UDF          0 0.000
UDI          0 0.000
UAF          0 0.000
UAI          0 0.000
17:06:15 4.013969     61.68 end elapsed 4.013982
$***out            20080114 17:05:48
17:05:48 0     58.84 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 4.004996 MF01A1A.A150H.19 DBAF.MF01A1A.A150H.P0019.D0801
862 copies in 288 partitions
DDF          0 0.000
DDI          0 0.000
DAF          0 0.000
DAI          0 0.000
ADF        287 4.383E+7
ADI          0 0.000
AAF        574 8.765E+7
AAI          0 0.000
17:05:52 4.006937     60.16 end elapsed 4.006952
$***out            20080114 16:40:11
16:40:11 0     55.71 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 4.004951 MF01A1A.A150H.189 DBAF.MF01A1A.A150H.P0189.D080
1372 copies in 458 partitions
UDF          0 0.000
UDI          0 0.000
UTF          0 0.000
UTI          0 0.000
MDF          0 0.000
MDI          0 0.000
MTF          0 0.000
MTI          0 0.000
DDF          0 0.000
DDI          0 0.000
DTF          0 0.000
DTI          0 0.000
TDF        457 6.477E+7
TDI          0 0.000
TTF        914 1.295E+8
TTI          0 0.000
16:40:15 4.007936     57.71 end elapsed 4.007950
$***out            20080114 16:36:29
16:36:29 0     53.58 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 4.006499 MF01A1A.A150H.166 DBAF.MF01A1A.A150H.P0166.D080
1303 copies in 435 partitions
UDF          0 0.000
UDI          0 0.000
UTF          0 0.000
UTI          0 0.000
MDF          0 0.000
MDI          0 0.000
MTF          0 0.000
MTI          0 0.000
DDF          0 0.000
DDI          0 0.000
DTF          0 0.000
DTI          0 0.000
TDF        434 5.875E+7
TDI          0 0.000
TTF        868 1.175E+8
TTI          0 0.000
16:36:33 4.009540     55.44 end elapsed 4.009553
$***out            20080114 16:35:32
16:35:32 0     53.35 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 0.102144 MF01A1A.A137A.0 DBAF.MF01A1A.A137A.P0000.D08010
28 copies in 10 partitions
UDF          0 0.000
UDI          0 0.000
UTF          0 0.000
UTI          0 0.000
MDF          0 0.000
MDI          0 0.000
MTF          0 0.000
MTI          0 0.000
DDF          0 0.000
DDI          0 0.000
DTF          0 0.000
DTI          0 0.000
TDF          9 1.410E+7
TDI          0 0.000
TTF         18 2.820E+7
TTI          0 0.000
16:35:32 0.105071     53.40 end elapsed 0.105084
$***out            20080114 16:35:08
16:35:08 0     53.06 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 0.105246 MF01A1A.A138A.0 DBAF.MF01A1A.A138A.P0000.D08010
31 copies in 11 partitions
UDF          0 0.000
UDI          0 0.000
UTF          0 0.000
UTI          0 0.000
MDF          0 0.000
MDI          0 0.000
MTF          0 0.000
MTI          0 0.000
DDF          0 0.000
DDI          0 0.000
DTF          0 0.000
DTI          0 0.000
TDF         10 1.410E+7
TDI          0 0.000
TTF         20 2.820E+7
TTI          0 0.000
16:35:08 0.108192     53.12 end elapsed 0.108204
$***out            20080114 16:34:44
16:34:44 0     52.84 elapsed 0
first MF01A1A.A101A.0 DBAF.MF01A1A.A101A.P0000.D08010.T031218
elapsed time guillotine 0.102147 MF01A1A.A138A.0 DBAF.MF01A1A.A138A.P0000.D08010
31 copies in 11 partitions
UDF          0 0.000
UDI          0 0.000
UTF          0 0.000
UTI          0 0.000
MDF          0 0.000
MDI          0 0.000
MTF          0 0.000
MTI          0 0.000
DDF          0 0.000
DDI          0 0.000
DTF          0 0.000
DTI          0 0.000
TDF         10 1.410E+7
TDI          0 0.000
TTF         20 2.820E+7
TTI          0 0.000
16:34:44 0.105212     52.90 end elapsed 0.105227
$***out            20080114 16:34:07