我在同一个项目下编写了两个不同的SAS EG程序。第一个是估计一个参数,比如A,它将在第二个程序中使用。目前,一旦第一个程序完成运行,我手动设置参数
%let A = 0.1;
在第二个程序中。我只是想知道有没有办法在第一个程序中计算出A作为全局变量,然后我的第二个程序可以在没有手动输入的情况下使用它?
感谢。
答案 0 :(得分:3)
我将发布数据步骤,并使用CALL SYMPUTX,以便您也可以为变量分配全局范围。
data _null_; *does not generate a data set;
set have;
call symputx('A', variable_name, 'G');
run;
呼叫symputx的文档在这里: http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002295697.htm
答案 1 :(得分:0)
整个SAS会话的全局宏变量仍然存在(除非您删除它们)。这意味着在一个EG会话中,如果在第一个程序中运行%LET语句,它将在会话的全局宏符号表中创建。然后,它将可用于在同一SAS会话期间运行的任何其他程序。
在您关闭EG或手动断开与SAS服务器的连接之前,SAS会话将一直存在于EG中。
答案 2 :(得分:0)
作为超出EG范围的单独选项,如果您要在非交互模式下运行2个单独的程序,共享变量(或任何类型的参数)的一种好方法是将它们存储在一个文件中并将其读入在下一个节目的开始。
使用call symputx分配全局变量将允许这些变量在整个新程序中保留。