%begin;     !file/directory access setting prog
   %record(parmfm) p
   %string(63) parm, perms
   %integer ep,n,l, dact
   %externalroutinespec tolower(%string(*)%name s)
   %include "Sysinc:command.inc"
   parm = command_parameter
   to lower(parm)
   %unless parm -> parm.("=").perms %start
      printstring("=permission ?");  newline;  %stop
   %finish
   %if parm = "directory" %start
      dact = 24;               !set directory access
   %else
      dact = 22;                !set file access
      string(addr(p_sact)) = parm
      svc(17, p)
      %if p_p2 < 0 %start
         printstring("Invalid filename ")
         printstring(parm);  newline
         %stop
      %finish
   %finish
   p_p6 = 0
   ep = 0
   %while ep # length(perms) %cycle
      ep = ep+1;  n = charno(perms, ep)
      %unless 'a' <= n <= 'h' %start
         printstring("Invalid permission: ")
         printsymbol(n);  newline;  %stop
      %finish
      p_p6 = p_p6! 1<<(n-'a')
   %repeat
   p_dact = dact;  svc(20, p)
   %if p_p6 # 0 %start
      printstring("Permit ".parm." fails -- ")
      printstring(string(addr(p_p1)))
   %else
      printstring("Permissions set")
   %finish
   newline
%endofprogram
