I use a REXX script which we use to record cond codes from test jobs.
main:
cvt = ptr(16)
tcbp = ptr(cvt)
tcb = ptr(tcbp + 4)
jscb = ptr(tcb + 180)
ssib = ptr(jscb + 316)
tct = ptr(tcb + 164)
lct = ptr(tct + 152)
jct = ptr(lct + 16)
jobid = stg(ssib + 12, 8)
jobname = stg(jct + 8, 8)
sct = c2d(stg(jct + 32, 3))
SCT_LEN = 36
if sct > 0 then do
say 'Step ProcStep CondCode'
say '-------- -------- --------'
do while sct > 0
stepname = left(stg(sct + 68, 8), 8)
procstep = left(stg(sct + 60, 8), 8)
condcode = x2d(c2x(stg(sct + 24,2)))
sctxbttp = c2d(stg(sct + 68, 3))
sctxbttp = swareq(stg( sct + 68, 3))
scabend = stg(sctxbttp + 112, 3)
say stepname procstep condcode scabend
sct = x2d(c2x(stg(sct + SCT_LEN, 3)))
end
end
exit 0
ptr: arg addr, len
if len = '' then len = 4
return x2d(c2x(bitand(storage(d2x(addr),len),x2c('7FFFFFF'))))
stg: arg addr, len
return storage(d2x(addr),len)
swareq: procedure
numeric digits 20 /* allow up to 2**64 */
sva=c2d(arg(1)) /* convert to decimal */
tcb = c2d(storage(21C,4)) /* tcb psatold */
jscb = c2d(storage(d2x(tcb+180),4)) /* jscb tcbjscb */
qmpl = c2d(storage(d2x(jscb+244),4)) /* qmpl jscbqmpi */
/* see if qmat can be above the bar */
qmsta= c2x(storage(d2x(qmpl+16),1)) /* job status byte */
if substr(x2b(qmsta),6,1) then /* is qmqmat64 bit on? */
do /* yes, qmat can be atb */
if right(x2b(c2x(arg(1))),1) \= '1' then/* swa=below ? */
return c2d(arg(1))+16 /* yes, return sva+16 */
qmat=c2d(storage(d2x(qmpl+10),2))*(2**48) +,/* qmat+0 qmadd01 */
c2d(storage(d2x(qmpl+18),2))*(2**32) +,/* qmat+2 qmadd23 */
c2d(storage(d2x(qmpl+24),4)) /* qmat+4 qmadd */
return c2d(storage(d2x(qmat+(sva*12)+64),4))+16
end
else
do /* no, qmat is btb */
if right(c2x(arg(1)),1) \= 'F' then /* swa=below ? */
return c2d(arg(1))+16 /* yes, return sva+16 */
qmat = c2d(storage(d2x(qmpl+24),4)) /* qmat qmadd */
do while sva>65536
qmat = c2d(storage(d2x(qmat+12),4)) /* next qmat qmat+12 */
sva=sva-65536 /* 010006f -> 000006f */
end
return c2d(storage(d2x(qmat+sva+1),4))+16
end
On 2019-11-05 2:26 PM, Brian Westerman wrote:
Of course there is a way, all you need to do is process the SCT from your program. You
will get all steps up to the one you are currently in only because it has not ended yet.
But if you are running as the last step it wouldn't matter. That's not how I do it in
SyzMPF/z, but it "could" be done that way in another step of the job. In fact,
I think there are programs on the CBT tape that do just that.
Brian
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN