Перейти до вмісту
ГОСТ 22558-89
/ 116

Общими форматами для уточнения являются:

'Формат 1

(имя-данного-11 , , г [IN ) Iпмя-файла-1 П

имя-условия-1 J і Л—• имя-данного-2}... |OF[ имя-комму- 1

1 LI ( никации-1 'J

г

(OF) (имя-файла-1 1

j имя-данното-1 (имя-условия-1


(

{ИЗ имя-данного-2} . .

I имя-файла-1 1 имя-комму- г

никации-1 J

IN 11 имя-коммуникации-1)

и ИЗ

мя-файла-1 имя-комму­

никации-1

Формат 2

(OF) имя-параграфа-1 j [ имя-секции-1

имя-параграфа-1 ИЗ имя-секции-1

Формат 3

(OF1 .

имя-текста-1 1 имя-библиотеки-1

имя-текста-1 ИЗ имя-библиотеки-1

Формат 4

LINAGE-COUNTER [qF"! имя-файла-2

СЧЕТЧИК-ВЕРСТКИ ИЗ имя-файла-2

Формат 5 (PAGE-COUNTER | (IN 1 [LINE-COUNTER } [pF і имя-отчета-1

С имя-отчета-1

ЧЕТЧИК-СТРАНИЦ 1

СЧЕТЧИК-СТРОК ЦЗ

Формат 6

имя-данного-3


IN I

0Р } имя-данного-4

IN 1 1

Орг| имя-отчета-2 J }

»

[ИЗ имя-отчета-2] 1


имя-данного-3

имя-данного-4 имя-отчета-2

Правила уточнения:

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

Имя может уточняться даже тогда, когда нет необходимос­ти в уточнении; если имеется несколько комбинаций уточнителей^ обеспечивающих однозначность, использоваться может любая из. таких комбинаций.

IN и OF являются логическими эквивалентами.

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

В формате 1 имя-данного-1 или имя-данного-2 может быть именем-записи.

Если имеется явная ссылка на имя параграфа, то имя па­раграфа не должно дублироваться внутри секции. Когда имя па­раграфа уточняется именем секции, слово SECTION (СЕКЦИЯ) опускается. Имя параграфа не нужно уточнять, если к нему обра­щаются внутри той же секции. На имя параграфа или имя сек­

ции, появляющееся в программе, нельзя ссылаться из любой дру­гой программы.

Если во время компиляции компилятору доступна более чем одна библиотека Кобола, имя текста должно уточняться при каждом обращении к нему.

Если в исходной программе имеется несколько статей опи­сания файла, содержащих фразу LINAGE (ВЕРСТКА), LINAGE- COUNTER (СЧЕТЧИК-ВЕРСТКИ) должен уточняться каждый раз при обращении к нему.

Если в исходной программе определено несколько статей описания отчета, LINE-COUNTER (СЧЕТЧИК-СТРОК) должен быть уточнен при каждом обращении к нему в разделе процедур. В секции отчетов неуточненная ссылка на LINE-COUNTER (СЧЕТ­ЧИК-СТРОК) неявно уточнена именем отчета, в статье описания которого имеется эта ссылка. При обращении к счетчику строк раз­ных отчетов, LINE-COUNTER (СЧЕТЧИК-СТРОК) должен явно уточняться соответствующим именем отчета.

Если в исходной программе определено несколько статей описания отчета, PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) дол­жен быть уточнен при каждом обращении к нему в разделе проце­дур. В секции отчетов неуточненная ссылка на PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) неявно уточнена именем отчета, в статье ■описания которого имеется эта ссылка. При обращении к счетчику страниц разных отчетов PAGE-COUNTER (СЧЕТЧИК-СТРАНИЦ) должен явно уточняться соответствующим именем отчета.

Индексирование

И аз наче ние

Индексы используются при обращении к отдельному элементу из списка или таблицы однотипных элементов, которым не постав­лены в соответствие индивидуальные имена данных (ч. 6, п. 5.8).

О б щ и й формат

ц имя-данного-1 имя-условия-1

елое-1

имя-данного-2 Ц—} целое-2] имя-индекса-1 Ц±} целое-3]

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

Статья описания данного, содержащая имя-данного-1 или имя-данного, соотнесенное имени-условия-1, должна содержать фразу OCCURS (ПОВТОРЯЕТСЯ) или должна подчиняться ста­тье описания данного, содержащей фразу OCCURS (ПОВТОРЯ­ЕТСЯ).

За исключением случаев, указанных в синтаксическом пра­виле (4), при обращении к табличному элементу количество индек­сов должно равняться числу фраз OCCURS (ПОВТОРЯЕТСЯ) в описании данного табличного элемента. При использовании не- 148

скольких индексов они записываются в порядке от старшего к младшим уровням иерархии таблицы.

Имя-индекса-1 должно соответствовать статье описания дан­ного в иерархии таблицы, содержащей фразу INDEXED (ИНДЕК­СИРУЕТСЯ), определяющую это имя-индекса.

При каждом обращении к табличному элементу должно ис­пользоваться индексирование, за исключением следующих слу­чаев:

в операторе USE FOR DEBUGGING (ИСПОЛЬЗОВАТЬ ДЛЯ ОТЛАДКИ);

в качестве субъекта в операторе SEARCH (ИСКАТЬ);

во фразе REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ);

в варианте ASCENDING/DESCENDING KEY IS (ПО ВОЗ- РАСТАНИЮ/УБЫВАНИЮ КЛЮЧА) фразы OCCURS (ПОВТО­РЯЕТСЯ).

Имя-данного-2 может уточняться и должно быть числовым элементарным данным, представляющим целое.

Целое-1 может быть со знаком; знак должен быть только положительным.

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

Значение индекса должно быть положительным целым. Наи­меньшее допустимое значение, представляемое индексом, равняет­ся 1 и оно указывает на первый элемент таблицы. Следующие за ним элементы таблицы указываются с помощью номера вхожде­ния 2, 3 Наибольший допустимый номер вхождения в каждом

отдельном случае равен максимальному числу повторений данно­го, указанному фразой OCCURS (ПОВТОРЯЕТСЯ).

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

Значение имени-индекса-1 должно устанавливаться до его использования в качестве индекса. Начальное значение имени-ин­декса может быть задано оператором PERFORM (ВЫПОЛНИТЬ) с фразой VARYING (МЕНЯЯ); оператором SEARCH (ИСКАТЬ) с фразой ALL (ОСОБО) или оператором SET (УСТАНОВИТЬ). Значение имени-индекса может изменяться только операторами PERFORM (ВЫПОЛНИТЬ), SEARCH (ИСКАТЬ) или SET (УС­ТАНОВИТЬ).

Если указано целое-2 или целое-3, значение индекса опре­деляется как номер вхождения, представленный значением име- ни-индекса-1, либо значением данного, указанного именем-данно- го-2, увеличенным на значение целого-2 или целого-3 (когда ука­зан знак арифметической операции +) или уменьшенным на значе­ние целого-2 или целого-3 (когда указан знак арифметической опе­рации —).

Модификация ссылки

Назначение

Модификация ссылки определяет данное указанием его само® левой позиции литеры и длины данного.

Общий формат

имя-данного-1 (позиция-самой-левой-литеры: [длина])

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

Имя-данного-1 должно быть именем данного, статья описа­ния которого содержит фразу об использовании USAGE IS DIS­PLAY (ДЛЯ ВЫДАЧИ).

Позиция самой лецой литеры и длина должны быть ариф­метическими выражениями.

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

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

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

Каждой литере данного, соотнесенного имени-данного-1,. приписывается порядковый номер, который равен 1 для самой ле­вой позиции и увеличивается на единицу для каждой следующей.: позиции вплоть до самой правой позиции. Если статья описания, данного для имени-данного-1 содержит фразу SIGN IS SEPARATE'. (ЗНАК ОТДЕЛЬНО), позиции знака приписывается порядковый! номер в этом данном.

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

Модификация ссылки для операнда выполняется по следу­ющим правилам:

если для операнда указано индексирование, модификация: ссылки производится сразу же после вычисления индексов;

если для операнда индексирование не указано, модификация ссылки производится тогда, когда производилось бы вычисление- индексов, если бы были указаны индексы.

Модификация ссылки создает уникальное данное, являюще­еся подстрокой данного, соотнесенного имени-данного-1. Это дан­ное определяется по следующим правилам:

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

'или равное количеству литер в данном, соотнесенном имени-данно- ІГО-1;

вычисление длины определяет размер данного, которое будет использовано в операции. Результатом вычисления длины должно быть положительное целое число, не равное нулю. Сумма позиции* самой-левой-литеры и длины минус единица должна быть меньше или равна количеству литер в данном, соотнесенном имени-данно- го-1.

Если длина не указана, создаваемое модификацией ссылки дан­ное распространяется от позиции-самой-левой-литеры (включая •ее) и до самой правой литеры (тоже включая ее) данного, соотне­сенного имени-данного-1.

Создаваемое модификацией ссылки данное рассматривает­ся как элементарное данное без фразы JUSTIFIED (СДВИНУ­ТО). Оно относится к тому же классу и категории, что и данное, •соотнесенное имени-данного-1, учитывая то обстоятельство, что класс числовой, числовой редактируемый и буквенно-цифровой •редактируемый рассматриваются как класс и категория буквенно- щифровые.

Идентификатор

Термин идентификатор используется в случае, когда имя дан- яого, дублируемое в программе, должно сопровождаться синтакси­чески правильной комбинацией уточнителей, индексов или модифи­каторов ссылки, необходимой для обеспечения однозначности «ссылки.

Общий формат идентификатора:

имя-данного-1


TN 1

ОРг)имя-данного-2

