VMS Help
PIPE, Description, Pipelines and TEEs
*Conan The Librarian (sorry for the slow response - running on an old VAX)
|
|
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.
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.
[legal]
[privacy]
[GNU]
[policy]
[netiquette]
[sponsors]
[FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.