Dear All,
I have a macro that checks many conditions such as these ones:
%IF %STR(&LEADER) NE %STR() %THEN %DO;
...
%IF %SYSFUNC(FILEEXIST(&PATH.\&SUPERVISOR.\&LEADER.)) %THEN %DO;
In the above, two of the arguments (SUPERVISOR and LEADER) can sometimes have hypens because they are names. When this happens, it yields the following error:
ERROR: A character operand was found in the %EVAL function or %IF condition where a numeric
operand is required. The condition was: &LEADER NE
Is there any way around this or should I instruct users to remove hyphens when they call the macro?
Thank you in advance for your help and suggestions,
Daniel
Use the %quote function
For example &path\%quote(&supervisor)\%quote(&leader)
Use the %quote function
For example &path\%quote(&supervisor)\%quote(&leader)
An easy way for &LEADER would be:
%if %length(&leader) > 0 %then %do;
This could actually be abbreviated to:
%if %length(&leader) %then %do;
Are you sure that &SUPERVISOR is actually causing a problem? It looks like it should be OK.
A better way to check to see if a macro variable &leader is blank is:
%sysevalf(%superq(leader)=,boolean)
See http://support.sas.com/resources/papers/proceedings09/022-2009.pdf
This eliminates all possible problems caused by hyphens and other special characters
Thank you both for your answers, everything works fine with the modifications you have proposed 🙂
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.