externalintegerfunctionspec  outpos
externalintegerfunctionspec  dsfi(string (6) user,integer  fsys,type,
                                  set,adr)
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  checksfi(string (255) s)
string (6)array  u(0:1023)
integer  nu,nusers,flag
integer  i,j,n,fx,fsys
integerarray  a(0:99)
integerarray  i1(1:8)
string (31) basefile
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  user = "VOLUMS" or  user = "SPOOLR" or  c 
                    substring(user,1,4) = "UNIX" or  c 
                    substring(user,1,3) = "ERC" or  c 
                    user = "JOURNL" or  user = "ENGINR" or  c 
                    substring(user,1,5) = "MANAG" or  c 
                    user = "MAILER" or  user = "FTRANS" then  start 
         nu = nu + 1
         continue 
      finish 
      if  length(user) = 6 then  start 
         flag = dsfi(user,fsys,0,0,addr(basefile))
         monitor  if  flag # 0
         if  "MANAGR.SKELBASE" # basefile # "" then  start 
            printstring("BASEFILE")
            spaces(12-outpos)
            printstring(user.":  ".basefile)
            newline
         finish 
         flag = dsfi(user,fsys,14,0,addr(i1(1)))
         monitor  if  flag # 0
         if  i1(1) # 1 or  i1(2) # 1 or  i1(3) # 2 then  start 
            printstring("IBT")
            spaces(12-outpos)
            printstring(user.":  ".itos(i1(1)).".".itos(i1(2)).".".itos(i1(3)))
            newline
         finish 
         flag = dsfi(user,fsys,7,0,addr(i))
         monitor  if  flag # 0
         if  i # 10 then  start 
            printstring("ACR")
            spaces(12-outpos)
            printstring(user.":  ".itos(i))
            newline
         finish 
         flag = dsfi(user,fsys,12,0,addr(i))
         monitor  if  flag # 0
         if  i # 1024 then  start 
            printstring("MAXFILE")
            spaces(12-outpos)
            printstring(user.":  ".itos(i))
            newline
         finish 
         flag = dsfi(user,fsys,4,0,addr(i1(1)))
         monitor  if  flag # 0
         if  i1(4) # 4 then  start 
            printstring("INDEX")
            spaces(12-outpos)
            printstring(user.":  ".itos(i1(4)))
            newline
         finish 
      finish 
      nu = nu+1
   repeat 
   fx = fx + 1
repeat 
return 
bp:
printstring("Illegal fsys specification"); newline
end ;  ! of check
endoffile