ГОСТ 22558-89 сторінка 61 з 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 не указаны....
Побачили розбіжність з офіційним текстом?