Search code examples
sassas-macro

Substitute text in a macro variable in SAS


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


Solution

  • 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;