Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- SAS Programming
- /
- SAS Procedures
- /
- macro variables

- RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-05-2017 11:33 AM

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" :

ERROR: Expected close parenthesis after macro function invocation not found.

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

Anyone please?

Accepted Solutions

Solution

01-05-2017
12:00 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-05-2017 11:55 AM

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

Instead, try:

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

All Replies

Solution

01-05-2017
12:00 PM

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-05-2017 11:55 AM

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

Instead, try:

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

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to Astounding

01-05-2017 12:00 PM

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

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

01-05-2017 11:57 AM

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;

- Mark as New
- Bookmark
- Subscribe
- RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

Posted in reply to Shmuel

01-05-2017 12:09 PM

right!

i could have used

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

thanks Shmuel