1

我想使用该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。

谢谢!

4

1 回答 1

2

这个想法是用来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';
于 2013-06-28T02:30:45.147 回答