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;
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.);
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.);
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.
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.