- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
data _null_;
informat lastDayofTheLastMonth yymmddn8.;
lastDayofTheLastMonth=intnx('month', today() , -1, 'E');
put lastDayofTheLastMonth;
call symput('lastDayofTheLastMonth1',lastDayofTheLastMonth);
run;
%put &lastDayofTheLastMonth1;
data have;
INFILE 'Path\ScannedFiles_&lastDayofTheLastMonth1..txt' delimiter=',' dsd;
input var1 var2 var3;
run;
I need to replace lastDayofTheLastMonth1 as yyyymmdd(e.g 20230331) in infile statement, when I am running above code, it's not resolving, kindly suggest.
INFILE 'Path\ScannedFiles_20230331.txt' delimiter=',' dsd;
Accepted Solutions
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
An informat only influences what happens in an INPUT statement, it does not affect the value stored in a variable.
Your task can be done in a single %LET:
%let lastdayofthelastmonth = %sysfunc(intnx(month,%sysfunc(today()),-1,e),yymmddn8.);
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
An informat only influences what happens in an INPUT statement, it does not affect the value stored in a variable.
Your task can be done in a single %LET:
%let lastdayofthelastmonth = %sysfunc(intnx(month,%sysfunc(today()),-1,e),yymmddn8.);
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
Apart from what @Kurt_Bremser wrote, your code as shown will not work anyway. When you have your macro variable right, the line
INFILE 'Path\ScannedFiles_&lastDayofTheLastMonth1..txt' delimiter=',' dsd;
should be changed to
INFILE "Path\ScannedFiles_&lastDayofTheLastMonth1..txt" delimiter=',' dsd;
as macro variables inside single quote are not resolved.