' имя-коммуни- кации-1

имя-файла-1

имя-отчета-1

имя-комму-

никации-1 имя-файла-1 имя-отчета-1

[ ({индекс} . . . ) ] [ (позиция-самой-левой-литеры: [длина]) ]

!имя-данного-1 [ИЗ имя-данного-2]... ИЗ

[ ({индекс}. . . )] [ (позиция-самой-левой-литеры: [длина])]

4Д.8.5. Имя условия

При наличии явной ссылки каждое из имен условий не должно дублироваться или должно позволять однозначное определение по­средством уточнения и (или) индексирования, за исключением слу­чаев, когда соглашения об области действия имен сами обеспечи­вают однозначность ссылок (ч. 10, п. 1.3.8).

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

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

Формат и ограничения на совместное использование уточнения и индексирования имен-условий в точности совпадают с форматом!: и ограничениями для идентификатора, при этом имя-данного-1 нужно заменить на имя-условия-1.

В общем формате и дальнейшем тексте «имя-условия» обозна­чает уточненное или индексированное имя условия, если это необ­ходимо.

Явные и неявные спецификации

Имеется четыре типа явных и неявных определений, встречаю­щихся в исходной Кобол-программе:

явные и неявные обращения (ссылки) к данным в разделе, процедур;

явные и неявные передачи управления;

