Function AgeSimple(tdBirthDate) local lnAge lnAge = year(date()) - year(m.tdBirthDate) if gomonth(m.tdBirthDate, 12 * m.lnAge) > date() m.lnAge = m.lnAge - 1 endif return m.lnAge endfuncIf you want to know how many years, months and days (which may be important, say for medical applications):
clear tdTarget = DATE() tdBirth = {^1988/2/29} oAge = CalcAge(tdBirth, tdTarget) ? oAge.Years, oAge.Months, oAge.Days tdBirth = {^1988/2/29}+1 oAge = CalcAge(tdBirth, tdTarget) ? oAge.Years, oAge.Months, oAge.Days Procedure CalcAge Lparameters tdBirth, tdTarget Local ldTemp, ldBirth, lnDrop, loAge, lnSelect loAge = CreateObject('empty') AddProperty(m.loAge,'Months',0) DO WHILE GOMONTH(m.tdBirth,loAge.Months+1) < m.tdTarget loAge.Months = loAge.Months + 1 ENDDO AddProperty(m.loAge, 'Days', m.tdTarget - GOMONTH(m.tdBirth,loAge.Months)) AddProperty(m.loAge, 'Years', INT(loAge.Months / 12)) loAge.Months = loAge.Months % 12 Return loAge Endproc