DATA Step, Macro, Functions and more

Extract file name

Accepted Solution Solved
Reply
Occasional Contributor
Posts: 6
Accepted Solution

Extract file name

I have a very simple program that reads in the contents of all the .csv files in a Windows directory. That part of the program works fine.

 

I would like to add the file name to each record.

 

The problem I have is the variable fullfilename contains only 'C:\Users' rather than the full name. I have verified this with PUT statements.

 

In the log, SAS correctly identifies the full path and name and the proper data is imported but the ticker field (to wihich I tried to assign the parsed filename) is blank, as is the fullfilename field.

 

Thanks for your help!

 

Using Windows 10 and SAS 9.4 in Enterprise Guide

 

data ticker_files;
infile 'c:\Users\tparrent\Documents\SandP 500 Stock History\daily\table_*.csv'
    FILENAME=fullfilename
    DELIMITER=','
    FIRSTOBS=1;
put fullfilename;

do until(last);

    input dateint unknown open high low close volume;
    ticker = scan(scan(fullfilename,-1,'_'),1,'.');
    output;
end;


Accepted Solutions
Solution
‎06-26-2017 04:31 PM
Super User
Posts: 19,862

Re: Extract file name

make sure to specify the length as well.

 

length fullFileName sourceName $256.;

View solution in original post


All Replies
Super User
Posts: 19,862

Re: Extract file name

When you use the FILENAME you need to actually store it, I don't see that in your code, but it doesn't look complete either....

This is what you'd add and you should have a variable called sourceFile in your dataset. I don't even think fullFileName would be outputted to your dataset otherwise.

 

sourceFile = fullFileName;
Occasional Contributor
Posts: 6

Re: Extract file name

[ Edited ]

I tried your sugestions and sourceFileName still contains only 'C:\Users'

 

I did post the entire code and it does run and import the data from the files

Solution
‎06-26-2017 04:31 PM
Super User
Posts: 19,862

Re: Extract file name

make sure to specify the length as well.

 

length fullFileName sourceName $256.;
Occasional Contributor
Posts: 6

Re: Extract file name

LENGTH fullfilename $256.; did the trick!

 

Thank you very much Reeza. I now understand something beyond the specific problem - don't get careless with variables!

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 4 replies
  • 229 views
  • 0 likes
  • 2 in conversation