%include "inc:util.imp"
%include "inc:fs.imp"
%begin

%routine log off
  %integer dump
  %onevent 3 %start
    selectoutput(0)
    print line("Logoff: ".event_message)
    %return
  %finish
  dump = fcomm('M'<<8,"") %unless userno=0
%end

%predicate try(%string (255) user, pass)
   %integer sym
   %onevent 3,9 %start
     event_message = "Fingertrouble" %if event_extra='T'-'0' %or event_extra=4
     %false
   %finish

   sym = fcomm('L'<<8,user.",".pass)
   %true
%end

%string (255) user,infile,outfile

%on 0,3,9 %start
   closeinput
   logoff
   printline("OK.") %if try("managr","rhoda")
   %stop
%finish

infile=cliparam
outfile="" %unless infile -> infile.(",").outfile
openinput(1, infile); selectinput(1)
openoutput(2, outfile) %and selectoutput(2) %unless outfile=""
%cycle
   readline(user)
   %if user="" %start
      !Null
   %elseif try(user,"")
      printline(user." (null)"); logoff
   %elseif try(user,user)
      printline(user." (same)"); logoff
   %else
      printline(user." ".event_message) %if event_message # " No authority"
   %finish
%repeat

%endofprogram
  
