【问题标题】:Global variable in SAS EGSAS EG 中的全局变量
【发布时间】:2016-02-25 15:21:58
【问题描述】:

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

%let A = 0.1;

在第二个程序中。我只是想知道有没有办法在第一个程序中计算 A 后将其声明为全局变量,然后我的第二个程序可以在没有手动输入的情况下使用它?

谢谢。

【问题讨论】:

  • 是表中的值A,而不是宏变量?如果是这样,您可以通过几种方式从该表创建一个宏变量 - proc sql 或数据步骤是两个选项。
  • 是的,这是第一个程序中估计的数字,比如 0.1。您是否有机会在这里举例说明创建宏变量?我是 SAS 宏的新手。谢谢。

标签: sas sas-macro enterprise-guide


【解决方案1】:

我将发布一个数据步骤,并使用 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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-04
        • 1970-01-01
        • 1970-01-01
        • 2022-07-20
        • 2017-08-19
        相关资源
        最近更新 更多