ГОСТ 22558-89 сторінка 46 з 116
MOVE temp ТО М ПОМЕСТИТЬ пром В М
MOVE temp ТО Р (М) ПОМЕСТИТЬ пром В Р (М)
где «temp» («пром») — промежуточный результат, обеспечиваемый реализацией.
Перемещение, в котором принимающий операнд является элементарным данным, а пересылаемый операнд — литералом либо элементарным данным, называется элементарным перемещением. Каждое элементарное данное принадлежит одной из следующих категорий: числовой, буквенной, буквенно-цифровой, числовой редактируемой, буквенно-цифровой редактируемой (см. п. 5.9 настоящей части). Числовые литералы принадлежат к числовой категории, а нечисловые — к буквенно-цифровой категории. Стандартная константа ZERO, ZEROES (НУЛЬ, НУЛИ) при перемещении в числовое или числовое редактируемое данное относится к числовой категории.
Во всех прочих случаях она относится к буквенно-цифровой категории.
Стандартная константа SPACE, SPACES (ПРОБЕЛ, ПРОБЕЛЫ) относится к буквенной категории. Все остальные стандартные константы относятся к буквенно-цифровой категории.
К элементарному перемещению применяются следующие правила:
буквенно-цифровое редактируемое, стандартная константа SPACE (ПРОБЕЛ) или буквенное данное не должны перемещаться в числовое или числовое редактируемое данное;
числовое или числовое редактируемое данное, числовой литерал и стандартная константа ZERO (НУЛЬ) не могут перемещаться в буквенное данное;
числовой литерал, не представляющий целое число, или числовое данное, имеющее значение, не являющееся целым числом, не может перемещаться в буквенно-цифровое или буквенно-цифровое редактируемое данное;
на уровне 1 числовое редактируемое данное не должно перемещаться в числовое или числовое редактируемое данное;
прочие элементарные перемещения являются допустимыми и выполняются согласно общему правилу (4).
(4) Во время выполнения допустимого элементарного перемещения производятся все необходимые преобразования данного из одной формы внутреннего представления в другую, сопровождаю- щиеся редактированием, определенным для принимающего данно- го, или дередактированием, предполагаемым принимающим дан-
ным. Следующие правила применяются к допустимым элементарным перемещениям:
если принимающим данным является буквенно-цифровое редактируемое или буквенно-цифровое данное, производится выравнивание и любое необходимое дополнение пробелами, как это определено стандартными правилами выравнивания (см. ч. 4, п. 4.3.6). Если пересылаемое данное описано как числовое со знаком, знак числа не пересылается; если знак числа занимает отдельную позицию литеры, то эта литера не пересылается и размер пересылаемого данного на одну литеру меньше, чем его действительный размер в терминах литер стандартного формата данных (см. п. 5.12 настоящей части).
Если пересылаемый операнд описан как числовое редактируемое данное, дередактирования не происходит. Если использование пересылаемого операнда отличается от использования принимающего операнда, происходит преобразование пересылаемого операнда во внутреннее представление принимающего операнда. Если пересылаемый операнд числовой и содержит литеру шаблона Р(М), считается, что все цифровые позиции, определяемые этой литерой, имеют значение нуль и учитываются при определении размера пересылаемого операнда;
если принимающим данным является числовое или числовое редактируемое данное, то производится выравнивание по десятичной точке и любое необходимое дополнение нулями согласно стандартным правилам выравнивания (см. ч. 4, п. 4.3.6), кроме случая, когда нули замещаются согласно требованиям редактирования. Если пересылаемый операнд является числовым редактируемым, требуется дередактирование для установления неотредак- тированного числового значения операнда, возможно, со знаком, затем это неотредактированное числовое значение помещается в принимающее поле.
Если принимающим является числовое данное со знаком, знак пересылаемого данного помещается в принимающее данное при этом выполняется необходимое преобразование представления знака (см. п. 5.12 настоящей части). Если пересылаемое дан
ное описано без знака, принимающему данному присваивается положительный знак.
Если принимающее данное не имеет диака числа, при перемещении используется абсолютное значение пересылаемого данного.
Пересылаемое данное, описанное как буквенно-цифровое, перемещается так, как если бы оно было описано как числовое целой без знака;
в) если принимающее поле описано как буквенное, имеет место выравнивание и необходимое дополнение пробелами по ранее определенным правилам (см. ч. 4, п. 4.3.6).
Перемещение, которое не является элементарным, рассматривается как элементарное перемещение буквенно-цифрового данного в буквенно-цифровое; однако при этом не выполняются преобразования данных из одной формы внутреннего представления в другую. При таком перемещении принимающее поле будет заполняться без рассмотрения особенностей отдельных элементарных или групповых данных, содержащихся в пересылаемом или принимаю- щем поле, кроме случая, отмеченного в общем правиле фразы [ [OCCURS (ПОВТОРЯЕТСЯ) (см. ч. 4, п. 5.8). |
Ниже иллюстрируются допустимые сочетания категорий операндов оператора MOVE (ПОМЕСТИТЬ).
Категория пересылаемого данного
Категория принимающего данного
Буквенная
Буквенно-цифровая, буквенно-цифровая редактируемая
Числовая (целое), числовая (нецелое), числовая редак тн- руе.мая
Буквенная
Да
По п. 4в
Да
По п. 4а
Нет
По п. За
Буквенно-цифровая
Да
По п. 4в
Да
По п. 4а
Да
По п. 46
Буквенно-цифровая редактируемая
Да
По п. 4в
Да
Пэ п. 4а
Нет
По п. За
Числовая (целое)
Нет
По п. 36
Да
По п. 4а
Да
По п. 46
Числовая (нецелое)
Нет
По п. 36
Нет
По п. Зв
Да
По п. 46
Числовая редактируемая
Нет
По и. 36
Да
Пэ п. 4а
Да
По п. 46
Примечание. «Да» обозначает допустимость пересылки, «нет» — запрещение. Ссылка на общее правило указывает правило, запрещающее пересылку или объясняющее порядок перемещения.
Оператор MULTIPLY (УМНОЖИТЬ)
Назначение
Оператор MULTIPLY (УМНОЖИТЬ) позволяет перемножить числовые данные и присвоить значение произведения результату.
О б щ и й формат
Формат 1
... тт тшт V I идентификатор-! ] , о
MULTIPLY { , BY {идентификатор-2
( литерал-1 ]—
[ROUNDED])...
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2]
[END-MULTIPLY]
vu.4T.vT/rjTT идентификатор-1 ... , , o
УМНОЖИТЬ , НА {идентификатор-2
(литерал-1 I —
[ОКРУГЛЯЯ]). ■■
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-IJ
[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]
[КОНЕЦ-УМНОЖИТЬ]
Формат 2
MULTIPLY ( иДентиФикат°Р-5 6 ) BY I идентификатор-2 1
(литерал-1 j і литерал-2 ]
GIVING {идентификатор-3 [ROUNDED]}...
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2]
[END-MULTIPLY]
УМНОЖИТЬ ! чдентнфик.тор-1 ] нд І ттдевтттфнкатор-2 I литерал-1 [ ( литерал-2
ПОЛУЧАЯ {идентификатор-3 [ОКРУГЛЯЯ]}. . .
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1] [БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]
[КОНЕЦ-УМНОЖИТЬ]
ментарное данное, за исключением формата 2, в котором любой идентификатор, который появляется только справа от слова GIVING (ПОЛУЧАЯ), должен представлять элементарное числовое или элементарное числовое редактируемое данное.
Каждый литерал должен быть числовым литералом.
Композиция операндов, полученная в результате умножения операндов, выровненных по положению их десятичной точки, не должна содержать более 18 цифр.
6.20.4. О б щ и е правила
При использовании формата 1 литерал-1 или значение данного, представленного идентификаторрм-1, хранится в промежуточном данном. Затем его промежуточное данное умножается на данное, представленное идентификатором-2. Значение множителя (значение данного, представленного идентификатором-2) заменяется этим произведением; аналогично промежуточное данное умножается на каждое последующее вхождение идентификатора-2 в указанном порядке слева направо.
При использовании формата 2 литерал-1 или значение данного, представленное идентификатором-1, умножается на лите- рал-2 или значение данного, представленного идентификатором-2, а результат хранится в данном, представленном каждым иденти- фикатором-3.
Дополнительные правила и пояснения^ относящиеся к этому оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3; ч. 6, пп. 6.4.1, 6.4.2, 6.4.4—6.4.6).
6.21. Оператор PERFORM (ВЫПОЛНИСЬ)
Назначение
Оператор PERFORM (ВЫПОЛНИТЬ) используется для явной передачи управления одной или нескольким процедурам и неявного возврата управления после завершения этих процедур. Оператор PERFORM (ВЫПОЛНИТЬ) используется также для управления выполнением одного или более повелительных операторов, находящихся в области действия этого оператора PERFORM (ВЫПОЛНИТЬ).
Общий формат
Ф J THROUGH I THRU
ормат 1
PERFORM [имя-процедуры-1 [
имя-процедуры-2] ]
[повелительный-оператор-1 END-PERFORM]
ВЫПОЛНИТЬ [имя-процедуры-1 [ПО имя-процедуры-2] ]
Ф (THROUGH
I THRU
ормат 2
PERFORM [имя-процедуры-1 [
и идентификатор-1 целое-1
мя-процедуры-2] ]
TIMES [повелительный-оператор-1
END-PERFORM] ■.
ВЫПОЛНИТЬ [имя-процедуры-1 [ПО имя-процедуры-2]]
{
идентификатор-1
1 [ РАЗ целое-1 і
I
РАЗА
[повелительный-оператор-1 КОНЕЦ-ВЫПОЛНИТЬ]
Ф UNTIL условие-1
(THROUGH [THRU
ормат 3
PERFORM [имя-процедуры-1
имя-процедуры-2] ]
Г
WITH
TFQT і
BEF°RE
1
]
[WITH
test|after
[ I
[повелительный-оператор-l END-PERFORM]
ВЫПОЛНИТЬ [имя-процедуры-1 [ПО имя-процедуры-2]]
ДО условие-1
{НДЧА
ПР 1
КОНЦЕ I
[повелительный-оператор-1 КОНЕЦ-ВЫПОЛНИТЬ]
Ф I THROUGH
I THRU
ормат 4
PERFORM [имя-процедуры-
1
VARYING ! “^нтификатор-2
1 имя-индекса-1
B идентификатор-3 имя-индекса-2 литерал-1
FROM
Y I идентификатор! I UNT|L е4
имя-индекса-4 идентификатор-6 литерал-3
FROM
идентификатор-5
имя-индекса-3
AFTER
[ литерал-2 J
идентификатор-7 о
BY I , r J UNTIL условие-2
— ( литерал-4 J
[ повел ительный-оператор-1 END-PERFORM]
ВЫПОЛНИТЬ [имя-процедуры-1 [ПО имя-процедуры-2] ]
идентификатор-6 имя-индекса-4 литерал-3
идентификатор-5
имя-индекса-3
ЗАТЕМ
идентификатор-3
имя-индекса-2 литерал-1
НАЧАЛЕ)
КОНЦЕ I
С
ПРОВЕРКОЙ В
МЕНЯЯ ( Ше"™фИК2Т' ) ОТ
[ имя-индекса-1 |
„. идентификатор-4 „„ .
НА) „ ДО условие-1
[ литерал-2
11А идентификатор-7 ] о
НА { а } ДО условие-2 ...
[ литерал-4 J I
[повелительный-оператор-1 КОНЕЦ-ВЫПОЛНИТЬ]
С и н т а к с и ч е с к и е правила
Если опущено имя-процедуры-1, должны быть определены повелительный-оператор-1 и фраза END-PERFORM (КОНЕЦ- ВЫПОЛНИТЬ), если определено имя-процедуры-1, не должны употребляться повелительный-оператор-1 и фраза END-PERFORM (КОНЕЦ-ВЫПОЛНИТЬ).
При использовании формата 4, если опущено имя-проце- дуры-1, не должна употребляться фраза AFTER (ЗАТЕМ).
Если не указаны ни фраза TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ), ни фраза TEST AFTER (С ПРОВЕРКОЙ В КОНЦЕ), предполагается по умолчанию TEST BEFORE (С ПРОВЕРКОЙ В НАЧАЛЕ).
Каждый идентификатор представляет числовое элементарное данное, описанное в разделе данных. В формате 2 идентификатор-1 представляет целое числовое элементарное данное.
Каждый литерал является числовым литералом.
Если указана фраза END-PERFORM (КОНЕЦ-ВЫПОЛ- НИТЬ), оператор PERFORM (ВЫПОЛНИТЬ) является оператором с ограничителем области действия.
Если во фразе VARYING (МЕНЯЯ) или AFTER (ЗАТЕМ) указано имя-индекса, то:
идентификатор, относящийся к фразам FROM (ОТ) и BY (НА), должен представлять положительное целое;
литерал, относящийся к фразе FROM (ОТ), должен представлять положительное целое;
литерал, относящийся к фразе BY (НА), должен представлять целое, отличное от нуля.
Если во фразе FROM (ОТ) задано имя-индекса, то:
идентификатор, относящийся к фразам VARYING (МЕНЯЯ) и AFTER (ЗАТЕМ), должен представлять целое;
идентификатор, относящийся к фразе BY (НА), должен представлять целое;
литерал, относящийся к фразе BY (НА), должен представлять целое.
Литерал во фразе BY (НА) не должен равняться нулю.
Условие-1, условие-2, ... могут быть любыми условными выражениями (см. п. 6.3 настоящей части).
Если указаны и имя-процедуры-1, и имя-процедуры-2 и какое-либо из них является именем-процедуры в декларативной части программы, то оба имени-процедуры должны быть имена- ми-процедур из одной и той же секции этой части.
I (12) Допускаются до шести фраз AFTER (ЗАТЕМ) в фор- I мате 4 оператора PERFORM (ВЫПОЛНИТЬ).
Общие правила
Значения данных, на которые ссылаются идентификатор-4 и идентификатор-7, не должны быть равными нулю.
Если в фразах VARYING (МЕНЯЯ) и AFTER (ЗАТЕМ) указано имя-индекса и в соответствующей фразе FROM (ОТ) задан идентификатор, то значение данного, на которое ссылается идентификатор, должно быть положительным.
Побачили розбіжність з офіційним текстом?