Tobias Koeper Posted August 10, 2017 #1 Share Posted August 10, 2017 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 More sharing options...
Telcom_Admin Posted August 10, 2017 #2 Share Posted August 10, 2017 Hallo @Tobias Koeper Habe den gleichen Fehler in meinen Script... Einen Anhaltspunkt hat mir @srom gegeben: Schau mal in die CallRouting.vbs des Users wo das CallRouting aktiv ist...dort wurde wo etwas doppelt deklariert Vielleicht hilft dir das weiter? Grüsse Link to comment Share on other sites More sharing options...
Tom Wellige Posted August 11, 2017 #3 Share Posted August 11, 2017 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 More sharing options...
Tobias Koeper Posted August 15, 2017 Author #4 Share Posted August 15, 2017 Vielen Dank für die Hilfe! Ich werde leider erst heute dazu kommen es zu testen. Link to comment Share on other sites More sharing options...
Tobias Koeper Posted August 15, 2017 Author #5 Share Posted August 15, 2017 Nachdem ich jeden Feiertag nach und nach wieder mit in das Skript aufgenommen habe, kann ich diese Stellen als Fehlerursache ausschließen. Link to comment Share on other sites More sharing options...
Tobias Koeper Posted August 16, 2017 Author #6 Share Posted August 16, 2017 Das Problem konnte gelöst werden. Es war ein Syntaxfehler in dem Skript. Link to comment Share on other sites More sharing options...
Most Valued User beychr Posted August 16, 2017 Most Valued User #7 Share Posted August 16, 2017 Kannst Du wenn möglich das korrekte Skript dann hier auch veröffentlichen? Ich bin sicher manch anderer hätte ebenfalls Interesse an dieser Lösung Link to comment Share on other sites More sharing options...
Tobias Koeper Posted August 16, 2017 Author #8 Share Posted August 16, 2017 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 More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.