anchor.diff:  
   implementation
   
  +function TMacroDrv.join(data: strArr; joinStr: string = #10; lower: word = 0; upper: word = 65535): string;
  +var i: word;
  +begin
  +  result := '';
  +  if length(data) <= lower then exit;
  +  for i := lower to length(data)-1 do
  +  begin
  +    if i > upper then break;
  +    result := result + data[i] + joinStr;
  +  end;
  +end;
  +
  +
   end.
    
  
positive.code:     FoutData: TStringList;
      FsearchDirs: string;
      FgiantError: boolean;
     public
      property err: TError read Ferr write Ferr;
      property gmr: TGmr read Fgmr write Fgmr;
  
negative.code: 
  type
  
    TMacroDrv = class(TPersistent)
      constructor create; virtual; abstract;
      procedure execute(inNode: PParseNode); virtual; abstract;
     protected
  