VMS Help  —  PIPE  Description  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.)
Close Help