В формате 1 композиция операндов определяется в результате суммирования всех операндов данного оператора.
В формате 2 композиция операндов определяется путем использования всех операндов оператора, кроме следующих за словом GIVING (ПОЛУЧАЯ).
В формате 3 композиция операндов определяется отдельно для каждой пары соответствующих данных.
CORR (СООТВ) есть сокращение слова CORRESPONDING (СООТВЕТСТВЕННО).
Общие правила
Если используется формат 1, то значения операндов, предшествующих слову ТО (С), складываются вместе, затем сумма запоминается в промежуточном поле памяти. Значение этого промежуточного поля складывается со значением данного, определенного идентификатором-2, и результат запоминается в поле, заданном идентификатором-2. Этот процесс повторяется для каждого последующего вхождения идентификатора-2 в той же последовательности слева направо, в которой заданы вхождения идентификатора-2.
Если используется формат 2, то значения операндов, предшествующих слову GIVING (ПОЛУЧАЯ), складываются вместе, затем сумма запоминается как новое значение каждого из результирующих идентификаторов, заданных посредством идентификато- эа-З.
Если используется формат 3, данные из группы, определенной идентификатором-1, складываются с соответствующими данными из группы, определенной идентификатором-2 и запоминаются в них.
Выделение достаточного поля для выполнения вычислений без потери значащих цифр обеспечивается реализацией.
Дополнительные правила и объяснения, относящиеся к этому оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3; пп. 6.4.1—6.4.6 настоящей части).
Оператор ALTER (ИЗМЕНИТЬ)
Назначение
Оператор 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 jjj-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 (ПРИ ПЕРЕПОЛНЕНИИ) имеют место следующие правила: