Hi,all
I want change macro variable's value "t-1-1" to "Table 1-1",say,"Table" + space + "1-1"
So I try #1
%let pow=t-1-1;
%let x = %sysfunc(tranwrd(&pow,t,Table ));
%put x=&x;
The %put statement returns "x=Table-1-1"
but I want "x=Table -1-1",which containing space.
Other way I tried is
%let x2 = %sysfunc(tranwrd(&pow,t,%quote(Table ));
but this resulted in ERROR and can't make macro variable.
Please help me! XD
Sincerely.
Build the string in a data _null_ step and use call symput. In a data step
tranwrd("&pow","t","Table ")
should work.
Build the string in a data _null_ step and use call symput. In a data step
tranwrd("&pow","t","Table ")
should work.
Thank you so much Kurt,your knowledge work so nice.
%let pow=t-1-1;
data _null_;
call symput("x",tranwrd("&pow","t","Table "));
run;
%put x is &x;
Your second one does work-->
%let x2 = %sysfunc(tranwrd(&pow,t,%quote(Table )));/*add another closing parenthesis*/
%put x=&x2;
I will not recommend using macro execution functions such as quote or bquote and its NR mate in quoting constant text, I'd rather use %str as it is powerful to quote at the time of macro compilation.
%let x2 = %sysfunc(tranwrd(&pow,t,%str(Table )));
%put x=&x2;
Regards,
Naveen Srinivasan
Thank you so much,%str did work well
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.