如何使用SAS中的计算从现有宏变量创建新的宏变量?

如何使用SAS中的计算从现有宏变量创建新的宏变量?,sas,sas-macro,Sas,Sas Macro,我想从已经存在的其他宏变量中创建一个新的宏变量 我尝试了多种不同的呼叫处理,%eval,以及输入,但均无效 我希望d评估为3/30=.10 非常感谢…%eval将只返回一个整数。要获取小数点,您需要使用%sysevalf。为什么要对宏变量进行数学运算?我们的中心使用旧的SAS打印宏生成报表表格。这些桌子是画出来的,然后我们必须制作出来。很多时候,在数据集中工作或使用数据步骤可以很好地工作,但有时使用这种方法生成值要快得多。啊,好的。可能是向唱诗班宣讲,但如果你有机会实现现代化,现在的do-S

我想从已经存在的其他宏变量中创建一个新的宏变量

我尝试了多种不同的
呼叫处理
%eval
,以及
输入
,但均无效

我希望
d
评估为3/30=.10




非常感谢…

%eval将只返回一个整数。要获取小数点,您需要使用%sysevalf。

为什么要对宏变量进行数学运算?我们的中心使用旧的SAS打印宏生成报表表格。这些桌子是画出来的,然后我们必须制作出来。很多时候,在数据集中工作或使用数据步骤可以很好地工作,但有时使用这种方法生成值要快得多。啊,好的。可能是向唱诗班宣讲,但如果你有机会实现现代化,现在的do-SAS制表选项比以前需要的要好1000倍。
*****  taken directly from the sas help files...  ;

%let a=1+2;
%let b=10*3;
%let c=5/3;
%let eval_a=%eval(&a);
%let eval_b=%eval(&b);
%let eval_c=%eval(&c);

%put &a is &eval_a;
%put &b is &eval_b;
%put &c is &eval_c; * not sure why this evaluates to 1, but I'm sure it's documented somewhere... ;


*****  This evaluates to 0...

%let d = %eval(%eval(&a) / %eval(&b)) ; 

%put &d ;