%let var = name age height;
%let var1 = %sysfunc(translate(&var, %str(), %str(,)));
%put &var1;
This is giving me output as name age height
but I need it as name ,age, height
Please correct where I am going wrong
Documentation. The second parameter is the TO value, the third is the From
%let var = name age height; %let var1 = %sysfunc(translate(&var, %str(,), %str( ))); %put &var1;
@nxmogil wrote:
%let var = name age height;
%let var1 = %sysfunc(translate(&var, %str(), %str(,)));
%put &var1;
This is giving me output as name age height
but I need it as name ,age, height
Please correct where I am going wrong
The TRANSLATE function expects the "to" value to come before the "from" value. So your expression translates the commas to blanks. Reverse the second and third parameters:
%let var1 = %sysfunc(translate(&var, %str(,), %str( )));
Be sure to add a blank in side the %str function. Nulls are different than blanks in macro language.
@Astounding wrote:
So your expression translates the commas to blanks.
Worse still, it would interpret words delimited by commas in &var, if any, as separate function arguments and hence apply unwanted additional character replacements to the first word only ...
Documentation. The second parameter is the TO value, the third is the From
%let var = name age height; %let var1 = %sysfunc(translate(&var, %str(,), %str( ))); %put &var1;
@nxmogil wrote:
%let var = name age height;
%let var1 = %sysfunc(translate(&var, %str(), %str(,)));
%put &var1;
This is giving me output as name age height
but I need it as name ,age, height
Please correct where I am going wrong
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.
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.
Ready to level-up your skills? Choose your own adventure.