zOs/REXX/XBSTAFO2

$#:
*       elar start force
*
*
*
dbSys = DVBP
paLim = 9e9
stLim = 1e9
saFrom = $''
sleepSt = 200
sleepMin = 30
sleepMax = 60
$#@
call sqlConnect $dbSys
call sql2St "select distinct dbName from sysibm.sysTablespace" ,
                 "where dbname like 'XB%' and name like '%WWW%'" ,
               , sa, ':m.dst'
sz = m.sa.0
say '*'time() sz 'dbs:' m.sa.1 '-' m.sa.sz
cDb = 0
cPa = 0
cSt = 0
$do sx=1 to m.sa.0 until cPa > $paLim | cSt > $stLim  $@/sa/
    $=aDb=- m.sa.sx
    say '*'time() sx'. db' $aDb',',
                  cDb 'dbs,' cPa 'parts,' cSt 'starts'
    call sqlCommit
    $;
    $<=/sql/
select p.dbName db, p.tsname ts, p.partition pa
    from sysibm.sysTablePart p
      join sysibm.sysTableSpace s
        on p.dbName = s.dbName and p.tsName = s.name
      left join sysibm.sysTableSpaceStats r
        on p.dbName = r.dbName and p.tsName = r.name
            and s.dbid = r.dbid and s.psid = r.psid
            and p.partition = r.partition
    where p.dbName = '$aDb' and p.tsname like '%WWW%'
        $*( and r.totalrows = 0 and s.spacef >= 0 $*)
    order by 1, 2, 3
    $/sql/
    call sqlSel
    $| $forWith f $@/pa/
        if laDb \= $DB then do
            cDb = cDb + 1
            laDb = $DB
            call sqlDsn dh, $dbSys, '-dis db('$DB') sp(*)' ,
                 'restrict limit(*)'
            m.di.0 = 0
            call sqlDisDb di, dh
            say '*'time() cDb'. db' $DB',' cPa 'parts,' cSt 'starts,' ,
                'disInfo' m.di.0'/'m.dh.0
   say 'db' $DB 'ts' $TS 'pa' $PA
            end
        cPa = cPa + 1
        ix = sqlDisDbIndex(di, $DB, $TS, $PA)
        if ix < 1 | pos('COPY', m.di.ix.sta) < 1 then
             iterate
        if pos('WWW', $TS) > 0 then do
    $*(
        call csiOpen cc, $UNL' '
        if \ csiNext(cc, cr) then
            say '|||not exists unl' $UNL 'for' $DB'.'$TS':'$PA
        else if $UNL \= m.cr then
            say '|||unl' $UNL '<>' m.cr 'for' $DB'.'$TS':'$PA
        else do  $*)
           if cSt // $sleepSt = 0 then do
               say '---' cSt time() cmd
               if cSt > 0 then
                   call sleep trunc(max($sleepMax ,
                         - time('e') + sleepLast , $sleepMin)), 1
               sleepLast = time('e')
               end
           cSt = cSt + 1
           say  '-sta force' $DB'.'$TS':'$PA
           cmd = '-sta db('$DB') sp('$TS') part('$PA') acc(force)'
      $**  call sqlDsn cc, $dbSys, cmd
           end
    $/pa/
    $/sa/
say '*'time() 'end' cDb 'dbs,' cPa 'parts,' cSt 'starts'
call sqlDisConnect
$#out                                              20140208 20:41:33