zOs/REXX/SQLWSH

/* copy sqlWsh begin **************************************************
        remote SQL using csmExWsh ************************************/
sqlConClass_w: procedure expose m.
    if m.sqlWsh_ini == 1 then
        return m.class_SqlWshConn
    m.sqlWsh_ini = 1
    call sqlConClass_S
    call csmIni
    call classNew 'n SqlWshRdr u CsmExWsh', 'm',
        , "jReset call jReset0 m; m.m.rdr = jBuf()" ,
                 "; m.m.rzDb=arg; m.m.sql = arg2;m.m.type= arg(3)" ,
        , "jOpen  call sqlWshRdrOpen m, opt"
    return classNew('n SqlWshConn u', 'm',
        , "sqlRdr return oNew(m.class_sqlWshRdr, m.sql_conRzDb" ,
            ", src, type)" ,
        , "sqlsOut return sqlWshOut(rdr,m.sql_conRzDB,retOk,m.ft.opt)")
endProcedure sqlConClass_w

/*--- send an sql to csm and handle sqlCode -------------------------*/
sqlWshRdrOpen: procedure expose m.
parse arg m, oOpt
    r = m.m.rdr
    m.r.buf.0 = 1
    m.r.buf.1 = m.m.sql
    parse var m.m.RzDb m.m.rz '/' dbSys
    m.m.wOpt = 'e sqlRdr' dbSys
    call csmExWshOpen m, oOpt
    d = m.m.deleg
    em = ''
    do while jRead(d)
        if objClass(m.d) \== m.class_S then do
            m.d.readIx = m.d.readIx - 1
            leave
            end
        em = em'\n'm.d
        end
    if em == '' then
        return m
    call jClose m.m.deleg
    return err('sqlWshRdr got' substr(em, 3))
endProcedure sqlWshRdrOpen

/*--- send an sql to csm and handle sqlCode -------------------------*/
sqlWshOut: procedure expose m.
parse arg rdr, rzDb, retOk, oo
    parse value dsnCsmSys(rzDb) with rz '/' dbSys
    if pos('o', oo) > 0 then
        spec = 'e sqlsOut'
    else
        spec = 'v' || (m.wsh.outLen+4) 'sqlsOut'
    call csmExWsh rz, rdr, spec dbSys oo retOk
    return 1
endProcedure sqlWshOut
/* copy sqlWsh end   *************************************************/