# 使用变量进行货币符号扩展

如果要在脚本或表达式中使用变量进行文本替换，需使用以下语法：

$(variablename)

$(variablename) 扩展至变量中的值。如果 variablename 不存在，那么该扩展将为空字符串。

对于数字变量扩展，使用以下语法：

$(#variablename)

其总是生成合法小数点来表示变量的数字值，可能带有指数符号（对于非常大/小的数值）。如果 variablename 不存在或不包含数字值，那宏扩展将被扩展至 0。

示例：

`SET 
 DecimalSep=',';` `LET 
 X = 7/2;`

货币符号扩展 $(X) 将扩展至 3,5，而 $(#X) 将扩展至 3.5。

示例：

`Set Mypath=C:\MyDocs\Files\;` ` ...  ` `LOAD * from $(MyPath)abc.csv;`

数据将从 C:\MyDocs\Files\abc.csv 加载。

示例：

`Set CurrentYear=1992;` ` ...  ` `SQL SELECT * FROM table1 WHERE
 Year=$(CurrentYear);`

将选中 Year=1992 的行。

示例：

```
 Set vConcatenate = ; For each vFile in FileList('.\*.txt')    Data:    $(vConcatenate)    LOAD * FROM [$(vFile)];    Set vConcatenate = Concatenate ; Next vFile
```

在本例中，目录中的所有 .txt 文件都将使用 Concatenate 前缀加载。如果字段略有不同（在这种情况下自动串联不起作用），则可能必须采用这种方法。vConcatenate 变量初始设置为空字符串，因为 Concatenate 前缀在第一次加载中无法使用。如果目录包含三个名为 file1.txt、file2.txt 和 file3.txt 的文件，LOAD 语句将在三次迭代过程中扩展至：

`LOAD * FROM[.\file1.txt];` `Concatenate LOAD * FROM[.\file2.txt];` `Concatenate LOAD * FROM[.\file3.txt];`

## 展开备用状态的变量

变量只有一个值，并且在所有备用状态中都使用该值。展开变量时，值也是相同的，与变量的位置和对象的状态无关。

如果变量是计算变量，即定义以等号开头，则在默认状态下进行计算，除非在变量定义中指定了备用状态。

示例：

如果有一个名为 `MyState` 的状态和一个名为 `vMyVar` 的变量：

```
vMyvar: =only({MyState} MyField)
```

变量定义内容（带有对备用状态名称的显式引用）确定将在哪个状态中计算变量内容。