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 🙂
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.