Calculating Nth Occurrence for Day Of Week in the Month

topic: 

$SAMPLECODE$

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

FUNCTION NthDowOfMonth(tnYear, tnMonth, tnOccurrence, tcDow)
* Parameters
*   tnYear, tnMonth - Year and Month
*   tnOccurrence - Day of week occurrence (1-5)
*   tcDow - Day of week name (at least 3 first characters) 

LOCAL lnDOW, ldDate, lnDowPos
lnDowPos = AT(UPPER(PADR(tcDow,3)), "SAT SUN MON TUE WED THU FRI")
IF lnDowPos = 0
	ldDate = {}
ELSE
	TRY 
		lnDOW  = DOW(DATE(tnYear, tnMonth, 01), INT(lnDowPos/4) + 1)
		ldDate = DATE(tnYear, tnMonth, 7 - lnDOW + 1 + (tnOccurrence -1)*7)
	CATCH
		ldDate = {}
	ENDTRY
ENDIF	
RETURN ldDate

Comments