Copyright Digital Equipment Corp. All rights reserved.

Input_Output_Redirection

   DCL users can use the DEFINE or ASSIGN command to redirect
   SYS$INPUT, SYS$OUTPUT, or SYS$ERROR. Such redirection can be
   created as either the user-mode (using the /USER_MODE qualifier)
   or supervisor-mode (using the /SUPERVISOR_MODE qualifier)
   redirection. A user-mode redirection only affects the environment
   of the next user-mode image.

   In a PIPE command, redirection can be achieved by using the
   redirection syntax. A PIPE command redirection is quite different
   from that created by the DEFINE or ASSIGN command, as follows:

   o  Redirections are created in supervisor mode. This means that
      both user-mode applications and DCL commands are affected by
      the redirections.

   o  The redirected environment only applies to the command
      sequence or the pipeline-segment command that specifies
      the redirection syntax. After the execution of the command
      sequence or pipeline-segment command, the original process
      input/output environment (that is, SYS$INPUT, SYS$OUTPUT, and
      SYS$ERROR) is restored before command execution continues.

   When SYS$OUTPUT is redirected, the redirected output file is
   always created, whether or not the command sequence actually
   writes to SYS$OUTPUT. If a version of a file with the same name
   as the redirected output file already exists, a new version of
   that file is created. (This behavior is the same as using the
   DEFINE or ASSIGN command to redefine SYS$OUTPUT in supervisor
   mode.) Note that the redirected file is created before the
   command sequence is executed. If the redirected file is also
   used in the command sequence, the operation may fail, as in the
   following example:

   $ PIPE SEARCH TRANS.LOG "alpha" > TRANS.LOG

   %SEARCH-W-OPENIN, error opening TRANS.LOG;2 as input
   -RMS-E-FLK, file currently locked by another user

   In this example, a new version of TRANS.LOG is created and opened
   for write access; the SEARCH command then tries to get read
   access to the most recent version of TRANS.LOG instead of the
   expected previous version.

   When SYS$ERROR is redirected, the redirected error file is
   only created when the command sequence actually writes to the
   SYS$ERROR during execution, and there is no existing file with
   the same name as the redirected error file. If a file with the
   same name as the redirected error file already exists, that
   file is opened as the redirected error file. The error output
   generated by this command sequence is then appended to the end
   of the redirected error file. (This behavior is the same as using
   the DEFINE or ASSIGN command to redefine SYS$ERROR in supervisor
   mode.)