Pyrite | Level 9

## 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;

1 ACCEPTED SOLUTION

Accepted Solutions
Opal | Level 21

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

4 REPLIES 4
Opal | Level 21

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

Pyrite | Level 9

## Re: macro variables

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

Garnet | Level 18

## 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;

Pyrite | Level 9

## Re: macro variables

right!

i could have  used

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

thanks Shmuel

Discussion stats
• 4 replies
• 883 views
• 4 likes
• 3 in conversation