Перейти до вмісту
ГОСТ 22558-89
/ 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 (ОЦЕНИТЬ) описывает структуры со многими ветвлениями и соединениями. Он может вызывать оценку нескольких условий. Соответствующие действия объект­ной программы зависят от результатов этих оценок.

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →