SAS Programming

DATA Step, Macro, Functions and more
BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.

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;

1 ACCEPTED SOLUTION

Accepted Solutions
Kurt_Bremser
Super User

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.);

View solution in original post

2 REPLIES 2
Kurt_Bremser
Super User

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.);
s_lassen
Meteorite | Level 14

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.

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 769 views
  • 1 like
  • 3 in conversation