zOs/REXX.O08/OODIV
/* copy ooDiv begin ****************************************************
***********************************************************************/
readDsnOpen: procedure expose m.
parse arg oid, spec
x = dsnAlloc(spec, 'SHR', 'RE'oid)
dd = word(x, 1)
call readDDBegin dd
return ooDefReadStem(oid, 'res = readDD('dd', "M."stem".")',
, 'call readDDEnd' dd';' subword(x, 2))
endProcedure readDsnOpen
readCatOpen: procedure expose m.
parse arg oid, src
if symbol("m.oo.oid.readCatOid") ^= 'VAR' then
m.oo.oid.readCatOid = ooNew()
catOid = m.oo.oid.readCatOid
ox = 0
do ix=2 to arg()
s = arg(ix)
do while s <> ''
ex = pos('$', s)
if ex > 0 then do
w = strip(left(s, ex-1))
s = substr(s, ex+1)
end
else do
w = strip(s)
s = ''
end
if w ^= '' then do
ox = ox + 1
m.oo.oid.readCat.ox = w
end
end
end
m.oo.oid.readCat.0 = ox
m.oo.oid.readCatIx = 0
call ooDefRead catOid, 'res=0'
return ooDefRead(oid, 'res = readCat("'oid'", var);',
, 'call readCatClose "'oid'";')
endProcedure readCatOpen
readCat: procedure expose m.
parse arg oid, var
catOid = m.oo.oid.readCatOid
do forever
if ooRead(catOid, var) then
return 1
catIx = m.oo.oid.readCatIx + 1
if catIx > 1 then
call ooReadClose catOid
if catIx > m.oo.oid.readCat.0 then
return 0
m.oo.oid.readCatIx = catIx
src = m.oo.oid.readCat.catIx
if left(src, 1) = '&' then
call ooReadStemOpen catOid, strip(substr(src, 2))
else
call readDsnOpen catOid, src
end
endProcedure readCat
readCatClose: procedure expose m.
parse arg oid
if m.oo.oid.readCatIx > 0 then
call ooReadClose m.oo.oid.readCatOid
return
endProcedure readCatClose
/* copy ooDiv end ***************************************************/