@ECHO OFF *SETLOCAL :: Age.BTM Calculate age in years, months, days :: Author: Michael Bednarek (mb AT mbednarek.com) :: Input: d1 m1 y1 d2 m2 y2 :: Output: Age in yyyy mm dd :: Source: http://stackoverflow.com/questions/453208/how-can-i-calculate-the-age-of-a-person-in-year-month-days :: (replaced FLOOR() with INT() to allow for 4DOS) :: Needs JULIAN.BTM as a workaround to compute something similar to the Unix "epoch" FUNCTION tm=`%@EXEC[@CALL JULIAN.BTM %1 %2 %3] %JULIAN` SET d1=%1 SET m1=%2 SET y1=%3 SET d2=%4 SET m2=%5 SET y2=%6 SET t1=%@EVAL[%y1 * 12 + %m1 - 1] SET t2=%@EVAL[%y2 * 12 + %m2 - 1] SET dm=%@EVAL[%t2 - %t1] IFF %d2 GE %d1 THEN SET r=%@INT[%@EVAL[%dm / 12]] years, %@EVAL[%dm %% 12] months, %@EVAL[%d2 - %d1] days ELSE SET dm=%@EVAL[%dm - 1] SET t2=%@EVAL[%t2 - 1] SET r=%@INT[%@EVAL[%dm / 12]] years, %@EVAL[%dm %% 12] months, %@EVAL[%@tm[%d2 %m2 %y2] - %@tm[%d1 %@EVAL[%t2 %% 12 + 1] %@INT[%@EVAL[%t2 / 12]]]] days ENDIFF ECHO %r UNSET d1 m1 y1 d2 m2 y2 r