Значение Значение

истинности истинности

it истина" }1 ложь”

Рис. 1. Вычисление уровня иерархии



и

Значение Значение

истинности пижъ”

стинности
истина ’’

Р

условие-1 OR условие-2 OR ... условие-п

(условие-1 ИЛИ условие-2 ИЛИ ... условие-п>


условие-1 AND условие-2 AND ... условие-п
(условие-1 И условие-2 И ... условие-п)


ис. 2. Вычисление уровня иерархии

Рис. 3. Вычисление выражения условие-1 OR условие-2 AND условие-3 (условие-] ИЛИ условие-2 И условие-3)

Значение Значение

истинности истинности

ложь" „ истина”



(

Рис. 4. Вычисление выражения

Значение Значение

истинности истинности

* ложь” „ „истина”

условие-] OR NOT условие-2) AND условие-3 AND условие-4 ((услэвие-1 ИЛИ НЕ условие-2) И условие-3 И условие-4)

Если фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) не задана и во время выполнения арифметической операции в арифме­тическом операторе возникает условие переполнения, значения ре­зультирующих идентификаторов не определены. Значения резуль­тирующих идентификаторов, для которых ситуация переполнения не возникала, будут такими же, как если бы ситуация переполне­ния не возникала бы ни для какого результирующего идентифика­тора. После завершения арифметических операций управление пе­редается на конец арифметического оператора, а фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ), если она и задана, игно­рируется.

Если при выполнении арифметических операций в арифметиче­ском операторе переполнения не возникает, фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), если она и задана, игнориру­ется, а управление передается на конец арифметического операто­ра или, если задана фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕ­ПОЛНЕНИЯ), повелительному оператору, определенному в этой фразе. Во втором случае выполнение продолжается в соответст« вии с правилами выполнения каждого оператора, указанного в этом повелительном операторе. Если выполняется оператор ветв­ления процедуры или условный оператор, управление передается в соответствии с правилами этого оператора, в противном случае после завершения выполнения повелительного оператора, задан­ного во фразе NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ), управление передается на конец арифметического оператора.

Если при выполнении операторов ADD (СЛОЖИТЬ) и SUBTRACT (ОТНЯТЬ) с фразой CORRESPONDING (СООТ­ВЕТСТВЕННО) хоть одна отдельная операция вырабатывает условие переполнения, повелительный-оператор фразы ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) не выполняется до тех пор, пока не завершатся все сложения или вычитания.

  1. Фраза CORRESPONDING (СООТВЕТ­СТВЕННО)

Идентификаторы групповых данных для удобства изложе­ния обозначим dx и d2. Два данных, одно из d] и одно из d2, оп­ределяются как соответствующие, если выполняются следующие условия:

  1. данное в d и данное в d2 не определяются ключевым сло­вом FILLER (ЗАПОЛНИТЕЛЬ) и имеют одно и то же имя и одни и те же уточнители вплоть до di и d2, но исключая послед­ние;

  2. в случае использования оператора MOVE CORRESPON­DING (ПОМЕСТИТЬ СООТВЕТСТВЕННО) по крайней мере одно из данных является элементарным и соответствующая пе­ресылка допустима по правилам пересылки; оба данных являют­ся элементарными числовыми данными в случае оператора ADD CORRESPONDING (СЛОЖИТЬ СООТВЕТСТВЕННО) или SUBTRACT CORRESPONDING (ОТНЯТЬ СООТВЕТСТВЕН­НО);

  3. ни di, ни d2 не могут быть описаны с номером уровня 66, 77 или 88 или с фразой USAGE IS INDEX (ДЛЯ ИНДЕКСА);

  4. данные, подчиненные di или d2 и содержащие в описании одну из фраз REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ), RENAMES (ПЕРЕИМЕНОВЫВАЕТ), OCCURS (ПОВТОРЯЕТСЯ), USA­GE IS INDEX (ДЛЯ ИНДЕКСА), или подчиненные данным, описанным с такими фразами, не рассматриваются как соответ­ствующие. Ссылки на di и d2 не могут модифицироваться;

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

  1. Арифметические операторы

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

  1. Описания операндов могут быть различными. При вычис­лении обеспечивается необходимое преобразование и выравнива­ние по десятичной точке.

  2. Максимальный размер каждого операнда — 18 десятичных цифр. Композиция операндов, представляющая собой гипотети­ческое данное, порождаемое суперпозицией указанных операндов оператора, выровненных по их десятичным точкам, не должна со­держать более 18 цифр (пп. 6.6, 6.11, 6.20, 6.26 настоящей части).

  1. Перекрывающиеся операнды

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

  1. Несколько результатов арифметических операторов

Операторы ADD (СЛОЖИТЬ), COMPUTE (ВЫЧИСЛИТЬ^! DIVIDE (РАЗДЕЛИТЬ), MULTIPLY (УМНОЖИТЬ) и SUB­TRACT (ОТНЯТЬ) могут иметь несколько результатов.

Эти операторы выполняются так, как если бы они были заданы следующим образом:

  1. оператор, при выполнении которого осуществляется доступ к данным, которые являются частью начальных вычислений этого оператора, выполняет необходимые арифметические операции или комбинирование этих данных и запоминает результат этой опера­ции в промежуточном поле памяти. Элементы, которые принимают участие в начальном вычислении, определяются правилами кон­кретных операторов;

  2. выполняется последовательность операторов, выполнение которых передает или комбинирует значение в этом промежуточ­ном поле с каждым отдельным результирующим данным. Эти опе­раторы рассматриваются, как если бы они были записаны слева направо в той же последовательности, в которой заданы множест­венные результаты.

Результат оператора

ADD а, Ь, с, ТО с, d(c), е

(СЛОЖИТЬ А, Б, М, С М, Д(М), Е) эквивалентен результатам

следующих операторов:

ADD а, Ь, с GIVING temp

ADD temp TO c

ADD temp TO d (c)

ADD temp TO e

(СЛОЖИТЬ А, Б, M ПОЛУЧАЯ пром

СЛОЖИТЬ пром С М

СЛОЖИТЬ пром С Д (М)

СЛОЖИТЬ пром С Е) и результат оператора MULTIPLY a (i) BY і, а(І) УМНОЖИТЬ А(М) НА М, А(М) эквивалентен

MOVE a (і) ТО temp

MULTIPLY temp BY і

MULTIPLY temp BY a(i)

(ПОМЕСТИТЬ A(M) в пром

УМНОЖИТЬ пром НА М

УМНОЖИТЬ пром НА А(М)

где в обоих случаях «temp» (пром) есть обозначение промежуточ­ного результата, обеспечиваемого реализацией.

  1. Несовместимые данные

Если значения данных, к которым происходит обращение в раз­деле процедур, не соответствуют классу, определенному при опи­сании этих данных с фразой PICTURE (ШАБЛОН), результат об­ращения не определен. Исключение составляет условие класса (см. п. 6.3.1.2 настоящей части).

  1. Оператор ACCEPT (ПРИНЯТЬ)

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

Оператор ACCEPT (ПРИНЯТЬ) позволяет передать неболь­шой объем информации от некоторого устройства в указанное дан­ное.

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

A

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

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

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

ПРИНЯТЬ идентификатор-1

Формат 2

ACCEPT идентификатор-2 FROM

РАТЕ ї

DAY

DAY-OF-WEEK і

TIME !



ДАТУ

Д

ПРИНЯТЬ В идентификатор-2

ЕНЬ

ДЕНЬ-НЕДЕЛИ

ВРЕМЯ

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

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

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

Формат 1

  1. Оператор ACCEPT (ПРИНЯТЬ) вызывает передачу дан­ного с указанного устройства; это данное замещает значение дан­ного, представленного идентификатором-1.

Любое преобразование данных, требуемое при их перемещении с внешнего устройства в данное, представленное идентификато­ром-1, определяется реализацией.

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

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

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

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

  2. если размер передаваемого данного превышает размер при- нимающего поля (или части принимающего поля, еще не заня- | |той передаваемым данным) , в поле принимающего данного или в оставшейся его части запоминаются только самые левые по­зиции передаваемого данного; остальные его литеры, не помещаю­щиеся в принимающем данном, игнорируются.

  1. если фраза FROM (С) не задана, то используется устрой­ство, которое определяется реализацией как стандартное.

  2. при использовании формата 2 оператор ACCEPT (ПРИ­НЯТЬ) вызывает передачу запрашиваемой информации в дан­ное, заданное идентификатором-2, согласно правилам оператора MOVE (ПОМЕСТИТЬ); дата, день, день недели и время авто­матически обеспечиваются реализацией и не описываются в Ко- бол-программе.

  3. дата содержит год столетия, месяц года и день месяца.

Последовательность кодов, представляющая DATE (ДАТУ), такова, как если бы это данное было описано как элементарное целое числовое данное размером в шесть цифр, первые две из которых представляют год столетия, следующие две — месяц, года, и последние две — число месяца. Например, дата 1 июля 1987 года изображается последовательностью цифр 870701.

  1. день содержит год столетия и порядковый номер дня в году.

Последовательность кодов, представляющая DAY (ДЕНЬ), такова, как если бы это данное было описано как элементарное целое числовое данное размером в пять цифр, первые две из ко­торых (слева направо) представляют год столетия и последние три — порядковый номер дня в году. Например, 1 июля 1987 го­да представляется последовательностью цифр 87182.

  1. Время содержит часы, минуты, секунды и сотые доли се­кунды. Время отсчитывается на 24-часовой основе, начиная от полуночи. Последовательность кодов, представляющих TIME (ВРЕМЯ), такова, как если бы это данное было описано как элементарное целое число без знака размером в 8 цифр, из ко­торых первые две (слева направо) представляют часы, следую­щие две — минуты, следующие две — секунды и последние две — сотые доли секунды. Минимальное значение данного (ВРЕМЯ) равно 00000000, максимальное — 23595999. Если сис­тема не поддерживает возможности работы с долями секунды, те разряды, которые не могут быть определены, полагаются рав­ными нулю.

  2. DAY-OF-WEEK (ДЕНЬ-НЕДЕЛИ) состоит из одного данного, содержимое которого представляет день недели. DAY- OF-WEEK (ДЕНЬ-НЕДЕЛИ) доступен Кобол-программе. как если бы он был описан в ней как элементарное целое числовое данное без знака из одной цифры.

В DAY-OF-WEEK (ДЕНЬ-НЕДЕЛИ) значением 1 задается понедельник, значением 2 вторник, . . ., 7 — воскресенье.

  1. Оператор ADD (СЛОЖИТЬ)

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

Оператор ADD (СЛОЖИТЬ) позволяет просуммировать два или более числовых операнда и запомнить результат.

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

Формат 1

ADD Г идентификатор-1 [

[ литерал-1 J

ТО {идентификатор-2 [ROUNDED]}...

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

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

[END-ADD]

СЛОЖИТЬ / идентификатор-1 j

[ литерал-1 J

С {идентификатор-2 [ОКРУГЛЯЯ]} •. •

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

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

[КОНЕЦ-СЛОЖИТЬ]

Формат 2

ADD I идентификатор-1 'І I идентификатор-2 1

[литерал-1 J ■ • ■ [литерал-2 J

GIVING {идентификатор-3 [ROUNDED]} . . .

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

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

[END-ADD]

СЛОЖИТЬ ( идентификатор-1 [ £ ( идентификатор-2 [ [литерал-1 j [литерал-2 (

ПОЛУЧАЯ {идентификатор-3 [ОКРУГЛЯЯ]} •..

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

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

[КОНЕЦ-СЛОЖИТЬ]

Формат 3

.^[CORRESPONDING]

ADD r I идентификатор-1

I С»О1К. j

TO идентификатор-2 [ROUNDED]

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

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

[END-ADD]

I СООТВЕТСТВЕННО ! ,

СЛОЖИТЬ идентификатор-! С

I CUUId і —

идентификатор-2

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

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

[КОНЕЦ-СЛОЖИТЬ]

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

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

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

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