externalroutine listijob(string (255) s)
string (50) restofs,in,out
externalroutinespec define(string (255) s)
integer i, flag, l, count, j
recordformat rf(integer conad, filetype, datastart, dataend)
systemroutinespec connect(string (31) file, integer mode, hole,
project, record (rf)name r, integername flag)
systemstringfnspec unpackdate(integer p)
systemstringfnspec unpacktime(integer p)
recordformat ijob head f( c
integer end, start, size, filetype,
checksum, date time, format, sp0,
maxcells, freep, freen, sp1,
halfintegerarray list head(0:127))
record (ijob head f)name ijob head
recordformat cell f(string (6) user, string (16) device, integer size,
halfinteger last, next, integer time q, time unq, string (6) jname)
! This requires 48 bytes.
record (cell f)arrayname cell
record (cell f)arrayformat caf(1:50000)
record (cell f)name c
record (rf) r
routine output(string (255)s, integer l)
printstring(s); spaces(l-length(s))
end
in = "JJ#SPIJOB"; out = ".LP"; ! Defaults.
if s -> s.(",").restofs start
out = restofs unless restofs=""
finish
in = s unless s=""
define("20,".out)
connect(in, 0, 0, 0, r, flag)
monitor and stop if flag#0
selectoutput(20)
ijob head == record(r_conad)
cell == array(r_conad+ijob head_start, caf)
printstring("File ".in." - header information:")
newlines(2)
printstring("maxcells:"); write(ijob head_maxcells,3); newline
printstring("freep:"); write(ijob head_freep,3); newline
printstring("freen:"); write(ijob head_freen,3); newline
newlines(4)
count = 0
for l=0,1,127 cycle
printstring("List no:"); write(l,1); newlines(2)
printstring(" last cell next user jname device")
printstring(" time q time unq size")
newline
i = ijob head_listhead(l); j = 0
while i#0 cycle
count = count+1; j = j+1
c == cell(i)
newline
write(c_last,4); write(i,4); write(c_next,4)
spaces(4); printstring(c_user)
spaces(2); output(c_jname,6)
spaces(2); output(c_device,16)
spaces(2); printstring(unpack date(c_timeq))
space; printstring(unpack time(c_timeq))
spaces(2); printstring(unpack date(c_time unq))
space; printstring(unpack time(c_time unq))
write(c_size,5)
i = c_next
exit if j>100; ! To avoid getting stuck in loops.
repeat
newlines(2)
repeat
newlines(2)
printstring("Total cells in use:"); write(count,1)
newlines(3)
end ; ! Of %externalroutine listijob.
endoffile