FOR iMonth = 1 TO 12 *--- iMonth = MONTH( DATE() ) iBusDay12 = FindBusinessDay( 12, iMonth ) ? TTOD( DATETIME( YEAR( DATE( )), iMonth, iBusDay12 )) NEXT iMonth RETURN .T. **************************************************** FUNCTION FindBusinessDay( iTargetDay, iTargetMonth ) **************************************************** LOCAL iBusinessDays, iCurrentYear, iDay LOCAL ARRAY aHolidays[ 7 ] #DEFINE FRIDAY 6 #DEFINE NEW_YEAR 1 #DEFINE EASTER_FRIDAY 2 #DEFINE EASTER_MONDAY 3 #DEFINE INDEPENDANCE_DAY 4 #DEFINE THANKS_GIVING 5 #DEFINE CHRISTMAS_DAY 6 #DEFINE BOXING_DAY 7 iCurrentYear = YEAR( DATE()) aHolidays[ NEW_YEAR ] = TTOD( DATETIME( iCurrentYear, 1, 1 )) aHolidays[ EASTER_FRIDAY ] = fEaster( iCurrentYear ) - 2 aHolidays[ EASTER_MONDAY ] = fEaster( iCurrentYear ) + 1 aHolidays[ INDEPENDANCE_DAY ] = TTOD( DATETIME( iCurrentYear, 7, 4 )) aHolidays[ THANKS_GIVING ] = TTOD( DATETIME( iCurrentYear, 10, 23 )) aHolidays[ CHRISTMAS_DAY ] = TTOD( DATETIME( iCurrentYear, 12, 25 )) aHolidays[ BOXING_DAY ] = TTOD( DATETIME( iCurrentYear, 12, 26 )) *- If any holidays fall on a weekend then they will need to be fixed. DO WHILE INLIST( CDOW( aHolidays[ NEW_YEAR ] ), "Saturday", "Sunday" ) aHolidays[ NEW_YEAR ] = aHolidays[ NEW_YEAR ] + 1 ENDDO DO WHILE INLIST( CDOW( aHolidays[ INDEPENDANCE_DAY ] ), "Saturday", "Sunday" ) aHolidays[ INDEPENDANCE_DAY ] = aHolidays[ INDEPENDANCE_DAY ] + 1 ENDDO DO WHILE INLIST( CDOW( aHolidays[ THANKS_GIVING ] ), "Saturday", "Sunday" ) aHolidays[ THANKS_GIVING ] = aHolidays[ THANKS_GIVING ] + 1 ENDDO DO WHILE INLIST( CDOW( aHolidays[ CHRISTMAS_DAY ] ), "Saturday", "Sunday" ) aHolidays[ CHRISTMAS_DAY ] = aHolidays[ CHRISTMAS_DAY ] + 1 ENDDO IF DOW( aHolidays[ CHRISTMAS_DAY ] )