home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Programming Tool Box
/
SIMS_2.iso
/
vb_code1
/
holidays
/
holiday.bas
next >
Wrap
BASIC Source File
|
1993-10-29
|
19KB
|
408 lines
Function HOLIDAY (YR As Integer, HDAY As Integer) As Variant
If YR < 0 Or YR > 9999 Or HDAY < 1 Or HDAY > 10 Then 'CHECK FOR INVALID PARAMETERS
HOLIDAY = 0 'AND RETURN AN ERROR IF DETECTED
Exit Function
End If
Dim TEMP As Long
Select Case HDAY
Case Is = 1 'MARTIN LUTHER KING DAY
TEMP = DateSerial(YR, 1, 1)
For X = 1 To 7
If Weekday(TEMP) = 2 Then 'LOOP UNTIL MONDAY IS FOUND
HOLIDAY = DateSerial(YR, 1, X + 14) 'JUMP TO 3RD MONDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 2 'PRESIDENTS DAY
TEMP = DateSerial(YR, 2, 1)
For X = 1 To 7
If Weekday(TEMP) = 2 Then 'LOOP UNTIL MONDAY IS FOUND
HOLIDAY = DateSerial(YR, 2, X + 14) 'JUMP TO 3RD MONDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 3 'EASTER
TEMP = (YR Mod 19) + 1
Select Case TEMP
Case Is = 1
TEMP = DateSerial(YR, 4, 14)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 2
TEMP = DateSerial(YR, 4, 3)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 3
TEMP = DateSerial(YR, 3, 23)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 4
TEMP = DateSerial(YR, 4, 11)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 5
TEMP = DateSerial(YR, 3, 31)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 6
TEMP = DateSerial(YR, 4, 18)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 7
TEMP = DateSerial(YR, 4, 8)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 8
TEMP = DateSerial(YR, 3, 28)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 9
TEMP = DateSerial(YR, 4, 16)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 10
TEMP = DateSerial(YR, 4, 5)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 11
TEMP = DateSerial(YR, 3, 25)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 12
TEMP = DateSerial(YR, 4, 13)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 13
TEMP = DateSerial(YR, 4, 2)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 14
TEMP = DateSerial(YR, 3, 22)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 15
TEMP = DateSerial(YR, 4, 10)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 16
TEMP = DateSerial(YR, 3, 30)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 17
TEMP = DateSerial(YR, 4, 17)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 18
TEMP = DateSerial(YR, 4, 7)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
Case Is = 19
TEMP = DateSerial(YR, 3, 27)
If Weekday(TEMP) = 1 Then
TEMP = TEMP + 7
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, Month(TEMP), Day(TEMP))
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End If
End Select
Case Is = 4 'MOTHERS DAY
TEMP = DateSerial(YR, 5, 1)
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, 5, X + 7) 'JUMP TO 2RD SUNDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 5 'ARMERD FORCES DAY
TEMP = DateSerial(YR, 5, 1)
For X = 1 To 7
If Weekday(TEMP) = 7 Then 'LOOP UNTIL SATURDAY IS FOUND
HOLIDAY = DateSerial(YR, 5, X + 14) 'JUMP TO 3RD SATURDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 6 'MEMORIAL DAY
TEMP = DateSerial(YR, 5, 31)
For X = 1 To 7
If Weekday(TEMP) = 2 Then 'LOOP UNTIL MONDAY IS FOUND
HOLIDAY = DateSerial(YR, 5, TEMP)
Exit Function
Else
TEMP = TEMP - 1 'DECREMENT UNTIL LAST MONDAY IN MAY IS FOUND
End If
Next X
Case Is = 7 'FATHERS DAY
TEMP = DateSerial(YR, 6, 1)
For X = 1 To 7
If Weekday(TEMP) = 1 Then 'LOOP UNTIL SUNDAY IS FOUND
HOLIDAY = DateSerial(YR, 6, X + 14) 'JUMP TO 3RD SUNDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 8 'LABOR DAY
TEMP = DateSerial(YR, 9, 1)
For X = 1 To 7
If Weekday(TEMP) = 2 Then 'LOOP UNTIL MONDAY IS FOUND
HOLIDAY = DateSerial(YR, 9, X)
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 9 'COLUMBUS DAY
TEMP = DateSerial(YR, 10, 1)
For X = 1 To 7
If Weekday(TEMP) = 2 Then 'LOOP UNTIL MONDAY IS FOUND
HOLIDAY = DateSerial(YR, 10, X + 7) 'JUMP TO 2ND MONDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
Case Is = 10 'THANKSGIVING DAY
TEMP = DateSerial(YR, 11, 1)
For X = 1 To 7
If Weekday(TEMP) = 5 Then 'LOOP UNTIL THURSDAY IS FOUND
HOLIDAY = DateSerial(YR, 11, X + 21) 'JUMP TO 4TH THURSDAY
Exit Function
Else
TEMP = TEMP + 1
End If
Next X
End Select
End Function