On 03/17/2011 05:09 PM, Mike Walter wrote:
> Everything I've tried has failed due to LOOKUP's delay.

It must have been somebody else's delay.  LOOKUP strictly doesn't delay
the output on streams 0 and 1.

To break the records up into segments and put them back together without
any record delay, you'll have to mark the end of the record rather than
the start with a unique string.  I'll guess from your sample that you
can use "::" for that, and that you don't need to preserve the exact
number of blanks between segments:

(end ?) ...
  | insert ":" after
  | head: chop before string " :FIXEDP "
  | all: faninany
  | deblock string "::"
  | ...
  ? head:
  | tail: chop before string "::"
  | split before string " :FIXEDP "
  | match: lookup w3 w1
  | specs 1-* 1 read w3 nw
  | specs w1-3 1 w-1 nw w4;-2 nw
  | all:
  ? ...
  | locate w1
  | match:
  | specs 1-* 1 "n/a" nw
  | specs w1-3 1 w-1 nw w4;-2 nw
  | all:
  ? tail:
  | all:

(The second SPECS is needed because you don't know where to put the
extra stuff until after reading the master record.  You'll have to get
even pickier with it if you're worried about preserving runs of blanks.)

¬R

Reply via email to