我正在使用文件I/O函数来读取文件的内容。有没有一种函数或某种快速方法可以识别一个文件的结尾?
测试程序是:
data _null_;
set sashelp.class;
file "class.txt";
put _all_;
run;
data _null_;
set sashelp.iris;
file "iris.txt";
put _all_;
run;
data have;
path="class.txt"; output;
path="iris.txt"; output;
run;
data want;
set have;
length content $1024.;
filref=filename('_dummy_',path);
filrc=fopen('_dummy_');
if filrc then do;
do while(fread(filrc)=0);
rc=fget(filrc,content,1024);
output;
end;
filrc=fclose(filrc);
end;
run;
我想在
data want
步骤中导出一个标志变量。该变量使用 1 或 0 来标记该行是否是文件的最后一行。也就是说,这个变量在新的步骤中必须与last.path
具有相同的值:
data want1;
set want;
by path notsorted;
flag=last.path;
run;
注意:
want
数据集可能非常大,这就是为什么我不需要新的数据步骤。
正常读取文件即可。
data want;
set have;
fname=path;
infile dummy filevar=fname end=eof truncover;
do record=1 by 1 while (not eof);
input content $char1024.;
last_path=eof;
output;
end;
run;