%include "Moose:Mouse.Inc"

%externalroutinespec L remove entry(%record(*)%name access,
                                    %string(255) filename)
%externalroutinespec L delete file(%record(*)%name access,
                                   %string(255) filename)
%externalroutinespec L create directory P(%record(*)%name access,
                                          %string(255) filename,
                                          %integer partition)

%routine do nonstream
   %string(255) filename
   %integer op, x
      prompt("Op:  ");  read symbol(op) %until 'a' <= op <= 'z'
      %if op = 'd' %start
         ! Delete file
         prompt("Filename: ");  read(filename)
         L delete file(nil, filename)
      %else %if op = 'z'
         ! Zap entry
         prompt("Filename: ");  read(filename)
         L remove entry(nil, filename)
      %else %if op = 'c'
         ! Create directory
         prompt("Directory: ");  read(filename)
         prompt("Partition: ");  read(x)
         L create directory P(nil, filename, x)
      %finish
%end

%begin
   %string(31) in, out
   %integer x
      %on 3, 9 %start
         close input;  close output
         open input(0, ":T");  select input(0)
         open output(0, ":T");  select output(0)
         printstring("%signal ");  write(event_event, 0)
         space;  write(event_sub, 0)
         space;  write(event_extra, 0)
         space;  printstring(event_message)
         newline
         -> do it
      %finish            

      ! From AJS_M:
      create logical name ("DEFAULT",":r")
      create logical name ("bravo","21")
      create logical name ("charlie","27")
      create logical name ("vax", "114")
      create logical name ("FS_DEFAULT","bravo")

do it:
      %cycle
         prompt("In:  ");  read(in)
         %if in = "*" %start
            do nonstream
         %else
            prompt("Out: ");  read(out)
            open input(3, in);  select input(3)
            open output(3, out);  select output(3)
            %cycle
               read symbol(x);  print symbol(x)
            %repeat
         %finish
      %repeat
%end %of %program
