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

Сам оператор USE (ИСПОЛЬЗОВАТЬ) никогда не выпол­няется; он только определяет условия, вызывающие выполнение указанных после него процедур.

Появление имени-файла-1 в операторе USE (ИСПОЛЬЗО­ВАТЬ) не должно требовать одновременного выполнения более чем одной декларативной секции.

Слова ERROR и EXCEPTION являются синонимами и взаи­мозаменяемы.

Файлы, к которым явно или неявно обращаются в операто­ре USE (ИСПОЛЬЗОВАТЬ), могут иметь различную организацию или доступ.

Каждая из фраз INPUT (ВХОДНЫХ), OUTPUT (ВЫХОД­НЫХ), 1-0 (ВХОДНЫХ-ВЫХОДНЫХ) и EXTEND (ДОПОЛНЯ- ЕМЫХ)| может указываться лишь раз в декларативной части раз­дела процедур.

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

Декларативные процедуры могут быть включены в любую

исходную Кобол-программу, независимо от того, содержит ли эта программа другую программу или сама содержится в другой про­грамме. Декларатива вызывается тогда, когда во время выполне­ния программы выполняются условия, описанные в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе. Только одна декларатива внутри отдельно скомпилированной программы, со­держащей оператор, который вызвал уточняющее условие, вызы­вается тогда, когда выполняется какое-либо из условий, описанных в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем деклара­тиве, во время выполнения программы. Если не существует уточ­няющей декларативы в отдельно скомпилированной программе, то декларатива не выполняется.

Внутри декларативной процедуры не должно быть обраще­ний к каким-либо процедурам в недекларативной части раздела процедур.

К именам процедур, связанных с оператором USE (ИС­ПОЛЬЗОВАТЬ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только оператором PE­RFORM (ВЫПОЛНИТЬ).

Когда имя-файла-1 описано явно, то к имени-файла-1 не применяется никаких других операторов USE (ИСПОЛЬЗО­ВАТЬ).

Процедуры, связанные с оператором USE (ИСПОЛЬЗО­ВАТЬ), выполняются системой управления вводом-выводом после завершения стандартной программы ошибки ввода-вывода при-не- успешном выполнении операции ввода-вывода, если не сработают фразы AT END (В КОНЦЕ) или INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА).

При выполнении процедуры соблюдаются следующие правила: а) если указано имя-файла-1, то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ);

если указано INPUT (ВХОДНЫХ), то соответствующая про­цедура выполняется при выполнении условия, описанного в опера­торе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для ввода, или в процессе открытия для ввода, за исключением файлов, указанных именем-файла-1 в другом операторе USE (ИС­ПОЛЬЗОВАТЬ), описывающем такое же условие;

если указано OUTPUT (ВЫХОДНЫХ), то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, от­крытого для вывода, или в процессе открытия для вывода за исклю­чением файлов, указываемых именем-файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;

если указано 1-0 (ВХОДНЫХ-ВЫХОДНЫХ), то соответст­вующая процедура выполняется при выполнении условия, описан- ного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо фай­ла, открытого для ввода-вывода, или в процессе открытия для вво­да-вывода, за исключением файлов, указанных именем-файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;

если указано EXTEND (ДОПОЛНЯЕМЫХ), то соответ­ствующая процедура выполняется при выполнении условия, опи­санного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для дополнения, за исключением файлов, ука­занных именем-файла-1 в другом операторе USE (ИСПОЛЬ­ЗОВАТЬ), описывающем такое же условие.

После выполнения процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), управление передается вызывающей прог­рамме в системе управления вводом-выводом. Если значение сос­тояния ввода-вывода не указывает на критическую ошибку ввода- вывода, то система управления вводом-выводом возвращает управ­ление оператору, следующему за оператором ввода-вывода, вы­полнение которого вызвало ошибку. Если значение состояния вво­да-вывода указывает на критическую ошибку, то действие опреде­ляется реализацией (см. п. 1.3.4 настоящей части).

В процедуре, связанной с оператором USE (ИСПОЛЬЗО­ВАТЬ), не должны выполняться никакие операторы, которые мо­гут потребовать выполнения процедуры USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.

Оператор WRITE (ПИСАТЬ)

Назначение

Оператор WRITE (ПИСАТЬ) включает логическую запись в выходной или входной-выходной файл.

Общий формат

WRITE имя-записи-1 (FROM идентификатор-1]

[INVALID KEY повелительный-оператор-1]

[NOT INVALID KEY повелительный-оператор-2]

[END^WRITE]~

ПИСАТЬ имя-записи-1 [ИЗ ПОЛЯ идентификатор-1]

[ПРИ ОШИБКЕ КЛЮЧА повелительный-оператор-1]

[БЕЗ ОШИБКИ КЛЮЧА повелительный-оператор-2]

[КОНЕЦ-ПИСАТЬ]

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

Имя-записи-1 и идентификатор-1 не должны относиться к одной и той же области памяти.

Имя-записи-1 является именем логической записи в секции файлов раздела данных и может быть уточнено.

Фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) должна указываться в операторе WRITE (ПИСАТЬ) для файлов, для ко­торых не определена соответствующая процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАН­ДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ).

4.9:4. О б щ и е правила

Файл, указанный именем-файла, связанным с именем-запи- СИ-1, должен быть открыт как ВЫХОДНОЙ, ВХОДНОЙ-ВЫХОДНОЙ ] или дополняемый ко времени выполнения этого оператора (см. п. 4.4 настоящей части).

Логическая запись, включаемая в файл при успешном вы­полнении оператора WRITE (ПИСАТЬ), становится недоступной в области записи. | Исключение представляют случаи, когда имя- файла, связанное с именем-записи-1, указано в фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ). Если имя от­носится к имени-файла, указанному во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), логическая запись дос­тупна программе и как запись файла, связанного с именем-за­писи-1, и как запись других файлов, указанных в той же фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), что и соответствующий выходной файл.

Результат выполнения оператора WRITE (ПИСАТЬ) с фразой FROM (ИЗ ПОЛЯ) эквивалентен выполнению следующих операторов в указанном порядке:

оператор

MOVE идентификатор-1 ТО имя-записи-1

ПОМЕСТИТЬ идентификатор-1 В имя-записи-1 соответственно правилам, специфицированным в операторе MOVE (ПОМЕС­ТИТЬ);

тот же оператор WRITE (ПИСАТЬ) без фразы FROM (ИЗ ПОЛЯ).

После завершения выполнения оператора WRITE (ПИ­САТЬ) информация в области, указанной идентификатором-1, ос­тается доступной, даже если информация в области, указанной именем-записи-1, не является доступной [, за исключением слу­чая, специфицированного фразой SAME RECORD AREA (ОБ­ЩАЯ ОБЛАСТЬ ЗАПИСИ)~

Выполнение оператора WRITE (ПИСАТЬ) не влияет на указатель позиции файла.

Выполнение оператора WRITE (ПИСАТЬ) вызывает обнов­ление состояния ввода-вывода имени-файла, связанного с именем- записи-1 (см. п. 1.3.4 настоящей части).

При выполнении оператора WRITE (ПИСАТЬ) логическая запись передается операционной системе.

Количество позиций литер в записи, указанной именем- записи-1, не должно быть больше наибольшего или меньше наи­меньшего числа литер, допустимого фразой RECORD IS VA­RYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО ЛИТЕР), свя­занной с именем-файла, связанного с именем-записи-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 (ГЛОБАЛЬНОЕ) определена в его статье описания файла.

Если имя данного, имя файла или имя условия, объявленное в статье описания данного, не является глобальным, оно является локальным.

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

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

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

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

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

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

Весь розділ →