26. Фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ)
Назначение
Фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ) указывает, что логической структурой файла является индексная организация.
Общий формат
[ORGANIZATION IS] INDEXED
[ОРГАНИЗАЦИЯ] ИНДЕКСНАЯ
Общие правила
Фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ) указывает, что логической структурой файла является индексная организация. Организация файла устанавливается во время создания файла и не может быть изменена в дальнейшем.
Индексная организация это постоянная логическая структура файла, в которой каждая запись идентифицируется значением одного или более ключей в этой записи.
Фпаза RECORD KEY (КЛЮЧ ЗАПИСИ)
Назначение
Фраза RECORD KEY (КЛЮЧ ЗАПИСИ) указывает путь доступа по основному ключу записи к записям в индексном файле.
О б щ и й формат
RECORD KEY IS имя-данного-1
КЛЮЧ ЗАПИСИ имя-данного-1
Синтаксические правила
Имя-данного-1 может уточняться.
Имя-данного-1 должно ссылаться на данное буквенно-цифровой категории в статье описания записи, связанной с именем- файла, которому подчинена фраза RECORD KEY (КЛЮЧ ЗАПИСИ).
Имя-данного-1 не должно относиться к групповому данному, содержащему переменно повторяющееся данное.
Если индексный файл содержит записи переменной длины, основной ключ записи должен содержаться в первых х позициях литеры записи, где х равняется минимальному размеру записи, указанному для файла (см. ч. 7, п. 3.8).
О б щ и е правила
Фраза RECORD KEY (КЛЮЧ ЗАПИСИ) указывает основной ключ записи для файла, к которому относится фраза. Значения основного ключа записи должны быть уникальными в записях файла.
Описание данного, соотнесенного имени-данного-1, так же как и его относительное местонахождение в записи, должно быть таким же, какое использовалось при создании файла.
Если для файла имеется более одной статьи описания записи, имя-да иного-1 может быть только в одной из этих статей описания записи. Идентичные позиции литер, соотнесенные имени-данного-1, в любой другой статье описания записи неявно считаются ключами для всех остальных статей описания записи этого файла.
Если соответствующий файлу определитель файла является внешним определителем, все статьи описания файла в единице исполнения, связанные с этим определителем файла, должны указывать одну и ту же статью описания данного для имени-данного-1 с одним и тем же относительным местоположением в соответствующей записи.
Параграф I-O-CONTROL (УПРАВЛЕНИЕ ВВОДОМ ВЫВОДОМ)
Назначение
Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВО- ДОМ) указывает контрольные точки для перепрогона, а также общие области памяти, которые могут совместно использоваться различными файлами. Фраза RERUN (ПЕРЕПРОГОН) параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) рассматривается в настоящем стандарте как устаревший элемент и будет удалена в следующей редакции стандарта.
Общий формат
I-O-CONTROL.
RERUN ON Г имя'Файла’1‘ I EVERY - [ имя-реализации-1 J
( целое-1 RECORDS OF имя-файла-2
' целое-2 CLOCK-UNITS
[ имя-условия-1
[SAME [RECORD] AREA FOR имя-файла-3
{имя-файла-4}...]...]
УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ.
[ [ПЕРЕПРОГОН
НА (имя-файла-1 1
— [ имя-реализации-1 J
КАЖДЫЕ целое-1 ЗАПИСЕЙ имя-файла-2
КАЖДЫЕ целое-2 ЕДИНИЦ-ВРЕМЕНИ
КАЖДОЕ имя-условия-1
[ОБЩАЯ ОБЛАСТЬ [ЗАПИСИ] ДЛЯ имя-файл а-3 {имя-файла-4}...]....]
Общие правила
Фраза RERUN (ПЕРЕПРОГОН) для модуля индексного ввода-вывода является подмножеством фразы RERUN (ПЕРЕПРОГОН) для модуля последовательного ввода-вывода. Поэтому спецификации фразы RERUN (ПЕРЕПРОГОН) см. ч. 7, п. 2.12.
Фраза SAME (ОБЩАЯ ОБЛАСТЬ) для модуля индексного ввода-вывода такая же, как и фраза SAME (ОБЩАЯ ОБЛАСТЬ) для модуля последовательного ввода-вывода. Поэтому соответствующие спецификации см. ч. 7, п. 2.13.
РАЗДЕЛ ДАННЫХ В МОДУЛЕ ИНДЕКСНОГО ВВОДА-ВЫВОДА
Секция файлов
Информацию о секции файлов см. в ч. 7, п. 3.1.
Статья описания файла
Назначение
Статья описания файла содержит применимую к индексному файлу информацию о физической структуре, идентификации и именах записей.
О б щ и й формат
F
RECORDS ]
CHARACTERSf
D имя-файла-1BLOCK CONTAINS [целое-1 ТО] |целое-2
' CONTAINS целое-3 CHARACTERS
I
RECORDj
..
S VARYING IN SIZE [ [FROM целое-4]CONTAINS целое-6 TO целое-7 CHARACTERS
T (RECORD IS 1(STANDARD 1 j LA--L j RECORDS ARE J ( OMITTED j j
VALUE OF {имя-реализации-1 IS { имя-данного-2 k 1 r [литерал-1 rrA.^.. [ RECORD IS ] , ,
[DATA j RECQRDSARE J {имя-данного-3}... ].
имя-данного-2 литерал-1
имя-реализации-1
I ЗНАЧЕНИЕ [ЗНАЧ
(СТАНДАРТНЫ 1
I ОПУЩЕНЫ /
МЕТКИ
ПЕРЕМЕННОЕ ЧИСЛО [[ОТ целое-4]
I [ДО целое-5] ЛИТЕР]
[В ЗАВИСИМОСТИ ОТ имя-данного-1]
ОТ целое-6 ДО целое-7 ЛИТЕР
[В ЗАПИСИ
целое-3 ЛИТЕР
ЗАПИСЕЙ
ЛИТЕР
[В БЛОКЕ [ОТ целое-1 ДО] целое-2
ОФ имя-файла-1
[ЗАПИСИ ДАННЫХ {имя-данного-3} ... ].
Синтаксические правила
Индикатор уровня FD (ОФ) идентифицирует начало статьи описания файла и должен предшествовать имени-файла-1.
Фразы, которые следуют за именем-файла-1, могут задаваться в любом порядке.
Одна или несколько статей описания записи должны следовать за статьей описания файла.
Общие правила
Статья описания файла связывает имя-файла-1 с определителем файла.
Фраза BLOCK CONTAINS (В БЛОКЕ) для модуля индексного ввода-вывода такая же, как и фраза BLOCK CONTAINS (В БЛОКЕ) для модуля последовательного ввода-вывода. Поэтому спецификации фразы BLOCK CONTAINS (В БЛОКЕ) см. ч. 7, п. 3.3.
Фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) для модуля индексного ввода-вывода такая же, как и для модуля последовательного ввода-вывода. Описание фразы DATA RECORDS (ЗАПИСИ ДАННЫХ) находится в ч. 7, п. 3.5. Фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) рассматривается в настоящем стандарте как устаревший элемент и будет удалена в следующей редакции стандарта.
Фраза LABEL RECORDS (МЕТКИ) для модуля индексного ввода-вывода такая же, как и для модуля последовательного ввода-вывода. Описание фразы LABEL RECORDS (МЕТКИ) находится в ч. 7, п. 3.6. Фраза LABEL RECORDS (МЕТКИ) рассматривается в настоящем стандарте как устаревший элемент языка и будет удалена в следующей редакции стандарта.
Фраза RECORD (В ЗАПИСИ) для модуля индексного ввода-вывода такая же, как и для модуля последовательного ввода- вывода. Описание фразы RECORD (В ЗАПИСИ) находится в ч. 7, п. 3.8.
Фраза VALUE OF (ЗНАЧЕНИЕ) для модуля индексного ввода-вывода такая же, как и для модуля последовательного ввода-вывода. Описание фразы VALUE OF (ЗНАЧЕНИЕ) находится в ч. 7, п. 3.9. Фраза VALUE OF (ЗНАЧЕНИЕ) рассматривается в настоящем стандарте как устаревший элемент языка и будет удалена в следующей редакции стандарта.
РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ ИНДЕКСНОГО ВВОДА ВЫВОДА
Общее описание
Если в исходной Кобол-программе имеется оператор USE (ИСПОЛЬЗОВАТЬ) модуля индексного ввода-вывода, раздел процедур содержит декларативные процедуры. Ниже приводится общий формат раздела процедур для случая, когда оператор USE (ИСПОЛЬЗОВАТЬ) указан.
PROCEDURE DIVISION.
DECLARATIVES.
{имя-секции SECTION.
оператор USE.
[имя-параграфа.
[предложение] ... ] ...}...
END DECLARATIVES.
{имя-секции SECTION.
[имя-параграфа.
[предложение]
РАЗДЕЛ ПРОЦЕДУР.
ДЕКЛАРАТИВНІ
{СЕКЦИЯ имя-секции.
оператор ИСПОЛЬЗОВАТЬ.
[имя-параграфа.
[предложение] . . . ] ...}...
_КОНЕЦ ДЕКЛАРАТИВ.
{СЕКЦИЯ имя-секции.
[имя-параграфа.
[предложение] ... ] ...}...Оператор CLOSE (ЗАКРЫТЬ)
Назначение
Оператор CLOSE (ЗАКРЫТЬ) завершает обработку файла, ■возможно с замком.
Общий формат
[WITH LOCK]!}
CLOSE {имя-файла-1
ЗАКРЫТЬ {имя-файла-1 j[C ЗАМКОМ] р...
С и н т а к с и ч е с к о е правило
Файлы, перечисленные в операторе CLOSE (ЗАКРЫТЬ), могут иметь различную организацию и доступ.
Общие правила
Оператор CLOSE (ЗАКРЫТЬ) может быть использован только для файла, который был открыт.
Индексные файлы классифицируются как принадлежащие к категории непоследовательных однотомных или многотомных файлов. Результаты выполнения оператора CLOSE (ЗАКРЫТЬ) для этой категории файлов приведены ниже.
Формат оператора GLOSE (ЗАКРЫТЬ) |
Категория файла |
Непоследовательный однотомный (многотомный) фа'Іл |
|
CLOSE (ЗАКРЫТЬ) |
А |
CLOSE WITH LOCK (ЗАКРЫТЬ С ЗАМКОМ) |
А, Б |
Определения символов А и Б следуют далее.
Там, где эти определения зависят то того, как открыт файл —• «ак входной, выходной или входной-выходной, приводятся дополнительные пояснения; в противном случае эти определения относятся к файлам, открытым как входные, выходные или входные-вы- ходные.
А — закрыть файл.
Входные и входные-выходные файлы (доступ последовательный).
Если файл установлен в конце и указаны записи меток для этого файла, метки обрабатываются в соответствии со стандртной процедурой обработки меток, определенной реализацией. Дейст- вия оператора CLOSE (ЗАКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют, или когда записи меток не специфицированы, но присутствуют. Выполняются операции закрытия, определенные реализацией. Если файл установлен в конце и записи меток для него не специфицированы, метки не обрабатываются, но другие операции закрытия, определенные реализацией, выполняются. Если файл установлен не в конце, операции закрытия, определенные реализацией, выполняются, но конечные метки не обрабатываются.
Входные и входные-выходные файлы (доступ произвольный I или динамический/). Выходные файлы (доступ произвольный [ , динамический/ или последовательный).
Если записи меток для файла специфицированы, метки обрабатываются в соответствии со стандартной процедурой обработка меток, определенной реализацией. Действия оператора CLOSE (ЗАКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют или когда они не специфицированы, но присутствуют. Выполняются операции закрытия, определенные реализацией. Если записи меток для файла не указаны, метки не обрабатываются, но другие операции закрытия, определенные реализацией, выполняются.
Б — закрыть с замком.
Файл закрыт и не может быть опять открыт во время выполнения этой единицы исполнения.
Выполнение оператора CLOSE (ЗАКРЫТЬ) приводит к изменению значения состояния ввода-вывода, относящегося к имени- файла-1 (см. п. 1.3.4 настоящей части).
Если-не присутствует необязательный входной файл, для файла не производится обработка конца файла, и указатель позиции файла не меняется.
После успешного завершения оператора CLOSE (ЗАКРЫТЬ) область записи, связанная с именем-файла, становится недоступной. В случае неуспешного выполнения оператора CLOSE (ЗАКРЫТЬ) доступность области записи является неопределенной.
После успешного завершения оператора CLOSE (ЗАКРЫТЬ) файл перестает быть открытым, он больше не связан ни с каким определителем файла. .
Если в операторе CLOSE (ЗАКРЫТЬ) указаны несколько имен-файлов, результат выполнения этого оператора CLOSE (ЗАКРЫТЬ) такой же, как если бы отдельный оператор CLOSE (ЗАКРЫТЬ) был написан для каждого имени файла в том порядке, как они указаны в этом операторе CLOSE (ЗАКРЫТЬ).
Оператор DELETE (УДАЛИТЬ)
Назначение
Оператор DELETE (УДАЛИТЬ) логически удаляет запись из -файла массовой памяти.
О б щ и й формат
DELETE имя-файла-1 RECORD
[INVALID KEY повелительный-оператор-1]
[NOT INVALID KEY повелительный-оператор-2]
[END-DELETE]
УДАЛИТЬ ЗАПИСЬ имя-файла-1
[ПРИ ОШИБКЕ КЛЮЧА повелительный-оператор-1] [БЕЗ ОШИБКИ КЛЮЧА повелительный-оператор-2] [ КОНЁЩУДАЛИТЬ]
Синтаксические правила
Фразы INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) не должны указываться для оператора DELETE (УДАЛИТЬ), который ссылается на файл с последовательным доступом.
Фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) должна быть указана в операторе DELETE (УДАЛИТЬ), который ссылается на файл не с последовательным доступом и для которого не определена процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ).
Общие правила
Файл, представленный именем-файла-1, должен быть файлом массовой памяти. Он должен быть открыт в режиме ввода-вывода ко времени выполнения этого оператора (п. 4.4 настоящей части).
Для файлов с последовательным доступом последним оператором ввода-вывода, выполняемым для имени-файла-1 перед выполнением оператора DELETE (УДАЛИТЬ), должен быть успешно выполненный оператор READ (ЧИТАТЬ). Система управления массовой памятью логически удаляет из файла запись, которая была извлечена по оператору READ (ЧИТАТЬ).
Для индексного файла с произвольным | или динамическим доступом СУМП логически удаляют из файла запись, идентифицируемую значением данного, определенного как основной ключ, связанный с именем-файла-1. Если файл не содержит записи с указанным ключом, возникает условие ошибки ключа (см. п. 1.3.5 настоящей части).
После успешного выполнения оператора DELETE (УДАЛИТЬ) идентифицированная запись логически удаляется из файла и становится недоступной.Выполнение оператора DELETE (УДАЛИТЬ) не влияет на содержимое области записи | или на содержимое данного, представленного именем-данного, указанного в варианте DEPENDING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В ЗА- ПИСИ), относящейся к имени-файла-1.
Выполнение оператора DELETE (УДАЛИТЬ) не влияет на указатель позиции файла.
При выполнении оператора DELETE (УДАЛИТЬ) обновляется значение состояния ввода-вывода, связанного с именем-фай- ла-1 (см. п. 1.3.4 настоящей части).
Передача управления после успешного или неуспешного выполнения оператора DELETE (УДАЛИТЬ) зависит от наличия или отсутствия в операторе DELETE (УДАЛИТЬ) необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) (см. п. 1.3.5 настоящей части).
Фраза END-DELETE (КОНЕЦ-УДАЛИТЬ) ограничивает область действия оператора DELETE (УДАЛИТЬ) (см. ч. 4, п. 6.4.3).