Desktop productivity for business analysts and programmers

Prompt Manager - multiple texts to single macro variable

Accepted Solution Solved
Reply
Frequent Contributor
Posts: 81
Accepted Solution

Prompt Manager - multiple texts to single macro variable

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:

Screenshot - Prompt Manager

Users will be required to select from the list. If he/she selects B & C:

Screenshot - Prompt Manager2

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?


Accepted Solutions
Solution
‎04-03-2017 02:55 AM
SAS Employee
Posts: 20

Re: Prompt Manager - multiple texts to single macro variable

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;

 

View solution in original post


All Replies
Solution
‎04-03-2017 02:55 AM
SAS Employee
Posts: 20

Re: Prompt Manager - multiple texts to single macro variable

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;

 

Frequent Contributor
Posts: 81

Re: Prompt Manager - multiple texts to single macro variable

Exactly what I need. Thank you so much!
☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 152 views
  • 1 like
  • 2 in conversation