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.
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.