SAS EG中的全局变量

SAS EG中的全局变量,sas,sas-macro,enterprise-guide,Sas,Sas Macro,Enterprise Guide,我在同一个项目下编写了两个不同的SAS EG程序。第一个是估计一个参数,比如a,它将在第二个程序中使用。目前,一旦第一个程序完成运行,我就手动设置参数 %let A = 0.1; 在第二个节目中。我只是想知道,有没有一种方法可以在第一个程序中计算出一个全局变量后,将其声明为全局变量,然后我的第二个程序就可以在不需要手动输入的情况下使用它 谢谢 全局宏变量在整个SAS会话中保持不变(除非删除它们)。这意味着在一个EG会话中,如果在第一个程序中运行%LET语句,它将在会话的全局宏符号表中创建。然后

我在同一个项目下编写了两个不同的SAS EG程序。第一个是估计一个参数,比如a,它将在第二个程序中使用。目前,一旦第一个程序完成运行,我就手动设置参数

%let A = 0.1;
在第二个节目中。我只是想知道,有没有一种方法可以在第一个程序中计算出一个全局变量后,将其声明为全局变量,然后我的第二个程序就可以在不需要手动输入的情况下使用它


谢谢

全局宏变量在整个SAS会话中保持不变(除非删除它们)。这意味着在一个EG会话中,如果在第一个程序中运行%LET语句,它将在会话的全局宏符号表中创建。然后,它将可用于在同一SAS会话期间运行的任何其他程序中


SAS会话在EG中持续存在,直到您关闭EG或手动断开与SAS服务器的连接。

全局宏变量在整个SAS会话中持续存在(除非您删除它们)。这意味着在一个EG会话中,如果在第一个程序中运行%LET语句,它将在会话的全局宏符号表中创建。然后,它将可用于在同一SAS会话期间运行的任何其他程序中


SAS会话在EG中持续存在,直到您关闭EG或手动断开与SAS服务器的连接。

我将发布一个数据步骤,并使用CALL SYMPUTX,以便您也可以为变量分配一个全局范围

data _null_; *does not generate a data set;
    set have;
    call symputx('A', variable_name, 'G');
run;
call symputx的文档如下:

我将发布一个数据步骤,并使用CALL SYMPUTX,以便您也可以为变量分配一个全局范围

data _null_; *does not generate a data set;
    set have;
    call symputx('A', variable_name, 'G');
run;
call symputx的文档如下:

作为一个独立选项,超出了EG的范围,如果要在非交互模式下运行两个独立的程序,共享变量(或任何类型的参数)的一个好方法是将它们存储在文件中,并在下一个程序开始时读取它们


使用call symputx分配全局变量将允许这些变量在您的新程序中持续存在。

作为一个独立的选项,超出了EG的范围,如果您要在非交互模式下运行两个独立的程序,这是共享变量(或任何类型的参数)的好方法就是将它们存储在一个文件中,并在下一个程序开始时读取它们


使用call symputx分配全局变量将允许这些变量在整个新程序中持续存在。

值是表中的a,而不是宏变量吗?如果是这样,您可以通过几种方式从该表创建宏变量-proc sql或数据步骤是两个选项。是的,它是第一个程序中估计的数字,例如0.1。你有没有可能在这里举一个创建宏变量的例子?我不熟悉SAS宏。谢谢。是表中的值,而不是宏变量吗?如果是这样,您可以通过几种方式从该表创建宏变量-proc sql或数据步骤是两个选项。是的,它是第一个程序中估计的数字,例如0.1。你有没有可能在这里举一个创建宏变量的例子?我不熟悉SAS宏。谢谢