【问题标题】:SAS: Using the Put statement to create dynamic codeSAS:使用 Put 语句创建动态代码
【发布时间】:2013-06-28 02:20:40
【问题描述】:

我想使用PUT 语句创建动态代码。根据 SUGI 29 (http://www2.sas.com/proceedings/sugi29/175-29.pdf) 的这份文件,

put
"data XXXXX; "
/ 'infile "&datadir/&compid&filetype" missover ls=' tbla_fle
';' / 'input'
;

相当于运行

data onecomp ;
infile
"&datadir/&compid&filetype"
missover ls = 268 ;
input

但是,当我尝试类似于他们的示例时,PUT 语句中包含的代码不会运行,而是写入 SAS 输出日志:

data _NULL_;
put // "data put_test;" / "b=2;" / "run;";
run;

In Output Log:

data put_test;
b=2;
run;     

我检查了 SAS 文档,似乎PUT 仅用于“将行写入 SAS 日志、SAS 输出窗口或在最近的 FILE 语句中指定的外部位置。”没有任何地方说它可以用来创建动态生成的代码。

我知道我一定错过了什么,但我不确定是什么。我正在使用 SAS Enterprise Guide 4.1。

谢谢!

【问题讨论】:

    标签: dynamic sas


    【解决方案1】:

    这个想法是使用put 将生成的代码写入文件。然后您将%include 文件放入您的 SAS 会话中以运行它。您缺少的是 file 语句和 %include 指令。

    data _null_;
        file 'temp.sas'; /* redirects put to a file instead of the SAS log */
        put
          "data XXXXX; "
          / 'infile "&datadir/&compid&filetype" missover ls=' tbla_fle
          ';' / 'input'
        ;
    run;
    
    %include 'temp.sas';
    

    【讨论】:

      猜你喜欢
      • 2015-04-17
      • 1970-01-01
      • 2018-04-18
      • 2014-01-09
      • 2016-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多