zOs/REXX/DSNEX

tstDsnEx: procedure expose m.
trace ?r
    say dsnExists('A540769.wk.rexx')
    say dsnExists('A540769.wk.rexxYY')
    say dsnExists('A540769.wk.rexx(wsh3)')
    say dsnExists('A540769.wk.rexx(wshNoNo)')
    say dsnExists('RZ2/A540769.wk.rexx(wsh3)')
    say dsnExists('RZ2/A540769.wk.rexx(wshNoNo)')
    say dsnExists('RZ2/A540769.wk.rexxYY(wsh)')
    return
endProceudre tstDsnEx
dsnExists: procedure expose m.
parse upper arg aDsn
    parse value csmSysDsn(aDsn) with sys '/' dsn
    if sys == '*' then
        return sysDsn("'"dsn"'") == 'OK'
    else if dsnGetMbr(dsn) == '' then do
        lc = adrCsm('dslist system('sys') dsnMask('dsn') short', 4)
        if stemsize = 0 | stemSize = 1 then
            return stemSize
        call err 'csmExists stemSize='stemsize 'for dsn='aDsn
        end
    else do
        call adrCsm "mbrList system("rz") dataset('"dsnSetMbr(dsn)"')",
                    "member("dsnGetMbr(dsn)") index(' ') short"
        do ix=1 to mbr_mem#
            say = mbr_name.ix
            end
        if mbr_mem# = 0 | mbr_mem# = 1 then
            return mbr_mem#
        call err 'csmExists mbr_mem#='mbr_mem# 'for dsn='aDsn
        end
        call writeDD inDD, 'I.', mbr_mem#
endProcedure dsnExists