:SWITCH ... :CASE ... :OTHER ... :ENDSWITCH

Verwenden Sie die Script-Anweisung :SWITCH , um verschiedene Script-Zeilen basierend auf dem Wert einer Variablen auszuführen. Die Variable repräsentiert eine Bedingung, und der :SWITCH-Block enthält eine oder mehrere :CASE-Anweisungen. Der Case bestimmt, welche Anweisungen ausgeführt werden sollen, wenn die Variable einen bestimmten Wert hat. Definieren Sie für jeden Wert der Variablen Cases, für die verschiedene Anweisungen verarbeitet werden sollen.

Tipp: Verwenden Sie :IF... :ELSE... :ENDIF-Anweisungen, um Ausdrücke auszuwerten, wenn Sie eine einzige Bedingung haben.

Syntax

: SWITCH Variable
:CASE Wert1
[Anweisungen]
[:CASE Wert2
[Anweisungen]
...
]

[ : OTHER
[Anweisungen]
...
]

: ENDSWITCH

Parameter

  • :SWITCH
    Definiert einen Block mit Anweisungen, die in verschiedenen Fällen ausgeführt werden

  • Variable
    Name der Variablen, die überprüft werden soll, um zu ermitteln, welcher Fall zutrifft
    Format:Script-Literal, Script-Variable oder Script-Funktion

  • Anweisungen
    (Optional) Eine oder mehrere Anweisungen, die verarbeitet werden sollen, wenn der Fall zutrifft
    Format: Script-Anweisung

  • :CASE
    Startet den Block mit den Anweisungen, die ausgeführt werden sollen, wenn die Variable den für den Fall definierten Wert hat
    Hinweise:

    • Der Wert für :CASE kann ein arithmetischer Ausdruck sein.

      Beispiel

      :SWITCH &NUM#
      :CASE 3*(5-2)
      : PRINT "&NUM# = 9"
      :ENDSWITCH

    • Wenn Sie komplexe Ausdrücke verwenden und mehrere :CASE-Anweisungen mit einem OR-Operator verbinden möchten, schreiben Sie die :CASE-Anweisungen in der richtigen Reihenfolge, ohne :OTHER-Anweisungen dazwischen.

    • Um komplexe Ausdrücke und Wertebereiche zu definieren, können Sie bei den :CASE-Zeilen das Konstrukt "between Wert1 and Wert2" verwenden, sowie Operatoren (<, >, <>, <=, >=, =). Geben Sie hierfür anstelle des Variablennamens den String "Y" an.

  • Wert1, Wert2
    Bedingungen oder Werte der Variablen, die bestimmen, welcher Fall zutrifft
    Format: Script-Literal, Script-Variable oder komplexer Ausdruck

  • :OTHER
    (Optional) Startet einen Block mit Anweisungen, die ausgeführt werden, wenn keiner der definierten Fälle zutrifft

    Hinweise

    • Verwenden Sie die Anweisung :OTHER einmal nach allen :CASE-Anweisungen.
    • :OTHER kann nicht direkt in der Zeile nach einer :CASE-Zeile verwendet werden. Sie müssen zwischendurch eine leere Zeile einfügen.
  • :ENDSWITCH
    Beendet den :SWITCH-Block

Hinweise:

  • Um komplexe Ausdrücke und Wertebereiche zu definieren, können Sie in den :CASE-Zeilen die Kombination "between Wert1 and Wert2" verwenden, sowie auch Operatoren (<, >, <>, <=, >=, =). Geben Sie hierfür anstelle des Variablennamens den String "Y" an.

    Beispiel

    :SET &STATUS# = GET_STATISTIC_DETAIL(&RUNID#,STATUS)
    :SWITCH "Y"

    :CASE &STATUS# between 1300 and 1599
    :CASE &STATUS# between 1700 and 1799
    : PRINT "Die Aufgabe &RUNID# ist aktiv."
    :CASE &STATUS# between 1600 and 1699
    : PRINT "Die Aufgabe &RUNID# befindet sich in einem Wartezustand."
    :CASE &STATUS# between 1800 and 1899
    : PRINT "Die Aufgabe &RUNID# wurde abgebrochen."
    :CASE &STATUS# >= 1900
    : PRINT "Die Aufgabe &RUNID# wurde erfolgreich beendet."
    :ENDSWITCH

Wichtig! Mit dieser Script-Anweisung können Sie die vordefinierte Variable &$PLATFORM# verwenden. Wenn Sie diese vordefinierte Variable in einem generischen Job-Objekt verwenden, müssen Sie auch die Variable &AGENT# in Ihrem Script definieren. Das generische Job-Objekt hat beim Erstellen keinen definierten Host, sodass das Script einen Fehler zurückgibt, wenn Sie den Host nicht angeben. Weitere Informationen finden Sie unter Vordefinierte Variablen.

Beispiele

Folgendes Beispiel ermittelt den aktuellen Wochentag als Zahl. Das Script verwendet die Nummer des Wochentages, um einen bestimmten Job nur montags und freitags zu starten.

:SET &DATE# = SYS_DATE_PHYSICAL("DD.MM. YYYY" )
: SET &WEEKDAY#WEEKDAY_NR("DD.MM.YYYY:&DATE#")

:SWITCH &WEEKDAY#

:CASE 1
SET &ACT#ACTIVATE_UC_OBJECT(JOBS.MONDAY, WAIT)

:CASE 5
SET &ACT#ACTIVATE_UC_OBJECT(JOBS.FRIDAY, WAIT)

:OTHER
: PRINT "Keine Verarbeitung."
:ENDSWITCH

Das folgende Script in einem generischen Auftragsobjekt definiert Bedingungen basierend auf der Plattform, auf der der Auftrag ausgeführt wird:

: SWITCH &$PLATFORM#
:CASE "WINDOWS"
! fügen Sie diese Zeilen in Ihr Script ein, um festzustellen, ob ein Fehler aufgetreten ist
! @set retcode=%errorlevel%
! @if NOT %ERRORLEVEL% == 0 goto :retcode
!

:CASE "UNIX"


: OTHER
: ENDSWITCH

Siehe auch: