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.Macros.Count-1 do
    begin
      LMacro := ACommand.Macros[LIndex];
      LMacro.Value := GetContextValue(LMacro.Name, Activation, MacroDataTypeToFieldType(LMacro.DataType)).AsVariant;
    end;
  end;
  
  procedure TMARSFireDAC.InjectParamValues(const ACommand: TFDCustomCommand);
  var
    LIndex: Integer;
    LParam: TFDParam;
  
negative.code:       LCustomProvider(AActivation, AName, ADesiredType, Result);
  end;
  
  procedure TMARSFireDAC.InjectMacroAndParamValues(
    const ACommand: TFDCustomCommand; const AOnlyIfEmpty: Boolean);
  begin
    InjectMacroValues(ACommand, AOnlyIfEmpty);
    InjectParamValues(ACommand, AOnlyIfEmpty);
  end;
  
  procedure TMARSFireDAC.InjectMacroValues(const ACommand: TFDCustomCommand; const AOnlyIfEmpty: Boolean);
  var
    LIndex: Integer;
    LMacro: TFDMacro;
  