ГОСТ 22558-89 сторінка 70 з 116
В н е ш н и е и внутренние объекты
Обеспечение доступности данных обычно требует, чтобы в памяти хранились определенные представления данных. Определители файлов обычно требуют сохранения в памяти некоторой информации о файлах. Память, соответствующая данному или определителю файла, может быть [внешней или j внутренней по отношению к программе, в которой данный объект объявлен.
Данное или определитель файла является внешним, если память, связанная с этим объектом, соотнесена единице исполнения, а не какой-то конкретной программе внутри единицы исполнения. К внешнему объекту может обращаться любая программа в единице исполнения, которая описывает объект. Обращение ко внешнему объекту из разных программ, использующих отдельные описания объектов, —■ это всегда обращение к одному и тому же объекту. В единице исполнения имеется только одно представление внешнего объекта.
Объект является внутренним, если память, связанная с этим объектом, соотнесена только программе, которая описывает этот объект. Внешние и внутренние объекты могут иметь [ гло- бальные или)1 локальные имена.
Записи данных, описанной в секции рабочей памяти, атрибут «внешнее» присваивается путем определения фразы EXTERNAL (ВНЕШНЕЕ) в ее статье описания данного. Любое данное, описанное статьей описания данного, которая подчиняется статье, описывающей внешнюю запись, тоже получает атрибут «внешнее». 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 (КОПИРОВАТЬ), REPLACE (ЗАМЕНИТЬ) и заголовка конца программы, операторы, статьи, параграфы и секции исходной программы Кобола группируются в четыре раздела, которые располагаются в следующей последовательности.
Раздел идентификации.
Раздел оборудования.
Раздел данных.
Раздел процедур.
Конец исходной программы Кобола указывается заголовком конца программы или отсутствием дополнительных строк в исход нойпрогр а м ме.
Структура
Ниже приводится общий формат и последовательность представления статей и операторов, которые образуют исходную программу Кобола. Обобщенные термины раздел-иденти- фикации, раздел-оборудования, раздел-данных, исходная-прог- рамма и заголовок-конца — программы обозначают раздел идентификации Кобола, раздел оборудования Кобола, раздел данных Кобола, раздел процедур Кобола, исходную программу Ко-
-бола и заголовок конца программы Кобола, соответственно.
Общий формат
Раздел-идентификации
[раздел-оборудования]
[раздел-данных]
> [раздел-процедур]
[исходная-программа] ...
[заголовок-конца-программы]
Синтаксические правила
Заголовок-конца-программы должен быть указан, если:
исходная программа Кобола содержит одну или несколь- . ко других исходных программ Кобола, или
исходная программа Кобола в другой исходной программе Кобола.
Общие правила
Начало раздела в программе указывается соответствующим заголовком раздела. Конец раздела указывается одним из следующих способов:
Побачили розбіжність з офіційним текстом?