Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 9 День 9 Присваивание преобразование выч...doc
Скачиваний:
6
Добавлен:
21.11.2019
Размер:
299.01 Кб
Скачать

3. Выполнение вычислений

Для выполнения вычислений используются следующие операторы:

  • compute

  • add or add-corresponding

  • subtract or subtract-corresponding

  • multiply or multiply-corresponding

  • divide or divide-corresponding

Оператор compute.

Операторы и операнды должны быть отделены пробелами. В операторе может быть более одного операнда.

Синтаксис оператора:

compute v3 = v1 op v2 [op vn ...].

или

v3 = v2 op v2 [op vn ...].

  • v3 – переменная получения для результата вычисления.

  • v1, v2, и vn являются операндами.

  • op – математический оператор.

Список правильных операторов:

Операторы

Операция

+

Сложение

-

Вычитание

*

Умножение

/

Деление

**

Возведение в степень

DIV

Целочисленное деление

MOD

Остаток от целочисленного деления

Математические выражения могут содержать любое число круглых скобок. Каждой скобке должен предшествовать по крайней мере один пробел. Однако, есть одно исключение этому правилу. После встроенного имени функции не может быть пробела; круглая скобка открытия должна следовать за именем функции.

Правильно

Неправильно

f1 = f2 + f3.

f1 = f2+f3.

f1 = ( f2 + f3 ) * f4.

f1 = (f2 + f3) * f4.

f1 = sqrt( f2 ).

f1 = sqrt ( f2 ).

f1 = sqrt(f2).

При работе с вещественными числами должна быть включена опция проверки десятичных вычислений. Если она отключена, то вычисление 1 / 3 * 3 даст результат нуль, потому что промежуточный результат 0.333333 округлен, и обнуляется прежде, чем будет умножен на 3. Если опция включена, результат 1.

Операторы add и add-corresponding

Оператор add используется для добавления одного числа к другому. Field Strings с компонентами, имеющими одинаковые поля, могут быть сложены с помощью add-corresponding.

Синтаксис оператора add. Преобразования выполняются по мере необходимости таким же образом, как и в операторе compute.

add v1 to v2.

  • v2 – переменная, добавляемая к v1.

  • v1 – переменная, добавленная к v2.

Синтаксис для subtract, multiply, and divide аналогичен.

Синтаксис оператора add-corresponding.

add-corresponding s1 to s2.

  • s2 – Field String, добавляемая к s1.

  • s1 – Field String, добавленная к s2.

Оператор add был сгенерирован для каждой пары компонентов, имеющих одинаковое название в s1 и s2.

Subtract-corresponding, multiply-corresponding и divide-corresponding работает аналогичным образом.

report ztx0913.

data: f1 type i value 2,

f2 type i value 3,

begin of s1,

c1 type i value 10,

c2 type i value 20,

c3 type i value 30,

end of s1,

begin of s2,

c1 type i value 100,

x2 type i value 200,

c3 type i value 300,

end of s2.

add f1 to f2. write / f2. "f1 is unchanged

subtract f1 from f2. write / f2.

multiply f2 by f1. write / f2.

divide f2 by f1. write / f2.

add-corresponding s1 to s2.

write: / s2-c1, s2-x2, s2-c3.

subtract-corresponding s1 from s2.

write: / s2-c1, s2-x2, s2-c3.

multiply-corresponding s2 by s1.

write: / s2-c1, s2-x2, s2-c3.

divide-corresponding s2 by s1.

write: / s2-c1, s2-x2, s2-c3.

5

3

6

3

110 200 330

100 200 300

1,000 200 9,000

100 200 300

Использование даты в вычислениях

Переменная даты (тип d) может использоваться в математических выражениях.

report ztx0914.

type-pools ztx1. "contains ztx1_amalgamation_date

data: d1 like sy-datum,

d2 like d1,

num_days type p.

d1 = d2 = sy-datum.

subtract 1 from d1. write / d1. "yesterday's date

d2+6 = '01'. write / d2. "first day of current month

subtract 1 from d2. write / d2. "last day of previous month

num_days = sy-datum - ztx1_amalgamation_date.

write / num_days. "number of days since amalgamation

Пусть текущая дата 22 февраля 1998.

1998/02/21

1998/02/01

1998/01/31

354