DATA Step, Macro, Functions and more

Macro value in file name

Accepted Solution Solved
Reply
Super Contributor
Posts: 506
Accepted Solution

Macro value in file name

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

Accepted Solutions
Solution
‎12-08-2017 07:44 PM
Super User
Super User
Posts: 8,289

Re: Macro value in file name

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


All Replies
Solution
‎12-08-2017 07:44 PM
Super User
Super User
Posts: 8,289

Re: Macro value in file name

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"

 

Super Contributor
Posts: 506

Re: Macro value in file name

Oh Tom,

You are right, I haven't thought bout Jan Smiley Happy

Thanks a lot.

HC

☑ This topic is solved.

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

Discussion stats
  • 2 replies
  • 154 views
  • 0 likes
  • 2 in conversation