我想使用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输出窗口或最近指定的外部位置”文件声明。“它没有说它可以用来创建动态生成的代码。
我知道我必须遗漏一些东西,但我不确定是什么。我正在使用SAS Enterprise Guide 4.1。
谢谢!
答案 0 :(得分: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';