zOs/REXX.O13/EXALL

/* rexx */
call checkDsn sysproc file
call checkDsn tmp.jcl
call checkDsn 'tmp.jcl(noex)'
call checkDsn "'OMS.DIV.P0.STAT.RZ1.Y04M03'"
call checkDsn "'PVSP.U0000.T0.PVXDUMP.D05161.T144149'"
call checkDsn "'PVSP.U0000.T0.PVXDUMP.D05164.T081555'"
exit

dsn = 'tmp.ex'
address tso delete dsn
address tso 'alloc dsn('dsn') dd(x) reuse new ' ,
        'dataclas(VB0256S0) mgmtclas(S005Y000)'
say 'alloc rc' rc
call checkDsn dsn
exit
checkDsn:
parse arg dsn
    say 'dsn' dsn
    say '  sysdsn    ' sysdsn(dsn)
    drop sysmsglvl1 sysmsglvl2 sysused sysalloc
    ff = listDsi(dsn 'norecall')
    say '  listDsi no' ff ', sysReason' sysReason
    say '    dsName  ' SYSDsName
    say '    volume  ' SYSVolume 'unit' sysUnit
    say '    msglvl1 ' SYSMSGLVL1
    say '    msglvl2 ' SYSMSGLVL2
    say '    used    ' sysUsed', alloc' sysAlloc sysUnits
    address tso 'alloc dd(dd0) shr dsn('dsn')'
    say '    alloc rc' rc
    address tso 'free  dd(dd0)'
    say '    free  rc' rc
return