оператор
MOVE идентификатор-1 ТО имя-записи-1
ПОМЕСТИТЬ идентификатор-1 В имя-записи-1 соответственно правилам, специфицированным в операторе MOVE (ПОМЕСТИТЬ);
тот же оператор WRITE (ПИСАТЬ) без фразы FROM (ИЗ ПОЛЯ).
После завершения выполнения оператора WRITE (ПИСАТЬ) информация в области, указанной идентификатором-1, остается доступной, даже если информация в области, указанной именем-записи-1, не является доступной [, за исключением случая, специфицированного фразой SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ)~
Выполнение оператора WRITE (ПИСАТЬ) не влияет на указатель позиции файла.
Выполнение оператора WRITE (ПИСАТЬ) вызывает обновление состояния ввода-вывода имени-файла, связанного с именем- записи-1 (см. п. 1.3.4 настоящей части)
.При выполнении оператора WRITE (ПИСАТЬ) логическая запись передается операционной системе.
Количество позиций литер в записи, указанной именем- записи-1, не должно быть больше наибольшего или меньше наименьшего числа литер, допустимого фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО ЛИТЕР), связанной с именем-файла, связанного с именем-записи-1. В любом случае выполнение оператора WRITE (ПИСАТЬ) неуспешно, операция записи не происходит, содержимое области записи не меняется, и состояние ввода-вывода файла, связанного с именем- записи-1, принимает значение, указывающее на причину возникновения условия (см. п. 1.3.4 настоящей части).
Если при выполнении оператора WRITE (ПИСАТЬ) с фразой NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) условие ошибки ключа не возникает, то управление передается повелительному- оператору-2 следующим образом:
если выполнение оператора WRITE (ПИСАТЬ) успешно, то управление передается после того, как запись записана, и после изменения состояния ввода-вывода имени-файла, связанного с именем-записи-1;
если выполнение оператора WRITE (ПИСАТЬ) неуспешно не из-за ошибки ключа, то управление передается после обновления состояния ввода-вывода для имени файла, связанного с именем-записи-1, и после выполнения процедуры, определенной оператором USE AFTER STANDARD EXCEPTION PROCEDURE (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), применимой к имени-файла, связанного с именем-записи-1,. если таковая указана.
Фраза END-WRITE (КОНЕЦ-ПИСАТЬ) ограничивает область действия оператора WRITE (ПИСАТЬ) (см. ч. 4, п. 6.4.3).
Выполнение оператора WRITE (ПИСАТЬ) вызывает передачу содержимого области записи. Система управления массовой памятью использует содержимое ключей записи таким образом, чтобы последующий доступ к записи мог базироваться на любом из этих заданных ключей записи.
Значение основного ключа должно быть уникальным для записей файла.
Данному, заданному в качестве основного ключа, требуемое значение должно присваиваться до выполнения оператора WRITE (ПИСАТЬ).
Если файл открыт для последовательного доступа, записи должны передаваться системе управления массовой памятью в порядке возрастания значений основного ключа в соответствии с основной последовательностью для файла.
Если файл открыт для дополнения, первая запись, передаваемая системе управления массовой памятью, должна иметь значение основного ключа большее, чем максимальное значение основных ключей существующих записей файла.
Если файл открыт для произвольного или динамического доступа, записи могут передаваться системе управления массовой памятью в любом заданном в программе порядке.
Если в статье описания индексного файла задана фраза ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ), значения дополнительного ключа записи могут быть не уникальными, только если для этого данного задана фраза DUPLICATES (С ДУБЛИРОВАНИЕМ). В этом случае система управления массовой памятью обеспечивает помещение записей таким образом, что, когда записи просматриваются последовательно, порядок считывания этих записей тот же, в котором они передавались системе управления массовой памятью.
Условие ошибки ключа возникает в следующих случаях: а) если при последовательном доступе файл открыт для вывода или дополнения и значение основного ключа записи не больше чем значение основного ключа предыдущей записи или
если файл открыт для вывода или ввода-вывода и значение основного ключа записи равно значению основного ключа записи, уже существующей в файле, или
если файл открыт для вывода, дополнения или ввода-вывода и значение дополнительного ключа записи, для которого не допускается дублирование, равно соответствующему данному из записи, уже существующей в файле;
когда сделана попытка писать запись вне границ, определенных для файла.
При обнаружении условия ошибки ключа выполнение оператора WRITE (ПИСАТЬ) считается неуспешным. Содержимое области записи не изменяется, а состояние ввода-вывода для имени файла, связанного с именем-записи-1, устанавливается на значение, указывающее причину этого условия. Выполнение программы продолжается в соответствии с правилами для условия ошибки ключа (см. пп. 1.3.4, 1.3.5 настоящей части).Часть 10. МОДУЛЬ МЕЖПРОГРАММНЫХ СВЯЗЕЙ
ВВЕДЕНИЕ В МОДУЛЬ МЕЖПРОГРАММНЫХ СВЯЗЕЙ
Назначение
Модуль межпрограммных связей предоставляет средства, с помощью которых программа может связываться с одной или несколькими программами. Эта связь обеспечивается: (а) возможностью передачи управления от одной программы к другой внутри единицы исполнения и (б) возможностью передачи параметров между программами, чтобы сделать определенные значения данных доступными для вызываемой программы. | Кроме того, модуль межпрограммных связей обеспечивает связь между двумя программами через использование общих данных и файлов.
Характеристика уровней
Уровень 1 модуля межпрограммных связей предоставляет средства для передачи управления одной или нескольким программам, имена которых известны во время компиляции, а также средства для использования общих данных такими программами.
Уровень 2 модуля межпрограммных связей, предусматривает средства для передачи управления одной или нескольким программам, имена которых не известны во время компиляции, а также возможность определить во время выполнения наличие памяти для программы, которой передается управление. Кроме того, уровень 2 обеспечивает внешние атрибуты, глобальные имена и вложение исходных программ.
Понятия языка
В л о ж е н н ы е исходные программы
Исходная программа Кобола — это синтаксически правильный набор операторов Кобола. Исходная программа Кобола может содержать другие исходные программы Кобола и эти содержащиеся программы могут обращаться к некоторым ресурсам программы, в которой они содержатся.
Программа В, содержащаяся внутри другой программы А, может быть прямо содержащейся или косвенно содержащейся. Программа В прямо содержится в программе А, если в программе А нет другой программы, которая тоже содержит программу В. Программа В косвенно содержится в программе А, если существует программа, содержащаяся в программе А, которая содержит программу В.
О п р е д е л и т е л ь файла
Определитель файла — это область памяти, которая содержит информацию о файле и используется для установления соответст- 536вия между именем файла и физическим файлом, а также между именем файла и связанной с ним областью записи.
Г л о б а л ь н ы е и локальные имена
Имя данного именует данное. Имя файла именует определи- тель файла. Эти имена классифицируются как [глобальные или локальные.
Глобальное имя может использоваться для обращения к объекту, с которым оно связано, из программы, в которой объявлено это глобальное имя, или из любой другой программы, которая содержится в программе, где объявляется это глобальное имя.
Локальное имя можно использовать для обращения к объекту, с которым оно связано, только из программы, в которой это локальное имя объявлено.
Некоторые имена всегда являются глобальными, некоторые имена всегда локальные; есть имена, которые могут быть локальными или глобальными в зависимости от спецификаций в программе, где эти имена объявлены.
Имя записи является глобальным, если в статье описания записи, в которой объявляется имя записи, указана фраза GLOBAL (ГЛОБАЛЬНОЕ) или в случае статьи описания записи в секции файлов фраза GLOBAL (ГЛОБАЛЬНОЕ) указана в статье описания файла для имени файла, связанного со статьей описания записи. Имя данного является глобальным, если фраза GLOBAL (ГЛОБАЛЬНОЕ) указана в статье описания данного, которой объявляется имя данного, или в другой статье, которой эта статья описания данного подчинена. Имя условия, объявленное в статье описания данного, является глобальным, если эта статья подчиняется другой статье, в которой определена фраза GLOBAL (ГЛОБАЛЬНОЕ). Однако иногда специальные правила запрещают задавать фразу GLOBAL (ГЛОБАЛЬНОЕ) для определенных статей описания данных, описания файлов или описания записей.
Имя файла является глобальным, если фраза GLOBAL (ГЛОБАЛЬНОЕ) определена в его статье описания файла.
Если имя данного, имя файла или имя условия, объявленное в статье описания данного, не является глобальным, оно является локальным.
Глобальные имена являются транзитивными для программ, содержащихся в других программах.
В н е ш н и е и внутренние объекты
Обеспечение доступности данных обычно требует, чтобы в памяти хранились определенные представления данных. Определители файлов обычно требуют сохранения в памяти некоторой информации о файлах. Память, соответствующая данному или определителю файла, может быть [внешней или j внутренней по отношению к программе, в которой данный объект объявлен.
Данное или определитель файла является внешним, если память, связанная с этим объектом, соотнесена единице исполнения, а не какой-то конкретной программе внутри единицы исполнения. К внешнему объекту может обращаться любая программа в единице исполнения, которая описывает объект. Обращение ко внешнему объекту из разных программ, использующих отдельные описания объектов, —■ это всегда обращение к одному и тому же объекту. В единице исполнения имеется только одно представление внешнего объекта.
Объект является внутренним, если память, связанная с этим объектом, соотнесена только программе, которая описывает этот объект. Внешние и внутренние объекты могут иметь [ гло- бальные или)1 локальные имена.
Записи данных, описанной в секции рабочей памяти, атрибут «внешнее» присваивается путем определения фразы EXTERNAL (ВНЕШНЕЕ) в ее статье описания данного. Любое данное, описанное статьей описания данного, которая подчиняется статье, описывающей внешнюю запись, тоже получает атрибут «внешнее». J Если запись или данное не имеет атрибута «внешнее», она является частью внутренних данных программы, в которой она описана.
Определителю файла атрибут «внешний» присваивается фразой EXTERNAL (ВНЕШНЕЕ) в соответствующей статье описа- ния файла. | Если определитель файла не имеет атрибута «внешний», он является внутренним по отношению к программе, в которой описывается соответствующее имя-файла.
Записи данных, описания которых подчиняются статье описания файла, в которой нет фразы EXTERNAL (ВНЕШНЕЕ), или статье описания сортируемого-сливаемого файла, а также любые данные, описания которых подчиняются статьям описания данных для таких записей, всегда являются внутренними по отношению к программе, описывающей имя-файла. [ Если фраза EXTERNAL (ВНЕШНЕЕ) включена в статью описания файла, записи дан- ных и данные получают атрибут «внешнее».
Записи данных, подчиненные данные и различная связанная с ними управляющая информация, которые описаны в секциях связи, коммуникаций и отчетов программы, всегда считаются внутренними по отношению к программе, описывающей эти данные. Для данных, описанных в секции связи, существуют некоторые особенности, касающиеся установления соответствия между описанными записями данных и другими данными, доступными для других программ.
Общие и начальные программы
Все программы, образующие часть единицы исполнения, могут иметь один или оба из следующих атрибутов: COMMON (ОБЩАЯ) и INITIAL (НАЧАЛЬНАЯ), или они могут не иметь этих атрибутов вообще.
Общей программой называется программа, которая несмотря на то, что она является прямо содержащейся в другой программе, может быть вызвана программой, прямо или косвенно содержащейся в этой другой программе. Атрибут «общая» присваивается путем указания фразы COMMON (ОБЩАЯ) в разделе идентификации программы. Фраза COMMON (ОБЩАЯ) облегчает написание подпрограмм, которые будут использоваться всеми программами, содержащимися в данной программе.
Начальная программа — это программа, состояние которой инициируется во время вызова. Таким образом при каждом вызове начальной программы ее состояние такое же, каким оно было при первом вызове этой программы в единице исполнения. В процессе инициации начальной программы инициируются внутренние данные программы; таким образом, данное из внутренних данных программы, описание которого содержит фразу VALUE (ЗНАЧЕНИЕ), инициируется на это указанное значение, а данное, описание которого не содержит фразу VALUE (ЗНАЧЕНИЕ), инициируется на неопределенное значение. Файлы с внутренними определителями файлов, которые связаны с программой, не находятся в открытом состоянии. Управляющие механизмы для всех операторов PERFORM (ВЫПОЛНИТЬ), находящихся в программе, устанавливаются в их начальное состояние. Атрибут «начальная» присваивается путем указания фразы INITIAL (НАЧАЛЬНАЯ) в разделе идентификации программы.
Общие данные
Две программы в единице исполнения могут обращаться к общим данным в следующих случаях: