!***********************************************************************
!*
!* The BINTT command
!*
!***********************************************************************
!
!
!***********************************************************************
!*
!* Record and array formats
!*
!***********************************************************************
!
recordformat comf(integer ocptype,ipldev,sblks,sepgs,ndiscs,
dlvnaddr,gpctabsize,gpca,sfctabsize,sfca,sfck,dirsite,
dcodeda,suplvn,tojday,
(integer date0,date1,date2 or c
byteinteger dsp0,dsp1,dsp2,string (8) date),
(integer time0,time1,time2 or c
byteinteger tsp0,tsp1,tsp2,string (8) time),
integer epagesize,users,cattad,servaad,
byteinteger nsacs,resv1,sacport1,sacport0,
nocps,resv2,ocpport1,ocpport0,
integer itint,contypea,gpcconfa,fpcconfa,sfcconfa,
blkaddr,ration,smacs,trans,longinteger kmon,
integer ditaddr,smacpos,supvsn,pstva,secsfrmn,secstocd,
sync1dest,sync2dest,asyncdest,maxprocs,inspersec,elaphead,
commsreca,storeaad,procaad,sfcctad,drumtad,tslice,feps,
maxcbt,performad,sp1,sp2,sp3,sp4,sp5,sp6,
lstl,lstb,pstl,pstb,hkeys,hoot,sim,clkx,clky,clkz,
hbit,slaveoff,inhssr,sdr1,sdr2,sdr3,
sdr4,sesr,hoffbit,blockzbit,blkshift,blksize,end)
recordformat pe(integer dest,srce,p1,p2,p3,p4,p5,p6)
recordformat pmessf(record (pe) p,integer invoc,msgtype,outno)
recordformat procf(string (6) user,byteinteger incar,category,snzt,
runq,active,integer actw0,lstad,lamtx,stack,status)
!
ownrecord (procf)arrayformat procaf(0:255)
!
!
!***********************************************************************
!*
!* Constants
!*
!***********************************************************************
!
constantinteger background = 4
constantrecord (comf)name com = x'80c00000'
! Supervisor communication segment
!
!
!***********************************************************************
!*
!* Subsystem references
!*
!***********************************************************************
!
systemstringfunctionspec failuremessage(integer mess)
systemstringfunctionspec itos(integer n)
systemintegerfunctionspec parmap
systemroutinespec setpar(string (255) s)
externalroutinespec set return code(integer i)
externalintegerfunctionspec uinfi(integer entry)
externalstringfunctionspec uinfs(integer entry)
!
!
!***********************************************************************
!*
!* Director references
!*
!***********************************************************************
!
externalintegerfunctionspec dprocedure(integer n,adr)
externalintegerfunctionspec dprocs(integername maxprocs, integer adr)
!
!
!***********************************************************************
!*
!* Service routines
!*
!***********************************************************************
!
routine dobintt(integer maxprocs)
integer i,incar,flag,procs
string (7) me
record (procf)arrayname proca
record (pmessf) class68
byteintegerarray proclist(0:maxprocs<<5)
!
procs = 0
me = uinfs(1)
incar = uinfi(13)
flag = dprocs(maxprocs,addr(proclist(0)))
if flag # 0 then start
printstring("DPROCS ".itos(flag))
newline
return
finish
maxprocs = maxprocs - 1
proca == array(addr(proclist(0)),procaf)
!
for i = 0,1,maxprocs cycle
if proca(i)_user = me and c
proca(i)_incar # incar and c
proca(i)_status & background # 0 then start
! Found a background process belonging to ME
procs = procs + 1
class68_p = 0
class68_p_p1 = 1; ! Bottom 24 bits of Subclass - 'dprocedure' completes
class68_invoc = proca(i)_incar
class68_msgtype = 3; ! Asynchronous
class68_outno = 6; ! PON and continue
flag = dprocedure(3,addr(class68))
if flag # 0 then start
printstring("DPROCEDURE ".itos(flag))
newline
return
finish
finish
repeat
if procs = 0 then start
printstring("* No background jobs found *")
else
if procs = 1 then start
printstring("Background job interrogated")
else
printstring(itos(procs)." background jobs interrogated")
finish
finish
newline
end ; ! of dobintt
!
!
!***********************************************************************
!*
!* B I N T T
!*
!***********************************************************************
!
externalroutine bintt(string (255) parms)
integer maxprocs,flag
!
setpar(parms)
if parmap # 0 then start
flag = 263; ! Wrong number of parameters
-> err
finish
!
maxprocs = com_maxprocs
dobintt(maxprocs)
set return code(0)
return
!
err:
set return code(flag)
newline
printstring("BINTT fails -".failuremessage(flag))
stop
end ; ! of bintt
endoffile