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

Общий формат

START имя-файла-1

KEY

IS EQUAL ТО

IS =

IS GREATER THAN

IS >

IS NOT LESS THAN

IS NOT <

IS GREATER THAN OR EQUAL TO

имя-данно ro-1

IS > -

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

ПОДВЕСТИ ЗАПИСЬ имя-файла-1

<РАВЕН

БОЛЬШЕ

I имя-дэнного-1


НЕ МЕНЬШЕ

НЕ <

БОЛЬШЕ ИЛИ РАВЕН

[ПРИ ОШИБКЕ КЛЮЧА повелительный-оператор-1] [БЕЗ ОШИБКИ КЛЮЧА повелительный-оператор-2] [КОНЕЦ-ПОДВЕСТИ]

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

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

Имя-данного-1 может быть уточнено

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

Имя-данного-1, если оно задано, должно относиться к данному, указанному во фразе RELATIVE KEY (ОТНОСИ­ТЕЛЬНЫЙ КЛЮЧ) фразы ACCESS MODE (ДОСТУП) соот­ветствующей статьи управления файлом.

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

Файл, представленный именем-файла-1, ко времени вы­полнения оператора START (ПОДВЕСТИ) должен быть открыт для ввода или ввода-вывода (см. п. 4.4 настоящей части).

Если фраза KEY (КЛЮЧ) не указана, подразумевается знак отношения ЕОИАЛ (РАВЕН).

Выполнение оператора START (ПОДВЕСТИ) не изме­няет ни содержимое области записи, ни содержимое данного, представленного именем-данного, указанным во фразе DEPEN­DING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В ЗАПИ­СИ), относящейся к имени файла-1.

Сравнение, определяемое знаком отношения во фразе KEY (КЛЮЧ), проводится между ключом записи файла, пред­ставленного именем-файла-1, и данным, как указано в общем правиле (10). Применяются правила числового сравнения (см. ч. 6, п. 6.3.1.1.1).

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

Если сравнение не удовлетворяется ни для одной записи файла, возникает условие ошибки ключа, и выполнение операто­ра START (ПОДВЕСТИ) считается неуспешным.

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

Если во время выполнения оператора START (ПОДВЕС­ТИ) указатель позиции файла определяет, что необязательный входной файл отсутствует, возникает условие ошибки ключа, и выполнение оператора START (ПОДВЕСТИ) является неуспеш­ным.

Передача управления после успешного или неуспешного выполнения оператора START (ПОДВЕСТИ) зависит от нали­чия или отсутствия необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) в операторе START (ПОДВЕСТИ) (см. п. 1.3.5 нас­тоящей части).

После неуспешного выполнения оператора START (ПОД­ВЕСТИ) указатель позиции файла указывает, что правильная следующая, запись не установлена.

Фраза END-START (КОНЕЦ-ПОДВЕСТИ) ограничи­вает область действия оператора START (ПОДВЕСТИ) (см. ч. 4, п. 6.4.3).

Сравнение, описанное в общем правиле (4), использу­ет данное, представленное фразой RELATIVE KEY (ОТНОСИ­ТЕЛЬНЫЙ КЛЮЧ) фразы ACCESS MODE (ДОСТУП), отно- сящейся к имени-файла-1.

Оператор USE (ИСПОЛЬЗОВАТЬ)

Назначение

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

Общий формат

USE AFTER STANDARD \ PROCEDURE

I ERROR j

{имя-файла-1} |~j '■

INPUT ~ j

,_T OUTPUT

EXTEND і

