Выполняет макроподстановку.
& VarName[.cExpression] |
Параметры
- & VarName
-
Задает имя переменной памяти или элемента массива, указываемого в макроподстановке. Нельзя указывать в имени префикс
M.
, которым переменные памяти отличаются от полей. Такое включение вызовет синтаксическую ошибку. Длина имени не может превышать максимальной допустимой в Visual FoxPro длины оператора.В подстановке не допускаются рекурсивные ссылки переменной на саму себя. Например, в следующем случае будет сгенерировано сообщение об ошибке:
Copy Code
STORE '&gcX' TO gcX? &gcX
Операторы макроподстановки, фигурирующие в командах DO WHILE, FOR и SCAN, вычисляются только в начале цикла и при последующих итерациях не пересчитываются. Любые изменения в переменной памяти или элементе массива, происшедшие за время работы цикла, не распознаются.
- [. cExpression]
-
Необязательный аргумент .cExpression с разделителем в виде точки (.) используется для присоединения к макрокоманде дополнительных символов. При этом в качестве cExpression можно указать еще одну макрокоманду. If cExpression is a property name, include an extra period (cExpression..PropertyName).
Примечания
Операция макроподстановки рассматривает содержимое переменной памяти или элемента массива как строковый литерал. Если перед переменной памяти символьного типа или элементом массива стоит знак (&) , в качестве ссылки в макрокоманде подставляется содержимое переменной или элемента массива. Макроподстановку можно использовать в любой команде или функции, допускающей задание строкового литерала.
![]() |
---|
По мере возможности старайтесь использовать вместо макроподстановки выражение имени. Такое выражение действует как макроподстановка, но оно может передавать в качестве имен только символьные строки. Употребляя выражение имени, вы значительно ускорите процесс обработки команды или функции, допускающей задание имени (имени файла, имени окна, имени меню и т.д.). Подробнее о выражениях имени смотрите Создание именованного выражения . |
Следующие команды являются допустимыми:
![]() | |
---|---|
STORE 'customer' TO gcTableName STORE 'company' TO gcTagName USE &gcTableName ORDER &gcTagName |
но лучше воспользоваться выражением имени:
![]() | |
---|---|
USE (gcTableName) ORDER (gcTagName) |
Макроподстановка оказывается полезной, если необходимо заменить ключевое слово в команде. В следующем примере значение установки TALK сохраняется в переменной памяти, чтобы впоследствии программа смогла его восстановить. Исходное значение TALK восстанавливается с помощью макроподстановки.
![]() |
---|
Performing concatenation with a single ampersand (&) when attempting to include double ampersands (&&) in a string literal might produce undesirable results. For example, suppose you assign the string "YYY" to a variable, |
Пример
![]() | |
---|---|
STORE SET('TALK') TO gcSaveTalk SET TALK OFF * * Additional program code * SET TALK &gcSaveTalk && Restore original TALK setting |
Смотрите Также
Справочное руководство
Команда STOREКоманда &&