繁体   English   中英

SAS:使用Put语句创建动态代码

[英]SAS: Using the Put statement to create dynamic code

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

谢谢!

想法是使用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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM