1. В формате 1 композиция операндов определяется в резуль­тате суммирования всех операндов данного оператора.

  2. В формате 2 композиция операндов определяется путем ис­пользования всех операндов оператора, кроме следующих за сло­вом GIVING (ПОЛУЧАЯ).

  3. В формате 3 композиция операндов определяется отдель­но для каждой пары соответствующих данных.

  1. CORR (СООТВ) есть сокращение слова CORRESPON­DING (СООТВЕТСТВЕННО).

  1. Общие правила

  1. Если используется формат 1, то значения операндов, пред­шествующих слову ТО (С), складываются вместе, затем сумма за­поминается в промежуточном поле памяти. Значение этого проме­жуточного поля складывается со значением данного, определенно­го идентификатором-2, и результат запоминается в поле, заданном идентификатором-2. Этот процесс повторяется для каждого пос­ледующего вхождения идентификатора-2 в той же последователь­ности слева направо, в которой заданы вхождения идентифика­тора-2.

  2. Если используется формат 2, то значения операндов, пред­шествующих слову GIVING (ПОЛУЧАЯ), складываются вместе, затем сумма запоминается как новое значение каждого из резуль­тирующих идентификаторов, заданных посредством идентификато- эа-З.

  3. Если используется формат 3, данные из группы, опреде­ленной идентификатором-1, складываются с соответствующими данными из группы, определенной идентификатором-2 и запо­минаются в них.

  4. Выделение достаточного поля для выполнения вычислений без потери значащих цифр обеспечивается реализацией.

  5. Дополнительные правила и объяснения, относящиеся к это­му оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3; пп. 6.4.1—6.4.6 настоящей части).

  1. Оператор ALTER (ИЗМЕНИТЬ)

    1. Назначение

Оператор ALTER (ИЗМЕНИТЬ) модифицирует определенную ранее последовательность операторов.

Оператор ALTER (ИЗМЕНИТЬ) в настоящем стандарте явля­ется устаревшим элементом, и будет удален в следующей редак­ции стандарта.

  1. Общий формат

ALTER {имя-процедуры-1 ТО [PROCEED ТО]

имя-процедуры-2}

ИЗМЕНИТЬ {имя-процедуры-1 [ДЛЯ ПЕРЕХОДА] К

имя-процедуры-2}

  1. Синтаксические правила

  1. Имя-процедуры-1 является именем параграфа, который со­держит только одно предложение, состоящее из оператора GO ТО (ПЕРЕЙТИ) без фразы DEPENDING ON (В ЗАВИСИМОСТИ ОТ).

  2. Имя-процедуры-2 является именем параграфа или секции в разделе процедур.

  1. Общие правила

  1. Во время выполнения объектной программы оператор ALTER (ИЗМЕНИТЬ) модифицирует оператор GO ТО (ПЕРЕЙ­ТИ) в параграфе, названном имя-процедуры-1, заменяя указанное в нем имя-процедуры именем-процедуры-2. Модифицируемые опе­раторы GO ТО (ПЕРЕЙТИ) в независимых сегментах могут в не­которых случаях восстанавливаться в начальное состояние (ч. 16, п. 1.4.3).

  2. К оператору GO ТО (ПЕРЕЙТИ), указанному в секции с номером сегмента, большим или равным 50, нельзя обращаться в

операторе ALTER (ИЗМЕНИТЬ), указанном в секции с другим номером сегмента.

Все другие применения оператора ALTER (ИЗМЕНИТЬ) явля­ются допустимыми и выполняются даже тогда, когда оператор GO ТО (ПЕРЕЙТИ), на который ссылается оператор ALTER (ИЗМЕ­НИТЬ), находится в еще не вызванном для выполнения сегменте программы (ч. 16).

  1. Оператор COMPUTE (ВЫЧИСЛИТЬ)

    1. Назначение

Оператор COMPUTE (ВЫЧИСЛИТЬ) присваивает одному или нескольким данным значение арифметического выражения.

  1. Общий формат

COMPUTE {идентификатор-1 [ROUNDED]} . . . =

арифметическое-выражение-1

[ON SIZE ERROR повелительный-оператор-1]

[NOT ON SIZE ERROR повелительный-оператор-2]

[END-COMPUTE]

ВЫЧИСЛИТЬ {идентификатор-1 [ОКРУГЛЯЯ]}. . . =

арифметическое-выражение-1

[ПРИ ПЕРЕПОЛНЕНИИ повелительный-оператор-1]

[БЕЗ ПЕРЕПОЛНЕНИЯ повелительный-оператор-2] [ КОНЕЦ-ВЫЧИСЛИТЬ]~

  1. Синтаксические правила

  1. Идентификатор-1 должен ссылаться либо на элементар­ное числовое данное, либо на элементарное числовое редактиру­емое данное.

  1. О б щ и е правила

  1. Арифметическое выражение, состоящее из единственного идентификатора или литерала, позволяет установить значение идентификатора-1 равным значению идентификатора или лите­рала.

  2. Если для результата оператора указано несколько иден­тификаторов, предшествующих знаку равенства, то после вычис­ления значения арифметического выражения оно запоминается как новое значение каждого из данных, заданных посредством идентификатора-1.

  3. Оператор COMPUTE (ВЫЧИСЛИТЬ) позволяет соче­тать без ограничений на композиции операндов и результирую­щих данных арифметические операции, производимые арифмети­ческими операторами ADD (СЛОЖИТЬ), SUBTRACT (ОТ­НЯТЬ), MULTIPLY (УМНОЖИТЬ) и DIVIDE (РАЗДЕЛИТЬ).Каждая реализация определяет приемы обработки арифмети ческих выражений.

  4. Дополнительные правила и объяснения, относящиеся к этому оператору, даются в соответствующих параграфах (см. ч. 4, п. 6.4.3; пп. 6.4.1, 6.4.2 6,4.4—6.4.6 настоящей части).

  1. Оператор CONTINUE (ПРОДОЛЖИТЬ)

    1. Назначение

Оператор CONTINUE (ПРОДОЛЖИТЬ) задает отсутствие опе­рации. Он указывает, что никакой выполнимый оператор не при­сутствует.

  1. Общий формат

CONTINUE

ПРОДОЛЖИТЬ

  1. Синтаксическое правило

  1. Оператор CONTINUE (ПРОДОЛЖИТЬ) может использо­ваться в любом месте условного оператора, в котором может ис­пользоваться повелительный оператор.

  1. О б щ е е правило

  1. Оператор CONTINUE (ПРОДОЛЖИТЬ) не влияет на вы­полнение программы.

  1. Оператор DISPLAY (ВЫДАТЬ)

    1. Н а з и а ч е н и е

Оператор DISPLAY (ВЫДАТЬ) обеспечивает передачу не­большого объема данных на некоторое подходящее устройство обо­рудования.

  1. Общий формат

DISPLAY / идентификатор-1 1

1 литерал-1 J

[UPON мнемоническое-нмя-1]


[WITH NO ADVANCING]


ggjПДТР) / идентификатор-1 1

■ ( литерал-1 1

[НА мнемоническое-имя-1]


БЕЗ ПРОДВИЖЕНИЯ


6.10.3. Синтаксические правила



  1. Мнемоническое-имя-1 связывается с устройством обору­дования в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ- ИМЕНА) раздела оборудования.

  2. Если литерал-1 числовой, то он должен быть целым без знака.

  1. Общие правила

  1. В результате выполнения оператора DISPLAY (ВЫДАТЬ) значение каждого операнда передается на устройство оборудова­ния в порядке, указанном в списке. Любое преобразование дан­ных, которое может потребоваться при выводе идентификатор а-1 или литерала-1 на внешнее устройство, определяется реализацией.

  2. Размер одной передачи для каждого устройства определя­ется реализацией.

  3. Если в качестве одного йз операндов указана стандартная константа, то выдается только единственное ее вхождение.

  4. Если устройство может принимать данные такого же разме­ра, как размер передаваемого данного, то данное передается на устройство.

  5. Если устройство оборудования не может принимать данных такого размера, как размер передаваемого данного, выполняется одно из следующих действий:

  1. если размер передаваемого данного превышает размер дан­ного, которое может принять устройство за одну передачу, то дан­ное выдается на устройство, начиная с самых левых литер, выров- ненным влево , а оставшиеся данные затем передаются согласно общим правилам (4) и (5) до тех пор, пока не будут переданы все данные I . На уровне 1 разрешается только одна передача данных;

  1. если размер данного, которое может принять устройство, превышает размер передаваемого данного, передаваемое данное на принимающем устройстве запоминается выровненным влево.

  2. Если оператор DISPLAY (ВЫДАТЬ) содержит более одно­го операнда, размер пересылаемого данного определяется как сумма размеров соответствующих операндов, и значения операн­дов выдаются в последовательности, соответствующей перечисле­нию операндов без изменения положения текущей позиции внеш­него устройства при переходе на последующие операнды.

  3. I Если фраза UPON (НА) не используется, то | использу- ется стандартное выводное устройство реализации.

