VMS Help  —  PIPE  Description  Pipelines and TEEs
    This section describes aspects of DCL that function differently
    in the context of a pipeline.

    Some of the following constructs are used in the implementation
    of a TEE.

1  –  Using SYS$COMMAND

    The SYS$COMMAND of a subprocess is normally the same as its
    SYS$INPUT (if no command procedures are involved). In a
    pipeline, however, the SYS$COMMAND of a subprocess is set to
    the SYS$COMMAND of the parent process instead of to the preceding
    pipe (which is the SYS$INPUT of the pipeline-segment command).

2  –  Using TEEs and SYS$PIPE

    In most cases, input from the pipe can be obtained by reading
    the data from SYS$INPUT; however, when a command procedure is
    invoked as a pipeline segment command, SYS$INPUT is redirected to
    the command procedure file. To obtain data from the pipe inside a
    command procedure, the logical SYS$PIPE can be used.

    The following is an example of a pipeline DCL application
    TEE.COM:

     $ ! TEE.COM - command procedure to display/log data flowing through
     $ !           a pipeline
     $ ! Usage: @TEE log-file
     $
     $ OPEN/WRITE  tee_file 'P1'
     $ LOOP:
     $  READ/END_OF_FILE=EXIT  SYS$PIPE LINE
     $  WRITE SYS$OUTPUT LINE !Send it out to the next stage of the pipeline
     $  WRITE tee_file LINE  ! Log output to the log file
     $  GOTO LOOP
     $ EXIT:
     $  CLOSE tee_file
     $  EXIT

    The PIPE command to use TEE.COM can be:

    $ PIPE  SHOW SYSTEM | @TEE showsys.log | SEARCH SYS$INPUT LEF

    The command procedure TEE.COM is used to log the data flowing
    through the pipeline. It reads in the data from SYS$PIPE instead
    of SYS$INPUT.

3  –  Image Verification in a Pipeline

    In a pipeline, image verification is turned off by default, even
    when the command SET VERIFY=IMAGE is executed before the PIPE
    command is entered. This prevents duplication of data records
    going through the pipeline.

    To turn on image verification in a pipeline, an explicit SET
    VERIFY=IMAGE command must precede the pipeline segment command.
    You can use a subshell to do this, as follows:

    $ PIPE ... | (SET VERIFY=IMAGE ; ...)  | ...

4  –  File Access Methods in a Pipeline

    A pipeline segment command can only use the RMS sequential file
    access method to read and write to the pipes. Certain OpenVMS
    utilities may access their input and output files using methods
    other than sequential access. These operations are not supported
    in a pipeline, and will fail, as in the following example:

    $ PIPE CC/NOOBJ/NOLIS TEST.C | SEARCH SYS$INPUT/WIND=(1,1) "%cc-w-"

    %SEARCH-F-RFAERR, RMS error using RFA access
    -RMS-F-RAC, invalid record access mode

    In this example, the /WINDOW qualifier for the SEARCH command
    requires the relative file access method.
Close Help