!*********************************************************************** !* !* 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