楼主: yunnandlg
3024 1

[学习分享] 在SAS程序中如果想要执行外部命令 [推广有奖]

版主

但问耕耘,莫问收获

已卖:3032份资源

院士

5%

还不是VIP/贵宾

-

威望
0
论坛币
279367 个
通用积分
649.6470
学术水平
1667 点
热心指数
1686 点
信用等级
1650 点
经验
192122 点
帖子
1938
精华
0
在线时间
2780 小时
注册时间
2010-8-28
最后登录
2025-12-23

楼主
yunnandlg 在职认证  学生认证  发表于 2016-9-24 10:23:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
SAS程序中如果想要执行外部命令,比如linux下的shell命令或者windows下的command命令,共有3种方式。分别是X语句,system例程和sysexec宏。下面分别举一个例子:
  X statement
  X ‘C\Program Files\Microsoft Office\Office12\excelexe’ /*启动Excel程序*/
  System routine
  call system‘cd ~cp /tmp/test1 /’);
  Sysexec macro
  %sysexec %strpwdll); /*对于宏调用,如果字符串含有特殊字符,需要用%str逃逸*/
  针对这3种方法,我们要注意使用的区别。X语句是全局性的statement,它的执行不受SAS程序的逻辑控制,而system例程是典型的SAS函数调用,它遵循SAS程序的逻辑,至于sysexec宏,它只会在SAS程序执行前的宏编译的时候运行,然后带着运行后的结果继续SAS程序的执行。对于宏的机制此不赘言,但对于Xsystem例程的区别,下面一例即可明示。
  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
  

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:sas程序 外部命令 statement Microsoft Statemen Microsoft windows command Office system

Cause morning rolls around and it's another day of sun.
清晨不久就会来到,又是阳光明媚的一天。

沙发
流水不朽 发表于 2016-9-24 15:14:19
写的挺好的,学习了!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 15:28