к содержимому внешней записи данных можно обращаться из любой программы при условии, что запись данных описана в этой программе;
если программа содержится в другой программе, обе программы могут обращаться к данным, имеющим атрибут «глобальное» в содержащей программе или в любой программе, которая прямо или косвенно содержит содержащую программу;
механизм, с помощью которого значение параметра передается ссылкой из вызывающей программы в вызываемую программу, создает общее данное; вызываемая программа, которая может использовать другой идентификатор, может обращаться к данному в вызывающей программе.
Общие файлы
Две программы в единице исполнения могут обращаться к общим определителям файлов в следующих случаях:
к внешнему определителю файла может обращаться любая программа, которая описывает этот определитель файла;
если программа содержится в другой программе, обе программы могут обращаться к общему определителю файла, указывая соответствующее глобальное имя-файла в содержащей ^программе или в любой программе, которая прямо или косвенно содержит содержащую программу.
О б л а с т ь действия имен
Если программы прямо или косвенно содержатся в других программах, каждая программа может использовать одинаковые слова пользователя для именования объектов независимо от использования этих определенных пользователем слов другими программами (см. ч. 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 (ЗАМЕНИТЬ) и заголовка конца программы, операторы, статьи, параграфы и секции исходной программы Кобола группируются в четыре раздела, которые располагаются в следующей последовательности.
Раздел идентификации.
Раздел оборудования.
Раздел данных.
Раздел процедур.
Конец исходной программы Кобола указывается заголовком конца программы или отсутствием дополнительных строк в исход нойпрогр а м ме.
Структура
Ниже приводится общий формат и последовательность представления статей и операторов, которые образуют исходную программу Кобола. Обобщенные термины раздел-иденти- фикации, раздел-оборудования, раздел-данных, исходная-прог- рамма и заголовок-конца — программы обозначают раздел идентификации Кобола, раздел оборудования Кобола, раздел данных Кобола, раздел процедур Кобола, исходную программу Ко-
-бола и заголовок конца программы Кобола, соответственно.
Общий формат
Раздел-идентификации
[раздел-оборудования]
[раздел-данных]
> [раздел-процедур]
[исходная-программа] ...
[заголовок-конца-программы]
Синтаксические правила
Заголовок-конца-программы должен быть указан, если:
исходная программа Кобола содержит одну или несколь- . ко других исходных программ Кобола, или
исходная программа Кобола в другой исходной программе Кобола.
Общие правила
Начало раздела в программе указывается соответствующим заголовком раздела. Конец раздела указывается одним из следующих способов:
заголовком следующего раздела в этой программе;
заголовком раздела идентификации, который указывает на начало другой исходной программы;
заголовком конца программы;
физической позицией, после которой больше не появляются строки исходной программы.
Исходная программа Кобола, которая прямо или косвен- ■ но содержится в другой программе, рассматривается в этих спецификациях как отдельная программа, которая может дополнительно обращаться к некоторым ресурсам, определенным в содержащей программе.
Объектный код, получаемый в результате компиляции исходной программы, содержащейся в другой программе, рассматривается в этих спецификациях как неотъемлемая часть объектного кода, получающегося в результате компиляции со- держащей программы.
Начальное состояние программы
Начальное состояние программы — это состояние программы в момент ее первого вызова в единице исполнения
.X а р а к т е р и с т и к и программы
.(1) Инициируются внутренние данные программы, находящиеся в секции рабочей памяти и секции коммуникаций. Если фраза VALUE (ЗНАЧЕНИЕ) используется в описании данного, это данное инициируется на указанное значение.
Если данному не соответствует фраза VALUE (ЗНАЧЕНИЕ), начальное значение данного не определено.
Файлы с внутренними определителями файлов, связанные с программой, не находятся в открытом состоянии.
Управляющие механизмы для всех операторов PERFORM (ВЫПОЛНИТЬ), находящихся в программе, устанавливаются в свое начальное состояние.
Оператор GO ТО (ПЕРЕЙТИ К), на который ссылается оператор ALTER (ИЗМЕНИТЬ), находящийся в этой же программе, устанавливается в свое начальное состояние.
2.4.2-. Программы в начальном состоянии Программа находится в начальном состоянии:
при первом вызове программы в единице исполнения;
при первом вызове программы после выполнения оператора CANCEL (ОСВОБОДИТЬ) для этой программы или программы, которая прямо или косвенно содержит эту программу;
при каждом вызове программы, если она имеет атрибут «начальная»;
при первом вызове программы после выполнения оператора CALL (ВЫЗВАТЬ) для программы, которая имеет атрибут «начальная» и которая прямо или косвенно содержит данную программу.
2.Ь. Заголовок конца программы
Назначение
Заголовок конца программы указывает на конец названной исходной программы Кобола.
Общий формат
END PROGRAM имя-программы.
КОНЕЦ-ПРОГРАММЫ имя-программы.
Синтаксические правила
Имя-программы должно подчиняться правилам образования слов, определяемых пользователем.
Имя-программы должно быть таким же, как имя-программы, объявленное в предыдущем параграфе PROGRAM-ID (ПРОГРАММА) (п. 3.1 настоящей части).
Если параграф PROGRAM-ID (ПРОГРАММА), объявляющий некоторое имя-программы, помещается между параграфом PROGRAM-ID (ПРОГРАММА) и заголовком конца прог
-раммы, соответственно объявляющим и ссылающимся на другое і имя-программы, заголовок конца программы, указывающий пер- ' вое имя-программы, должен предшествовать заголовку, в кото- | ром указывается второе имя-программы. і
О б щ и е правила
Заголовок конца программы должен присутствовать в ! каждой программе, которая либо содержит другую программу, ! либо содержится в другой программе. |
Заголовок конца программы обозначает конец указанной исходной программы Кобола.
Если программа, которая заканчивается заголовком кон- I ца программы, содержится в другой программе, следующий one- і ратор должен быть заголовком раздела идентификации или дру- j гим заголовком конца программы, который завершает содержа- ! щую программу. j
1 Если программа, заканчивающаяся заголовком конца про-} іграммы, не содержится в другой программе и | если следующий исходный оператор является оператором Кобола, он должен быть заголовком раздела идентификации программы, которая должна компилироваться отдельно от программы, заканчивающейся заго« ловком конца программы.