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;