IBM ^
z/VM
Module 8: CMS Pipelines
© 2004 IBM Corporation
IBM ^
Objectives
 Describe the fundamental concepts behind CMS Pipelines
 Explain what device drivers are and how they work
 Explain the difference between running the PIPE command
from a command prompt and from a REXX EXEC
 Describe filters and how they are used within a CMS Pipeline
© 2004 IBM Corporation
IBM ^
Objectives continued
 Describe how to use the LOCATE and FIND commands to
select records
 Explain how to create your own filters using REXX
 Show how to use pipelines in EXECs and XEDIT macros in
different subcommand environments
 Describe the commands needed to create a SPOOL file to hold
information
© 2004 IBM Corporation
IBM ^
Objectives continued
 List the commands needed to read information from a SPOOL
file
 Describe the CP commands that control the virtual reader
 Describe what multistream pipelining is and how to use it
© 2004 IBM Corporation
IBM ^
What is a Pipeline?
© 2004 IBM Corporation
IBM ^
Device Drivers
© 2004 IBM Corporation
IBM ^
The PIPE Command
 PIPE:
© 2004 IBM Corporation
IBM ^
Some Popular Device Drivers
 The console filter reads from the terminal and types on it; for
example:

Pipe console | console
 CONSOLE can provide two functions:

Read input, when it is first in a pipeline specification

Type the input it gets, when it is not first
 A device driver that writes to a device also writes the output to
the pipeline.
© 2004 IBM Corporation
IBM ^
Some Popular Device Drivers, continued
 Reading and writing disk files:
– ‘<‘ to read a file
– ‘>’ to create or replace a file
– ‘>>’ to append to or create a file
 LITERAL:
– A literal creates a record with the argument string and writes to a
pipeline
 Combining input drivers:
– This allows the programmer to create a file at one location and
append, copy, or overwrite the file later in the pipeline.
© 2004 IBM Corporation
IBM ^
Using the PIPE Command and Other Commands
 The PIPE command is not part of the pipeline itself, therefore it is not
considered a stage.
 In the reading and writing example, the left-hand stage reads the file
from disk and the right-hand stage appends to the file specified.
 In the second example, we use the CONSOLE command to print the
file to the screen. This is helpful when you want to see the file
quickly.
© 2004 IBM Corporation
IBM ^
Filters
 A filter is an application in a pipeline that takes its input from the stage to the
left and passes its output to the stage to the right.
 The filters that are supplied with CMS Pipelines have many general-use
functions.
 A function can be anything.
© 2004 IBM Corporation
IBM ^
Filters: XLATE - Change Characters
XLATE:

This filter translates data passing through the pipeline on a
character-by-character basis.

Some sample pipes:
– Pipe literal ABCDEFG | xlate 1-* lower | console
– Pipe literal abcdefghi | xlate c-g = e e | console

This filter is also capable of altering multiple characters and
character ranges in a single stage or pipe.
© 2004 IBM Corporation
IBM ^
Filters: XLATE - Change Characters
XLATE:
/*
Replace “%” with “.” and
*/
/*
Replace “!” with “0” and
*/
/*
Replace “4” with “0” and
*/
/*
Replace “+” with “-”
*/
“Pipe Literal Don’t forget that (2+2) / 10 = 40%! |”,
‘Xlate 1-* % . ! 0 4 0 + - |’,
‘Console’
________________________________________
 Don’t forget that (2-2) / 10 = 00.0
© 2004 IBM Corporation
IBM ^
Making Records Longer or Shorter
 CHOP truncates each record after a column.
 PAD fills each record to the specified length with a pad character (the
default is a blank).

Example:
– Pipe disk Unknown Data | pad 256 | chop 256 | > Demo output A
 You can combine chop and pad to create fixed format records.
 Strip removes blanks from both the beginning and the end of records.
© 2004 IBM Corporation
IBM ^
Reformat Records
 SPLIT creates an output record for each blank-delimited word
in its input record.
 JOIN creates a single record from one or more input records.
 FBLOCK reformats the input stream to fixed length records.
© 2004 IBM Corporation
IBM ^
Edit and Rearrange Contents of Records
© 2004 IBM Corporation
IBM ^
Buffer Filters
 A filter that buffers a file reads all input records before writing
output records.
 The SORT filter must buffer the file by the nature of its
processing.
 Use BUFFER when a file must be buffered but not reordered.
 Examples:

Pipe Disk INPUT FILE | Split | Sort unique | Console

Pipe console | buffer | stack
© 2004 IBM Corporation
IBM ^
Selecting Records
© 2004 IBM Corporation
IBM ^
Looking for Labels - FIND and NFIND
© 2004 IBM Corporation
IBM ^
Discarding and Keeping Records
 Use TAKE and DROP to retain or discard a specified number of
records from the beginning or end of the file.
 TAKE and DROP make it easy to select records based on their
position in the file.
 The DROP filter is the converse of TAKE, which allows you to
delete the first or last n lines.
© 2004 IBM Corporation
IBM ^
Writing REXX Filters
 There are two types of REXX
programs you can write to run in a
pipeline:
One
reads input records and writes
output records, just like all other
programs
The
other kind is a subroutine pipeline
 The REXX program ‘COPY REXX’
copies its input to the output. It can be
used as a prototype for more complex
filters.
© 2004 IBM Corporation
IBM ^
Pipeline Input and Output in a REXX Program
 Two of the most important REXX interface commands are
