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 <n...@bestweb.net>: > 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.) >