I have a macro:
%generate_string();
%let string= apple;
%put &string;
%mend;
I have a data step where I have to concatenate a value with this macro output:
data _null_;
%let output = This is an || %generate_string() ||.;
%put &output;
run;
I need output as :
This is an apple.
%macro generate_string;
%global string;
%let string= apple;
&string
%mend;
data _null_;
output = "This is an"||" "||"%generate_string"||".";
put output=;
run;
%macro generate_string;
%global string;
%let string= apple;
&string
%mend;
data _null_;
output = "This is an"||" "||"%generate_string"||".";
put output=;
run;
You may be overcomplicating this. If you start as @novinosrin suggested:
%macro generate_string;
%let string = apple;
&string
%mend generate_string;
Now you can get the value of &STRING easily:
%let output = This is an %generate_string.
If you need the output as a character variable within a data set, you can similarly use:
data want;
set have;
output = "This is an %generate_string.";
run;
%macro generate_string;
apple
%mend generate_string;
data _null_;
output1 = 'This is an ' || "%generate_string" ||.;
put output1=;
run;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.