Substitute text in a macro variable in SAS

itzy picture itzy · Jan 24, 2013 · Viewed 9.9k times · Source

I want to change any instances of a period in a macro variable to underscore. What am I doing wrong?

%let pow=0.1;
%let x = %sysfunc(tranwrd(&pow,".","_"));
%put x=&x;

Output:

x=0.1

Answer

Joe picture Joe · Jan 24, 2013

No quotes in a %sysfunc, unless you mean the quote character. (Translate would have hidden the issue, at least, but TRANWRD was looking at &pow and trying to find "." and failing.)

%let pow=0.1;
%let x = %sysfunc(tranwrd(&pow,.,_));
%put x=&x;