LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (July 1997, week 1)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Wed, 2 Jul 1997 11:20:18 -0800
Reply-To:     Jack Hamilton <Jack_Hamilton@HCCOMPARE.COM>
Sender:       "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:         Jack Hamilton <Jack_Hamilton@HCCOMPARE.COM>
Organization: HealthCare COMPARE Corporation
Subject:      Age macro (was: Re: merging mothers and babies)
Content-Type: text/plain; charset=us-ascii

David Yeates <david.yeates@HEALTH-CARE-EPIDEMIOLOGY.OXFORD.AC.UK> 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