> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arc.cdata.com/llms.txt
> Use this file to discover all available pages before exploring further.

# arc:check

> Checks for the presence of an attribute or evaluates a boolean expression, executing the body block only when the condition is satisfied.

export const siteNameShort = "Arc";

Use the `arc:check` keyword with or without a **value** parameter. Without a value parameter, it ensures that an attribute is present in an item and that it is not a null string before the body of `arc:check` is executed.

If you specify a value parameter, the `arc:check` body executes only if the expression evaluates to true. Other values are considered false. The evaluation is case-insensitive.

Like other simple conditionals in {siteNameShort}Script, `arc:check` can be paired with an [arc:else](./op-arc-else) keyword.

<Note>Unlike [arc:equals](./op-arc-equals), `arc:check` does not throw an exception if the attribute does not exist in the item.</Note>

## Parameters

* **item**: The item in which to check the attribute. Specifying an item is not required. If no item is specified, the default output item is used.
* **attr**: The name of the attribute to check. This parameter is required.
* **value**: An expression that evaluates to `true` or `false`. For example, the result of a formatter that returns true or false.
* **action**: The action to execute if the expression evaluates to `true`. Allowed values are `break` and `continue`.

## Control Attributes

None

## Examples

**Check for the presence of an attribute on an item**

This example uses `arc:check` to check for the presence of the `number` attribute on the `result` item. If true, a header is added to the message. Otherwise, an error is thrown.

```xml theme={null}
<arc:set attr="result.number" value="95" />

<!-- Check that the number attribute exists on the result item first. -->
<arc:check attr="result.number">
  <!-- If true, add a header. -->
  <arc:if exp="[result.number | lessthan(100)]">
    <arc:set attr="out.header:numberlessthan100" value="true" />
    <arc:set attr="out.filepath" value="[filepath]" />
    <arc:push item="out" />
    <!-- Else, throw an error. -->
    <arc:else>
      <arc:throw code="HighValue" desc="The target value was above the desired value of 100." />
    </arc:else>
  </arc:if>
</arc:check>
```

**Check for a value during enumeration**

This example enumerates over a range from 1 to 10 and uses `arc:check` to check the iteration value. If it is equal to 5, break out of the enumeration. If the value is not equal to 5, create a file with some data and push the file as output.

```xml theme={null}
<arc:enum range="1..10">
  <!-- Check the current iteration and break if it is equal to 5. -->
  <arc:check value="[_value | equals(5)]" action="break" />
  <!-- For iterations not equal to 5, create a file and push it as output. -->
  <arc:setm item="out">
    FileName=Result_[_value].txt
    Data=The enumeration value is [_value].
  </arc:setm>
  <arc:push item="out" />
</arc:enum>
```

## See Also

* [arc:exists](./op-arc-exists): Check if an attribute exists.
* [arc:equals](./op-arc-equals): Check for equality.
* [arc:notequals](./op-arc-not-equals): Check for inequality.
