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

В н е ш н и е и внутренние объекты

Обеспечение доступности данных обычно требует, чтобы в па­мяти хранились определенные представления данных. Определи­тели файлов обычно требуют сохранения в памяти некоторой ин­формации о файлах. Память, соответствующая данному или опре­делителю файла, может быть [внешней или j внутренней по отно­шению к программе, в которой данный объект объявлен.

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

Объект является внутренним, если память, связанная с этим объектом, соотнесена только программе, которая описывает этот объект. Внешние и внутренние объекты могут иметь [ гло- бальные или)1 локальные имена.

Записи данных, описанной в секции рабочей памяти, атрибут «внешнее» присваивается путем определения фразы EXTER­NAL (ВНЕШНЕЕ) в ее статье описания данного. Любое дан­ное, описанное статьей описания данного, которая подчиняется статье, описывающей внешнюю запись, тоже получает атрибут «внешнее». J Если запись или данное не имеет атрибута «внеш­нее», она является частью внутренних данных программы, в кото­рой она описана.

Определителю файла атрибут «внешний» присваивается фра­зой EXTERNAL (ВНЕШНЕЕ) в соответствующей статье описа- ния файла. | Если определитель файла не имеет атрибута «внеш­ний», он является внутренним по отношению к программе, в кото­рой описывается соответствующее имя-файла.

Записи данных, описания которых подчиняются статье описа­ния файла, в которой нет фразы EXTERNAL (ВНЕШНЕЕ), или статье описания сортируемого-сливаемого файла, а также любые данные, описания которых подчиняются статьям описания данных для таких записей, всегда являются внутренними по отношению к программе, описывающей имя-файла. [ Если фраза EXTERNAL (ВНЕШНЕЕ) включена в статью описания файла, записи дан- ных и данные получают атрибут «внешнее».

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

Общие и начальные программы

Все программы, образующие часть единицы исполнения, мо­гут иметь один или оба из следующих атрибутов: COMMON (ОБЩАЯ) и INITIAL (НАЧАЛЬНАЯ), или они могут не иметь этих атрибутов вообще.

Общей программой называется программа, которая несмот­ря на то, что она является прямо содержащейся в другой про­грамме, может быть вызвана программой, прямо или косвенно содержащейся в этой другой программе. Атрибут «общая» при­сваивается путем указания фразы COMMON (ОБЩАЯ) в раз­деле идентификации программы. Фраза COMMON (ОБЩАЯ) облегчает написание подпрограмм, которые будут использовать­ся всеми программами, содержащимися в данной программе.

Начальная программа — это программа, состояние которой инициируется во время вызова. Таким образом при каждом вы­зове начальной программы ее состояние такое же, каким оно было при первом вызове этой программы в единице исполнения. В процессе инициации начальной программы инициируются внут­ренние данные программы; таким образом, данное из внутрен­них данных программы, описание которого содержит фразу VALUE (ЗНАЧЕНИЕ), инициируется на это указанное значе­ние, а данное, описание которого не содержит фразу VALUE (ЗНАЧЕНИЕ), инициируется на неопределенное значение. Фай­лы с внутренними определителями файлов, которые связаны с программой, не находятся в открытом состоянии. Управляющие механизмы для всех операторов PERFORM (ВЫПОЛНИТЬ), находящихся в программе, устанавливаются в их начальное сос­тояние. Атрибут «начальная» присваивается путем указания фразы INITIAL (НАЧАЛЬНАЯ) в разделе идентификации про­граммы.

Общие данные

Две программы в единице исполнения могут обращаться к об­щим данным в следующих случаях:

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

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

бальное» в содержащей программе или в любой программе, ко­торая прямо или косвенно содержит содержащую программу;

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

Общие файлы

Две программы в единице исполнения могут обращаться к общим определителям файлов в следующих случаях:

к внешнему определителю файла может обращаться лю­бая программа, которая описывает этот определитель файла;

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

О б л а с т ь действия имен

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

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

имя-коммуникации;

имя-параграфа;

имя-секции.

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

имя-библиотеки;

имя-текста.

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

pax и объектах только той программы, которая содержит эту сек­цию:

имя-условия;

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

имя-записи.

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

имя-алфавита;

имя-класса;

имя-условия;

мнемоническое-имя;

символическая-литера.

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

имя-условия;

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

имя-файла;

имя-индекса;

имя-программы;

имя-записи;

имя-отчета.

Соглашения для имен программ

Имя программы объявляется в параграфе PROGRAM- ID (ПРОГРАММА) раздела идентификации программы. На имя программы можно ссылаться только в операторах CALL (ВЫЗ­ВАТЬ) J, CANCEL (ОСВОБОДИТЬ) | и заголовке конца програм- мы END-PROGRAM (КОНЕЦ ПРОГРАММЫ). (Имена, прис- ваиваемые программам, которые образуют единицу исполнения, не обязаны быть уникальными, однако, когда две программы в единице исполнения имеют одинаковые имена, хотя бы одна из этих двух программ должна прямо или косвенно содержать­ся в другой отдельно компилируемой программе, которая не со- держит вторую из этих двух программ,

Область действия имени программы определяется следующи­ми правилами:

если имя представляет имя программы, которая не име- ; ет атрибут «общая» и которая прямо содержится в другой про­грамме, оно может быть указано только в операторах, входя­щих в содержащую программу;

если имя представляет имя программы, которая имеет атрибут «общая» и прямо содержится в другой программе, на

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

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

Соглашения для имен условий, имен данных, имен фай­лов, имен записей и имен отчетов.

Если имена условий, имена данных, имена файлов, имена запи­сей и имена отчетов объявлены в исходной программе, на эти име­на можно ссылаться только в этой программе |~ за исключением случая, когда одно или несколько из этих имен являются глобаль- ными и программа содержит другие программы!~

Требования к уникальности имен, определенных в одной прог­рамме в качестве имен условий, имен данных, имен файлов, имен записей и имен отчетов объясняются в других параграфах этих спецификаций (см. ч. 4, п. 4.2.2.1.1).

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

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

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

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

если идентифицируется только один объект, он является і объектом, к которому обращаются;

если идентифицируется несколько объектов, максимум один из них может иметь имя, локальное по отношению к прог­рамме В1. Если ни один или один из объектов имеет имя, ло­кальное по отношению к В1, применяются следующие правила:

если имя объявлено в программе В1, объект в программе В1 является объектом, к которому обращаются;

в остальных случаях, если программа А содержится в другой программе, объектом, к которому обращаются, является:

объект в программе А, если имя объявлено в програм­ме А;

объект в содержащей программе, если имя объявлено не- в программе А, а в программе, содержащей программу А.

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

1.3.8.3. Соглашения для имен индексов

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

ВЛОЖЕННЫЕ ИСХОДНЫЕ ПРОГРАММЫ

Общее описание

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

Организация

За исключением операторов COPY (КОПИРОВАТЬ), RE­PLACE (ЗАМЕНИТЬ) и заголовка конца программы, операто­ры, статьи, параграфы и секции исходной программы Кобола группируются в четыре раздела, которые располагаются в сле­дующей последовательности.

Раздел идентификации.

Раздел оборудования.

Раздел данных.

Раздел процедур.

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

Структура

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

-бола и заголовок конца программы Кобола, соответственно.

Общий формат

Раздел-идентификации

[раздел-оборудования]

[раздел-данных]

> [раздел-процедур]

[исходная-программа] ...

[заголовок-конца-программы]

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

Заголовок-конца-программы должен быть указан, если:

исходная программа Кобола содержит одну или несколь- . ко других исходных программ Кобола, или

исходная программа Кобола в другой исходной програм­ме Кобола.

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

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

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

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

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

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

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

Весь розділ →