我有SAS代码,其中包含以下代码行
%include“/sas/dev/compare.sas”;
它位于服务器上的位置 / SAS / CPM的/ dev /代码
所以,目前我正在做什么手动转到上面的路径并打开每个.sas代码(在一个文件夹中,你可以说在/ sas / cpm / dev / code有4个代码位置)并检查%include是否包含“/sas/dev/compare.sas”代码行是否存在
任何人都可以帮助我而不用手动检查/打开.sas代码如何检查%include是否包含“/sas/dev/compare.sas”;是否存在
任何人,请帮助我如何写sas, 我们可以通过宏右键传递每个代码
由于
答案 0 :(得分:1)
您可以通过以下方式执行此操作:
% include "/sas/dev/compare.sas";
代码:
%let extension=sas;
%let FolderPath=\\sas\SASDATA\momo\;
%macro check_file_path(f=);
DATA _null_;
infile "&f" dsd ;
length string $200.;
input string $;
if string=&check. then put "&f. " "includes @ line " _N_= ;
run;
%mend;
Data List_files;
rc=FILENAME('FMyRep',"&FolderPath");
did=DOPEN('FMyRep');
memcnt=DNUM(did);
*count number of members - including subfolders;
DO i=1 TO memcnt;
*for each member, test extension and store filename;
filevar=LOWCASE(DREAD(did,i));
file_path=cats("&FolderPath.",filevar);
IF LOWCASE(SCAN(filevar,-1,".")) EQ LOWCASE("&extension") THEN
OUTPUT;
END;
rc=DCLOSE(did);
rc=FILENAME('FMyRep');
KEEP filevar file_path;
RUN;
data _null_;
set List_files;
call execute('%check_file_path(f='||file_path||')');
put file_path=;
run;
输出:
file_path=\\sas\SASDATA\momo\file1.sas
file_path=\\sas\SASDATA\momo\file2.sas
file_path=\\sas\SASDATA\momo\file3.sas
file_path=\\sas\SASDATA\momo\file4.sas
日志:file4.sas是唯一没有% include "/sas/dev/compare.sas";
\\sas\SASDATA\momo\file1.sas includes @ line _N_=1
\\sas\SASDATA\momo\file2.sas includes @ line _N_=1
\\sas\SASDATA\momo\file4.sas includes @ line _N_=1
答案 1 :(得分:0)
您可以使用fileexist函数
来完成%let myfile = "/sas/dev/compare.sas";
%macro filecheck;
%if %sysfunc(fileexist(&myfile))
%then % include "/sas/dev/compare.sas";
%else %put The external file &myfile does not exist.;
%mend;
%filecheck;