通过SAS EG中的提示进行宏自动化

时间:2016-05-03 16:47:18

标签: sas prompt sas-macro enterprise-guide

这是我的表

 data:
 ax bx cx dx ex fx
 1   2  3  4  5 5
 2   3  5  1  0 5
 3   7  8  9  1 4

这是我的基本代码

%macro example(c= , b= ,a= );
 data temp;
 set  data;
diff = &c-(&b+&a);
run;
%mend example;
% example(c=cx ,b=bx ,a=ax)

我想通过在SAS EG中设置类似提示的功能来自动化diff = c-(b + a),但我不知道该怎么做?我的目标是能够改变我的功能(例如cx,我想把f或者代替ax,e等等)在" diff"因为我的实际数据包含数千列。 如果你帮助我,我很感激。

2 个答案:

答案 0 :(得分:0)

要自动执行此操作,您可能需要提示三个提示。每个变量一个(c,b,a)。 (当然,称它们为描述性的,而不是c,b,a!)选择“在整个项目中使用”和“需要非空白值”。也许添加一些更有用的文字来描述它们是什么。

然后,你需要有一种方法来填充它们。您可以从静态列表中填充它们(输入可能的值),就像打开文本框一样,您每次都可以自己键入它们,或者您可以从数据源填充它们。从数据源填充的机制取决于您的本地设置 - 例如,您使用“本地EG”还是EG连接到元数据服务器 - 但总的来说它应该相当简单。

在“用户从静态列表中选择值”,选择“获取值”,然后选择“浏览”SAS数据文件;或“用户从动态列表中选择值”,也这样做。后者将始终检查数据源是否有更新,而前者只是在创建提示时填充列表。

最后,在您的程序中,您的宏调用将如下所示:

%example(c=&c ,b=&b ,a=&a)

其中&c &b &a是提示名称(如果您为其提供了更长的文本名称,则为“短名称”)。

答案 1 :(得分:0)

你想要的是这样的:

/*Define Prompt*/
%window info
  #5 @5 'Var1:'
  #5 @13 var1 2 attr=underline
  #7 @5 'Var2:'
  #7 @13 Var2 2 attr=underline
  #9 @5 'Var3:'
  #9 @13 Var3 2 attr=underline;

/*Show Prompt*/
%display info;

/*Display Macro Variables in the Log*/
%put &var1;
%put &var2;
%put &var3;

%example(c=&var1 ,b=&var2 ,a=&var3)