( і

ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ

ОШИБКИ

{ {имя-файла-1} V.J |

I ВХОДНЫХ |

П ПЯ!выходных I

! входных-выходных

j ДОПОЛНЯЕМЫХ!

і _—: I

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

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

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

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

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

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

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

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

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

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

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

Когда имя-файла-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 (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вер­нувшей управление вызвавшей ее программе.

4.9. Оператор 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 (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАН­ДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ).

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

Файл, указанный именем-файла, связанным с именем-за- писи-1, должен быть открыт как OUTPUT (ВЫХОДНОЙ) : или | I EXTEND (ДОПОЛНЯЕМЫЙ) | ко времени выполнения этого оператора (см. п. 4.4 настоящей части).

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

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

оператор '

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

ПОМЕСТИТЬ идентификатор-1 В имя-записи-1

соответственно правилам, специфицированным в операторе MOVE (ПОМЕСТИТЬ);

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

После завершения выполнения оператора WRITE (ПИ­САТЬ) информация в области, указанной идентификатором-!, ос­тается доступной, даже если информация в области, указанной именем-записи-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 (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), примени­мой к имени-файла, связанного с именем-записи-1, если таковая указана.

Фраза END-WRITE (КОНЕЦ-ПИСАТЬ) ограничивает область действия оператора WRITE (ПИСАТЬ) (см. ч. 4, п. 6.4.3).

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

а) если доступ последовательный, оператор WRITE (ПИСАТЬ) передает запись системе управления массовой памятью. Первая за­пись будет иметь относительный номер записи 1, а последующие включаемые записи будут иметь номера записей 2, 3, 4, ... . Если фраза RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) бы­ла указана для имени-файла, связанного с именем-записи-1, во время выполнения оператора WRITE (ПИСАТЬ) относительный номер переданной записи будет помещен СУМП в данное, опреде­ленное как относительный ключ, согласно правилам для оператора MOVE (ПОМЕСТИТЬ) (см. ч. 6, п. 6.1.9);

б) если доступ произвольный I или динамический, относитель­ный номер, который должен быть связан с записью, находящейся в области записи, должен быть помещен перед выполнением опера­тора WRITE (ПИСАТЬ) в данное, определенное как относитель­ный ключ. При выполнении оператора WRITE (ПИСАТЬ) эта за­пись передается СУМП.

Если относительный файл открыт как дополняемый, за­писи включаются в этот файл. Первая запись, переданная сис­темой управления массовой памятью, имеет относительный но­мер записи на единицу больший, чем наибольший относитель­ный номер записи, существующей в файле. Следующие записи, переданные СУМП, имеют соответственно большие относитель­ные номера записи. Если для файла, связанного' с именем-запи­си-1, указана фраза RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ), во время выполнения оператора WRITE (ПИСАТЬ) относительный номер включаемой записи помещается СУМП в данное, являющееся относительным ключом, согласно правилам для оператора MOVE (ПОМЕСТИТЬ) (см. ч. 6, п. 6.19).

Если файл открывается как входной-выходпой и доступ произвольный J или динамический, | по оператору WRITE (ПИ­САТЬ) запись вставляется в этот файл. Относительный номер, который должен быть связан с записью, находящейся в области записи, должен быть помещен перед выполнением оператора WRITE (ПИСАТЬ) в данное, определенное как относительный ключ. При выполнении оператора WRITE (ПИСАТЬ) эта запись передается СУМП.

Условие ошибки ключа возникает в следующих случаях:

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

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

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

Часть 9. МОДУЛЬ ИНДЕКСНОГО ВВОДА ВЫВОДА

ВВЕДЕНИЕ В МОДУЛЬ ИНДЕКСНОГО ВВОДА-ВЫВОДА

Назначение

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

Характеристика уровней

Уровень 1 индексного ввода-вывода обеспечивает неполные воз­можности для статьи управления файлом, статьч описания файла и статей параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ- ВЫВОДОМ). в разделе процедур уровень 1 индексного ввода-вы­вода обеспечивает ограниченные возможности операторов CLOSE (ЗАКРЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), USE (ИС­ПОЛЬЗОВАТЬ) и WRITE (ПИСАТЬ) и полные возможности опе­ратора DELETE (УДАЛИТЬ).

Уровень 2 индексного ввода-вывода обеспечивает полные воз­можности для статьи управления файлом, статьи описания фай­ла и статей параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВО- ДОМ-ВЫВОДОМ). В разделе процедур уровень 2 индексного ввода-вывода обеспечивает полные возможности счера к р св CLOSE (ЗАКРЫТЬ), DELETE (УДАЛИТЬ), OPEN (ОТК­РЫТЬ), READ (ЧИТАТЬ), START (ПОДВЕСТИ), USE (ИС­ПОЛЬЗОВАТЬ) и WRITE (ПИСАТЬ).

Понятия языка

Организация

Файл с индексной организацией — это файл массовой памяти, доступ к записям которого может осуществляться с помощью ука­занного в записи ключа.

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

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

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

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

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

Весь розділ →