在SAS中停止进程流程

问题描述:

我有一个SAS程序如下,它试图检查某个文件是否存在。在SAS中停止进程流程

%let testfile = \\some.network.share\SOMEFILE.CSV; 

%macro findit; 
    %if %sysfunc(fileexist(&testfile)) %then %do; 
    %put The file exists! ; 
    %end; 
    %else %put The file does not exist! ; 
%mend; 

%findit; 

我想改变程序如下:如果没有找到该文件,则SAS程序的其余部分,并在工艺流程如下方案应被忽略,分析应该结束在那里。

这可能吗?

+0

网络节点是否存在?我试着运行你的确切示例,并且SAS因为Windows等待来自名为'some.network.share'的计算机的响应而挂起。如果我删除\\或使用真实的计算机名称,那么它的工作原理。 – Tom

+0

你如何提交代码?你在使用企业指南吗? SAS显示管理器?从命令行运行保存的SAS文件?存储过程服务器? .... – Tom

+1

您的路径名称不应有引号。没有这个尝试。请参阅文档中与您尝试执行的操作类似的示例。 http://support.sas.com/documentation/cdl/en/mcrolref/69726/HTML/default/viewer.htm#n108rtvqj4uf7tn13tact6ggb6uf.htm – Reeza

检查出来%转到文档和使用这样的:

%macro findit; 
    %if %sysfunc(fileexist(&testfile)) %then %do; 
    %put The file exists! ; 
    %end; 
    %else %do; 
    %put The file does not exist! ; 
    %goto exit; 
    %end; 


%exit: 
%mend; 

注意目的地%出口后跟一个冒号,而不是一个分号。

+0

这假设我可以将整个流程包装到一个宏中,对吧?我不确定我是否可以这样做,因为流程流程涉及非常长的程序,它们本身包含宏和什么,但我会试一试并报告回来。 – Merik