首页 > 解决方案 > 使用 infile 语句时如何获取文件的最后修改时间?

问题描述

我要分析一批 SAS 程序文件,我被困在获取程序文件的最后修改时间。我曾考虑过X命令,但效率太低了。
我只是在使用infile语句时发现:

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

日志显示最后修改时间:

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

如您所见,日志窗口将文件信息显示为注释。但是,我希望输出是一个用 Last Modified Time 填充的变量

infile使用语句时是否有一些选项可以获取它?当然,也欢迎其他有效的方式。

标签: sasfiletime

解决方案


使用函数FOPENFINFO

例子:

显示样本数据文件的所有可用信息项及其值。

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;

会记录诸如

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

推荐阅读