DATA Step, Macro, Functions and more

%SYSEVALF Floating Point Conditions in %IF Statement

Accepted Solution Solved
Reply
New Contributor
Posts: 2
Accepted Solution

%SYSEVALF Floating Point Conditions in %IF Statement

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


Accepted Solutions
Solution
‎10-21-2014 01:39 PM
Super User
Posts: 10,508

Re: %SYSEVALF Floating Point Conditions in %IF Statement

%sysevalf((1/&dsctroportion)*&edgecond)) resolves to 124.36923076923 when I calculate it. So the last condition is false.

View solution in original post


All Replies
Solution
‎10-21-2014 01:39 PM
Super User
Posts: 10,508

Re: %SYSEVALF Floating Point Conditions in %IF Statement

%sysevalf((1/&dsctroportion)*&edgecond)) resolves to 124.36923076923 when I calculate it. So the last condition is false.

New Contributor
Posts: 2

Re: %SYSEVALF Floating Point Conditions in %IF Statement

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.

☑ This topic is SOLVED.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 245 views
  • 0 likes
  • 2 in conversation