统计211

标题: SAS执行外部命令 [打印本页]

作者: 晚风    时间: 2011-7-27 20:11
标题: SAS执行外部命令
在SAS程序中如果想要执行外部命令,比如linux下的shell命令或者windows下的command命令,共有3种方式。分别是X语句,system例程和sysexec宏。下面分别举一个例子:

X statement:
X ‘C:\Program Files\Microsoft Office\Office12\excel.exe’; /*启动Excel程序*/

System routine:
call system(‘cd ~;cp /tmp/test1 ./’);

Sysexec macro:
%sysexec %str(pwd;ll); /*对于宏调用,如果字符串含有特殊字符,需要用%str逃逸*/

针对这3种方法,我们要注意使用的区别。X语句是全局性的statement,它的执行不受SAS程序的逻辑控制,而system例程是典型的SAS函数调用,它遵循SAS程序的逻辑,至于sysexec宏,它只会在SAS程序执行前的宏编译的时候运行,然后带着运行后的结果继续SAS程序的执行。对于宏的机制此不赘言,但对于X和system例程的区别,下面一例即可明示。

data _null_;
set tmp;
if flag = ‘Y’ then X ‘tastmgr’;
/*由于X是全局性的statement,不论flag的值是什么,taskmgr程序都会启动*/
run;

data _null_;
set tmp;
if flag = ‘Y’ then call system(‘tastmgr’);
/*只有flag的值是’Y’时,taskmgr程序才会启动*/
run;





欢迎光临 统计211 (http://tj211.com/) Powered by Discuz! X3.2