Hi,
Yesterday, I was programming on macro and I realized that in a macro evaluation 10 is not equal than 1e1, but in a data step it says that they are equal.
%put %eval(10=1e1);
0
data test;
if 10=1e1 then put "1";
run;
1
Why happen this?
You need "%sysevalf()". Run the following
data _null_;
var= 10=1e1;
put var=;
run;
%put eval: %eval(10=1e1);
%put sysevalf: %sysevalf(10=1e1);
You need "%sysevalf()". Run the following
data _null_;
var= 10=1e1;
put var=;
run;
%put eval: %eval(10=1e1);
%put sysevalf: %sysevalf(10=1e1);
The macro processor is a pure text engine, so you need to see all comparisons as character comparisons, unless you override that behaviour, as Patrick already pointed out.
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.