在微距功能工作,返回文件作为SAS日期的修改日期,将在Linux(SAS 9.3)运行。 我想避免使用OS的命令(例如管道的LS命令的结果)作为代码需要与NOXCMD的环境中工作。 下面是第一草案(没有错误处理码,等等),使用FINFO()。
由日通过FINFO()返回的格式,如“周五4月10日14时54分10秒2015年”感到失望。 然后,通过多我的无能感到失望输入()这个字符串不低于丑陋的解析。 利用过去ANYDTDTE了信息,是担心它太多的猜测和不抛出错误,我一般都避免。 但感觉就像矫枉过正编写自定义的日期 - 时间了信息来处理这个字符串。
想知道关于更好的方法将日期字符串转换为SAS日期,更好的方式来获取文件的修改日期,以及下方的任何缺陷的想法。
%macro GetModDate(file);
%*Get the modified date of a linux file, as SAS date;
%local rc fref fid ModDate;
%let rc=%sysfunc(filename(fref,&file));
%let fid=%sysfunc(fopen(&fref));
%let ModDate=%sysfunc(finfo(&fid,Last Modified));
%*Linux Last Modified returns format like: Fri Apr 10 14:54:10 2015;
%let ModDate=%sysfunc(inputn(%scan(&moddate,2,%str( )) %scan(&moddate,3,%str( )) %scan(&moddate,5,%str( ))
,anydtdte11
));
%let fid=%sysfunc(fclose(&fid));
%let rc=%sysfunc(filename(fref));
&ModDate
%mend GetModDate;