READ and WRITE.
 The READTO command has a single argument: the name of
the variable you wish to be set to the contents of the next input
record.
 The OUTPUT command is followed by the data you wish to
write; you can compute the output data as a REXX expression
or you can write a literal.
© 2004 IBM Corporation
IBM ^
How to Use Filters
© 2004 IBM Corporation
IBM ^
How to Use Filters, continued
© 2004 IBM Corporation
IBM ^
Using Pipelines in EXECs
and XEDIT Macros
© 2004 IBM Corporation
IBM ^
Using Pipelines in EXECs and XEDIT Macros continued
 VAR handles the special case where you want to read and write
a single record with the contents of a REXX variable.
 When you run the pipeline shown in the notes, the SCRIPT
macro reads a line from the stack and inserts it in the
document.
© 2004 IBM Corporation
IBM ^
Getting Information about Files
 STATE and STATEW provide information about selected files.
 STATEW only searches minidisks that are accessed in write mode.
 The underlying CMS commands allow asterisks for components of a file name, so you
can find the first occurrence of a certain type of file.
© 2004 IBM Corporation
IBM ^
Subcommand Environments
 There can be several subcommand environments active in your session, such
as XEDIT, CMS, and ISPF.
 The SUBCOM device driver takes as an argument the name of a
subcommand environment, which is used for execution and displaying output.
© 2004 IBM Corporation
IBM ^
Accessing Files in XEDIT
© 2004 IBM Corporation
IBM ^
More REXX Interface Commands
© 2004 IBM Corporation
IBM ^
More REXX Interface Commands
 CALLPIPE replaces a stage with a pipeline.
 The asterisk followed by a colon, which seems to be a stage by itself,
is called a connector.
 Connectors are the magic that tells CALLPIPE to take the input and
output for the stage issuing the command and connect it to a new
pipeline.
 CALLPIPE returns when all stages of the new pipeline have
completed.
© 2004 IBM Corporation
IBM ^
Output Device Driver - Creating a SPOOL File
 Three device drivers write lines on unit record devices.
 Some output device drivers include:

Printmc  For a virtual printer

Punch  For a virtual punch

Uro
 Can write to either device
 For complete control, you must issue SPOOL, TAG, and
CLOSE commands as required.
© 2004 IBM Corporation
IBM ^
Unit Record Input - Reader SPOOL Files
 SPOOL files in your virtual reader can come from several sources that
have different formats; for example:

virtual card punch

virtual printer

CP-generated SPOOL files, such as a VMDUMP

read from a real card reader
 A reader reads a file and writes a line to the pipeline for each CCW in
the SPOOL file.
© 2004 IBM Corporation
IBM ^
CP Commands to Control the Virtual Reader
 The characteristics of a virtual reader can be set by the CP command
SPOOL, which can control:

CLASS

NOCOUNT & CONT

NOHOLD & HOLD
 A printer file is probably easier to handle than a punch file because
you often want to retain the carriage control provided by the printer.
 Punch files are more complicated because a punch file usually has
more than plain data records.
© 2004 IBM Corporation
IBM ^
Example: Process Reader Files
© 2004 IBM Corporation
IBM ^
Multistream Pipelines
© 2004 IBM Corporation
IBM ^
Examples of Multistream Pipelines
© 2004 IBM Corporation
IBM ^
Specifying Multistream Pipelines
© 2004 IBM Corporation
IBM ^
Combining Streams
© 2004 IBM Corporation
IBM ^
Combining Streams continued
© 2004 IBM Corporation
IBM ^
Pipeline Stalls
© 2004 IBM Corporation
IBM ^
Conclusion
 Each section of this module deals with an aspect of CMS Pipelines.
 The pipeline concepts discussed were:

Device drivers

Filters

Selecting records

Writing REXX filters

Using pipeline macros

Unit record input and output
 These topics help students learn the necessary elements for creating
their own pipelines.
© 2004 IBM Corporation
IBM ^
Glossary
CHOP: – truncates each record after a column
FBLOCK: – reformats the input stream to fixed length records
Filter: – a stage in a pipeline that takes its input from the stage to the
left of it and passes its output to the stage to the right of it
JOIN: – creates a single record from one or more input records
© 2004 IBM Corporation
IBM ^
Glossary
LOCATE: – writes only the records that contain a specific string
NLOCATE: – writes all records that do not contain the string specified
as the argument
PAD: – fills each record to the specified length with a pad character
Pipeline: – a series of programs that data passes through.
SPLIT: – creates an output record for each blank-delimited word in its
input records
© 2004 IBM Corporation
IBM ^
Glossary
SORT: – orders the input in ascending or descending order
UNPACK: – converts a file from the packed format supported by
COPYFILE and XEDIT to plain records
VAR: – handles the special case where you want to read and write a
single record with the contents of a REXX variable
XLATE: – translates data passing through the pipeline on a character by
character basis
© 2004 IBM Corporation
IBM ^
References
Hartmann, J., L. Kraines, and J. Lynn. CMS Pipelines Tutorial.
GG66-3158-00, February 1990.
IBM. z/VM: CMS Pipelines User’s Guide. SC24-5970-00,
February 2001.
IBM. z/VM: CMS Command and Utility Reference. SC24-601002, May 2002.
© 2004 IBM Corporation
Descargar

CMS Pipelines