Navigation:  Внутренний язык программирования >

Операции

Previous pageReturn to chapter overviewNext page

Доступны следующие операции:

clip1225

 

%        Остаток от деления двух чисел

*        Умножение

+        Сложение, положительный знак, конкатенация

-        Вычитание, отрицательный знак, конкатенация

/        Деление двух чисел

<> != #        Не равно

$        Поиск подстроки

.AND. AND        Логическое «И»

.NOT. NOT !        Логическое «НЕ»

.OR. OR        Логическое «ИЛИ»

<        Меньше

<=        Меньше или равно

=        Равно

==        Точное равенство

>        Больше

>=        Больше или равно

:=        Присваивание

&        Операция макроподстановки

->        Операция алиаса

{ }        Ограничители массива или блока кода

[ ]        Индикатор элемента массива

( )        Индикатор функции или группировки

 

Операция алиаса ->

Синтаксис

<алиас>-><идентификатор поля>

<алиас>->( <выражение> )

FIELD-><идентификатор поля>

MEMVAR/M-><идентификатор переменной>

Операнды

<алиас> – имя рабочей области с открытой базой данных, обычно не являющейся текущей в момент использования.

<идентификатор поля> – имя поля базы данных в рабочей области с именем <алиас>

<выражение> – выражение любого типа данных, вычисляемое в рабочей области с именем <алиас>.

Выражение более сложное, чем просто имя поля базы данных, должно быть заключено в круглые скобки ().

<идентификатор переменной> – любой допустимый идентификатор. В зависимости от задания FIELD или MEMVAR, идентификатор будет относиться к полю базы данных или переменной в памяти.

Описание

Когда используют <алиас> как первый операнд, то операция алиаса (->) обеспечивает доступ к информации поля базы данных или вычисляет выражение в указанной рабочей области. Операция алиаса выбирает рабочую область с <алиас> перед использованием операнда <идентификатор поля> или вычислением <выражение>. Когда вычисление законченно, начальная рабочая область выбирается как текущая.

Пример

Customer->CustName // значение поля CustNamе из рабочей области Customer

Customer->(RECNO()) // номер текущей записи таблицы, открытой в рабочей области Customer

 

& (Операция макроподстановки)

Синтаксис

&<макропеременная>

&(<макровыражение>)

Операнды

<макропеременная> – может быть любой символьной переменной.

Cодержимое макропеременной компилируется и затем выполняется. Код – результат компиляции – не сохраняется;

<макровыражение> – символьное выражение, которое должно быть заключено в круглые скобки. Макроподстановка выполняется для символьной строки – результата вычисления <макровыражение>.

Это позволяет компилировать и выполнить символьные строки, содержащиеся в полях баз данных и в элементах массивов.

 

Пример 1

Local var:='KOD'

...

Field->&var:=40 // Присваивание в поле КOD текущей рабочей области значения 40

 

Пример 2

В переменную _aadd записывается некоторое текстовое выражение, которое выполняется в строке 27

clip1065

 

ПРИОРИТЕТЫ ОПЕРАЦИЙ

При вычислений выражений, содержащих две или более операций, порядок выполнения которых явно не определен, используется определенный набор правил для определения последовательности вычисления операций. Эти правила, именуемые правилами приоритета, определяют старшинство всех операций.

 

Приоритет категорий

Когда в выражении встречается более одного типа операторов, то сначала вычисляются все подвыражения, относящиеся к одному уровню приоритета, затем – к следующему, и так далее. Кроме множественного присвоения в одной строке, все остальные операторы каждого уровня выполняются в порядке слева направо; множественное присвоение в строке выполняется справа налево. Порядок выполнения операторов, по категориям, следующий:

 

1. Математические

2. Операции сравнения

3. Логические

4. Присвоения

 

Приоритет внутри категорий

 

Математические

Когда в выражении встречается более одного математического оператора, то вычисления производятся в соответствии с уровнями приоритетов – сначала все операции с большим приоритетом, потом следующего уровня и так далее. На каждом уровне операторы выполняются слева направо. Порядок приоритетов математических операторов следующий:

 

1. Унарный плюс или минус (+, -)

2. Возведение в степень (^)

3. Умножение, деление и деление по модулю (*, /, %)

4. Сложение и вычитание (+, -)

 

Операции отношения

Все операции отношения (<, <=, >, >=, <>, !=) относятся к одному уровню приоритета и выполняются слева направо.

 

Логические

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

 

1. Унарное отрицание (.NOT. или ! )

2. Логическое «И» (.AND.)

3. Логическое «ИЛИ» (.OR.)

 

Присвоения

Все операторы присвоения относятся к одному уровню приоритета и выполняются справа налево. Для составных операторов сначала выполняется не присваивающая часть (например, сложение или конкатенация), а затем уже присвоение значения переменной.

 

Скобки

Порядок выполнения операторов в выражении может быть изменен использованием круглых скобок. Если в выражении встречаются скобки, то все заключенные в них операторы выполняются в первую очередь. При необходимости приоритет выполнения операторов внутри скобок определяется вышеописанными правилами. Если встречаются вложенные скобки, то выполнение начинается с операторов, заключенных в самой внутренней паре скобок.