oAge = createobject('Age') ldBirth = {^1961/1/19} ldTarget = date() && How old is he today. oAge.CalcAge(ldBirth, ldTarget) ? oAge.Years, oAge.Months, oAge.Days Define Class age As Relation Years=0 Months=0 Days=0 Procedure CalcAge Lparameters tdBirth, tdTarget Local ldTemp, ldBirth, lnDrop If tdBirth > tdTarget ldTemp = tdTarget tdTarget = tdBirth tdBirth = ldTemp ENDIF ldBirth = Date(Year(tdTarget),Month(tdBirth),Day(tdBirth)) lnDrop = 0 If Empty(ldBirth) && leap case ldBirth = Date(Year(tdTarget),3,1) lnDrop = IIF(MONTH(tdTarget)<=2,0,1) ENDIF With This .Years = Year(tdTarget) - Year(tdBirth) - (Iif(ldBirth > tdTarget,1,0)) .Months = (Month(tdTarget) - Month(tdBirth) + 12 - ; (Iif(Day(tdBirth)>Day(tdTarget),1,0)))%12 .Days = tdTarget - Gomonth(tdBirth,.Years*12+.Months) - lnDrop Endwith Endproc EnddefineCetin