zOs/REXX/EJES

/* copy eJes begin ***************************************************/
eJesJobExtDD: procedure expose m.
parse arg jMask, dd
    call eJesInit jMask
    call eJesExec '* st', job_
    say 'jMask='jMask':' job_lines 'jobs'
    do jx=1 to job_lines
        call eJesExec "0 locate" jx, job_
        cc = eJesExec("* :s", ds_, 4 8)
        if cc <> 0 then do
            if ds_msgShort = 'Job no longer found' then
                say 'job' job_jobName.jx 'no longer found'
            else
                call eJesErr ds_, ':s' job_jobName.jx, cc
            iterate
            end
        say 'job' jx job_jobName'('job_jobId'):' ds_lines 'datasets'
        cc = eJesExec("0 f" dd" 3 10", ds_, 4 8)
        if cc <> 0 | ds_tcdata.ds__ddName <> dd then do
            if ds_msgShort = 'String not found' then
                say 'dd' dd 'not found' ds_tcdata.ds__ddName
            else
                call eJesErr ds_, 'dd' ds_tcdata.ds__ddName,
                           '<> searched' dd, cc
            end
        else do
            say 'dd='dd 'step='ds_tcdata.ds__sName ,
                   'recs='ds_tcdata.ds__records
            call eJesExec "0 :e", ex_
            say strip(ex_msg.0 ex_msg.1) '==> dd eJesExt'
            end
        call eJesExec "0 end", ds_
        end
    call eJesTerm
    return
endProcedure

eJesExec:
parse arg ggS1 ggStmt, ggPrf, ggRet
    if ggPrf == '' then
        ggCC =eJesRexx("execApi" ggS1" '"ggStmt"'")
    else
        ggCC =eJesRexx("execApi" ggS1" '"ggStmt"' (prefix" ggPrf)
    if ggCC <>  0  & wordPos(ggCC, ggRet) < 1 then
        call eJesErr ggPrf, ggStmt, ggCC
    return ggCC
endProcedure eJesExec

eJesInit: procedure expose m.
parse arg ggPref
    ggCC =eJesRexx('initApi')
    if ggCC <> 0 & eJes_MsgShort <> 'SAF security disabled' then
        call eJesErr eJes_, 'initApi', ggCC
    call eJesExec "0 pReset"
    call eJesExec "0 owner="        /* sonst gibts nur meine */
    call eJesExec "0 maskChar *%"   /* default ist space  */
    if ggPref \== '' then
        call eJesExec "0 jName="ggPref
    return
endProcedure eJesInit

eJesTerm: procedure expose m.
    cc =eJesRexx('termApi')
    if cc <> 0 then
        call err 'termApi CC='cc eJes_msgShort
    return
endProcedur eJesTerm

eJesErr:
parse arg ggPrf, ggMsg, ggEE
    if ggPrf == '' then
        ggPrf = 'EJES_'
    call eJesScreen ggPrf, 'eJesErr CC='ggEE ggMsg
    ggMsg = strip(ggMsg 'cc='ggEE ,
                'msg.0='value(ggPrf'Msg.0') 'prefix='ggPrf) ,
             || '\n  'strip(value(ggPrf'MsgShort'))
    if datatype(value(ggPrf'Msg.0'), 'n') then
        do ggX=1 to value(ggPrf'Msg.0')
            ggMsg = ggMsg'\n  'strip(value(ggPrf'Msg.ggX'))
            end
    call eJesTerm
    call err 'eJes' ggMsg
endProcedure eJesErr

eJesMsg:
parse arg ggPrf, ggMsg
    say strip(ggMsg value(ggPrf'MsgShort'),
                'msg.0='value(ggPrf'Msg.0') 'prefix='ggPrf)
    if datatype(value(ggPrf'Msg.0'), 'n') then
        do ggX=1 to value(ggPrf'Msg.0')
            say 'msg.'ggX'='value(ggPrf'Msg.ggX')
            end
    return
endProcedure eJesMsg

eJesScreen:
parse arg ggPrf, ggMsg
    call eJesMsg ggPrf, ggMsg
    say left('eJes screen fun='value(ggPrf'FunName') ,
              value(ggPrf'FunType') 'Image.0='value(ggPrf'scrImage.0') ,
            , 78, '-')
    if datatype(value(ggPrf'scrImage.0'), 'n') then
        do ggX=1 to value(ggPrf'scrImage.0')
            if value(ggPrf'scrImage.ggX') <> '' then
                say strip(value(ggPrf'scrImage.ggX'), 't')
            end
    return
endProcedure eJesScreen
/* copy eJes end   ***************************************************/