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

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

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

Оператор OPEN (ОТКРЫТЬ)

Назначение

Оператор OPEN (ОТКРЫТЬ) подготавливает файл к обра­ботке.

Общий формат

{ INPUT {имя-файла-1}... 1

OUTPUT {имя-файла-2}... I

OPEN ЬО {имя-файла-3} ... } ...

[EXTEND {имя-файла-4}.. |

ВХОДНОЙ {имя-файла-1} ... j

ВЫХОДНОЙ {имя-файла-2}... |

ОТКРЫТЬ ’ ВХОДНОЙ-ВЫХОДНОЙ {имя-файла-3} ... j ...

I і

''ДОПОЛНЯЕМЫЙ {имя-файла-4}... j

I 121— 1 )

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

Фраза EXTEND (ДОПОЛНЯЕМЫЙ) должна использо­ваться только для файлов с последовательным доступом.

Файлы, перечисленные в операторе OPEN (ОТКРЫТЬ), могут иметь различную организацию и доступ.

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

Успешное выполнение оператора OPEN (ОТКРЫТЬ) де­лает файл доступным для обработки и переводит файл в режим открытия.

Успешное выполнение оператора OPEN (ОТКРЫТЬ) связыва­ет файл с именем-файла посредством определителя файла.

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

Таблица 1

Фраза оператора

Файл доступен

Файл недоступен

INPUT (ВХОДНОЙ)

Нормальное открытие

Открытие неуспешное

INPUT (ВХОДНОЙ) (необязательный файл)

— Нормальное открытие

Нормальное открытие; при первом чтении воз­никает условие конца или условие ошибки ключа

1-0 (ВХОДНОЙ-ВЫ­ХОДНОЙ)

Нормальное открытие

Открытие неуспешное

Продолжение табл. 1

Фраза оператора

ФаЧл доступен

Фалл ^недоступен

1-0 (ВХОДНОЙ-ВЫ- ХОДНОЙ) (необязательный файл)

Нормальное открытие

Открытие приводит к созданию файла

OUTPUT (ВЫХОДНОЙ)

Нормальное открытие; файл не содержит запи­сей

Открытие приводит к созданию файла

EXTEND (ДОПОЛНЯЕ­МЫЙ)

Нормальное открытие

Открытие неуспешное

EXTEND (ДОПОЛНЯЕ­МЫЙ) (необязательный файл)

Нормальное открытие

Открытие приводит к созданию файла

Успешное выполнение оператора OPEN (ОТКРЫТЬ) де­лает область записи доступной программе. Если определитель файла, связанный с именем файла, является внешним, то сущест­вует единственная область записи, связанная с определителем, для единицы исполнения.

Если файл не открыт, не может быть выполнен ни один оператор, явно или неявно относящийся к файлу, за исключением оператора MERGE (СЛИТЬ) с фразами USING (ИСПОЛЬЗУЯ) и GIVING (ПОЛУЧАЯ), оператора OPEN (ОТКРЫТЬ) или опе­ратора SORT (СОРТИРОВАТЬ) с фразами USING (ИСПОЛЬ­ЗУЯ) и GIVING (ПОЛУЧАЯ).

Оператор OPEN (ОТКРЫТЬ) должен быть успешно вы­полнен перед выполнением любого другого допустимого оператора ввода-вывода.

В табл. 2 X означает, что указанный оператор, используемый при указанном в строке методе доступа, может использоваться в режиме открытия, заданном в заголовке столбца.

Файл может быть открыт с фразами INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ) EXTEND (ДОПОЛНЯЕМЫЙ)! и 1-0 (ВХОДНОЙ-ВЫХОДНОЙ) в одной и той же единице испол­нения. После первоначального выполнения оператора OPEN (ОТ­КРЫТЬ) для файла каждому последующему выполнению опера­тора OPEN (ОТКРЫТЬ) для этого же файла должно предшество- вать выполнение для него оператора CLOSE (ЗАКРЫТЬ) / без/ [фразы LOCK ЗАМКОМ)"'.

Выполнение оператора OPEN (ОТКРЫТЬ) не извлекает и не записывает первую запись данных.

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

когда указана фраза INPUT (ВХОДНОЙ), оператор OPEN (ОТКРЫТЬ) осуществляет проверку меток в соответствии с про­цедурами, определенными реализацией для проверки входных ме­ток;

