Hello,
How can I read the file date from an external file in SAS?
I have a job that is already reading the fline name to load in multiple external files daily – I would like to include the date of the file in the data set I create.
For example if the file was created on 3/27/2017 - I would like the code to read in 3/27/2017 so I can add it to my data set.
I’m using User Written code in DI Studio to read in the file name – but I can't find how to read in the file date. Here’s the code I have so far:
--------------------------------------------------------
filename DIRLIST pipe 'dir "\\filelocation\*.csv" /b ';
data dirlist ;
infile dirlist lrecl=200 truncover;
input InFile_name $100.;
run;
data _null_;
set dirlist end=end;
count+1;
call symputx('read'||put(count,7.-l),cats('filelocation',InFile_name));
call symputx('dset'||put(count,7.-l),scan(InFile_name,1,'.'));
if end then call symputx('max',count);
run;
options mprint symbolgen;
%macro readin;
%do i=1 %to &max;
data &&dset&i;
infile "&&read&i" lrecl=1000 truncover dsd;
input var1 $ var2 $ var3 $;
run;
%end;
%mend readin;
libname BICTMPOD '\\filelocation\TEMPODBC';
data BICTMPOD.work_In_File_Names;
set dirlist;
run;
In the DIR option make sure you specify the correct options to include the created/modified date in the output. Then in the data step you read in the variables needed.
Windows reference for DIR statement.
https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/dir.mspx?mfr=true
And here's a SAS note that illustrates how to do this:
http://support.sas.com/kb/38/267.html
You do know that you can read all text files at once if they have the same structure, if they're in the same folder use a wildcard.
The following works for me (using Windows10):
filename DIRLIST pipe 'dir "c:\art\*.csv" /tw '; data dirlist (keep=InFile_name date); informat date yymmdd10.; format date date9.; informat time time8.; format time time5.; informat size comma12.; informat InFile_name $100.; infile dirlist lrecl=200 truncover; input date time ampm $ size InFile_name; if not missing(date); run;
Art, CEO, AnalystFinder.com
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.