# Расширение со знаком доллара с использованием переменной

При использовании переменной для текстового замещения в скрипте или в выражении используется следующий синтаксис:

$(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)
```

Содержимое определения переменной с явной ссылкой на имя альтернативного состояния определяет, в каком состоянии будет оцениваться содержимое переменной.