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

Use the :SWITCH script statement to run different script lines based on the value of a variable. The variable represents a condition, and the :SWITCH block contains one or more :CASE statements. The case determines which statements to run when the variable has a particular value. Define cases for each value of the variable for which to process different statements.

Tip: Use :IF... :ELSE... :ENDIF statements to evaluate expressions when you have a single condition.

Syntax

:SWITCH Variable
:CASE Value1
[Statements]
[:CASE Value2
[Statements]
...
]

[:OTHER
[Statements]
...
]

:ENDSWITCH

Parameters

  • :SWITCH
    Defines a block of statements that run in different cases

  • Variable
    Name of the variable to verify to determine which case applies
    Format: script literal, script variable or script function

  • Statements
    (Optional) One or more statements to process when the case applies
    Format: script statement

  • :CASE
    Starts the block of statements to run when the variable has the value defined for the case
    Note: If you are using complex expressions and want to connect multiple :CASE statements with an OR operator, write the :CASE statements in sequence, without using :OTHER statements between them.

  • Value1, Value2
    Conditions or values of the variable that determine which case applies
    Format: script literal, script variable or complex expression

  • :OTHER
    (Optional) Starts a block of statements to run when none of the defined cases applies

    Notes

    • Use the :OTHER statement once after all :CASE statements.
    • :OTHER cannot be used on the line directly following a :CASE line. You must insert a blank line in between.
  • :ENDSWITCH
    Ends the :SWITCH block

Notes:

  • The value for a case can be an arithmetic expression.

    Example

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

  • To use operators (<, >, <>, <=, >=, =) and between to define complex expressions and ranges of values for a case, specify the string "Y" instead of the variable name.

    Example

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

    :CASE &STATUS# between 1300 and 1599
    :CASE &STATUS# between 1700 and 1799
    : PRINT "The task &RUNID# is active."
    :CASE &STATUS# between 1600 and 1699
    : PRINT "The task &RUNID# is in a waiting condition."
    :CASE &STATUS# between 1800 and 1899
    : PRINT "The task &RUNID# has aborted."
    :CASE &STATUS# >= 1900
    : PRINT "The task &RUNID# has successfully ended."
    :ENDSWITCH

Important! You can use the predefined variable &$PLATFORM# with this script statement. If you use this predefined variable in a generic Job object, you must also define the &AGENT# variable in your script. The generic Job object does not have a defined host when you create it, so the script returns an error if you do not specify the host. For more information, see Predefined Variables.

Examples

The following example retrieves the current day of the week as a number. The script uses day of week number to conditionally start a specific Job on Mondays and Fridays only.

: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 "No Processing."
:ENDSWITCH

The following script in a generic Job object defines conditions based on the platform that the Job is running on:

:SWITCH &$PLATFORM#
:CASE "WINDOWS"
! insert these lines in your script to determine if an error occurred
! @set retcode=%errorlevel%
! @if NOT %ERRORLEVEL% == 0 goto :retcode
!

:CASE "UNIX"


:OTHER
:ENDSWITCH

See also: