Fugue, Fantastic...This worked like a charm In fact, in order to store my intermediate values such 4*6+100, all I needed to do was to add another variable without %sysevalf as below. data want; length name $ 8; set have ; drop i name; macro_exprsn = tranwrd ( calc_exprsn, 'INPUT' , '&INPUT' ); array nums ( * ) input1-input4; do i = 1 to dim (nums); call vname (nums(i), name); call symput (name, put(nums(i), best12.)); end; calc_rslt = resolve('%sysevalf('||macro_exprsn||')'); calc_rslt2 = compbl(resolve(macro_exprsn)); run;
... View more