# CONDITION An object that describes a comparison of two operands. Configured by three fields in the script and invoked through [`CHECK`](#check) or one of the control-flow methods ([`BREAK`](#break), [`ONE_BREAK`](#one_break)). ## Fields ### OPERAND1 ``` STRING OPERAND1 ``` The left-hand operand of the comparison. The field holds the operand's textual form, which is parsed on every evaluation. Accepted forms: - a quoted string literal (`"..."` or `'...'`), - a boolean literal (`TRUE`, `FALSE`), - a numeric literal (`5`, `-3.14`), - a variable name (its value is fetched; for variables of type [`EXPRESSION`](index.md), `CONDITION`, or [`COMPLEXCONDITION`](COMPLEXCONDITION.md), the variable is recursively evaluated), - a script fragment — text starting with `[`, `*`, or containing the `^` or `|` operators. ### OPERAND2 ``` STRING OPERAND2 ``` The right-hand operand of the comparison. The interpretation rules are identical to those of `OPERAND1`. ### OPERATOR ``` STRING OPERATOR ``` The comparison operator. Defaults to `EQUAL`. Accepted values: | Value | Meaning | |---|---| | `EQUAL` | equal to | | `NOTEQUAL` | not equal to | | `LESS` | less than | | `GREATER` | greater than | | `LESSEQUAL` | less than or equal | | `GREATEREQUAL` | greater than or equal | ## Methods ### BREAK ``` void BREAK([BOOL emitSignals]) ``` Evaluates the condition. If the result is `TRUE`, aborts the entire current call tree (the same effect as [`@BREAK`](../engine/scripts.md#jump-operators)). If the result is `FALSE`, the method has no effect. **Parameters** - `emitSignals` — (optional) if `TRUE`, also fires [`ONRUNTIMESUCCESS`](#onruntimesuccess) or [`ONRUNTIMEFAILED`](#onruntimefailed) depending on the result. Defaults to `FALSE`. **Examples** ``` COND1^BREAK(TRUE); CONDKONTROLA^BREAK(TRUE); ``` ### CHECK ``` BOOL CHECK([BOOL emitSignals]) ``` Evaluates the condition and returns the comparison result. **Parameters** - `emitSignals` — (optional) if `TRUE`, also fires [`ONRUNTIMESUCCESS`](#onruntimesuccess) or [`ONRUNTIMEFAILED`](#onruntimefailed) depending on the result. Defaults to `FALSE`. **Returns**: [`BOOL`](BOOL.md) — the comparison result. **Examples** ``` CONPR1^CHECK(TRUE); CONPR2^CHECK(TRUE); ``` ### ONE_BREAK ``` void ONE_BREAK([BOOL emitSignals]) ``` Evaluates the condition. If the result is `TRUE`, aborts only the current procedure (the same effect as [`@ONEBREAK`](../engine/scripts.md#jump-operators)). If the result is `FALSE`, the method has no effect. **Parameters** - `emitSignals` — (optional) same as for [`BREAK`](#break). **Examples** ``` COND1^ONE_BREAK(TRUE); CONDREMOVEMENUITEM^ONE_BREAK(TRUE); ``` ## Signals ### ONRUNTIMESUCCESS Fired when the condition evaluated to `TRUE` and `emitSignals` was `TRUE`. ### ONRUNTIMEFAILED Fired when the condition evaluated to `FALSE` and `emitSignals` was `TRUE`.