когда указана фраза OUTPUT (ВЫХОДНОЙ), выполнение оператора OPEN (ОТКРЫТЬ) вызывает запись меток в соответст­вии с процедурами, определенными реализацией для записи выход­ных меток.

Таблица 2

Метод доступа

Оператор

Рсжич открытия

для ввода

для вы­вода

для ввода - вывода

Для допэлнения

Последова-

READ (ЧИТАТЬ)

X

X

тельный

WRITE (ПИСАТЬ)

X

REWRITE (ОБНОВИТЬ)

X

START (ПОДВЕСТИ)

X

X

DELETE (УДАЛИТЬ)

Произвольный

READ (ЧИТАТЬ)

X

X

WRITE (ПИСАТЬ)

X

X

REWRITE (ОБНОВИТЬ)

X

START (ПОДВЕСТИ)

DELETE (УДАЛИТЬ)

X

Динамический

READ (ЧИТАТЬ)

X

X

WRITE (ПИСАТЬ)

X

X

REWRITE (ОБНОВИТЬ)

X

START (ПОДВЕСТИ)

X

DELETE. (УДАЛИТЬ)

X

Действия оператора OPEN (ОТКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют или не специфицированы, но присутствуют.

Если во время выполнения оператора OPEN (ОТКРЫТЬ) возникает условие противоречия свойств файла, выполнение опе­ратора OPEN (ОТКРЫТЬ) считается неуспешным (см. п. 1’3.7 нас­тоящей части).

Если файл, открытый с фразой INPUT (ВХОДНОЙ), является необязательным файлом, не имеющимся в наличии, оператор OPEN (ОТКРЫТЬ) устанавливает указатель пози-

ции файла для указания того, что необязательный входной файл , отсутствует.

Если файл открыт с фразами INPUT (ВХОДНОЙ) или 1-0 (ВХОДНОЙ-ВЫХОДНОЙ), указатель позиции файла уста­навливается на единицу.

Если указана фраза EXTEND (ДОПОЛНЯЕМЫЙ), оператор OPEN (ОТКРЫТЬ) устанавливает файл непосредст­венно после его последней логической записи. Последней логи­ческой записью относительного файла является существующая в данный момент запись с наибольшим относительным номером записи.

Если задана фраза EXTEND (ДОПОЛНЯЕМЫЙ) и фраза LABEL RECORD (МЕТКИ) указывает, что записи меток присутствуют, выполнение оператора OPEN (ОТКРЫТЬ) вклю­чает следующие действия:

начальные метки файла обрабатываются только для од­нокатушечных или однотомных файлов;

начальные метки катушки (тома) обрабатываются на последней катушке (томе), как если бы файл открывался как ' INPUT (ВХОДНОЙ);

имеющиеся конечные метки файла обрабатываются, как если бы файл открывался как INPUT (ВХОДНОЙ). Затем эти метки удаляются;

затем обработка продолжается, как если бы файл был открыт как OUTPUT (ВЫХОДНОЙ).

Оператор OPEN (ОТКРЫТЬ) с фразой 1-0 (ВХОДНОЙ- ВЫХОДНОЙ) должен относиться к файлу, поддерживающему операции ввода и вывода, допустимые для относительного файла, открытого для ввода-вывода. Выполнение оператора OPEN (ОТК­РЫТЬ) с фразой 1-0 (ВХОДНОЙ-ВЫХОДНОЙ) подготавливает файл, на который он ссылается, как для операций ввода, так и для операций вывода.

Если указана фраза 1-0 (ВХОДНОЙ-ВЫХОДНОЙ) и во фразе LABEL RECORD (МЕТКИ) указано, что записи меток при­сутствуют, выполнение оператора OPEN (ОТКРЫТЬ) включает следующие шаги:

проверку меток в соответствии с процедурами, определен­ными реализацией для проверки входных-выходных меток;

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

Для необязательного файла, являющегося недоступным, успешное выполнение оператора OPEN (ОТКРЫТЬ) с фразами 1-0 (ВХ0ДН0Й-ВЫХ0ДН0Й) | или EXTEND (ДОПОЛНЯЕ-' j МЫЙ) I приводит к созданию файла. Это создание происходит так, как если бы в указанном порядке выполнялись следующие операторы:

OPEN OUTPUT имя-файла.

CLOSE имя-файла.

ОТКРЫТЬ ВЫХОДНОЙ имя-файла.

ЗАКРЫТЬ имя-файла.

За этими операторами следует выполнение оператора OPEN (ОТКРЫТЬ), указанного в исходной программе.

Успешное выполнение оператора OPEN (ОТКРЫТЬ) с фразой OUTPUT (ВЫХОДНОЙ) приводит к созданию файла, после ко­торого этот файл не содержит записей.

Во время выполнения оператора OPEN (ОТКРЫТЬ) об­новляется значение состояния ввода-вывода, связанного с именем- файла (см. п. 1.3.4 настоящей части).

Если в операторе OPEN (ОТКРЫТЬ) указано более, чем одно имя-файла, результат выполнения этого оператора OPEN (ОТКРЫТЬ) такой, как если бы отдельный оператор OPEN (ОТ­КРЫТЬ) был написан для каждого имени-файла в том порядке, как они указаны в операторе OPEN (ОТКРЫТЬ).

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

4.5. Оператор READ (ЧИТАТЬ)

Назначение

При последовательном доступе оператор READ (ЧИТАТЬ) де­лает доступной следующую логическую запись файла. При произ­вольном доступе оператор READ (ЧИТАТЬ) делает доступной ука­занную запись файла на устройстве массовой памяти.

Формат 1

READ имя-файла-1 [NEXT] RECORD [INTO идентификатор-1J

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

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

[END^READ]~

ЧИТАТЬ j [СЛЕДУЮЩУЮ] ЗАПИСЬ имя-файла-1

[В идентификатор-1]

[В КОНЦЕ повелительный-оператор-1]

[НЕ В КОНЦЕ повелительный-оператор-2]

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

Формат 2

READ имя-файла-1 RECORD [INTO идентификатор-1]

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

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

ЧИТАТЬ ЗАПИСЬ имя-файла-1 [В идентификатор-1]

РИ ОШИБКЕ КЛЮЧА повелительный-оператор-3] [БЕЗ ОШИБКИ КЛЮЧА повелительный-оператор-4] [КОНЕЦ-ЧЙТАТЬ]

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

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

Формат 1 должен использоваться для всех файлов с после­довательным доступом.

Фраза NEXT (СЛЕДУЮЩУЮ) должна быть указана для файлов с динамическим доступом, если записи файла долж­ны извлекаться последовательно.

Формат 2 используется для файлов с произвольным досту- пом [йди для файлов с динамическим доступом, если записи дол- | |жны извлекаться произвольно’

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

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

Во время выполнения оператора READ (ЧИТАТЬ) файл, на который ссылается имя-файла-1, должен быть открыт как входной или входной-выходной (см. п. 4.4 настоящей части).

Для файлов с последовательным доступом фраза NEXT (СЛЕДУЮЩУЮ) является необязательной и не оказывает влияния на выполнение оператора READ (ЧИТАТЬ).

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

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

Если указатель позиции файла указывает, что не установ­лена следующая запись, выполнение оператора READ (ЧИТАТЬ) является неуспешным.

Если указатель позиции файла указывает, | что необяза- j тельного входного файла нет, оператор выполняется согласно общему правилу (10).

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

Если указатель позиции файла установлен предыдущим опе­ратором READ (ЧИТАТЬ), выбирается первая существующая за­пись файла, номер записи которой больше указателя позиции файла.

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

Если запись, удовлетворяющая приведенным выше правилам, не найдена, то указатель позиции файла устанавливается для ука­зания того, что не существует следующей логической записи, и вы­полнение продолжается согласно общему правилу (10).

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

Функционирование оператора READ (ЧИТАТЬ) не зави- сйт от метода, используемого для согласования времени доступа со временем обработки; запись доступна объектной программе до выполнения повелптельйого-оператора-2 или повелительного-опе- ратбра-4, если онй указаны, Или до выполнения любого оператора, ■следующего за оператором READ (ЧИТАТЬ), если ни повелитель- ный-оператор-2, ни повелительный-оператор-4 не указаны....

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

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

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

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

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

Весь розділ →