Dynamic SAS:使用Put语句创建动态代码
我想使用Dynamic SAS:使用Put语句创建动态代码,dynamic,sas,Dynamic,Sas,我想使用PUT语句创建动态代码。根据SUGI 29()的本文件 相当于跑步 data onecomp ; infile "&datadir/&compid&filetype" missover ls = 268 ; input 但是,当我尝试与他们的示例类似的操作时,PUT语句中包含的代码不会运行,而是写入SAS输出日志: data _NULL_; put // "data put_test;" / "b=2;" / "run;"; run; In Output Lo
PUT
语句创建动态代码。根据SUGI 29()的本文件
相当于跑步
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企业指南4.1
谢谢大家! 方法是使用
put
将生成的代码写入文件。然后,%将该文件包含到SAS会话中以运行它。您缺少的是文件
语句和%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';
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';