externalintegerfunctionspec  dfinfo(string (6) user,string (11) file,
                                    integer  fsys,adr)
recordformat  dfinfof(integer  nkb,rup,eep,apf,use,arch,fsys,conseg,
                      cct,codes,byteinteger  spare,day,pool,codes2,
                      integer  ssbyte,string (6) tran)
externalintegerfunctionspec  get usnames(integername  n,integer  adr,
                                         fsys)
externalroutinespec  get av fsys(integername  n,integerarrayname  a)
systemstringfunctionspec  itos(integer  n)
!
!
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  dolex(string (255) s)
string (6)array  u(0:1023)
integer  nu,nusers
integer  j,n,fx,fsys,flag
integerarray  a(0:99)
string (63) user
record (dfinfof) info
!
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 
         flag = dfinfo(user,"LEXICON",fsys,addr(info))
         if  flag = 0 then  start 
            printstring(user); newline
         finish 
      finish 
      nu = nu+1
   repeat 
   fx = fx + 1
repeat 
return 
bp:
printstring("Illegal fsys specification"); newline
end ;  ! of dolex
endoffile