The callpipe implied in PREFACE does the commit on you (trace told me), so REXXVARS starts on commit level 0, does not commit to 0, and returns with code 233, as it should, but at that time it is too late for the dispatcher to pull the brake.

Somewhere in the early 1980s, we got multistream pipelines, with which you can express the append/preface function with FANIN so that nothing gets in the way.

pipe (end ?) rexxvars 1 nomsg233 | i: fanin | count lines|cons\... |i:

where ... represents the pipeline segment that is in front of preface in your original pipeline. Here REXXVARS get to start on commit level -1 and will quietly fail without committing, which I assume is what you desire.

On 6/6/22 14:13, Glenn Knickerbocker wrote:
On Tue, 31 May 2022 12:16:01 -0400, James Vincent wrote:
The giveaway: Do Until is evaluated at the end of the first iteration and I
am betting you have no "level 1" in play at the time, so the PIPE gets RC
233 and the VAR FILELIST is not set.  The Do condition (or REXX) concludes
that "filelist" isn't set to zero or one, then fails.

Right, the part that surprised me was that the variable wasn't set.

That's explained by the note about the commit level in the doc, I just
had never noticed it.  The puzzling part is how PREFACE responds to that
commit failure.  If I specify NOMSG233, the pipeline continues and COUNT
gets to run:

pipe preface rexxvars 1 nomsg233|count lines|cons
0
Ready(00233);

But without NOMSG233, PREFACE never commits and the rest of the pipeline
never runs:

pipe preface rexxvars 1|count lines|cons
No active EXECCOMM environment found.
... Processing "callpipe (name Append/Preface stagesep | escape "".
... Issued from stage 1 of pipeline 1 name "Append/Preface".
... Running "rexxvars 1".
Ready(00233);

Hence my question:

But what's going on with PREFACE?  Does it detect whether the subroutine
pipeline issued any messages, and commit if not?

¬R

Reply via email to