I think if we assume that people who are born on 29th Feb in a leap Year celebrate their birthdays on 28th Feb in a non leap year and on 29th Feb in a Leap year then the following accurately calculates the Age of a Person in SAS 9.2 for all date ranges :

Data _NULL_ ;

BirthDate ='29Feb2008'd;
EndDate='28Feb2009'd;

Age = intck("year",BirthDate,EndDate)-(put(BirthDate,mmddyy4.) gt put(EndDate,mmddyy4.))+(put(BirthDate,mmddyy4.)="0229" and put(EndDate,mmddyy4.)="0228" and put(EndDate+1,mmddyy4.)="0301");

Put BirthDate=date9. EndDate=date9. Age=;

run;

This gives BirthDate=29FEB2008 EndDate=28FEB2009 Age=1 in the SAS Log.

I wonder if the YRDIF function in SAS 9.3 does the same too.