Не уверен, что вы можете это исправить, потому что %sysfunc()
должен преобразовать код макроса в значения, чтобы вставить функцию, которую вы пытаетесь вызвать.
Почему бы просто не покинуть PRXCHANGE?() вместо вызова функции в реальном коде SAS?
Например, ваш макрос может генерировать шаг DATA.Я бы порекомендовал просто передать ИМЯ макропеременной с текстом значения и ИМЯ макропеременной, в которую вы хотите присвоить результат.
%macro test(invar,outvar);
%if not %symexist(&outvar) %then %global &outvar;
data _null_;
call symputx("&outvar",prxchange('s|\([^\)]+\)||i', -1,symget("&invar")));
run;
%mend test;
%let string = try (to) remove (this);
%test(invar=string,outvar=result);
%Put &=result;