Hi,
I am trying to get a complicated %IF condition statement to work within my macro loop. I have been able to do this in the past with floating point comparisons using %SYSEVALF, but no matter what I do it keeps evaluating as FALSE even though the variables should make it TRUE.
Here is my LOG output for the condtion in question:
SYMBOLGEN: Macro variable CURSTG resolves to 3
SYMBOLGEN: Macro variable DISCELIGSTRAD resolves to 121.26
SYMBOLGEN: Macro variable EDGECOND resolves to 121.26
SYMBOLGEN: Macro variable DISCELIGFULL resolves to 184.7
SYMBOLGEN: Macro variable DSCTROPORTION resolves to 0.975
SYMBOLGEN: Macro variable EDGECOND resolves to 121.26
MLOGIC(STAGE): %IF condition &curstg eq 3 and %sysevalf(&disceligstrad = &edgecond) and %sysevalf(&disceligfull <=
((1/&dsctroportion)*&edgecond)) is FALSE
%sysevalf((1/&dsctroportion)*&edgecond)) resolves to 124.36923076923 when I calculate it. So the last condition is false.
%sysevalf((1/&dsctroportion)*&edgecond)) resolves to 124.36923076923 when I calculate it. So the last condition is false.
Thanks,
It should be >= not <=, I must have switched the signs as I was rewriting it (I originally had "ge", then switched it to "<="). It works now.
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.