How to get last modified time of file while using infile statement?

532 views Asked by At

I am going to analyze a batch of SAS program file and I am stucked in getting the last modified time of program files. I have thought about X command but it was too inefficient.
I just find when I use infile statement:

data test;
  infile 'D:\test.txt' truncover;
  input ;
run;

Log shows the last modified time:

NOTE: The infile 'D:\test.txt' is:
      Filename=D:\test.txt,
      RECFM=V,LRECL=32767,File Size (bytes)=7,
      Last Modified=2021/1/26 15:25:48,
      Create Time=2021/1/26 15:25:42

As you can see, log window shows the infomation of file as a NOTE. However, my wish output is a variable filled with Last Modified Time.

Is there some option to get it while using infile statement? Surely, Other efficient ways are welcomed, too.

1

There are 1 answers

1
Richard On BEST ANSWER

Use functions FOPEN and FINFO

Example:

Show all available information items and their value for a sample data file.

filename datafile 'c:\temp\datafile.txt';

data _null_;
  file datafile;
  put 'Me data';
run;

data _null_;
  fid = fopen('datafile');

  if fid then do;
    do index = 1 to foptnum(fid);
      info_name = foptname(fid,index);
      info_value = finfo(fid, info_name);

      put index= info_name= @40 info_value=;       
    end;
    
    rc = fclose(fid);
  end;
run;

Will log information such as

index=1 info_name=Filename             info_value=c:\temp\datafile.txt
index=2 info_name=RECFM                info_value=V
index=3 info_name=LRECL                info_value=32767
index=4 info_name=File Size (bytes)    info_value=9
index=5 info_name=Last Modified        info_value=26Jan2021:06:29:47
index=6 info_name=Create Time          info_value=26Jan2021:06:28:23