zOs/REXX.O08/LISTDSI

/* rexx
**********************************************************************/
   w = sysexec file
    rc = listdsi(w)
    say 'listDsi rc' rc 'for' w sysdsname
/*  if rc ^= 0 then */
        say varExp('sysReason sysMsgLvl1 sysMsgLvl2')
    say varExp('sysLRecL sysBlkSize sysKeyLen')
    say varExp('sysUnit sysTrksCyl sysBlksTrk sysUnits sysUsed')
    exit
parse arg dsns
if dsns = '' then
    dsns = "'DBOF.MF01A1P.A150A.P0003.D08014.T090323' wk.rexx"
do wx = 1 to words(dsns)
    w = word(dsns, wx)
    rc = listdsi(w)
    say 'listDsi rc' rc 'for' w
    if rc ^= 0 then do
        say varExp('sysReason sysMsgLvl1 sysMsgLvl2')
        end
    say varExp('sysLRecL sysBlkSize sysKeyLen')
    say varExp('sysUnit sysTrksCyl sysBlksTrk sysUnits sysUsed')
    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 = sysUnits '????'
    say 'cylinders' cy
    end
exit
varExp:
   parse arg ggVarExpVars
   ggVarExp = ''
   do ggVarExpIx = 1 to words(ggVarExpVars)
       ggVarExp1 = word(ggVarExpVars, ggVarExpIx)
       ggVarExp = ggVarExp ggVarExp1':' value(ggVarExp1)
       end
   return ggVarExp
endSubroutine varExp