统计211

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3342|回复: 0
打印 上一主题 下一主题

SAS执行外部命令

  [复制链接]
跳转到指定楼层
1
发表于 2011-7-27 20:11:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在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;

点评

谢谢你对本版块的支持!  发表于 2011-7-28 09:38
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持1 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


免责声明|关于我们|小黑屋|联系我们|赞助我们|统计211 ( 闽ICP备09019626号  

GMT+8, 2025-4-17 14:10 , Processed in 0.086677 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表