26. Фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ)

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

Фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИН­ДЕКСНАЯ) указывает, что логической структурой файла является индексная организация.

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

[ORGANIZATION IS] INDEXED

[ОРГАНИЗАЦИЯ] ИНДЕКСНАЯ

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

  1. Фраза ORGANIZATION IS INDEXED (ОРГАНИЗАЦИЯ ИНДЕКСНАЯ) указывает, что логической структурой файла яв­ляется индексная организация. Организация файла устанавли­вается во время создания файла и не может быть изменена в даль­нейшем.

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

  1. Фпаза RECORD KEY (КЛЮЧ ЗАПИСИ)

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

Фраза RECORD KEY (КЛЮЧ ЗАПИСИ) указывает путь досту­па по основному ключу записи к записям в индексном файле.

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

RECORD KEY IS имя-данного-1

КЛЮЧ ЗАПИСИ имя-данного-1

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

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

  2. Имя-данного-1 должно ссылаться на данное буквенно-циф­ровой категории в статье описания записи, связанной с именем- файла, которому подчинена фраза RECORD KEY (КЛЮЧ ЗАПИ­СИ).

  3. Имя-данного-1 не должно относиться к групповому данно­му, содержащему переменно повторяющееся данное.

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

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

  1. Фраза RECORD KEY (КЛЮЧ ЗАПИСИ) указывает ос­новной ключ записи для файла, к которому относится фраза. Зна­чения основного ключа записи должны быть уникальными в запи­сях файла.

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

  3. Если для файла имеется более одной статьи описания запи­си, имя-да иного-1 может быть только в одной из этих статей опи­сания записи. Идентичные позиции литер, соотнесенные имени-дан­ного-1, в любой другой статье описания записи неявно считаются ключами для всех остальных статей описания записи этого файла.

  4. Если соответствующий файлу определитель файла являет­ся внешним определителем, все статьи описания файла в единице исполнения, связанные с этим определителем файла, должны ука­зывать одну и ту же статью описания данного для имени-данного-1 с одним и тем же относительным местоположением в соответствую­щей записи.

  1. Параграф I-O-CONTROL (УПРАВЛЕНИЕ ВВОДОМ ВЫ­ВОДОМ)

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

Параграф I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВО- ДОМ) указывает контрольные точки для перепрогона, а также об­щие области памяти, которые могут совместно использоваться раз­личными файлами. Фраза RERUN (ПЕРЕПРОГОН) параграфа I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ) рассмат­ривается в настоящем стандарте как устаревший элемент и будет удалена в следующей редакции стандарта.

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

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}...]....]

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

  1. Фраза RERUN (ПЕРЕПРОГОН) для модуля индексного ввода-вывода является подмножеством фразы RERUN (ПЕРЕ­ПРОГОН) для модуля последовательного ввода-вывода. Поэтому спецификации фразы RERUN (ПЕРЕПРОГОН) см. ч. 7, п. 2.12.

  2. Фраза SAME (ОБЩАЯ ОБЛАСТЬ) для модуля индексного ввода-вывода такая же, как и фраза SAME (ОБЩАЯ ОБЛАСТЬ) для модуля последовательного ввода-вывода. Поэтому соответст­вующие спецификации см. ч. 7, п. 2.13.

  1. РАЗДЕЛ ДАННЫХ В МОДУЛЕ ИНДЕКСНОГО ВВОДА-ВЫВОДА

    1. Секция файлов

Информацию о секции файлов см. в ч. 7, п. 3.1.

  1. Статья описания файла

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

Статья описания файла содержит применимую к индексному файлу информацию о физической структуре, идентификации и име­нах записей.

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

F

RECORDS ]

CHARACTERSf

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

BLOCK CONTAINS [целое-1 ТО] |целое-2

' CONTAINS целое-3 CHARACTERS

I

RECORDj

..

S VARYING IN SIZE [ [FROM целое-4]
[TO целое-5] CHARACTERS]
[DEPENDING ON имя-данного-1]

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} ... ].

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

  1. Индикатор уровня FD (ОФ) идентифицирует начало статьи описания файла и должен предшествовать имени-файла-1.

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

  3. Одна или несколько статей описания записи должны следо­вать за статьей описания файла.

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

  1. Статья описания файла связывает имя-файла-1 с определи­телем файла.

  2. Фраза BLOCK CONTAINS (В БЛОКЕ) для модуля индек­сного ввода-вывода такая же, как и фраза BLOCK CONTAINS (В БЛОКЕ) для модуля последовательного ввода-вывода. Поэтому спецификации фразы BLOCK CONTAINS (В БЛОКЕ) см. ч. 7, п. 3.3.

  3. Фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) для моду­ля индексного ввода-вывода такая же, как и для модуля последо­вательного ввода-вывода. Описание фразы DATA RECORDS (ЗА­ПИСИ ДАННЫХ) находится в ч. 7, п. 3.5. Фраза DATA RECORDS (ЗАПИСИ ДАННЫХ) рассматривается в настоящем стандарте как устаревший элемент и будет удалена в следующей редакции стандарта.

  4. Фраза LABEL RECORDS (МЕТКИ) для модуля индексно­го ввода-вывода такая же, как и для модуля последовательного ввода-вывода. Описание фразы LABEL RECORDS (МЕТКИ) на­ходится в ч. 7, п. 3.6. Фраза LABEL RECORDS (МЕТКИ) рассмат­ривается в настоящем стандарте как устаревший элемент языка и будет удалена в следующей редакции стандарта.

  5. Фраза RECORD (В ЗАПИСИ) для модуля индексного вво­да-вывода такая же, как и для модуля последовательного ввода- вывода. Описание фразы RECORD (В ЗАПИСИ) находится в ч. 7, п. 3.8.

  6. Фраза VALUE OF (ЗНАЧЕНИЕ) для модуля индексного ввода-вывода такая же, как и для модуля последовательного вво­да-вывода. Описание фразы VALUE OF (ЗНАЧЕНИЕ) находится в ч. 7, п. 3.9. Фраза VALUE OF (ЗНАЧЕНИЕ) рассматривается в настоящем стандарте как устаревший элемент языка и будет уда­лена в следующей редакции стандарта.

  1. РАЗДЕЛ ПРОЦЕДУР В МОДУЛЕ ИНДЕКСНОГО ВВОДА ВЫВОДА

    1. Общее описание

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

