Jump to content

Feiertagsabfrage USA


Tobias Koeper

Recommended Posts

Hallo zusammen,

 

ich baue momentan ein Call Routing, welches unter anderen Auswerten soll, ob der aktuelle Tag ein Feiertag ist. Das Skript dafür habe ich bereits für deutsche Feiertage. Dieses Skript läuft ohne Probleme.

Das gleiche Skript mit amerikanischen Feiertagen bricht jedoch sofort mit folgender Fehlermeldung im Eventlog ab:

 

Ein Skript wurde wegen eines Skript-Fehler beendet oder nicht ausgeführt.
 Skript: callrouting.vbs (User, XYZ)
Fehler:  Kompilierungsfehler in Microsoft VBScript, Anweisungsende erwartet, 800a0401
 

Der Ruf wird also nicht aufgebaut, sondern direkt abgewiesen.

 

Das betroffene Skript ist wie folgt aufgebaut:

 

Dim Jahr, a, b, c, d, e, f
Dim Neujahr, IndependenceDay, VeteransDay, Christmas, MartinLutherKingDay, PresidentsDay, MemorialDay, LaborDay, ColumbusDay, Thanksgiving
Dim Feiertage(10) As String
Dim Found

    Jahr = Year(Now)
   
        Neujahr = DateSerial(Jahr, 1, 1)
        IndependenceDay = DateSerial(Jahr, 7, 4)
        VeteransDay = DateSerial(Jahr, 11, 11)
        Christmas = DateSerial(Jahr, 12, 25)
    
 
    MartinLutherKingDay = DateSerial(Jahr, 1, (8 - Weekday(DateSerial(Jahr, 1, 1), (2 + 1) Mod 8)) + ((3 - 1) * 7))
    PresidentsDay = DateSerial(Jahr, 2, (8 - Weekday(DateSerial(Jahr, 2, 1), (2 + 1) Mod 8)) + ((3 - 1) * 7))   
    MemorialDay = DateSerial(Jahr, 5, (8 - Weekday(DateSerial(Jahr, 5, 1), (2 + 1) Mod 8)) + ((5 - 1) * 7))   
    LaborDay = DateSerial(Jahr, 9, (8 - Weekday(DateSerial(Jahr, 9, 1), (2 + 1) Mod 8)) + ((1 - 1) * 7))
    ColumbusDay = DateSerial(Jahr, 10, (8 - Weekday(DateSerial(Jahr, 10, 1), (2 + 1) Mod 8)) + ((2 - 1) * 7))
    Thanksgiving = DateSerial(Jahr, 11, (8 - Weekday(DateSerial(Jahr, 11, 1), (5 + 1) Mod 8)) + ((4 - 1) * 7))
   
    
        Feiertage(0) = Neujahr
        Feiertage(1) = MartinLutherKingDay
        Feiertage(2) = PresidentsDay
        Feiertage(3) = MemorialDay
        Feiertage(4) = IndependenceDay
        Feiertage(5) = LaborDay
        Feiertage(6) = ColumbusDay
        Feiertage(7) = VeteransDay
        Feiertage(8) = Thanksgiving
        Feiertage(9) = Christmas
      


    Found = 0

    For a = 0 To 10
            If Feiertage(a) = Left(Now, 10) Then
                Found = 1
            End If
        Next


    If Found = 1 Then UseExit = 1 Else UseExit = 2

 

 

 

Das deutsche Skript sieht folgendermaßen aus (läuft wie gesagt ohne Probleme):

 

Dim Jahr,a, b, c, d, e, f
Dim Ostersonntag, Rosenmontag, Karfreitag, Ostersamstag, Ostermontag, ChrHimmelfahrt, Pfingstsonntag, Pfingstmontag, Fronleichnam
Dim Feiertage(16)
Dim Found

    Jahr = Year(Now)


a = Jahr Mod 19

b= Jahr \ 100
c = (8 * b + 13) \ 25 - 2
d = b - (Jahr \ 400) - 2
e = (19 * (Jahr Mod 19) + ((15 - c + d) Mod 30)) Mod 30
    
    If e = 28 Then
            If a > 10 Then
                e = 27
            End If
        ElseIf e = 29 Then
            e = 28
        End If