явные и неявные свойства;

явные и неявные ограничители области действия.

Явные и неявные обращения к данным в- разделе процедур

Исходная Кобол-программа может явно или неявно обращать­ся к данным в операторах раздела процедур. Явное обращение име­ет место в том случае, когда имя данного, к которому происходит обращение, записывается в операторе раздела процедур или копи­руется в разделе процедур с помощью оператора COPY (КОПИ­РОВАТЬ). Неявное обращение имеет место в том случае, когда оператор раздела процедур обращается к данному без указания: его имени. Неявное обращение имеет место также во время выпол­нения оператора PERFORM (ВЫПОЛНИТЬ), когда индекс пли данное, представленное именем индекса или идентификатором во фразах VARYING, AFTER, UNTIL (МЕНЯЯ, ЗАТЕМ, ДО), уста­навливаются в начало, изменяются или вычисляются механизмом управления, относящимся к этому оператору PERFORM (ВЫПОЛ­НИТЬ). Такое неявное обращение имеет место только в том слу­чае, когда данное участвует в выполнении оператора.

Я в н ы е и неявные передачи управления

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

Язык Кобол обеспечивает явные и неявные средства передачи управления.

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

если параграф выполняется под управлением другого опе­ратора (например, PERFORM (ВЫПОЛНИТЬ), USE (ИСПОЛЬ­ЗОВАТЬ), SORT (СОРТИРОВАТЬ) и MERGE (СЛИТЬ)) и этот параграф является последним в области управляющего оператора, тогда неявная передача управления происходит от последнего опе­ратора в параграфе к механизму управления последнего выполня­емого управляющего оператора. Дальше, если параграф, выполня­емый под управлением оператора PERFORM (ВЫПОЛНИТЬ), яв- .ляется первым параграфом в области действия этого оператора PERFORM (ВЫПОЛНИТЬ), то неявная передача управления имеет место между механизмом управления, относящимся к этому оператору, и первым оператором в этом параграфе при каждой итерации выполнения параграфа;

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

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

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

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

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

Весь розділ →