PROCEDURE DIVISION.

DECLARATIVES.

{имя-секции SECTION.

оператор USE.

[имя-параграфа.

[предложение] ... ] ...}...

END DECLARATIVES.

{имя-секции SECTION.

[имя-параграфа.

[предложение]

РАЗДЕЛ ПРОЦЕДУР.

ДЕКЛАРАТИВНІ

{СЕКЦИЯ имя-секции.

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

[имя-параграфа.

[предложение] . . . ] ...}...

_КОНЕЦ ДЕКЛАРАТИВ.

{СЕКЦИЯ имя-секции.

[имя-параграфа.

  1. [предложение] ... ] ...}...Оператор CLOSE (ЗАКРЫТЬ)

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

Оператор CLOSE (ЗАКРЫТЬ) завершает обработку файла, ■возможно с замком.

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

[WITH LOCK]!}


CLOSE {имя-файла-1



ЗАКРЫТЬ {имя-файла-1 j[C ЗАМКОМ] р...

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

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

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

  1. Оператор CLOSE (ЗАКРЫТЬ) может быть использован только для файла, который был открыт.

  2. Индексные файлы классифицируются как принадлежащие к категории непоследовательных однотомных или многотомных файлов. Результаты выполнения оператора CLOSE (ЗАКРЫТЬ) для этой категории файлов приведены ниже.

Формат оператора GLOSE (ЗАКРЫТЬ)

Категория файла

Непоследовательный однотомный (многотомный) фа'Іл

CLOSE (ЗАКРЫТЬ)

А

CLOSE WITH LOCK (ЗАКРЫТЬ С ЗАМКОМ)

А, Б

Определения символов А и Б следуют далее.

Там, где эти определения зависят то того, как открыт файл —• «ак входной, выходной или входной-выходной, приводятся допол­нительные пояснения; в противном случае эти определения относят­ся к файлам, открытым как входные, выходные или входные-вы- ходные.

А — закрыть файл.

Входные и входные-выходные файлы (доступ последователь­ный).

Если файл установлен в конце и указаны записи меток для это­го файла, метки обрабатываются в соответствии со стандртной процедурой обработки меток, определенной реализацией. Дейст- вия оператора CLOSE (ЗАКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют, или когда записи меток не специфицированы, но присутствуют. Выполняются опера­ции закрытия, определенные реализацией. Если файл установлен в конце и записи меток для него не специфицированы, метки не обрабатываются, но другие операции закрытия, определенные реа­лизацией, выполняются. Если файл установлен не в конце, опера­ции закрытия, определенные реализацией, выполняются, но конеч­ные метки не обрабатываются.

Входные и входные-выходные файлы (доступ произвольный I или динамический/). Выходные файлы (доступ произвольный [ , динамический/ или последовательный).

Если записи меток для файла специфицированы, метки обра­батываются в соответствии со стандартной процедурой обработка меток, определенной реализацией. Действия оператора CLOSE (ЗАКРЫТЬ) не определены, когда записи меток специфицирова­ны, но в файле отсутствуют или когда они не специфицированы, но присутствуют. Выполняются операции закрытия, определенные реализацией. Если записи меток для файла не указаны, метки не обрабатываются, но другие операции закрытия, определенные реа­лизацией, выполняются.

Б — закрыть с замком.

Файл закрыт и не может быть опять открыт во время выпол­нения этой единицы исполнения.

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

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

  3. После успешного завершения оператора CLOSE (ЗАК­РЫТЬ) область записи, связанная с именем-файла, становится не­доступной. В случае неуспешного выполнения оператора CLOSE (ЗАКРЫТЬ) доступность области записи является неопределен­ной.

  4. После успешного завершения оператора CLOSE (ЗАК­РЫТЬ) файл перестает быть открытым, он больше не связан ни с каким определителем файла. .

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

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

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

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

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

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

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

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

[END-DELETE]

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

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

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

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

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

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

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

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

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

  4. После успешного выполнения оператора DELETE (УДА­ЛИТЬ) идентифицированная запись логически удаляется из фай­ла и становится недоступной.Выполнение оператора DELETE (УДАЛИТЬ) не влияет на содержимое области записи | или на содержимое данного, пред­ставленного именем-данного, указанного в варианте DEPEN­DING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В ЗА- ПИСИ), относящейся к имени-файла-1.

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

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

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

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