## macro variables

Solved
Super Contributor
Posts: 464

# macro variables

Hi,

I am trying to get the last day of the current month and 1st day of October and having a problem with "end_dt" :

%let st_dt = %sysfunc(intnx(month,&today,-3));

%let end_dt = %sysfunc(intnx(month,&today,1)-1);

%put st_dt is &st_dt;

%put end_dt is &end_dt;

Accepted Solutions
Solution
‎01-05-2017 12:00 PM
Super User
Posts: 6,754

## Re: macro variables

The problem lies with yoIur END_DT computations.  %SYSFUNC should be applied to INTNX, but cannot be applied to the math that attempts to subtract one:

%let end_dt = %sysfunc(intnx(month,&today,1)-1);

%let end_dt = %eval(%sysfunc(intnx(month,&today,1))-1);

All Replies
Solution
‎01-05-2017 12:00 PM
Super User
Posts: 6,754

## Re: macro variables

The problem lies with yoIur END_DT computations.  %SYSFUNC should be applied to INTNX, but cannot be applied to the math that attempts to subtract one:

%let end_dt = %sysfunc(intnx(month,&today,1)-1);

%let end_dt = %eval(%sysfunc(intnx(month,&today,1))-1);

Super Contributor
Posts: 464

## Re: macro variables

i knew  it had something to do with it but just did not know  how to approach that problem. thanks Astounding!!

Posts: 1,837

## Re: macro variables

Function INTNX acceps alse an alignment argument:

%let st_dt = %sysfunc(intnx(month,&today,-3,B)); /* B = beginning, i.e day 01 */

%let end_dt = %sysfunc(intnx(month,&today,1,E)); /* E = Ending - i.e. last day of the month */

%put st_dt is &st_dt;

%put end_dt is &end_dt;

Super Contributor
Posts: 464

## Re: macro variables

right!

i could have  used

%let end_dt1 = %sysfunc(intnx(month,&today,0,E));

thanks Shmuel

☑ This topic is solved.