!***********************************************************************
!*
!*             Program to send messages to system processes
!*
!*       Copyright (C) R.D. Eager   University of Kent   MCMLXXXVI
!*
!***********************************************************************
!
!
!***********************************************************************
!*
!*          Constants
!*
!***********************************************************************
!
constantstring (1) snl = "
"
!
!
!***********************************************************************
!*
!*          Record formats
!*
!***********************************************************************
!
recordformat  pe(integer  dest,srce,p1,p2,p3,p4,p5,p6)
!
!
!***********************************************************************
!*
!*          Subsystem references
!*
!***********************************************************************
!
externalroutinespec  set return code(integer  i)
!
!
!***********************************************************************
!*
!*          Director references
!*
!***********************************************************************
externalstringfunctionspec  derrs(integer  n)
externalintegerfunctionspec  dpon3(string (6) user,record (pe)name  p,
                                   integer  invoc,msgtype,outno)
!
!
!
!***********************************************************************
!*
!*          Service routines
!*
!***********************************************************************
!
routine  slash(string (6) user,string (255) s)
integer  i,flag
record (pe) p
!
if  length(s) > 23 then  start 
   printstring("Command too long".snl)
   set return code(1000)
   stop 
finish 
for  i = 1,1,length(s) cycle 
   if  charno(s,i) = '_' then  charno(s,i) = ' '
repeat 
p_dest = x'ffff0014';                   ! PON relay, common command activity
p_srce = 0
string(addr(p_p1)) = s
flag = dpon3(user,p,0,1,6);             ! PON and continue
if  flag # 0 then  start 
   printstring("DPON flag = ".derrs(flag).snl)
finish 
set return code(flag)
end ;  ! of slash
!
!
!***********************************************************************
!*
!*          D S L A S H
!*
!***********************************************************************
!
externalroutine  dslash(string (255) s)
slash("DIRECT",s)
end ;  ! of dslash
!
!
!***********************************************************************
!*
!*          V S L A S H
!*
!***********************************************************************
!
externalroutine  vslash(string (255) s)
slash("VOLUMS",s)
end ;  ! of vslash
!
!
!***********************************************************************
!*
!*          S S L A S H
!*
!***********************************************************************
!
externalroutine  sslash(string (255) s)
slash("SPOOLR",s)
end ;  ! of sslash
!
!
!***********************************************************************
!*
!*          M S L A S H
!*
!***********************************************************************
!
externalroutine  mslash(string (255) s)
slash("MAILER",s)
end ;  ! of mslash
!
!
!***********************************************************************
!*
!*          F S L A S H
!*
!***********************************************************************
!
externalroutine  fslash(string (255) s)
slash("FTRANS",s)
end ;  ! of fslash
endoffile