1. Оператор DELETE (УДАЛИТЬ)

    1. Назначение

Оператор DELETE (УДАЛИТЬ) логически удаляет запись из файла массовой памяти.

  1. Общий формат

DELETE имя-файла-1 RECORD

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

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

УДАЛИТЬ ЗАПИСЬ имя-файла

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

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

[ КОНЕЦ-УД АЛИТЬ]

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

  1. Фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) не долж­на указываться для оператора DELETE (УДАЛИТЬ), который ссылается на файл с последовательным доступом.

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

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

  1. Файл, представленный именем-файла-1, должен быть фай­лом массовой памяти. Он должен быть открыт для ввода-вывода ко времени выполнения этого оператора (п. 4.4 настоящей части).

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

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

  4. После успешного выполнения оператора DELETE (УДА­ЛИТЬ) идентифицированная запись логически удаляется из фай­ла и становится недоступной.

  5. Выполнение оператора DELETE (УДАЛИТЬ) нс влияет на содержимое области записи или на содержимое данного, представленного именем-данного, указанного в варианте DE­PENDING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В IЗАПИСИ), относящейся к имени-файла-1.

  6. Выполнение оператора DELETE (УДАЛИТЬ) не влияет на указатель позиции файла.

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

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

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

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

    1. Назначение

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

  1. Общий формат

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

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

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

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

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

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

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

I і

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

I 121— 1 )

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

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

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

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

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

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

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

Таблица 1

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

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

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

INPUT (ВХОДНОЙ)

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

OUTPUT (ВЫХОДНОЙ)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  2. когда указана фраза 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 (ОТКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют или не специфицированы, но присутствуют.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

CLOSE имя-файла.

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

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

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

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

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

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

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

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

  1. Назначение

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

Формат 1

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

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

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

[END^READ]~