Если задана фраза WITH NO ADVANCING (БЕЗ ПРО­ДВИЖЕНИЯ), положение текущей позиции устройства обору­дования после вывода последнего операнда не будет автомати­чески переноситься на следующую строку либо изменяться лю­бым другим способом. Если устройство способно устанавливать текущее положение на конкретные позиции литер, оно остается позиционированным на позицию литеры, непосредственно сле­дующую за последней литерой последнего выданного операнда. Если устройство не обеспечивает установку положения текущей позиции на заданные позиции литер, можно управлять (если возможно) лишь вертикальным позиционированием. Если уст­ройство оборудования допускает наложение печати, это может вызвать такое наложение.

(9)| Если фраза WITH NO ADVANCING (БЕЗ ПРОДВИ-

I ЖЕНИН) не задана, то после того как последний операнд будет передан на устройство оборудования, положением текущей позиции устройства станет самая левая позиция следующей выво­димой устройством строки.

  1. Если устройство оборудования не поддерживает верти­кальное позиционирование, операционная система будет игнори­ровать явно или неявно заданное вертикальное позиционирование.

  1. Оператор DIVIDE (РАЗДЕЛИТЬ)

    1. Назначение

Оператор DIVIDE (РАЗДЕЛИТЬ) позволяет разделить число­вое данное и присвоить некоторым данным значения частного и остатка.

  1. Общий формат

Формат 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]

[КОНЕЦ-РАЗДЕЛИТЬ]

  1. С и нт а кс и чес к ие правил.-)

  1. Каждый идентификатор должен относиться к числовому элементарному данному, за исключением идентификаторов, указан­ных после слов GIVING (ПОЛУЧАЯ) или REMAINDER (ОСТА­

ТОК), (которые могут представлять элементарное числовое редак­тируемое данное или элементарное числовое данное.

  1. Каждый литерал должен быть числовым.

  2. Максимальный размер каждого операнда или их компози­ции не должен превышать восемнадцати десятичных цифр.

  1. Общие правила

  1. Если используется формат 1, литерал-1 или значение иден­тификатора-1 запоминается во временном данном. Далее значение идентификатора-2 делится на значение этого данного. Значение де­лимого (значение идентификатора-2) заменяется этим частным; аналогично значение каждого последующего вхождения идентифи­катора-2 делится в порядке перечисления на вышеупомянутое вре­менное данное, и полученное частное замещает значение делимого.

  2. Если используется формат 2, литерал-2 или значение иден­тификатора-2 делится на литер ал-1 или значение идентификато­ра-1. Результат запоминается в каждом вхождении идентифика­тора-3.

  3. Если используется формат 3, литерал-1 или значение иден­тификатора-1 делится на литерал-2 или значение идентификато­ра-2 и результат запоминается в каждом вхождении идентифика­тора-^

  4. Если используется формат 4, литерал-2 или значение идентификатора-2 делится на литерал-1, или значение идентифи­катора-2 и результат запоминается как значение идентификато­ра-3. Далее вычисляется остаток, и результат запоминается как значение идентификатора-4. Если идентификатор-4 индексиро­ван, индексы вычисляются непосредственно перед присваивани­ем ему значения.

  5. Если используется формат 5, литерал-1 или значение идентификатора-1 делится на литерал-2 или значение идентифи­катора-2. Далее выполнение деления продолжается как в выше­описанном формате 4.

  6. Форматы 4 и 5 используются, когда требуется запомнить остаток операции деления как значение идентификатора-4. Ос­таток в Коболе определен как результат вычитания произведе­ния частного (идентификатор-3) на делитель из делимого. Если идентификатор-3 определен как числовое редактируемое данное, для вычисления остатка используется промежуточное поле, со­держащее неотредактированное частное. Если используется фраза ROUNDED (ОКРУГЛЯЯ), для вычисления остатка ис­пользуется промежуточное поле, которое содержит неокруг­ленное частное оператора DIVIDE (РАЗДЕЛИТЬ), но с отбро­шенными избыточными позициями. Промежуточное поле опре­деляется как числовое, которое содержит столько же разрядов, такое же положение десятичной точки и то же наличие или от­сутствие знака, что и частное (идентификатор-3).

  7. Если используются форматы 4 и 5, точность остатка оп­ределяется вычислением, описанным выше. Если необходимо, при запоминании данного, представляемого идентификатором-4, производится выравнивание по десятичной точке и усечение (без округления).

  8. При использовании в форматах 4 и 5 фразы ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) имеют место следующие правила: