ГОСТ 22558-89 сторінка 42 з 116
Назначение
Оператор ALTER (ИЗМЕНИТЬ) модифицирует определенную ранее последовательность операторов.
Оператор ALTER (ИЗМЕНИТЬ) в настоящем стандарте является устаревшим элементом, и будет удален в следующей редакции стандарта.
Общий формат
ALTER {имя-процедуры-1 ТО [PROCEED ТО]
имя-процедуры-2}
ИЗМЕНИТЬ {имя-процедуры-1 [ДЛЯ ПЕРЕХОДА] К
имя-процедуры-2}
Синтаксические правила
Имя-процедуры-1 является именем параграфа, который содержит только одно предложение, состоящее из оператора GO ТО (ПЕРЕЙТИ) без фразы DEPENDING ON (В ЗАВИСИМОСТИ ОТ).
Имя-процедуры-2 является именем параграфа или секции в разделе процедур.
Общие правила
Во время выполнения объектной программы оператор ALTER (ИЗМЕНИТЬ) модифицирует оператор GO ТО (ПЕРЕЙТИ) в параграфе, названном имя-процедуры-1, заменяя указанное в нем имя-процедуры именем-процедуры-2. Модифицируемые операторы GO ТО (ПЕРЕЙТИ) в независимых сегментах могут в некоторых случаях восстанавливаться в начальное состояние (ч. 16, п. 1.4.3).
К оператору GO ТО (ПЕРЕЙТИ), указанному в секции с номером сегмента, большим или равным 50, нельзя обращаться в
операторе ALTER (ИЗМЕНИТЬ), указанном в секции с другим номером сегмента.
Все другие применения оператора ALTER (ИЗМЕНИТЬ) являются допустимыми и выполняются даже тогда, когда оператор GO ТО (ПЕРЕЙТИ), на который ссылается оператор ALTER (ИЗМЕНИТЬ), находится в еще не вызванном для выполнения сегменте программы (ч. 16).
Оператор COMPUTE (ВЫЧИСЛИТЬ)
Назначение
Оператор COMPUTE (ВЫЧИСЛИТЬ) присваивает одному или нескольким данным значение арифметического выражения.
Общий формат
COMPUTE {идентификатор-1 [ROUNDED]} . . . =
арифметическое-выражение-1
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2]
[END-COMPUTE]
ВЫЧИСЛИТЬ {идентификатор-1 [ОКРУГЛЯЯ]}. . . =
арифметическое-выражение-1
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1]
[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2] [ КОНЕЦ-ВЫЧИСЛИТЬ]~
Синтаксические правила
Идентификатор-1 должен ссылаться либо на элементарное числовое данное, либо на элементарное числовое редактируемое данное.
О б щ и е правила
Арифметическое выражение, состоящее из единственного идентификатора или литерала, позволяет установить значение идентификатора-1 равным значению идентификатора или литерала.
Если для результата оператора указано несколько идентификаторов, предшествующих знаку равенства, то после вычисления значения арифметического выражения оно запоминается как новое значение каждого из данных, заданных посредством идентификатора-1.
Оператор COMPUTE (ВЫЧИСЛИТЬ) позволяет сочетать без ограничений на композиции операндов и результирующих данных арифметические операции, производимые арифметическими операторами ADD (СЛОЖИТЬ), SUBTRACT (ОТНЯТЬ), MULTIPLY (УМНОЖИТЬ) и DIVIDE (РАЗДЕЛИТЬ).
Каждая реализация определяет приемы обработки арифмети ческих выражений.
Дополнительные правила и объяснения, относящиеся к этому оператору, даются в соответствующих параграфах (см. ч. 4, п. 6.4.3; пп. 6.4.1, 6.4.2 6,4.4—6.4.6 настоящей части).
Оператор CONTINUE (ПРОДОЛЖИТЬ)
Назначение
Оператор CONTINUE (ПРОДОЛЖИТЬ) задает отсутствие операции. Он указывает, что никакой выполнимый оператор не присутствует.
Общий формат
CONTINUE
ПРОДОЛЖИТЬ
Синтаксическое правило
Оператор CONTINUE (ПРОДОЛЖИТЬ) может использоваться в любом месте условного оператора, в котором может использоваться повелительный оператор.
О б щ е е правило
Оператор CONTINUE (ПРОДОЛЖИТЬ) не влияет на выполнение программы.
Оператор DISPLAY (ВЫДАТЬ)
Н а з и а ч е н и е
Оператор DISPLAY (ВЫДАТЬ) обеспечивает передачу небольшого объема данных на некоторое подходящее устройство оборудования.
Общий формат
DISPLAY / идентификатор-1 1
1 литерал-1 J
[UPON мнемоническое-нмя-1]
[WITH NO ADVANCING]
ggjПДТР) / идентификатор-1 1
■ ( литерал-1 1
[НА мнемоническое-имя-1]
БЕЗ ПРОДВИЖЕНИЯ
6.10.3. Синтаксические правила
Мнемоническое-имя-1 связывается с устройством оборудования в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ- ИМЕНА) раздела оборудования.
Если литерал-1 числовой, то он должен быть целым без знака.
Общие правила
В результате выполнения оператора DISPLAY (ВЫДАТЬ) значение каждого операнда передается на устройство оборудования в порядке, указанном в списке. Любое преобразование данных, которое может потребоваться при выводе идентификатор а-1 или литерала-1 на внешнее устройство, определяется реализацией.
Размер одной передачи для каждого устройства определяется реализацией.
Если в качестве одного йз операндов указана стандартная константа, то выдается только единственное ее вхождение.
Если устройство может принимать данные такого же размера, как размер передаваемого данного, то данное передается на устройство.
Если устройство оборудования не может принимать данных такого размера, как размер передаваемого данного, выполняется одно из следующих действий:
если размер передаваемого данного превышает размер данного, которое может принять устройство за одну передачу, то данное выдается на устройство, начиная с самых левых литер, выров- ненным влево , а оставшиеся данные затем передаются согласно общим правилам (4) и (5) до тех пор, пока не будут переданы все данные I . На уровне 1 разрешается только одна передача данных;
если размер данного, которое может принять устройство, превышает размер передаваемого данного, передаваемое данное на принимающем устройстве запоминается выровненным влево.
Если оператор DISPLAY (ВЫДАТЬ) содержит более одного операнда, размер пересылаемого данного определяется как сумма размеров соответствующих операндов, и значения операндов выдаются в последовательности, соответствующей перечислению операндов без изменения положения текущей позиции внешнего устройства при переходе на последующие операнды.
I Если фраза UPON (НА) не используется, то | использу- ется стандартное выводное устройство реализации.
Если задана фраза WITH NO ADVANCING (БЕЗ ПРОДВИЖЕНИЯ), положение текущей позиции устройства оборудования после вывода последнего операнда не будет автоматически переноситься на следующую строку либо изменяться любым другим способом. Если устройство способно устанавливать текущее положение на конкретные позиции литер, оно остается позиционированным на позицию литеры, непосредственно следующую за последней литерой последнего выданного операнда. Если устройство не обеспечивает установку положения текущей позиции на заданные позиции литер, можно управлять (если возможно) лишь вертикальным позиционированием. Если уст
ройство оборудования допускает наложение печати, это может вызвать такое наложение.
(9)| Если фраза WITH NO ADVANCING (БЕЗ ПРОДВИ-
I ЖЕНИН) не задана, то после того как последний операнд будет передан на устройство оборудования, положением текущей позиции устройства станет самая левая позиция следующей выводимой устройством строки.
Если устройство оборудования не поддерживает вертикальное позиционирование, операционная система будет игнорировать явно или неявно заданное вертикальное позиционирование.
Оператор DIVIDE (РАЗДЕЛИТЬ)
Назначение
Оператор DIVIDE (РАЗДЕЛИТЬ) позволяет разделить числовое данное и присвоить некоторым данным значения частного и остатка.
Общий формат
Формат 1
DIVIDE [ идентификатор-1 1 jj\j-pQ {идентификатор-2
( литерал-1 J
[ROUNDED]} .. .
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2] [END-DIVIDE]
РАЗДЕЛИТЬ HA / идентификатор-1 1 {идентификатор-2 [литерал-1 J
[ОКРУГЛЯЯ]}...
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-Г]
[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2] [КОНЕЦ-РАЗДЕЛИТЬ] ~
Формат 2
DIVIDE Г идентификатор-1 ) INTO [ идентификатор-2
[литерал-1 J [литерал-2
GIVING {идентификатор-3 [ROUNDED]}... [ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2] [END-DIVIDE]
РАЗДЕЛИТЬ НА [ иДентиФикатор-1 И идентификатор-2 1
[ литерал-1 ) [ литерал-2 J
ПОЛУЧАЯ {идентификатор-3 [ОКРУГЛЯЯ]}...
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1 ]
[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2] [КОНЕЦ-РАЗДЕЛИТЬ]"
Формат 3
DIVIDE [ идентификатор-1 1 gy ( идентификатор-2 )
[литерал-1 )—— [литерал-2 J
GIVING {идентификатор-3 [ROUNDED]} . . .
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2]
[END-DIVIDE]
РАЗДЕЛИТЬ [ идентификатор-1 { f идентификатор-2 1
[литерал-1 J [ дитерал-2 J
ПОЛУЧАЯ {идентификатор-3 [ОКРУГЛЯЯ]} • ..
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1]
[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]
[ КОНЕЦ-РАЗДЕЛИТЬ]
Формат 4
DIVIDE I идентификатор-1 [into/ идентификатор-2 I
[литерал-1 / [литерал-2 J
GIVING идентификатор-3 [ROUNDED]
REMAINDER идентификатор-4
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR повелительный-оператор-2]
[END-DIVIDE
РАЗДЕЛИТЬ HA [ идентификатор-1 If идентификатор-2 ]
[ литерал-1 J [литерал-2 J
ПОЛУЧАЯ идентификатор-3 [ОКРУГЛЯЯ]
ОСТАТОК идентификатор-4
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1 ]
[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2] [КОНЕЦ-РАЗДЕЛИТЬ]
Формат 5
DIVIDE Г иДентиФикатор-1 1 BY / идентификатор-2 1
[литерал-1 J [литерал-2 J
GIVING идентификатор-3
REMAINDER идентификатор-4
[ON SIZE ERROR повелительный-оператор-1]
[NOT ON SIZE ERROR іповелйтельный-оператор-2] [END-DIVIDE]
РАЗДЕЛИТЬ f идентификатор-1 1 нА f идентификатор-2
[ литерал-1 J ( литерал-2
ПОЛУЧАЯ идентификатор-3 [ОКРУГЛЯЯ] ОСТАТОК идентификатор-4
[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1] [БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2]
[КОНЕЦ-РАЗДЕЛИТЬ]
С и нт а кс и чес к ие правил.-)
Каждый идентификатор должен относиться к числовому элементарному данному, за исключением идентификаторов, указанных после слов GIVING (ПОЛУЧАЯ) или REMAINDER (ОСТА
ТОК), (которые могут представлять элементарное числовое редактируемое данное или элементарное числовое данное.
Каждый литерал должен быть числовым.
Максимальный размер каждого операнда или их композиции не должен превышать восемнадцати десятичных цифр.
Общие правила
Если используется формат 1, литерал-1 или значение идентификатора-1 запоминается во временном данном. Далее значение идентификатора-2 делится на значение этого данного. Значение делимого (значение идентификатора-2) заменяется этим частным; аналогично значение каждого последующего вхождения идентификатора-2 делится в порядке перечисления на вышеупомянутое временное данное, и полученное частное замещает значение делимого.
Если используется формат 2, литерал-2 или значение идентификатора-2 делится на литер ал-1 или значение идентификатора-1. Результат запоминается в каждом вхождении идентификатора-3.
Если используется формат 3, литерал-1 или значение идентификатора-1 делится на литерал-2 или значение идентификатора-2 и результат запоминается в каждом вхождении идентификатора-^
Если используется формат 4, литерал-2 или значение идентификатора-2 делится на литерал-1, или значение идентификатора-2 и результат запоминается как значение идентификатора-3. Далее вычисляется остаток, и результат запоминается как значение идентификатора-4. Если идентификатор-4 индексирован, индексы вычисляются непосредственно перед присваиванием ему значения.
Если используется формат 5, литерал-1 или значение идентификатора-1 делится на литерал-2 или значение идентификатора-2. Далее выполнение деления продолжается как в вышеописанном формате 4.
Форматы 4 и 5 используются, когда требуется запомнить остаток операции деления как значение идентификатора-4. Остаток в Коболе определен как результат вычитания произведения частного (идентификатор-3) на делитель из делимого. Если идентификатор-3 определен как числовое редактируемое данное, для вычисления остатка используется промежуточное поле, содержащее неотредактированное частное. Если используется фраза ROUNDED (ОКРУГЛЯЯ), для вычисления остатка используется промежуточное поле, которое содержит неокругленное частное оператора DIVIDE (РАЗДЕЛИТЬ), но с отброшенными избыточными позициями. Промежуточное поле определяется как числовое, которое содержит столько же разрядов, такое же положение десятичной точки и то же наличие или отсутствие знака, что и частное (идентификатор-3).
Если используются форматы 4 и 5, точность остатка определяется вычислением, описанным выше. Если необходимо, при запоминании данного, представляемого идентификатором-4, производится выравнивание по десятичной точке и усечение (без округления).
При использовании в форматах 4 и 5 фразы ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) имеют место следующие правила:
если имеет место переполнение частного и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение остатка не определено. При этом значения данных, определяемых идентификатором-3 и идентификатором-4, остаются неизменными;
если имеет место переполнение остатка и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение данного, представленного идентификатором-4, не меняется. При наличии нескольких результатов пользователь должен сам определить, какая именно ситуация встретилась.
Дополнительные правила и объяснения, относящиеся к этому оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3 , а также ч. 6, пп. 6.4.1, 6.4.2, 6.4.4—6.4.6)|.
Оператор ENTER (ВОЙТИ)
Назначение
Оператор ENTER (ВОЙТИ) обеспечивает возможность использования в одной и той же программе нескольких языков программирования.
Оператор ENTER (ВОЙТИ) является устаревшим элементом в этом стандарте и будет удален из следующей редакции стандарта.
Общий формат
ENTER имя-языка-1 [имя-программного-модуля-1].
ВОЙТИ В имя-языка-1 [имя-программного-модуля-1].
С и н т а к с и ч е с к и е правила
Имя-языка может относиться к любому из языков программирования, определенных реализацией как языки, в которые можно войти через Кобол. Имя-языка-1 определяется реализацией.
Имя-программного-модуля-1 является словом Кобола, к которому можно обращаться только в операторе ENTER (ВОЙТИ).
После последнего оператора другого языка должно следовать предложение ENTER COBOL (ВОЙТИ В КОБОЛ), указывающее компилятору точку возврата в исходную Кобол-программу.
Общие правила
Операторы другого языка выполняются в объектной программе так, как если бы они компилировались в объектную программу вслед за оператором ENTER (ВОЙТИ).
Все детали записи в других языках определяются реализацией.
Если операторы языка, указанного именем-языка, не могут быть записаны непосредственно вслед за оператором ENTER (ВОЙТИ), то имя-программного-модуля указывает порцию программы в этом языке, выполняемую в данном месте программы. Если указанные операторы могут быть приведены непосредственно, имя-программного-модуля-1 не указывается.
Оператор EVALUATE (ОЦЕНИТЬ)
Н а з н а ч е н и е
Оператор EVALUATE (ОЦЕНИТЬ) описывает структуры со многими ветвлениями и соединениями. Он может вызывать оценку нескольких условий. Соответствующие действия объектной программы зависят от результатов этих оценок.
Побачили розбіжність з офіційним текстом?