If you're using pipes in REXX programs, remember that the special REXX variable
RC always contains the return code of the last program in
the command containing the pipes.
Example:
/* */
address cmd 'dir | sort | find "<DIR>" '
/* The next statement will always print the */
/* return code of the find command as the */
/* value of RC */
say 'RC=' || rc
To read the return codes of the programs in the middle of the pipe as well,
you can use a REXX wrapper.
Example:
/* ------------------------------------------------------------------ */
/* PushRC - simple wrapper program to save the return code of an */
/* OS/2 command or program in the current REXX queue */
/* */
/* Usage: pushRC program parameter */
/* */
/* History */
/* 01.09.1996 /bs v1.00 */
/* - initial release */
/* */
/* */
/* */
/* */
parse arg progName progParameter
"cmd /c" progName progParameter
/* progname (or something similar) is necessary */
/* because OS/2 is a multi-tasking */
/* operating system */
push progName "RC="rc
Usage example:
/* */
address cmd "pushrc dir | pushrc sort | pushrc find ""<DIR>"" "
do while queued() <> 0
say lineIn( "QUEUE:" )
end /* do while queued() <> 0 */
(see also Using PIPEs)