XWait和XSync行为不正常

时间:2014-03-11 23:33:33

标签: sas command-prompt

我在Windows Vista上运行SAS 9。我正在使用系统命令在一些嵌套宏中执行一些Python代码,每次都将不同的参数传递给Python。我在SAS中使用XSYNC和XWAIT选项。

我对此的理解是这两个选项应该让SAS暂停,直到Python脚本完成运行。使用此选项,当代码完成执行时,Python命令提示符窗口将关闭,然后提示我输入EXIT,这就是您所期望的。

但是,当我使用NOXWAIT XSYNC时,SAS代码会传递每个Python调用,将其启动并继续运行。几分钟后,我打开了数百个命令提示符窗口,同时尝试运行。

我做错了什么?作为一种解决方法,我尝试过使用x&#39; EXIT&#39;并调用系统(&#39; EXIT&#39;)关闭windows管理员命令提示符窗口,但这似乎没有被传递到窗口,即使exit命令是在单独的数据 null < / em>转到调用Python代码的那个。

有什么想法吗?


以下是我使用的代码:

data _null_;
x 'cd C:\Python33';
x 'start test.py';
run;

data _null_;
call system ('exit');
run;

会打开两个命令提示符窗口。第二个是运行的Python脚本。这关闭了,我留下了管理员窗口。我试过把一个x命令退出&#39;退出&#39 ;;在第一个数据 null 步骤中,但这没有用。

1 个答案:

答案 0 :(得分:1)

XSYNC告诉SAS同步执行外部命令,这意味着SAS会暂停,直到命令完成。您只能在非常特定的应用程序中使用NOXSYNC。

XWAIT告诉SAS等待您明确退出运行该命令的窗口。在大多数情况下,您可能希望使用NOXWAIT。

您描述的问题告诉我您的Python命令未正确终止。对不起,我不懂Python。但是考虑将Python语句放在脚本文件中,该脚本文件通过exit命令关闭,或者向SAS调用添加退出命令,如:

data _null_; 
   call system('python-command;exit');
run;

如果这样做无效,请修改您的问题并显示您正在使用的完整SAS数据步骤代码。注意,使用第二个X命令来推送“退出”语句将不起作用;它必须是初始呼叫的一部分。