ГОСТ 22558-89 сторінка 66 з 116
Фраза 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).
Оператор OPEN (ОТКРЫТЬ)
Назначение
Оператор OPEN (ОТКРЫТЬ) подготавливает файл к обработке.
Общий формат
{INPUT {имя-файла-1}...
І OUTPUT {имя-файла-2}...
OPEN І ЕО {имя-файла-3} ...
І EXTEND {имя-файла-4} ... |
ВХОДНОЙ {имя-файла-1}...
ВЫХОДНОЙ {имя-файла-2}...
ОТКРЫТЬ { ВХОДНОЙ-ВЫХОДНОИ {имя-файла-3} ...
J [ДОПОЛНЯЕМЫЙ {имя-файла-4} ... |
С и н т а к с и ч е с к и е правила
Фраза EXTEND (ДОПОЛНЯЕМЫЙ) должна использоваться только для файлов с последовательным доступом.
Файлы, перечисленные в операторе OPEN (ОТКРЫТЬ), могут иметь различную организацию и доступ.
Общие правила
Успешное выполнение оператора OPEN (ОТКРЫТЬ) делает файл доступным для обработки и файл находится в режиме от
крытия. Успешное выполнение оператора OPEN (ОТКРЫТЬ) связывает файл с именем-файла посредством определителя файла.
Файл доступен, если он физически имеется в наличии и распознан системой управления вводом-выводом.
В табл. 1 показаны результаты открытия доступных и недоступных файлов.
Таблица I
Фраза оператора
Файл доступен
Файл недоступен
INPUT (ВХОДНОЙ)
Нормальное открытие
Открытие неуспешное
INPUT (ВХОДНОЙ) (необязательный файл)
Нормальное открытие
Нормальное открытие; при первом чтении возникает условие конца или условие ошибки ключа
1-0 (ВХОДНОЙ-ВЫ- ХОДНОЙ)
Нормальное открытие
Открытие неуспешное
1-0 (ВХОДНОИ-ВЫ- ХОДНОП) (необязательный файл)
Нормальное открытие
Открытие приводит к созданию файла
OUTPUT (ВЫХОДНОЙ)
Нормальное открытие; файл не содержит записей
Открытие приводит к созданию файла
EXTEND (ДОПОЛНЯЕ
МЫЙ)
Нормальное открытие
Открытие неуспешное
EXTEND (ДОПОЛНЯЕ
МЫЙ) (необязательный файл)
Нормальное открытие
Открытие приводит к созданию файла
Успешное выполнение оператора OPEN (ОТКРЫТЬ) делает область записи доступной программе. Если определитель файла, связанный с именем файла, является внешним, то существует единственная область записи, связанная с определителем файла для единицы исполнения.
Если файл не открыт, не может быть выполнен ни один оператор, явно или неявно относящийся к файлу, за исключением оператора MERGE (СЛИТЬ) с фразами USING (ИСПОЛЬЗУЯ) и GIVING (ПОЛУЧАЯ), оператора OPEN (ОТКРЫТЬ) или оператора SORT (СОРТИРОВАТЬ) с фразами USING (ИСПОЛЬЗУЯ) и GIVING (ПОЛУЧАЯ).
Оператор OPEN (ОТКРЫТЬ) должен быть успешно выполнен перед выполнением любого другого допустимого оператора ввода-вывода. В табл. 2 «X» означает, что указанный оператор, 514
используемый при указанном в строке методе доступа, может использоваться в режиме открытия, заданном в заголовке столбца.
Файл может быть открыт с фразами INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ) |; EXTEND (ДОПОЛНЯЕМЫЙ) | и 1-0 (ВХОДНОЙ-ВЫХОДНОЙ) в одной и той же единице исполнения. После первоначального выполнения оператора OPEN (ОТКРЫТЬ) для файла каждому последующему выполнению оператора OPEN (ОТКРЫТЬ) для этого же файла должно предшест- вовать выполнение для него оператора CLOSE (ЗАКРЫТЬ) без | фразы LOCK ТС ЗАМКОМ)', •
Выполнение оператора OPEN (ОТКРЫТЬ) не извлекает и не записывает первую запись данных.
Таблица 2
Меіод доступа файла
Оператор
Режим открытия
для ввода
■ ДЛЯ вывода
ДЛЯ ввода-вывода
для дополнения
Последовательный
READ (ЧИТАТЬ)
X
X
WRITE (ПИСАТЬ)
X
X
REWRITE (ОБНОВИТЬ)
X
START (ПОДВЕСТИ)
X
X
DELETE (УДАЛИТЬ)
X
Произвольный
READ (ЧИТАТЬ)
X
X
WRITE (ПИСАТЬ)
X
X
REWRITE (ОБНОВИТЬ)
X
START (ПОДВЕСТИ)
DELETE (УДАЛИТЬ)
X
Динамический
READ (ЧИТАТЬ)
X
X
WRITE (ПИСАТЬ)
X
X
REWRITE (ОБНОВИТЬ)
X
START (ПОДВЕСТИ)
X
DELETE (УДАЛИТЬ)
X
Если указаны записи меток для файла, начальные метки обрабатываются следующим образом:
когда указана фраза INPUT (ВХОДНОЙ), оператор OPEN (ОТКРЫТЬ) осуществляет проверку меток в соответствии с процедурами, определенными реализацией для проверки входных меток;
когда указана фраза OUTPUT (ВЫХОДНОЙ), выполнение оператора OPEN (ОТКРЫТЬ) вызывает запись меток в соответствии с процедурами, определенными реализацией для записи выходных меток.
Действия оператора OPEN (ОТКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют, или не специфицированы, но присутствуют.
Если во время выполнения оператора OPEN (ОТКРЫТЬ) возникает условие противоречия свойств файла, выполнение оператора OPEN (ОТКРЫТЬ) считается неуспешным (см. п. 1.3.7 настоящей части).
Если файл, открытый с фразой INPUT (ВХОДНОЙ), является необязательным файлом, не имеющимся в наличии, оператор OPEN (ОТКРЫТЬ) устанавливает указатель позиции файла для указания того, что необязательный входной файл отсутствует.
Когда файлы открыты как INPUT (ВХОДНОЙ) или 1-0* (ВХОДНОЙ-ВЫХОДНОЙ), указатель позиции файла устанавливается в литеры, имеющие наименьшую порядковую позицию в основной последовательности, связанной с файлом, и основной ключ записи устанавливается как ключ ссылки.
Побачили розбіжність з офіційним текстом?