Your code has a timing issue. The macro processor scans the text first and passes the results onto SAS to run. So your %LET and %PUT will run before the SAS processor even starts to compile the data step and the macro variable ANOTHERSCORE will either not exist or have some other value. You essentially ran this code:
%let anotherscore=%eval(&anotherscore*10);
%put &anotherscore;
DATA try;
set DATA1;
call symput("anotherscore",SCORE);
run;
If you change the order so that the macro code runs after the data step has run then the value of the ANOTHERSCORE macro variable will be multiplied by 10 and the result printed to the log.
DATA try;
set DATA1;
call symput("anotherscore",SCORE);
run;
%let anotherscore=%eval(&anotherscore*10);
%put &anotherscore;
You also have two other problems here.
First the value of the macro variable changes over and over as the data step runs for each observation read from the input dataset DATA1. Only the value from the last observation will be in the macro variable when the data step is finished.
Second the %EVAL() function only works for integer arithmetic. If SCORE is not an integer then you need to use the %SYSEVALF() function instead.
... View more