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

I have a function that selects a file from this month, how to change it so that it always selects from the previous one. for example now select file from september

%let thismonth=%sysfunc(putn(%sysfunc(today()),yymmn6.));
1 ACCEPTED SOLUTION

Accepted Solutions
PaigeMiller
Diamond | Level 26

Instead of providing you with a command that uses %SYSFUNC() three times nested, I will provide what I feel is a simpler method.

 

data _null_;
    call symputx('lastmonth',put(intnx('month',today(),-1),yymmn6.);
run;
--
Paige Miller

View solution in original post

4 REPLIES 4
PaigeMiller
Diamond | Level 26

Instead of providing you with a command that uses %SYSFUNC() three times nested, I will provide what I feel is a simpler method.

 

data _null_;
    call symputx('lastmonth',put(intnx('month',today(),-1),yymmn6.);
run;
--
Paige Miller
Gieorgie
Quartz | Level 8
Thanks ! its working ! so just need put 'lastmonth' to select file_$lastmonth ?
PaigeMiller
Diamond | Level 26

@Gieorgie wrote:
Thanks ! its working ! so just need put 'lastmonth' to select file_$lastmonth ?

&lastmonth

--
Paige Miller
Kurt_Bremser
Super User

Just use INTNX in %SYSFUNC:

%let thismonth=%sysfunc(intnx(month,%sysfunc(today()),-1),yymmn6.);

Note that %SYSFUNC on its own enables the use of a format, so you do not need PUTN.

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
  • 4 replies
  • 1125 views
  • 3 likes
  • 3 in conversation