A couple of words on why your code didn't work.
First, the format of a SAS date value is irrelevant, it could be YYYYMMDD. or DATE9. or any other valid SAS date format.
Your code
age= INT ((01/01/2008 - BENE_BIRTH_DT) / 365.25);
fails because the 01/01/2008 is not a SAS date value. It actually has the value of 01 divided by 01 divided by 2008, which equals 4.98...x10-4, that's how SAS interprets the slash in numeric expressions. That is not a SAS date, and it is not what you want. SAS date values are integers, they are the number of days since 01JAN1960. You might be thinking how would anyone know the number of days between 01JAN1960 and 01JAN2008? That's what the next piece of code takes care of, it translates calendar information such as January 1, 2008 to something SAS understands.
age= INT (('01JAN2008'd - BENE_BIRTH_DT) / 365.25);
Note that in the above line of code, '01JAN2008'd is an actual SAS date, recognized by SAS, and usable by SAS because this is how human dates are translated to SAS dates. 01/01/2008 is not a SAS date and not usable as a SAS date. Also please note that the format of the text string '01JAN2008'd is required, with the date in quotes and a letter d after the second quote — except that lower case letters can be used (and I believe you can tell SAS to recognize other languages so JAN could be something else if you set the right option). But '01/01/2008'd will not be recognized, it must be 'DDMONYYYY'd.
--
Paige Miller