> On Jun 19, 2019, at 2:00 AM, Rob van der Heij wrote:
>>    { stage1; stage2; stage3; } | stage4
> 
> I understand this concatenates the output of the first three programs (in 
> order?)
> and passes it as input to the fourth one. Cute. So what about input (it seems 
> the
> first program in that set takes the input). So my pipeline would be
> 
>    .. stage1 | append stage2 | append stage3 | stage4 ..
>  
Stages run in order, sharing input.  So what isn’t consumed by
the first stage is available to the second, etc.  But if a stage buffers
reads and doesn’t process the data, the effect is unpredictable.
Pipelines wins big here.

And anywhere in UNIX I miss Pipelines’ ability to process a
header then short-circuit the rest of the stream to output.

I was told, somewhere, that APPEND incurs a performance hit.  I have
seen:
    PIPE LITERAL Line three
       | LITERAL Line two
       | LITERAL Line one
    | STAGE4.
Ugh!  Terrible to read.

I ignore performance concerns and:
    PIPE HOLE
        | APPEND LITERAL Line one
        | APPEND LITERAL Line two
        | APPEND LITERAL Line three
    | STAGE4

… the HOLE is so I can rearrange stages.  Kinda like the practice
of not labelling Assembler instructions, but labelling DS 0H.

> Your mapping of the syntax is flawed. In your example the '|' connects the 
> stages,
> just like the CMS Pipelines stage separator. The ';' (don't forget the last 
> one)
> in combination with the { } forms a kind of input manifold.
>  
Syntax silliness.  “}” is a command (sort of), but without the last “:” it would
be just an argument to the prior command.

> ..t. CMS Pipelines has abstractions for TCP/IP and IUCV connections, so
> it is easy to compose a pipeline refinery that has multiple CMS users involved
> to do the work. The obvious reason would be to control access to data, but
> you could also use it to dispatch heavy tasks over workers (even on different
> systems). One z/OS you could also use BatchPipes to connect different parts of
> your application running in parallel.
>  
And the CMS constraint is onerous here.  On z/OS I can have many sessions
running concurrently, both batch and interactive, all on the same user ID.
I might have hoped that SFS would have removed half the obstacle, but the
other half remains.  Limited concurrency, even within a single session.

— gil

Reply via email to