ГОСТ 22558-89
(СТ СЭВ 6184-88,
ИСО 1989-85)
Группа П85
ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
ЯЗЫК ПРОГРАММИРОВАНИЯ КОБОЛ
Programming language COBOL
ЧАСТИ 8-17
ОКСТУ 4002
Дата введения 1991-01-01
ИНФОРМАЦИОННЫЕ ДАННЫЕ
1. РАЗРАБОТАН И ВНЕСЕН Академией наук УССР
РАЗРАБОТЧИКИ
Е.Л.Ющенко, член-корр. АН УССР (руководитель темы); Л.П.Бабенко, канд. физ.-мат. наук; Г.А.Карпенко; Н.К.Лищитович; Л.А.Мельник; М.Р.Тарановский; Г.В.Пеледов; А.С.Марков; А.А.Севастюк; Л.М.Романовская; Л.К.Загузова
2. УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Постановлением Государственного комитета СССР по стандартам от 20.12.89 N 3894
3. Срок первой проверки 1996 г.; периодичность проверки - 5 лет.
4. Стандарт полностью соответствует СТ СЭВ 6184-88
5. Стандарт полностью соответствует международному стандарту ИСО 1989-85
6. ВЗАМЕН ГОСТ 22558-77
7. ССЫЛОЧНЫЕ НОРМАТИВНО-ТЕХНИЧЕСКИЕ ДОКУМЕНТЫ
Обозначение НТД, на который дана ссылка | Номер приложения |
Приложение 1 |
______________
* На территории Российской Федерации документ не действует. Действует ГОСТ 22558-89 (настоящий стандарт), здесь и далее по тексту. - Примечание изготовителя базы данных.
(3) Результаты выполнения оператора WRITE (ПИСАТЬ) с фразой FROM (ИЗ ПОЛЯ) эквивалентны выполнению следующих операторов в указанном порядке:
а) оператор MOVE идентификатор-1 ТО имя-записи-1
(ПОМЕСТИТЬ идентификатор-1 В имя-записи-1) соответственно правилам, специфицированным в операторе MOVE (ПОМЕСТИТЬ);
б) тот же оператор WRITE (ПИСАТЬ) без фразы FROM (ИЗ ПОЛЯ).
(5) Выполнение оператора WRITE (ПИСАТЬ) не влияет на указатель позиции файла.
(6) Выполнение оператора WRITE (ПИСАТЬ) вызывает обновление состояния ввода-вывода имени-файла, связанного с именем-записи-1 (см. п.1.3.5 настоящей части).
(7) При выполнении оператора WRITE (ПИСАТЬ) логическая запись передается операционной системе.
(8) Количество позиций литер в записи, указанной именем-записи-1, не должно быть больше наибольшего или меньше наименьшего числа-литер, допустимого фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО), связанной с именем-файла, связанного с именем-записи-1. В любом случае выполнение оператора WRITE (ПИСАТЬ) неуспешно, операция записи не происходит, содержимое области записи не меняется, и состояние ввода-вывода файла, связанного с именем-записи-1, принимает значение, указывающее на причину условия (см. п.1.3.5 настоящей части). (9) Если во время выполнения оператора WRITE (ПИСАТЬ) с фразой NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ) не наступает условие конца страницы, то управление передается повелительному-оператору-2 следующим образом: а) если выполнение оператора WRITE (ПИСАТЬ) успешно, то управление передается после того, как запись записана, и после изменения состояния ввода-вывода имени-файла, связанного с именем-записи-1; б) если выполнение оператора WRITE (ПИСАТЬ) закончилось неуспешно, то управление передается после изменения состояния ввода-вывода имени-файла, связанного с именем-записи-1, и после выполнения какой-либо процедуры, специфицированной оператором USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), применимым к имени-файла, связанного с именем-записи-1. (10) Фраза END-WRITE (КОНЕЦ-ПИСАТЬ) ограничивает область действия оператора WRITE (ПИСАТЬ) (см. ч.4, п.6.4.3). |
(12) Когда последовательный файл открыт как EXTEND (ДОПОЛНЯЕМЫЙ), то в результате выполнения оператора WRITE (ПИСАТЬ) записи будут добавляться в конец файла так, как если бы файл был открыт как OUTPUT (ВЫХОДНОЙ). Если в файле есть записи, то первая запись, записанная после выполнения оператора OPEN (ОТКРЫТЬ) с фразой EXTEND (ДОПОЛНЯЕМЫЙ), является следующей после последней записи в файле. |
(13) Когда делается попытка записать запись за внешне определенными границами последовательного файла, то возникает условие ошибки и содержимое области записи остается неизменным. Происходят следующие действия:
а) значение состояния ввода-вывода для имени-файла, связанного с именем-записи-1, устанавливается в значение, указывающее на нарушение границ;
б) если для имени-файла, связанного с именем-записи-1, явно или неявно специфицирована декларатива USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), то будет выполняться эта декларативная процедура;
в) если декларатива USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ) не специфицирована явно или неявно для имени файла, связанного с именем-записи-1, то результат будет неопределенным.
(14) Если распознается конец катушки/тома и внешне определенные границы файла не превышены, то выполняются следующие операции:
а) стандартная процедура конечных меток катушки/тома;
б) смена катушки/тома. Указатель текущего тома изменяется для указания на следующую катушку/том, существующую для файла;
в) стандартная процедура начальных меток катушки/тома.
(15) Фразы ADVANCING (ПРОДВИЖЕНИЯ) позволяют управлять вертикальным позиционированием строки на печатаемой странице. Если фраза ADVANCING (ПРОДВИЖЕНИЯ) не используется, реализацией будет обеспечиваться автоматическое продвижение, как если бы пользователь указал фразу AFTER ADVANCING 1 LINE (ПОСЛЕ ПРОДВИЖЕНИЯ 1 СТРОК). Если фраза ADVANCING (ПРОДВИЖЕНИЯ) используется, продвижение обеспечивается следующим образом:
а) если целое-1 или данное, указанное идентификатором-2, положительно, то печатаемая страница продвигается на число строк, равное этому значению;
б) если значение данного, указанного идентификатором-2, отрицательно, то результаты будут неопределенными;
в) если целое-1 или значение данного, указанного идентификатором-2, равно нулю, то перемещение печатаемой страницы не происходит;
г) если указано мнемоническое-имя-1, печатаемая страница продвигается в соответствии с правилами, установленными peaлизацией для данного устройства; |
д) если используется фраза BEFORE (ДО), строка выводится до продвижения печатаемой страницы в соответствии с приведенными выше правилами;
е) если используется фраза AFTER (ПОСЛЕ), строка выводится после продвижения печатаемой страницы в соответствии с приведенными выше правилами;
ж) если во фразе ADVANCING (ПРОДВИЖЕНИЯ) указано слово PAGE (СТРАНИЦЫ) и в статье описания файла, связанного с выводимой записью, указана фраза LINAGE (ВЕРСТКА), то запись выводится до или после (в зависимости от используемой фразы) позиционирования устройства на следующую логическую страницу. Позиционирование устройства производится на первую строку, которая может быть записана на следующей логической странице в соответствии со спецификацией фразы LINAGE (ВЕРСТКА); |
(16) Если во время выполнения оператора WRITE (ПИСАТЬ) с фразой END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) достигается логический конец печатаемой страницы, выполняется повелительный-оператор-1, указанный во фразе END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ). Логический конец специфицируется фразой LINAGE (ВЕРСТКА), связанной с именем-записи. (17) Условие конца страницы возникает всякий раз, когда выполнение оператора WRITE (ПИСАТЬ) с фразой END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) вызывает печать или протяжку в области концовки тела страницы. Это происходит тогда, когда при выполнении оператора WRITE (ПИСАТЬ) LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) становится равным или большим, чем значение целого-2 или данного, представленного именем-данного-2 во фразе LINAGE (ВЕРСТКА), если они указаны. В этом случае выполняется оператор WRITE (ПИСАТЬ), а затем повелительный-оператор-1, указанный во фразе END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ). Всякий раз, когда выполнение оператора WRITE (ПИСАТЬ) (с фразой END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или без нее) не может быть удовлетворено полностью в границах тела текущей страницы, возникает условие переполнения страницы. Это происходит тогда, когда оператор WRITE (ПИСАТЬ), если бы он был выполнен, вызвал бы установку LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) на значение, превышающее значение целого-1 или данного, представленного именем-данного-1, во фразе LINAGE (ВЕРСТКА). В этом случае запись выводится на логической странице до или после (в зависимости от используемой фразы) позиционирования устройства на первую строку, которая может быть записана на следующей логической странице, в соответствии со спецификацией фразы LINAGE (ВЕРСТКА). После вывода записи и позиционирования устройства выполняется повелительный-оператор-1 фразы END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ), если она указана. Условие переполнения страницы возникает в том случае, когда в результате выполнения данного оператора WRITE (ПИСАТЬ) значение LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) одновременно превысит значение целого-2 или данного, указанного именем-данного-2 фразы LINAGE (ВЕРСТКА), и целого-1 или данного, указанного именем-данного-1 фразы LINAGE (ВЕРСТКА). |
1.1. Назначение
Модуль относительного ввода-вывода обеспечивает возможность произвольного или последовательного доступа к записям файла массовой памяти. Каждая запись относительного файла однозначно идентифицируется целой положительной величиной, указывающей относительную позицию логической записи в файле.
Уровень 1 относительного ввода-вывода обеспечивает ограниченные возможности для статьи управления файлом, статьи описания файла и статей в параграфе I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ). В разделе процедур уровень 1 относительного ввода-вывода обеспечивает ограниченные возможности операторов CLOSE (ЗАКРЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), USE (ИСПОЛЬЗОВАТЬ), WRITE (ПИСАТЬ) и полные возможности оператора DELETE (УДАЛИТЬ).
Уровень 2 относительного ввода-вывода обеспечивает полные возможности для статьи управления файлом и статей в параграфе I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ). В разделе процедур уровень 2 относительного ввода-вывода обеспечивает полные возможности операторов CLOSE (ЗАКРЫТЬ), DELETE (УДАЛИТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), START (ПОДВЕСТИ), USE (ИСПОЛЬЗОВАТЬ) и WRITE (ПИСАТЬ). |
1.3.1. Организация
Файл с относительной организацией является файлом массовой памяти, любая запись которого может быть запомнена или извлечена по значению относительного номера записи.
Концептуально файл с относительной организацией состоит из последовательной цепочки областей, каждая из которых может содержать логическую запись. Каждой из этих областей назначается относительный номер записи. Каждая логическая запись относительного файла идентифицируется относительным номером записи ее области памяти. Например, десятая запись - это запись, адресуемая относительным номером записи 10 и находящаяся в десятой области записи, независимо от того, были заполнены первые девять областей или нет.
Для получения более эффективного доступа к записям в относительном файле число позиций литер, резервируемое в запоминающей среде для хранения логической записи, может отличаться от числа позиций литер в описании этой записи в программе.
1.3.2. Методы доступа
При произвольном доступе к файлу операторы ввода-вывода применяются для доступа к записям в порядке, указанном программистом. В случае файла с относительной организацией программист указывает требуемую запись, помещая ее относительный номер в данное, определенное как относительный ключ.
При динамическом доступе программист может произвольно переходить от последовательного доступа к произвольному и наоборот, применяя соответствующие формы операторов ввода-вывода. |
1.3.3. Указатель позиции файла
Указатель позиции файла - это логическое понятие, используемое в этом документе для облегчения точной спецификации следующей записи, к которой должен осуществляться доступ при выполнении заданных операций ввода-вывода. На установку указателя позиции файла влияют только операторы CLOSE (3AКРЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ) Понятие указателя позиции файла не имеет смысла для файла, открытого для вывода .
1.3.4. Состояние ввода-вывода
Состояние ввода-вывода - это логическое понятие, характеризующееся двухсимвольным значением, которое устанавливается для указания состояния операции ввода-вывода во время выполнения операторов CLOSE (ЗАКРЫТЬ), DELETE (УДАЛИТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), или WRITE (ПИСАТЬ) перед выполнением любого повелительного оператора, связанного с этим оператором ввода-вывода, и перед выполнением любой применимой процедуры USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ). Значение состояния ввода-вывода доступно Кобол-программе посредством фразы FILE STATUS (СОСТОЯНИЕ ФАЙЛА) в статье управления файлом.
Состояние ввода-вывода определяет также, будет ли выполняться процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ). Если возникает любое условие, отличное от тех, которые определены ниже как "успешное завершение", может выполняться указанная процедура по правилам, заданным для оператора USE (ИСПОЛЬЗОВАТЬ). Если возникает одно из условий "успешное завершение", никакая процедура такого типа не будет выполняться (п.4.8 настоящей части).
Некоторые классы значений состояния ввода-вывода задают критические условия ошибки. К таким значениям относятся значения, которые начинаются с цифры 3 или 4, а также значения, начинающиеся с цифры 9, которые определяются реализацией как критические. Если значение состояния ввода-вывода для операции ввода-вывода задает такое условие ошибки, реализацией определяются действия, которые предпринимаются после выполнения применимой процедуры USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), или, если ни одна такая процедура не применима, после завершения стандартной системной процедуры обработки ошибок ввода-вывода. Состояние ввода-вывода задает одно из следующих условий, возникающих после завершения операции ввода-вывода:
(1) успешное завершение. Оператор ввода-вывода выполнился успешно;
(2) в конце. Оператор последовательного чтения был выполнен неуспешно из-за того, что возникло условие конца файла;
(3) ошибка ключа. Оператор ввода-вывода выполнен неуспешно из-за того, что возникло условие ошибки ключа;
(4) постоянная ошибка. Оператор ввода-вывода выполнен неуспешно в результате ошибки, которая исключает дальнейшую обработку файла. Выполняются все заданные процедуры обработки ошибочных ситуаций. Условие постоянной ошибки остается действующим на все последующие операции ввода-вывода файла до тех пор, пока не будут вызваны определенные реализацией средства для устранения условия постоянной ошибки;