Distinguishing Levels of CMS/TSO Pipelines

Developers producing software that uses CMS Pipelines may encounter a variety of Pipelines versions. Distinguishing the various versions can be confusing. The easiest solution is simply to package the CMS Pipelines Runtime Library with one's software product. If that is not feasible, the following information should make the task easier:

Testing for the presence of a specific stage

The RESOLVE pipeline command is very useful when you want to test for whether a specific stage is built in to the version of Pipes you are using. A very simple way to issue RESOLVE is with a "pipcmd" stage. For example, the easiest way to decide whether "pick" is available is to issue:
'PIPE literal resolve pick | pipcmd'
"pipcmd" will exit with the return code from RESOLVE (0 if the stage is not built in, a large number (the memory address of the stage) if it is built in). That will also be the return code from the PIPE command itself.

Testing for the presence of a specific keyword

If you need to test for a specific new keyword, such as "main" in the example below, you are likely to find "runpipe" useful:
'PIPE literal rexxvars main | runpipe'/* Test whether current.       */
 
If RC <> 0  Then Do                   /* Explain must be current.    */
   Say 'The MAIN keyword of the REXXVARS stage is required.'
   Exit RC                            /* Take error return.          */
End

Melinda Varian / Office of Computing and Information Technology / Princeton University / melinda.varian@me.com

October 8, 1997