Starting in SAS® 9.2, there are three additional attributes for the FINFO function. They are:
File Size(bytes)
Create Time
Last Modified
The sample code in the Full Code section illustrates how to use the FINFO function within a macro to retrieve the values of these new attributes.
A non-macro technique is illustrated in the Full Code section as well.
The create date is not stored with a file on UNIX. Therefore, the CRDATE variable that is within the code in the Full Code section is missing on UNIX.
/** Macro technique **/
%macro FileAttribs(filename);
%local rc fid fidc;
%local Bytes CreateDT ModifyDT;
%let rc=%sysfunc(filename(onefile,&filename));
%let fid=%sysfunc(fopen(&onefile));
%let Bytes=%sysfunc(finfo(&fid,File Size (bytes)));
%let CreateDT=%qsysfunc(finfo(&fid,Create Time));
%let ModifyDT=%qsysfunc(finfo(&fid,Last Modified));
%let fidc=%sysfunc(fclose(&fid));
%let rc=%sysfunc(filename(onefile));
%put NOTE: File size of &filename is &Bytes bytes;
%put NOTE- Created &CreateDT;
%put NOTE- Last modified &ModifyDT;
%mend FileAttribs;
/** Just pass in the path and file name **/
%FileAttribs(c:\aaa.txt)
/** Non-macro technique **/
filename fileref 'c:\aaa.txt';
data a(drop=fid);
infile fileref truncover obs=1;
fid=fopen('fileref');
Bytes=finfo(fid,'File Size (bytes)');
crdate=finfo(fid,'Create Time');
moddate=finfo(fid,'Last Modified');
run;
proc print;
run;
Output
The following is printed to the SAS log:
NOTE: File size of c:\aaa.txt is 5 bytes
Created 02Jul2010:08:15:24
Last modified 21Jul2010:16:03:20