Hello,
I have the following piece of code, where I want the macro variable &ultimo to have a date value at the end. However, after running the code once, the value of &ulitmo is still missing, but after a second run, the value appears. My question is, what am I doing wrong with respect to making the code work doing its first run? Kind regards.
%let year = 2012;
%let month = 06;
%macro ultimodato;
%if %eval(&month) < 9 %then %do;
%let ultimo = 01/0%eval(&month.+1)/&year.;
%end;
%else %if &month = 9 %then %do;
%let ultimo = 01/10/&year.;
%end;
%else %if 9 < &month and &month < 12 %then %do;
%let ultimo = 01/%eval(&month.+1)/&year.;
%end;
%else %if &month = 12 %then %do;
%let ultimo = 01/01/%eval(&year+1);
%end;
%mend ultimodato;
%ultimodato;
data _null_;
call symput('ultimo',put(input("&ultimo",DDMMYY10.),date9.));
run;
%put &ultimo;
Hi,
This is because your 'ultimo' macro-variable isn't declared as global, and it is created within the macro 'ultimodato'. By declaring it as global (%global ultimo;), you will make it available to your call symput.
Kind regards,
Florent
Hi,
This is because your 'ultimo' macro-variable isn't declared as global, and it is created within the macro 'ultimodato'. By declaring it as global (%global ultimo;), you will make it available to your call symput.
Kind regards,
Florent
Thank you. It works.
That's the right answer to your original question. But you should also consider whether or not you want to write a macro for this purpose. The DATA step already has functions that will do the work for you. For example:
data _null_;
call symput('ultimo', put( intnx('month', mdy(&month, 1, &year), +1), date9.));
run;
Good luck.
Astounding, I didn't know you could do that! Thanks.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.