Date: Mon, 23 Jul 2007 10:23:00 -0500
Reply-To: "Paul A. Thompson" <paul@WUBIOS.WUSTL.EDU>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: "Paul A. Thompson" <paul@WUBIOS.WUSTL.EDU>
Subject: Re: Date Calculation
In-Reply-To: <1185203353.045669.312200@w3g2000hsg.googlegroups.com>
Content-Type: text/plain; charset="us-ascii"
The other problem is that you send in the month as a FORMATTED value, not as
a date value. SAS does interval calculations on INTERNAL DATE values, not
FORMATTED values. Remember, a format is a printing rule.
Paul A. Thompson, Ph.D.
Division of Biostatistics, Washington University School of Medicine
660 S. Euclid, St. Louis, MO 63110-1093
314-747-3793
paul@wubios.wustl.edu
-----Original Message-----
From: SAS(r) Discussion [mailto:SAS-L@LISTSERV.UGA.EDU] On Behalf Of
stavenj@GMAIL.COM
Sent: Monday, July 23, 2007 10:09 AM
To: SAS-L@LISTSERV.UGA.EDU
Subject: Date Calculation
Hello, I'm trying to create macros containing the first date of the
month for all months in between certain dates (in the case below, it
is a calendar year, but this will not be the case every time).
The bold part of the program (macro dates_month)is not working for me;
I'm not sure why. I'm not concerned with the actual values at this
point, I'm just trying to figure out why macros &Date1 - $Date12 are
not being created.
Also, if there is a better way to do this (create macros containing
the first date of the month for all months in between certain dates),
please let me know.
Thanks,
Joe
%macro date_calc;
data _null_;
Start = put(intnx('month',today(),-14),date9.);
call symput('Start',"'"||Start||"'d");
run;
data _null_;
firstday = intnx('month',today(),-2);
End = put((firstday - 1),date9.);
call symput('End',"'"||End||"'d");
run;
%mend date_calc;
%date_calc;
data _null_;
MONTH= INTCK('MONTH',&start,&End+1);
call symput('MONTH',(Month));
run;
%put(Start) = &Start;
%put(End) = &End;
%put(Month) = &Month;
[b]%macro dates_month;
%do I = 1 %to 12;
data _null_;
Date&I = intnx('month',&Start,&I);
call symput("Date&I",Date&I);
run;
%end;
%mend;
%dates_month;
%put(Date1) = &Date1;[/b]
|