I have a prompt in a stored process which returns an integer value. The prompt allows users to select from a dynamic list. Selecting the prompt is optional. I want to check whether the prompt was selected or not. The selected value doesn't matter - I only want to check if the prompt was selected or not. Is there a way of doing it programatically?
I tried in these two ways by check if the prompt returned a missing value but that didn't work:
/*First*/
%if %eval(&Prompt1 ne .) %then %let Var1=1;
%else %let Var1=0;
/*Second*/
%if %sysfunc(missing(&Prompt1))=0 %then %let Var1=1;
%else %let Var1=0;
Any suggestions?
Thanks.
The obvious (?) way to go: %put your prompt value when it's not selected.
%eval is not needed when doing comparisons, use it with calculations.
Thank you, Linus.
I ended up using %length to check if the parameter returned any value or not. It worked.
There's many ways to do it.
Here is a good paper that cover that subject:
IS THIS MACRO PARAMETER BLANK?
http://support.sas.com/resources/papers/proceedings09/022-2009.pdf
Best regards
Thanks.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.