f = (d + 6 * e + 2 * (Jahr Mod 4) + 4 * (Jahr Mod 7) + 6) Mod 7

        Ostersonntag = DateSerial(Jahr, 3, e + f + 22)
        Rosenmontag = DateSerial(Jahr, 3, e + f + 22 - 48)
        Ostersamstag = DateSerial(Jahr, 3, e + f + 22 - 1)
        Karfreitag = DateSerial(Jahr, 3, e + f + 22 - 2)
        Ostermontag = DateSerial(Jahr, 3, e + f + 22 + 1)
        ChrHimmelfahrt = DateSerial(Jahr, 3, e + f + 22 + 39)
        Pfingstsonntag = DateSerial(Jahr, 3, e + f + 22 + 49)
        Pfingstmontag = DateSerial(Jahr, 3, e + f + 22 + 50)
        Fronleichnam = DateSerial(Jahr, 3, e + f + 22 + 60)
      


        Feiertage(0) = "01.01." & Jahr
        Feiertage(1) = Rosenmontag
        Feiertage(2) = Karfreitag
        Feiertage(3) = Ostersamstag
        Feiertage(4) = Ostersonntag
        Feiertage(5) = Ostermontag
        Feiertage(6) = "01.05." & Jahr
        Feiertage(7) = ChrHimmelfahrt
        Feiertage(8) = Pfingstsonntag
        Feiertage(9) = Pfingstmontag
        Feiertage(10) = Fronleichnam
        Feiertage(11) = "03.10." & Jahr
        Feiertage(12) = "01.11." & Jahr
        Feiertage(13) = "24.12." & Jahr
        Feiertage(14) = "25.12." & Jahr
        Feiertage(15) = "26.12." & Jahr
        Feiertage(16) = "31.12." & Jahr

    Found = 0

    

    For a = 0 to 16
            If Feiertage(a) = Left(Now, 10) Then
                Found = 1
            End If
        Next


    If Found = 1 then UseExit = 1 Else UseExit = 2

 

 

Kann mir jemand sagen wo hier der Fehler liegt?

 

Vielen Dank!

 

Link to comment
Share on other sites


Um auszuschliessen, dass bei der Berechnung der Tage MartinLutherKingDay bis Thanksgiving nicht evtl. irgendwo eine Klammer fehlt, würde ich die alle auskommentieren, und dann schrittweise wieder mit hinein nehmen ins Skript und gucken, ob und wenn ja ab wann der Fehler wieder auftritt.

 

 

Link to comment
Share on other sites


Na klar, das korrekte Skript sieht wie folgt aus:

 

Dim Jahr, a
Dim Neujahr, IndependenceDay, VeteransDay, Christmas, MartinLutherKingDay, PresidentsDay, MemorialDay, LaborDay, ColumbusDay, Thanksgiving
Dim Feiertage(9)
Dim Found

Jahr = Year(Now)
   
Neujahr = DateSerial(Jahr, 1, 1)
IndependenceDay = DateSerial(Jahr, 7, 4)
VeteransDay = DateSerial(Jahr, 11, 11)
Christmas = DateSerial(Jahr, 12, 25)

    
 
    MartinLutherKingDay = DateSerial(Jahr, 1, (8 - Weekday(DateSerial(Jahr, 1, 1), (2 + 1) Mod 8)) + ((3 - 1) * 7))
    PresidentsDay = DateSerial(Jahr, 2, (8 - Weekday(DateSerial(Jahr, 2, 1), (2 + 1) Mod 8)) + ((3 - 1) * 7))   
    MemorialDay = DateSerial(Jahr, 5, (8 - Weekday(DateSerial(Jahr, 5, 1), (2 + 1) Mod 8)) + ((5 - 1) * 7))   
    LaborDay = DateSerial(Jahr, 9, (8 - Weekday(DateSerial(Jahr, 9, 1), (2 + 1) Mod 8)) + ((1 - 1) * 7))
    ColumbusDay = DateSerial(Jahr, 10, (8 - Weekday(DateSerial(Jahr, 10, 1), (2 + 1) Mod 8)) + ((2 - 1) * 7))
    Thanksgiving = DateSerial(Jahr, 11, (8 - Weekday(DateSerial(Jahr, 11, 1), (5 + 1) Mod 8)) + ((4 - 1) * 7))
    
    
        Feiertage(0) = Neujahr
        Feiertage(1) = MartinLutherKingDay
        Feiertage(2) = PresidentsDay
        Feiertage(3) = MemorialDay
        Feiertage(4) = IndependenceDay
        Feiertage(5) = LaborDay
        Feiertage(6) = ColumbusDay
        Feiertage(7) = VeteransDay
        Feiertage(8) = Thanksgiving
        Feiertage(9) = Christmas
       


    Found = 0

    For a = 0 to 9
            If Feiertage(a) = Date Then
                Found = 1
            End If
        Next


    If Found = 1 Then
    UseExit = 1
    Else
    UseExit = 2
    End If

 

Link to comment
Share on other sites


Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and have taken note of our Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.