```Date: Wed, 2 Jul 1997 11:20:18 -0800 Reply-To: Jack Hamilton Sender: "SAS(r) Discussion" From: Jack Hamilton Organization: HealthCare COMPARE Corporation Subject: Age macro (was: Re: merging mothers and babies) Content-Type: text/plain; charset=us-ascii David Yeates wrote: > The age can be calculated using the (well known ?) macro :- > > %macro age(birth, refer); > > int((intck('month',&birth,&refer)-(day(&birth)>day(&refer)))/12); > > %mend; > > where birth and refer are the appropriate dates. > I am afraid I can't remember whom to give credit for this macro but > it has been around for some time now. My notes give credit to Billy Kreuter at the UofW. Here's a related macro for calculating the age as used in Medicare, which is the oldest age a person will have during the month containing the reference date, rather than their age on the reference date. ----- /*DOC STARTDOC Macros mcareage /*DOC The MCAREAGE macro calculates an age in years given a birthdate and a /*DOC reference date as SAS date values. The age returned will be the /*DOC age the person would be on the last day of the month of the /*DOC reference date. /*DOC /*DOC This macro call is used as a function. /*DOC /*DOC EXAMPLE: /*DOC /*DOC data _null_; /*DOC dob = '14FEB23'd; /*DOC from = '12FEB55'd; /*DOC age = %age(dob, from); /*DOC mcareage = %mcareage(dob, from); /*DOC put age= mcareage=; /*DOC /*DOC would print /*DOC /*DOC AGE=31 MCAREAGE=32 /*DOC /*DOC /*DOC Macro from Billy Kreuter, UofW, via SAS-L. /*DOC ENDDOC */ %macro mcareage(birthday, refdate); (int(intck('month', &birthday., intnx('MONTH', &refdate, 1)-1)/12)) %mend; ----- By the way, Netscape wants to wrap input lines much sooner than I want it to. It does this only when the message is sent, so I have to guess how long to make the lines. Does anyone know how to defeat this behavior? There's no LineSize setting in the options menu. -- Jack_Hamilton@HCCompare.com HealthCare COMPARE Corp. West Sacramento, CA ```

Back to: Top of message | Previous page | Main SAS-L page