В ы б о р представления литер и основания системы счисления
Значение числового данного может быть представлено в нескольких формах, таких как двоичная или десятичная, в зависимости от оборудования. Кроме того, имеется несколько способов представления десятичных чисел. Так как эти представления являются в действительности комбинациями битов, они обычно называются двоично-кодированной десятичной формой. Выбор основания системы счисления обычно зависит от арифметических возможностей машины. Если допустима более чем одна арифметическая форма, то выбранная форма указывается фразой об использовании. Двоично-кодированная десятичная форма используется также для представления литер и символов, которые являются буквенно-цифровыми данными. Выбор надлежащей двоично-кодированной буквенно-цифровой или двоично-кодированной десятичной формы зависит от возможностей машины и ее внешней среды.
Когда ЭВМ обеспечивает несколько значений представления данных, должен быть использован стандартный формат данных,, если описание данного не оговаривает противного. Если как внешняя среда, так и машина допускают более чем одну форму представления или если внешняя среда, соответствующая данному, отсутствует, выбор оговаривается во фразе об использовании, фразе- PICTURE (ШАБЛОН) и других фразах описания; данных. Каж- 142
дая реализация предоставляет полное объяснение возможных форм представления для ЭВМ, на которой она реализует Кобол. Метод выбора подходящей формы представления данного, используемый реализацией, позволяет программисту предвидеть и (или) управлять этим выбором.
Данное |
Класс |
Категория |
Элементарное |
Буквенный |
Буквенная |
Числовой |
Числовая |
|
Буквенно-цифровой |
Числовая редактируемая, буквенно-цифровая редактируемая, буквенно-цифровая |
|
Неэлементарное .(групповое) |
Буквенно-цифровой |
Буквенная, числовая, числовая редактируемая, буквенно-цифровая редактируемая, буквенно-цифровая |
.Под размером элементарного данного или группы данных понимается число литер в представлении данного в стандартном формате данных. Выделение данных и особенности использования могут привести к различию между этим размером и действительным -числом литер, необходимых для внутреннего представления.
А ліг е б р а и ч е с к и е знаки
, Алгебраические знаки разделяются на две категории: знак числа,, который относится к числовому данному и числовому литералу со знаком, и знак редактирования, который появляется в редактирующей фразе для установления знака данного.
. Фраза SIGN (ЗНАК) позволяет программисту задать представление знака числа. Эта фраза необязательна; если она не используется, представление знака числа определяется реализацией.
Редактирующие знаки вставляются в данное посредством использования символов фразы PICTURE (ШАБЛОН), управляемых знаком.
С т а н д а р т н ы е правила выравнивания
‘ Стандартные правила для расположения значения в поле элементарного данного зависят от категории принимающего поля. Это следующие правила:
если принимающее поле описано как числовое, то:
данное выравнивается по десятичной точке и помещается в принимающее поле с дополнением нулями или усечением при необходимости на каждом из его концов;
когда подразумеваемая десятичная точка явно не задана, данное рассматривается так, как если бы оно имело подразумеваемую десятичную точку, расположенную непосредственно за ее самой правой литерой, и было выровнено так, как указано выше;
если принимающее данное является числовым редактируемым данным, то пересылаемое данное выравнивается по десятичной точке и дополняется нулями или усекается на каждом из концов, как указано позициями литер принимающего данного; кроме того, если это требуется редактированием, замещаются ведущие нули;
если принимающее данное буквенно-цифровое (отличное от числового редактируемого данного), буквенно-цифровое редактируемое или буквенное, пересылаемое данное помещается в принимающие позиции литер выровненным по самой левой позиции литер в данном и справа дополняется пробелами или усекается при необходимости.
Если задана фраза JUSTIFIED (СДВИНУТО) для принимающего данного, перечисленные стандартные правила изменяются в соответствии с описанием для фразы JUSTIFIED (СДВИНУТО) (ч. 6, п. 5.6).
В ы р а в н и в а н и е данного для повышения эффективности объектного кода
В некоторых вычислительных машинах память организована таким образом, что существуют естественные адресуемые границы машинной памяти, например, границы слова, полуслова, байта. Способ хранения данных определяется объектной программой и нет необходимости учитывать эти естественные границы при описании данного.
Однако определенное использование данных (например, в арифметических операциях или при индексировании) может быть облегчено, если данные хранятся выровненными относительно естественных границ памяти. В частности, если части двух или нескольких данных расположены между соседними естественными границами или некоторая естественная граница дробит единое данное, для организации доступа к этим данным и их запоминания в рабочей программе могут потребоваться дополнительные машинные операции.
Данные, выровненные относительно естественных границ памяти с целью избежания дополнительных машинных операций при доступе к ним, объявляются выделенными.
Выделение может достигаться двумя путями:
применением фразы SYNCHRONIZED (ВЫДЕЛЕНО);
соответствующей естественным границам организацией данных без использования фразы SYNCHRONIZED (ВЫДЕЛЕНО).
Каждая реализация, обеспечивающая специальные виды выравнивания, должна указывать точную интерпретацию действий, подлежащих выполнению. Использование выровненных данных в группе может быть эффективным при выполнении операторов, использующих группу в качестве операнда. Каждая реализация, обеспечивающая специальные типы выравнивания данного, должна описать воздействие неявного заполнителя и семантику оператора, использующего эту группу.
Однозначность ссылок
Каждое имя, определенное пользователем в Кобол-программе, присваивается им определенному ресурсу, который будет использоваться в решении проблемы обработки данных (см. п. 4.2.2 настоящей части). Что касается использования ресурсов, оператор в Кобол-программе должен содержать ссылку, которая однозначно идентифицирует эти ресурсы.
Для гарантии однозначности ссылки имя, определенное пользователем, можно уточнять, индексировать или модифицировать ссылку согласно правилам, описанным ниже.
Когда одно и то же имя используется в отдельных программах для двух или более появлений ресурсов одного и того же типа и когда само по себе уточнение не позволяет в одной из этих программ отличить два идентично названных ресурса, тогда применяются специальные соглашения, ограничивающие область действия имен. Эти соглашения гарантируют, что ресурсы идентифицированы так, как описано в программе, содержащей ссылку (ч. 10, п. 1.3.8).
Если это не оговорено правилами для оператора, любое индексирование и модификация ссылки производятся только один раз как первая операция при выполнении оператора.
Уточнение
Каждое определенное пользователем имя, явно используемое в Кобол-программе, должно быть однозначным в силу одного из перечисленных ниже обстоятельств:
никакое другое имя не имеет идентичного написания;
имя однозначно в контексте фразы REDEFINES (ПЕРЕОПРЕДЕЛЯЕТ) (ч. 6, п. 5.10);
имя определяется внутри такой иерархии имен, что ссылка на него может быть сделана однозначной посредством упоминания одного или более старших уровней иерархии.
Старшие уровни называются уточнителями, а процесс, определяющий однозначность ссылок, называется уточнением. В исходной программе могут появляться идентичные определенные пользователем имена; однако затем должна быть установлена однозначность посредством уточнения для каждого определенного пользователем имени, на которое имеется явная ссылка, за исключением случая переопределения. Нет необходимости указывать все имеющиеся в распоряжении уточнители для установления однозначности. Зарезервированные слова, именующие специальные регистры, требуют уточнения для обеспечения однозначности всякий раз, когда исходная программа приводит к появлению более одного экземпляра какого-либо из специальных регистров. На имя параграфа или имя секции, появляющиеся в программе, нельзя ссылаться из любой другой программы;
программа содержится в другой программе либо содержит другую программу ( ч. 10, п. 1.3.8).
Независимо от вышесказанного, одно и то же имя данных не может использоваться как имя внешней записи и как имя любого другого внешнего данного в программе, содержащей другую программу или содержащейся в некоторой программе и описывающей эту внешнюю запись данных. Одно и то же имя данных не может употребляться как имя данного, обладающего свойством глобального, и как имя любого другого данного, описанного в программе, описывающей это глобальное данное.
Общими форматами для уточнения являются:
'Формат 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