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

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

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

  1. Общие файлы

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

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

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

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

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

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

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

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

  3. имя-секции.

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

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

  2. имя-текста.

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

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

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

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

  3. имя-записи.

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

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

  2. имя-класса;

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

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

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

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

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

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

  3. имя-файла;

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

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

  6. имя-записи;

  7. имя-отчета.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Организация

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

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

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

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

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

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

  1. Структура

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. заголовком следующего раздела в этой программе;

  2. заголовком раздела идентификации, который указывает на начало другой исходной программы;

  3. заголовком конца программы;

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

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

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

  1. Начальное состояние программы

Начальное состояние программы — это состояние программы в момент ее первого вызова в единице исполнения

  1. .X а р а к т е р и с т и к и программы

.(1) Инициируются внутренние данные программы, находящие­ся в секции рабочей памяти и секции коммуникаций. Если фраза VALUE (ЗНАЧЕНИЕ) используется в описании данного, это дан­ное инициируется на указанное значение.

Если данному не соответствует фраза VALUE (ЗНАЧЕНИЕ), начальное значение данного не определено.

  1. Файлы с внутренними определителями файлов, связанные с программой, не находятся в открытом состоянии.

  2. Управляющие механизмы для всех операторов PERFORM (ВЫПОЛНИТЬ), находящихся в программе, устанавливаются в свое начальное состояние.

  3. Оператор GO ТО (ПЕРЕЙТИ К), на который ссылается оператор ALTER (ИЗМЕНИТЬ), находящийся в этой же програм­ме, устанавливается в свое начальное состояние.

2.4.2-. Программы в начальном состоянии Программа находится в начальном состоянии:

  1. при первом вызове программы в единице исполнения;

  2. при первом вызове программы после выполнения опера­тора CANCEL (ОСВОБОДИТЬ) для этой программы или про­граммы, которая прямо или косвенно содержит эту программу;

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

  4. при первом вызове программы после выполнения оператора CALL (ВЫЗВАТЬ) для программы, которая имеет атрибут «на­чальная» и которая прямо или косвенно содержит данную прог­рамму.

2.Ь. Заголовок конца программы

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

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

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

END PROGRAM имя-программы.

КОНЕЦ-ПРОГРАММЫ имя-программы.

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

  1. Имя-программы должно подчиняться правилам образова­ния слов, определяемых пользователем.

  2. Имя-программы должно быть таким же, как имя-програм­мы, объявленное в предыдущем параграфе PROGRAM-ID (ПРО­ГРАММА) (п. 3.1 настоящей части).

Если параграф PROGRAM-ID (ПРОГРАММА), объяв­ляющий некоторое имя-программы, помещается между парагра­фом PROGRAM-ID (ПРОГРАММА) и заголовком конца прог

-раммы, соответственно объявляющим и ссылающимся на другое і имя-программы, заголовок конца программы, указывающий пер- ' вое имя-программы, должен предшествовать заголовку, в кото- | ром указывается второе имя-программы. і

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

  1. Заголовок конца программы должен присутствовать в ! каждой программе, которая либо содержит другую программу, ! либо содержится в другой программе. |

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

  3. Если программа, которая заканчивается заголовком кон- I ца программы, содержится в другой программе, следующий one- і ратор должен быть заголовком раздела идентификации или дру- j гим заголовком конца программы, который завершает содержа- ! щую программу. j

  4. 1 Если программа, заканчивающаяся заголовком конца про-} іграммы, не содержится в другой программе и | если следующий исходный оператор является оператором Кобола, он должен быть заголовком раздела идентификации программы, которая должна компилироваться отдельно от программы, заканчивающейся заго« ловком конца программы.