Выполняет макроподстановку.

& VarName[.cExpression]

Параметры

& VarName

Задает имя переменной памяти или элемента массива, указываемого в макроподстановке. Нельзя указывать в имени префикс M., которым переменные памяти отличаются от полей. Такое включение вызовет синтаксическую ошибку. Длина имени не может превышать максимальной допустимой в Visual FoxPro длины оператора.

В подстановке не допускаются рекурсивные ссылки переменной на саму себя. Например, в следующем случае будет сгенерировано сообщение об ошибке:

  CopyCode imageCopy 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).

Expand imageПримечания

Операция макроподстановки рассматривает содержимое переменной памяти или элемента массива как строковый литерал. Если перед переменной памяти символьного типа или элементом массива стоит знак (&) , в качестве ссылки в макрокоманде подставляется содержимое переменной или элемента массива. Макроподстановку можно использовать в любой команде или функции, допускающей задание строкового литерала.

NoteTip

По мере возможности старайтесь использовать вместо макроподстановки выражение имени. Такое выражение действует как макроподстановка, но оно может передавать в качестве имен только символьные строки. Употребляя выражение имени, вы значительно ускорите процесс обработки команды или функции, допускающей задание имени (имени файла, имени окна, имени меню и т.д.). Подробнее о выражениях имени смотрите Создание именованного выражения .

Следующие команды являются допустимыми:

  CopyCode imageCopy Code
STORE 'customer' TO gcTableName
STORE 'company'  TO gcTagName
USE &gcTableName ORDER &gcTagName

но лучше воспользоваться выражением имени:

  CopyCode imageCopy Code
USE (gcTableName) ORDER (gcTagName)

Макроподстановка оказывается полезной, если необходимо заменить ключевое слово в команде. В следующем примере значение установки TALK сохраняется в переменной памяти, чтобы впоследствии программа смогла его восстановить. Исходное значение TALK восстанавливается с помощью макроподстановки.

NoteNote

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, BBB. Performing concatenation using "AAA&" and "&BBB" replaces "BBB" with "YYY" so instead of getting the result "AAA&&BBB", the result is "AAA&YYY". For more information, see && Command.

Expand imageПример

  CopyCode imageCopy Code
STORE SET('TALK') TO gcSaveTalk
SET TALK OFF
*
*  Additional program code
*
SET TALK &gcSaveTalk  && Restore original TALK setting

Expand imageСмотрите Также

Справочное руководство

Команда STORE
Команда &&

Концепции

Макроподстановка (Visual FoxPro)

Прочие ресурсы

Команды (Visual FoxPro)