/************************************************************ * evaluate a string as an expression * * Peng Zeng (Auburn University) * 10-16-2018 ************************************************************/ data mydata; input x $; datalines; 1+2 3>2 ; proc print data = mydata; run; proc contents data = mydata; run; data updated; set mydata; y_char = resolve(cats('%sysevalf(', x, ')')); y_num = input(y_char, 12.); run; proc print data = updated; run; proc contents data = updated; run; /* in proc sql */ data mydata2; input x $; datalines; 3>2 1<2 4=5 5<2 4>9 1 2 0 . ; proc print data = mydata2; run; proc sql; select *, case missing(x) when 1 then 1 else input(resolve(cats('%sysevalf(', x, ')')), 12.) end as condition from mydata2 where (calculated condition) > 0; quit;