1. В ы б о р представления литер и основания системы счисления

Значение числового данного может быть представлено в не­скольких формах, таких как двоичная или десятичная, в зависи­мости от оборудования. Кроме того, имеется несколько способов представления десятичных чисел. Так как эти представления яв­ляются в действительности комбинациями битов, они обычно на­зываются двоично-кодированной десятичной формой. Выбор ос­нования системы счисления обычно зависит от арифметических возможностей машины. Если допустима более чем одна арифмети­ческая форма, то выбранная форма указывается фразой об исполь­зовании. Двоично-кодированная десятичная форма используется также для представления литер и символов, которые являются бук­венно-цифровыми данными. Выбор надлежащей двоично-кодиро­ванной буквенно-цифровой или двоично-кодированной десятичной формы зависит от возможностей машины и ее внешней среды.

Когда ЭВМ обеспечивает несколько значений представления данных, должен быть использован стандартный формат данных,, если описание данного не оговаривает противного. Если как внеш­няя среда, так и машина допускают более чем одну форму пред­ставления или если внешняя среда, соответствующая данному, от­сутствует, выбор оговаривается во фразе об использовании, фразе- PICTURE (ШАБЛОН) и других фразах описания; данных. Каж- 142

дая реализация предоставляет полное объяснение возможных форм представления для ЭВМ, на которой она реализует Кобол. Метод выбора подходящей формы представления данного, исполь­зуемый реализацией, позволяет программисту предвидеть и (или) управлять этим выбором.

Данное

Класс

Категория

Элементарное

Буквенный

Буквенная

Числовой

Числовая

Буквенно-цифровой

Числовая редактируемая, буквенно-цифровая редак­тируемая, буквенно-цифро­вая

Неэлементарное .(групповое)

Буквенно-цифровой

Буквенная, числовая, чис­ловая редактируемая, бук­венно-цифровая редактиру­емая, буквенно-цифровая

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

  1. А ліг е б р а и ч е с к и е знаки

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

. Фраза SIGN (ЗНАК) позволяет программисту задать пред­ставление знака числа. Эта фраза необязательна; если она не ис­пользуется, представление знака числа определяется реализацией.

Редактирующие знаки вставляются в данное посредством ис­пользования символов фразы PICTURE (ШАБЛОН), управляе­мых знаком.

  1. С т а н д а р т н ы е правила выравнивания

‘ Стандартные правила для расположения значения в поле эле­ментарного данного зависят от категории принимающего поля. Это следующие правила:

  1. если принимающее поле описано как числовое, то:

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

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

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

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

Если задана фраза JUSTIFIED (СДВИНУТО) для принимаю­щего данного, перечисленные стандартные правила изменяются в соответствии с описанием для фразы JUSTIFIED (СДВИНУТО) (ч. 6, п. 5.6).

  1. В ы р а в н и в а н и е данного для повышения эффективности объектного кода

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

Однако определенное использование данных (например, в арифметических операциях или при индексировании) может быть облегчено, если данные хранятся выровненными относительно ес­тественных границ памяти. В частности, если части двух или не­скольких данных расположены между соседними естественными границами или некоторая естественная граница дробит единое данное, для организации доступа к этим данным и их запомина­ния в рабочей программе могут потребоваться дополнительные ма­шинные операции.

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

Выделение может достигаться двумя путями:

  1. применением фразы SYNCHRONIZED (ВЫДЕЛЕНО);

  2. соответствующей естественным границам организацией данных без использования фразы SYNCHRONIZED (ВЫДЕЛЕ­НО).

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

  1. Однозначность ссылок

Каждое имя, определенное пользователем в Кобол-программе, присваивается им определенному ресурсу, который будет исполь­зоваться в решении проблемы обработки данных (см. п. 4.2.2 нас­тоящей части). Что касается использования ресурсов, оператор в Кобол-программе должен содержать ссылку, которая однознач­но идентифицирует эти ресурсы.

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

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

Если это не оговорено правилами для оператора, любое индек­сирование и модификация ссылки производятся только один раз как первая операция при выполнении оператора.

  1. Уточнение

Каждое определенное пользователем имя, явно используемое в Кобол-программе, должно быть однозначным в силу одного из перечисленных ниже обстоятельств:

  1. никакое другое имя не имеет идентичного написания;

  2. имя однозначно в контексте фразы REDEFINES (ПЕРЕ­ОПРЕДЕЛЯЕТ) (ч. 6, п. 5.10);

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

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

  1. программа содержится в другой программе либо содержит другую программу ( ч. 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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ц

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

елое-1

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

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

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

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