- •Тема 9 Операторы присваивания, преобразования и вычисления
- •1. Работа с системными переменными
- •Обычно используемые системные переменные
- •2. Операторы присваивания
- •Использование оператора move
- •Правильное и неправильное использование присваивания
- •Преобразования Данных
- •Использование move c Field Strings
- •3. Выполнение вычислений
2. Операторы присваивания
Оператор присваивания определяет значение переменной или Field String. Обычно используются три оператора присваивания:
clear
move
move-corresponding
Оператор clear
Оператор clear присваивает переменным заданные по умолчанию начальные значения. Оператор clear присваивает значению переменной или Field String нуль. Если тип данных – c, присваивает значение пробел. Пробелы и нули являются заданными по умолчанию начальными значениями.
Синтаксис оператора clear.
clear v1 [with v2 | with 'A' | with NULL]
где:
v1 и v2 – переменные или имена Field String .
'A' - литералы любой длины.
no-gap – выводить без промежутков
report ztx0904.
tables ztxlfa1.
data: f1(2) type c value 'AB',
f2 type i value 12345,
f3 type p value 12345,
f4 type f value '1E1',
f5(3) type n value '789',
f6 type d value '19980101',
f7 type t value '1201',
f8 type x value 'AA',
begin of s1,
f1(3) type c value 'XYZ',
f2 type i value 123456,
end of s1.
ztxlfa1-lifnr = 'XXX'.
ztxlfa1-land1 = 'CA'.
write: / 'f1=''' no-gap, f1 no-gap, '''',
/ 'f2=''' no-gap, f2 no-gap, '''',
/ 'f3=''' no-gap, f3 no-gap, '''',
/ 'f4=''' no-gap, f4 no-gap, '''',
/ 'f5=''' no-gap, f5 no-gap, '''',
/ 'f6=''' no-gap, f6 no-gap, '''',
/ 'f7=''' no-gap, f7 no-gap, '''',
/ 'f8=''' no-gap, f8 no-gap, '''',
/ 's1-f1=''' no-gap, s1-f1 no-gap, '''',
/ 's1-f2=''' no-gap, s1-f2 no-gap, '''',
/ 'ztxlfa1-lifnr=''' no-gap, ztxlfa1-lifnr no-gap, '''',
/ 'ztxlfa1-land1=''' no-gap, ztxlfa1-land1 no-gap, ''''.
clear: f1, f2, f3, f4, f5, f6, f7, f8, s1, ztxlfa1.
write: / 'f1=''' no-gap, f1 no-gap, '''',
/ 'f2=''' no-gap, f2 no-gap, '''',
/ 'f3=''' no-gap, f3 no-gap, '''',
/ 'f4=''' no-gap, f4 no-gap, '''',
/ 'f5=''' no-gap, f5 no-gap, '''',
/ 'f6=''' no-gap, f6 no-gap, '''',
/ 'f7=''' no-gap, f7 no-gap, '''',
/ 'f8=''' no-gap, f8 no-gap, '''',
/ 's1-f1=''' no-gap, s1-f1 no-gap, '''',
/ 's1-f2=''' no-gap, s1-f2 no-gap, '''',
/ 'ztxlfa1-lifnr=''' no-gap, ztxlfa1-lifnr no-gap, '''',
/ 'ztxlfa1-land1=''' no-gap, ztxlfa1-land1 no-gap, ''''.
f1='AB'
f2=' 12,345 '
f3=' 12,345 '
f4=' 1.000000000000000E+01'
f5='789'
f6='19980101'
f7='120100'
f8='AA'
s1-f1='XYZ'
s1-f2=' 123,456 '
ztxlfa1-lifnr='XXX '
ztxlfa1-land1='CA '
f1=' '
f2=' 0 '
f3=' 0 '
f4=' 0.000000000000000E+00'
f5='000'
f6='00000000'
f7='000000'
f8='00'
s1-f1=' '
s1-f2=' 0 '
ztxlfa1-lifnr=' '
ztxlfa1-land1=' '
Программа, которая заполняет переменные и компоненты Fields String значениями кроме пробелов или нулей.
report ztx0905.
tables ztxlfa1.
data: f1(2) type c value 'AB',
f2(2) type c,
f3 type i value 12345,
begin of s1,
f1(3) type c value 'XYZ',
f2 type i value 123456,
end of s1.
write: / 'f1=''' no-gap, f1 no-gap, '''',
/ 'f2=''' no-gap, f2 no-gap, '''',
/ 'f3=''' no-gap, f3 no-gap, '''',
/ 's1-f1=''' no-gap, s1-f1 no-gap, '''',
/ 's1-f2=''' no-gap, s1-f2 no-gap, '''',
/ 'ztxlfa1-lifnr=''' no-gap, ztxlfa1-lifnr no-gap, '''',
/ 'ztxlfa1-land1=''' no-gap, ztxlfa1-land1 no-gap, '''',
/.
clear: f1 with 'X',
f2 with f1,
f3 with 3,
s1 with 'X',
ztxlfa1 with 0.
write: / 'f1=''' no-gap, f1 no-gap, '''',
/ 'f2=''' no-gap, f2 no-gap, '''',
/ 'f3=''' no-gap, f3 no-gap, '''',
/ 's1-f1=''' no-gap, s1-f1 no-gap, '''',
/ 's1-f2=''' no-gap, s1-f2 no-gap, '''',
/ 'ztxlfa1-lifnr=''' no-gap, ztxlfa1-lifnr no-gap, '''',
/ 'ztxlfa1-land1=''' no-gap, ztxlfa1-land1 no-gap, ''''.
f1='AB'
f2=' '
f3=' 12,345 '
s1-f1='XYZ'
s1-f2=' 123,456 '
ztxlfa1-lifnr=' '
ztxlfa1-land1=' '
f1='XX'
f2='XX'
f3='50,529,027 '
s1-f1='XXX'
s1-f2='1482184792 '
ztxlfa1-lifnr='##########'
ztxlfa1-land1='###'
Строка
clear f3 with 3.
записывает в первый байт f3 число 3. Числовой литерал длиной до девяти цифр сохраняется как четырех-байтовое целое число. В f3 заполнен первый байт этого четырех-байтового целого числа, по существу присваивая случайное значение f3.
Строка
clear s1 with 'X'.
обрабатывает s1 как тип c и присваивает X. Компонент f1 является типом c, таким образом он получает правильные значения. Компонент f2 является типом i и получает недопустимые значения.
Таблица ztxlfa1 заполнена первым байтом от четырех-байтового целочисленного значения 0, присваивая элементам случайные значения (заполняя их мусором). Мусор, в этом случае, отображен как знаки (#).