SAS 宏未检测到文件
SAS Macro not detecting a file
CMS 发布了一个检查文件是否存在的 SAS 宏:
** check existance of dataset**;
%macro CHECKDS(FILE,LONGFILE);
%if %sysfunc(exist(&FILE)) %then;
%else %do;
data _null_;
file print ls=255;
&MSG30 put "ERROR : [Msg30] Program halted, file &LONGFILE does not exist";
abort; run;
%end;
%mend CHECKDS;
现在当我这样调用它时:
LIBNAME IN1 "/folders/myfolders/";
%CHECKDS(&STPERSON.TXT,PERSON)
run;
我收到此错误:错误:[Msg30] 程序暂停,文件 PERSON 不存在。
我知道文件存在并且在那个位置。有什么想法吗?
exist
函数的第一个参数应采用 libname.memname
格式。 exist
函数的第二个参数指定成员类型;由于您没有指定成员类型,因此默认为 DATA。这意味着一个带有 SAS 数据文件且扩展名为 sas7bdat 的文件。
有关成员类型的列表,请参阅 here。
由于您的文件是.txt 文件,我认为它不能被视为图书馆成员。如有不妥欢迎大家指正
DWal 就在上面。这是我必须做的更完整的答案。我必须将 .txt 文件转换为 sas 数据集(特别是 .sas7bdat)。
proc import datafile="/folders/myfolders/PERSON"
dbms=dlm
out=person
replace;
delimiter=' ';
getnames=yes;
run;
然后必须将其写入我的图书馆,然后我才能使用它。
data IN1.person ;
set person;
run;
CMS 发布了一个检查文件是否存在的 SAS 宏:
** check existance of dataset**;
%macro CHECKDS(FILE,LONGFILE);
%if %sysfunc(exist(&FILE)) %then;
%else %do;
data _null_;
file print ls=255;
&MSG30 put "ERROR : [Msg30] Program halted, file &LONGFILE does not exist";
abort; run;
%end;
%mend CHECKDS;
现在当我这样调用它时:
LIBNAME IN1 "/folders/myfolders/";
%CHECKDS(&STPERSON.TXT,PERSON)
run;
我收到此错误:错误:[Msg30] 程序暂停,文件 PERSON 不存在。
我知道文件存在并且在那个位置。有什么想法吗?
exist
函数的第一个参数应采用 libname.memname
格式。 exist
函数的第二个参数指定成员类型;由于您没有指定成员类型,因此默认为 DATA。这意味着一个带有 SAS 数据文件且扩展名为 sas7bdat 的文件。
有关成员类型的列表,请参阅 here。
由于您的文件是.txt 文件,我认为它不能被视为图书馆成员。如有不妥欢迎大家指正
DWal 就在上面。这是我必须做的更完整的答案。我必须将 .txt 文件转换为 sas 数据集(特别是 .sas7bdat)。
proc import datafile="/folders/myfolders/PERSON"
dbms=dlm
out=person
replace;
delimiter=' ';
getnames=yes;
run;
然后必须将其写入我的图书馆,然后我才能使用它。
data IN1.person ;
set person;
run;