recordformat  ainff(string (11) name,integer  nkb,string (8) date,
                    string (6) tape,integer  chap,flags)
externalintegerfunctionspec  ddestroy(string (6) user,
                                      string (15) file,
                                      string (8) date,
                                      integer  fsys,type)
externalintegerfunctionspec  dfilenames(string (6) user,
                                        record (ainff)arrayname  inf,
                                        integername  fileno,maxrec,
                                        nfiles,integer  fsys,type)
externalintegerfunctionspec  dfinfo(string (6) user,string (11) file,
                                    integer  fsys,adr)
externalintegerfunctionspec  get usnames(integername  n,integer  adr,
                                         fsys)
externalroutinespec  get av fsys(integername  n,integerarrayname  a)
systemstringfunctionspec  itos(integer  n)
!
!
routine  treat user(stringname  user,integer  fsys)
integer  flag,fileno,maxrec,nfiles,profffound,boxfound,i
integerarray  a(0:20)
record (ainff)name  f
record (ainff)array  inf(0:1024)
!
profffound = 0; boxfound = 0
flag = dfinfo(user,"M#PROFILE",fsys,addr(a(0)))
if  flag = 0 then  profffound = 1
flag = dfinfo(user,"M#INBOX",fsys,addr(a(0)))
if  flag = 0 then  boxfound = 1
!
fileno = 0; maxrec = 1024
flag = dfilenames(user,inf,fileno,maxrec,nfiles,fsys,1)
if  flag # 0 then  monitor  and  return 
return  if  maxrec = 0
cycle  i = 0,1,maxrec-1
   f == inf(i)
   if  f_name = "M#PROFILE" then  start 
      if  profffound = 0 then  profffound = 1 else  start 
         printstring(user." M#PROFILE ".f_date)
         write(fsys,1)
         newline
         flag = ddestroy(user,"M#PROFILE",f_date,fsys,1)
      finish 
      continue 
   finish 
   if  f_name = "M#INBOX" then  start 
      if  boxfound = 0 then  boxfound = 1 else  start 
         flag = ddestroy(user,"M#INBOX",f_date,fsys,1)
         printstring(user." M#INBOX ".f_date)
         write(fsys,1)
         newline
      finish 
      continue 
   finish 
repeat 
end 
!
integerfunction  stoi(string (255) s)
if  s = "-1" then  result  = -1
if  length(s) = 1 then  s = "0".s
if  length(s) # 2 then  result  = -2
unless  '0' <= charno(s,1) <= '9' then  result  = -2
unless  '0' <= charno(s,2) <= '9' then  result  = -2
result  = (charno(s,1) - '0')*10 + charno(s,2) - '0'
end ;  ! of stoi
!
!
externalroutine  mpurge(string (255) s)
string (6)array  u(0:1023)
integer  nu,nusers
integer  j,n,fx,fsys
integerarray  a(0:99)
string (63) user
!
fsys = -1
if  s # "" then  start 
   fsys = stoi(s)
   unless  -1 <= fsys <= 99 then  -> bp
finish 
if  fsys<0 then  get av fsys(n,a) else  a(0) = fsys and  n = 1
fx = 0
while  fx<n cycle 
   fsys = a(fx)
   printstring("+++ FSYS ".itos(fsys)." +++"); newline; newline
   j = get usnames(nusers,addr(u(0)),fsys)
   printstring("GET USNAMES flag ="); write(j,1)
   printstring("  No of users ="); write(nusers,1); newlines(2)
   nu = 0
   while  nu<nusers cycle 
      user<-u(nu)
      if  length(user) = 6 then  start 
         treat user(user,fsys)
      finish 
      nu = nu+1
   repeat 
   fx = fx + 1
repeat 
return 
bp:
printstring("Illegal fsys specification"); newline
end ;  ! of mpurge
endoffile