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.
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 save with the early bird rate—just $795!
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.