在SAS中替换宏变量中的文本

itz*_*tzy 5 sas sas-macro

我想将宏变量中某个句点的任何实例更改为下划线.我究竟做错了什么?

%let pow=0.1;
%let x = %sysfunc(tranwrd(&pow,".","_"));
%put x=&x;
Run Code Online (Sandbox Code Playgroud)

输出:

X = 0.1

Joe*_*Joe 8

%sysfunc中没有引号,除非您的意思是引号字符.(翻译本来会隐藏这个问题,至少,但TRANWRD正在关注&pow并试图找到"."而失败.)

%let pow=0.1;
%let x = %sysfunc(tranwrd(&pow,.,_));
%put x=&x;
Run Code Online (Sandbox Code Playgroud)