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;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
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.