PARM D0_DATE # DAYS.XEQ - RETURNS NUMBER OF DAYS SINCE DEC 31, 1899 # D0_DATE MUST BE A DATE ON OR AFTER 1900/01/01 IN YYYYMMDD FORM. # TIM ERICSON 07/14/1998 # FIX LEAP YEAR ERROR 09/16/1998 # EXTRACT THE YEAR, MONTH, AND DAY FROM THE INPUT DATE SETVAR D0_YEAR, STR ( "!D0_DATE", 1, 4 ) SETVAR D0_MONTH, STR ( "!D0_DATE", 5, 2 ) SETVAR D0_DAYS, STR ( "!D0_DATE", 7, 2 ) # MAKE SURE THE YEAR, MONTH, AND DAY ARE NUMERIC SETVAR D0_YEAR, !D0_YEAR SETVAR D0_MONTH, !D0_MONTH SETVAR D0_DAYS, !D0_DAYS # DO *SOME* ERROR CHECKING IF D0_YEAR < 1900 & OR D0_MONTH > 12 & OR D0_MONTH < 1 & OR D0_DAYS > 31 & OR D0_DAYS < 1 ECHO ECHO ERROR! !D0_DATE is an invalid date! ECHO RETURN ENDIF # CALCULATE THE TOTAL DAYS BEFORE THE CURRENT YEAR # IF IT'S *AFTER* FEBRUARY, OR THIS IS *NOT* A LEAP YEAR - # NO ADJUSTMENT. IF THIS *IS* A LEAP YEAR, ADJUST. # REMEMBER - THE CI DOES INTEGER MATH! (FRACTIONS ARE # DROPPED!) IF D0_MONTH > 2 & OR D0_YEAR MOD 4 <> 0 & OR ( D0_YEAR MOD 100 = 0 AND D0_YEAR MOD 400 <> 0 ) SETVAR D0_YEAR_DAYS, ( ( !D0_YEAR - 1900 ) * 1461 ) / 4 ELSE SETVAR D0_YEAR_DAYS, ( ( ( !D0_YEAR - 1900 ) * 1461 ) / 4 ) - 1 ENDIF # CALCULATE THE TOTAL DAYS BEFORE THE CURRENT MONTH SETVAR D0_MONTH_DAYS, 0 WHILE D0_MONTH > 1 DO SETVAR D0_MONTH, D0_MONTH - 1 SETVAR D0_MONTH_DAYS, D0_MONTH_DAYS + & ![ STR ( "312831303130313130313031", ( 2 * D0_MONTH ) - 1, 2 ) ] ENDWHILE # ADD IT ALL UP INTO THE RETURN VARIABLE SETVAR RETURN_DAYS, D0_YEAR_DAYS + D0_MONTH_DAYS + D0_DAYS DELETEVAR D0_@