anchor.diff:      Result.Connection := Connection;
       Result.Transaction := ATransaction;
       Result.CommandText.Text := ASQL;
  -    InjectMacroValues(Result);
  -    InjectParamValues(Result);
  +    InjectMacroAndParamValues(Result);
       if AContextOwned then
         Activation.AddToContext(Result);
     except
  
positive.code:   for LIndex := 0 to ACommand.Params.Count-1 do
    begin
      LParam := ACommand.Params[LIndex];
      LParam.Value := GetContextValue(LParam.Name, Activation, LParam.DataType).AsVariant;
    end;
  end;
  
  
negative.code:     class function GetContextValue(const AName: string; const AActivation: IMARSActivation;
        const ADesiredType: TFieldType = ftUnknown): TValue; virtual;
  
      procedure InjectParamValues(const ACommand: TFDCustomCommand;
        const AOnlyIfEmpty: Boolean = True); virtual;
      procedure InjectMacroValues(const ACommand: TFDCustomCommand;
        const AOnlyIfEmpty: Boolean = True); virtual;
  
      procedure InjectMacroAndParamValues(const ACommand: TFDCustomCommand; const AOnlyIfEmpty: Boolean = True);
  
      constructor Create(const AConnectionDefName: string;
        const AActivation: IMARSActivation = nil); virtual;
  