Originally used codes to create a macro variable:
%let class = A B C;
%global class;
Now tried to use Prompt Manager to achieve the same result above:
Users will be required to select from the list. If he/she selects B & C:
Then the value for the macro variable 'class', I hope, is "B C".
Clearly the Log shows:
8 %LET class0 = %nrstr(2);
9 %LET class1 = %nrstr(B);
10 %LET class2 = %nrstr(C);
11 %LET class_count = %nrstr(2);
12 %LET class = %nrstr(B);
which is not what I need.
How to fix it?
You will need a macro to resolve the user selections into a single macro variable.
I have created a macro function the will resolve the values for you.
You may want to enhance it, using %symexist, to check if the specified macro varable actually exists.
%macro GetPromptValues(
promptvar /* Name of the macro variable containing the prompt selections */);
%let SelectedValues=;
%do i=1 %to &&&promptvar._COUNT;
%let SelectedValues=&SelectedValues &&&promptvar.&i;
%end;
&SelectedValues
%mend;
%let NewClass=%GetPromptValues(Class);
%put NewClass=&NewClass;
You will need a macro to resolve the user selections into a single macro variable.
I have created a macro function the will resolve the values for you.
You may want to enhance it, using %symexist, to check if the specified macro varable actually exists.
%macro GetPromptValues(
promptvar /* Name of the macro variable containing the prompt selections */);
%let SelectedValues=;
%do i=1 %to &&&promptvar._COUNT;
%let SelectedValues=&SelectedValues &&&promptvar.&i;
%end;
&SelectedValues
%mend;
%let NewClass=%GetPromptValues(Class);
%put NewClass=&NewClass;
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!
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.