BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
hhchenfx
Rhodochrosite | Level 12

Hi Everyone,

So I want to import both file 201711 and 201710.

I use the macro &month=11.

I want to do something like &year.&month-1 to make it 201710.

Can you help me with it?

(clearly, I can create a new macro variable, %let &month_1=10)

Thank you,

HHC

 

%let year=2017;
%let month=11;
data rate ;
infile "&path\Rate for &year.&month..csv"
dlm=','  dsd truncover firstobs=2;
input ....
1 ACCEPTED SOLUTION

Accepted Solutions
Tom
Super User Tom
Super User

You can use the %EVAL() macro function to do integer arithmetic.

%let year=2017;
%let month=11;
%let previous=%eval(&month-1);

But what do you do when month=01?

Use the INTNX() function instead.  First convert YEAR and MONTH into an actual date value. Then you can calculate the previous month.

%let year=2017;
%let month=11;
%let this_month=%sysfunc(mdy(&month,1,&year));
%let previous_month=%sysfunc(intnx(month,&this_month,-1));

You can then use the YYMMN6. format to convert it into the string you need for your filename.

"&path\Rate for %sysfunc(putn(&previous_month,yymmn6)).csv"

 

View solution in original post

2 REPLIES 2
Tom
Super User Tom
Super User

You can use the %EVAL() macro function to do integer arithmetic.

%let year=2017;
%let month=11;
%let previous=%eval(&month-1);

But what do you do when month=01?

Use the INTNX() function instead.  First convert YEAR and MONTH into an actual date value. Then you can calculate the previous month.

%let year=2017;
%let month=11;
%let this_month=%sysfunc(mdy(&month,1,&year));
%let previous_month=%sysfunc(intnx(month,&this_month,-1));

You can then use the YYMMN6. format to convert it into the string you need for your filename.

"&path\Rate for %sysfunc(putn(&previous_month,yymmn6)).csv"

 

hhchenfx
Rhodochrosite | Level 12

Oh Tom,

You are right, I haven't thought bout Jan 🙂

Thanks a lot.

HC

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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
  • 1149 views
  • 0 likes
  • 2 in conversation