> ## 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.

# 論理フォーマッタ

> ArcScript で属性値に対する条件ロジック、比較、null/空のチェックを行うフォーマッタ。

## allownull()

属性が存在しない場合は *NULL* を返し、存在する場合はその値を返します。

## contains(target\[, ifcontains]\[, ifnotcontains])

入力文字列が *target* を含む場合は *true* を返し、そうでない場合は *false* を返します。

*ifcontains* パラメータには、入力文字列が *target* を含む場合に返す別の値を設定できます。また、*ifnotcontains* パラメータには、入力文字列が *target* を含まない場合に返す別の値を設定できます。

### 例

```xml theme={null}
<arc:set attr="myString" value="hello world" />
<arc:if exp="[myString | contains('hello')]">
  <arc:set attr="response" value="hello to you too!" />
  <arc:else>
    <arc:set attr="response" value="I would appreciate a greeting" />
  </arc:else>
</arc:if>
```

## def(ifnotexists\[, ifexists])

属性の「デフォルト」値を設定します。属性にまだ値が設定されていない場合は、*ifnotexists* で渡された値に設定し、属性がすでに存在する場合は、*ifexists* で渡された値に設定します。

### 例

```xml theme={null}
<!-- count the number of loops in an XML document using xmlDOMSearch -->

<arc:set attr="xml.uri" value="[FilePath]" />
<arc:set attr="xml.xpath" value="/Items/test/loop" />

<arc:call op="xmlDOMSearch" in="xml">
  <!-- this code executes for each occurrence of the 'xpath' in the XML document -->
  <arc:set attr="loopCount" value="[loopCount | def(0) | add(1)]" />
</arc:call>
```

## empty(value)

属性値が空の場合は指定した値を返し、そうでない場合は元の属性値を返します。

* **value**：属性が空の場合に使用する値。

## equals(value\[, ifequal]\[, ifnotequal])

入力属性が *value* に一致する場合は *true* を返し、そうでない場合は *false* を返します。

*ifequal* や *ifnotequal* が指定された場合は、*true* や *false* の代わりにこれらのパラメータの値が返されます。

### 例

```xml theme={null}
<arc:set attr="myItem.code" value="[xpath(data/lineitems/itemcode)]" />
<arc:if exp="[myItem.code | equals('A5')]">
  <arc:set attr="myItem.name" value="spoon" />
  <arc:else>
    <arc:set attr="myItem.name" value="fork" />
  </arc:else>
</arc:if>
```

## ifequal(value\[, ifequals]\[, ifnotequals])

属性値を最初のパラメータの値と比較し、等しい場合は *true*（または *ifequals*）を、等しくない場合は *false*（または *ifnotequals*）を返します。

* **value**：属性値と比較する文字列。
* **ifequals**：属性値が最初のパラメータで表される値と等しい場合に返される任意の値。
* **ifnotequals**：属性値が最初のパラメータで表される値と等しくない場合に返される任意の値。

## ifmatches(value\[, ifmatch]\[, ifnotmatch])

属性値が最初のパラメータに一致する場合は *true*（または *ifmatch*）を返し、そうでない場合は *false*（または *ifnotmatch*）を返します。

* **value**：属性値と比較する値。
* **ifmatch**：属性値がパラメータ値に一致する場合に返される任意の値。
* **ifnotmatch**：属性値がパラメータ値に一致しない場合に返される任意の値。

## isalphabetic(\[ifalpha]\[, ifnotalpha])

属性値内のすべての文字がアルファベットで、かつ少なくとも1文字ある場合は *true*（または *ifalpha*）を返し、そうでない場合は *false*（または *ifnotalpha*）を返します。

* **ifalpha**：属性値がアルファベットである場合に返される任意の値。
* **ifnotalpha**：属性値がアルファベットでない場合に返される任意の値。

## isalphanumeric(\[ifalphanum]\[, ifnotalphanum])

属性値内のすべての文字が英数字で、かつ少なくとも1文字ある場合は *true*（または *ifalphanum*）を返し、そうでない場合は *false*（または *ifnotalphanum*）を返します。

* **ifalphanum**：属性値がアルファベットまたは数字のみを含む場合に返される任意の値。
* **ifnotalphanum**：属性値がアルファベットでない文字または数字でない文字を含む場合に返される任意の値。

## islower(\[iflower]\[, ifnotlower])

属性値内のすべての文字が小文字で、かつ文字（アルファベット）が少なくとも1つある場合は *true*（または *iflower*）を返し、そうでない場合は *false*（または *ifnotlower*）を返します。

* **iflower**：属性値が小文字である場合に返される任意の値。
* **ifnotlower**：属性値が小文字でない場合に返される任意の値。

## isnumeric(\[ifnum]\[, ifnotnum])

属性値内のすべての文字が数字で、かつ少なくとも1文字ある場合は *true*（または *ifnum*）を返し、そうでない場合は *false*（または *ifnotnum*）を返します。

* **ifnum**：属性値が数値である場合に返される任意の値。
* **ifnotnum**：属性値が数値でない場合に返される任意の値。

## isspace(\[ifspace]\[, ifnotspace])

属性値内に空白文字のみが存在し、かつ少なくとも1文字ある場合は *true*（または *ifspace*）を返し、そうでない場合は *false*（または *ifnotspace*）を返します。

* **ifspace**：属性値がスペースである場合に返される任意の値。
* **ifnotspace**：属性値がスペースでない場合に返される任意の値。

## isupper(\[ifupper]\[, ifnotupper])

属性値内のすべての文字が大文字で、かつ文字（アルファベット）が少なくとも1つある場合は *true*（または *ifupper*）を返し、そうでない場合は *false*（または *ifnotupper*）を返します。

* **ifupper**：属性値が大文字である場合に返される任意の値。
* **ifnotupper**：属性値が大文字でない場合に返される任意の値。

## notequals(value\[, notequals]\[, equals])

属性値を最初のパラメータの値と比較します。等しくない場合は *true*（または *notequals*）を返し、等しい場合は *false*（または *equals*）を返します。

* **value**：属性値と比較する文字列。
* **notequals**：属性値が最初のパラメータで表される値と等しくない場合に返される任意の値。
* **equals**：属性値が最初のパラメータで表される値と等しい場合に返される任意の値。

## startswith(target\[, iftrue]\[, iffalse])

入力文字列が *target* として指定した値で始まる場合は *true* を返し、そうでない場合は *false* を返します。

*iftrue* が指定された場合、*target* が見つかったときに *true* の代わりにこの値が返されます。また、*iffalse* が指定された場合、*target* が見つからなかったときに *false* の代わりにこの値が返されます。

### 例

```xml theme={null}
<arc:set attr="myString" value="Sir, your carriage is ready." />
<arc:if exp="[myString | startswith('Sir')]">
  <arc:set attr="response" value="Thank you." />
  <arc:else>
    <arc:set attr="response" value="Use your manners." />
  </arc:else>
</arc:if>
```
