What about inserting a new line in the XEDITed file to indicate the end of
the range (obviously a very special line that is unique).
Then you'd use something like PIPE XEDIT ... | ToTarget
Kris Buelens,
--- VM/VSE consultant, Belgium ---
-----------------------------------------------------------------------
Op vr 14 jun. 2019 om 04:50 schreef Glenn Knickerbocker <[email protected]>:
> To explain my motivation more clearly in words here: I'm writing an
> XEDIT macro and I want it to act on a range of lines between the current
> line and a target just like native XEDIT subcommands. I want to do my
> work in the pipeline, line by line as it reads the file from XEDIT, and
> write output into the file, select lines, etc.
>
> On 2019-06-10 3:34 PM, I wrote:
> > 'COMMAND EXTRACT /LINE/NBSCOPE'
> > lines = nbscope.2
> > 'COMMAND LOCATE' target
> > 'COMMAND EXTRACT /NBSCOPE'
> > lines = nbscope.2 - lines
> > 'COMMAND LOCATE :' line.1
> > Address COMMAND 'PIPE xedit | take' lines etc.
>
> Computing the number of lines in advance like this worked fine for what
> I needed, because I wasn't going to touch any lines in advance. I was
> hiding lines that weren't found in another file:
>
> Address COMMAND 'PIPE (end /) xedit' , /* read from XEDIT */
> '| take' lines , /* number of lines requested */
> '| found: lookup' , /* match log below */
> '/ disk' fn ft fm , /* read log from disk */
> '| found:' , /* nonmatches above */
> '| spec "-1 SET SELECT 1" 1' , /* go back and select */
> '| subcom xedit' , /* issue subcommands */
>
> But now suppose I wanted to hide that line AND the next two:
>
> Address COMMAND 'PIPE (end /) xedit' , /* read from XEDIT */
> '| take' lines , /* number of lines requested */
> '| found: lookup' , /* match log below */
> '/ disk' fn ft fm , /* read log from disk */
> '| found:' , /* nonmatches above */
> '| spec "-1 SET SELECT 1 3" 1' , /*>go back and select 3 lines<*/
>
> '| subcom xedit' , /* issue subcommands */
>
> Now the precomputed count is no good anymore, because those next two
> lines will never be read into the pipeline. That's what I'm wishing for
> a way to handle.
>
> ¬R
>
> (Warning: These examples presume SET DISPLAY 0 0 and SET SCOPE DISPLAY.
> Don't try them with SCOPE ALL or with 1 in the DISPLAY range! You'll
> wind up processing the same line forever.)
>