PROCEDURE DIVISION.
DECLARATIVES.
{имя-секции SECTION.
оператор USE.
[имя-параграфа.
[предложение] ... ] ...}...
END DECLARATIVES.
{имя-секции SECTION.
[имя-параграфа.
[предложение] . . . ] ...}...
РАЗДЕЛ ПРОЦЕДУР.
ДЕКЛАРАТИВЫ.
{СЕКЦИЯ имя-секции.
оператор ИСПОЛЬЗОВАТЬ.
[имя-параграфа.
[предложение] ... ]
КОНЕЦ ДЕКЛАРАТИВ.
{СЕКЦИЯ имя-секции.
[имя-параграфа.
[предложение] . . . ] ...}...
Оператор CLOSE (ЗАКРЫТЬ)
Назначение
Оператор CLOSE (ЗАКРЫТЬ) завершает обработку катушки, тома и файла с необязательной перемоткой и (или) удалением, I если необходимо.
Общий формат
[ NO REWIND I
I LOCK J
WITH
[FOR REMOVAL]
f REEL I UNIT
CLOSE имя-файла-1
[С УДАЛЕНИЕМ]
КАТУШКУ ]
ТОМ } имя-файла-1
БЕЗ ПЕРЕМОТКИ ' С ЗАМКОМ
имя-файла-1
ЗАКРЫТЬ.
С и н т а к с и ч е с к и е правила
Файлы, перечисленные в операторе CLOSE (ЗАКРЫТЬ), могут иметь различную организацию и доступ.
О б щ и е правила
Термины «катушка» и «том» являются синонимами и полностью взаимозаменяемы в операторе CLOSE (ЗАКРЫТЬ), если не оговорено обратное. Интерпретация последовательных файлов массовой памяти логически эквивалентна интерпретации файлов на ленте или аналогичных последовательных носителях. Файл, содержащийся в многофайловой среде, логически рассматривает- ся кай последовательный однотомный (однокатушечный) файл.
Оператор CLOSE (ЗАКРЫТЬ) может быть выполнен только для файла, который был открыт.
Для того, чтобы показать действие различных типов оператора CLOSE (ЗАКРЫТЬ) для различных носителей данных, все файлы разделяются на следующие категории:
без катушек (томов). Файл, носитель которого такой, что для него понятие перемотки катушек (томов) не имеет смысла;
последовательный однокатушечный (однотомный). Последовательный файл, который полностью располагается на одной катушке (томе);
последовательный файл, который располагается на нескольких катушках (томах).
(3) Результаты выполнения каждого типа оператора CLOSE (ЗАКРЫТЬ) для каждой категории файла приведены ниже.
Формат оператора GLOSE (ЗАКРЫТЬ) |
Выполняемые действия для различных категорий файла |
||
Без катушек (томов) |
Последовательный однокатушечный (однотомный) |
Последовательны! мно- гокатушечныііг (многотомный) |
|
CLOSE (ЗАКРЫТЬ) |
в |
в, ж |
А, В, Ж |
CLOSE WITH LOCK (ЗАКРЫТЬ С ЗАМКОМ) |
в, д |
в, ж, д |
А, В, Д, Ж А, Б, В |
CLOSE WITH NO REWIND (ЗАКРЫТЬ БЕЗ ПЕРЕМОТКИ) |
В, 3 |
В, Б |
|
CLOSE REEL/UNIT (ЗАКРЫТЬ КАТУШКУ/ТОМ) |
Е |
Е, Ж |
Е, Ж |
CLOSE REEL/UNIT FOR REMOVAL (ЗАКРЫТЬ КАТУШКУ/ТОМ С УДАЛЕНИЕМ) |
Е |
Г, Е, Ж |
Г, Е, Ж |
Примечание. Значения символов А—3 приведейы ниже. Там, где эти значения зависят от того, является ли файл входным, выходным или входным- выходным, приводятся дополнительные пояснения, в противном случае эти определения относятся к входным, выходным или входным-выходным файлам.
А — влияние на обработанные ранее катушки (тома).
Входные и входные-выходные файлы. Все катушки (тома) в файле, предшествующие текущей катушке (тому), закрываются, если только для них не выполнялся оператор CLOSE REEL (ЗАКРЫТЬ КАТУШКУ) или CLOSE UNIT (ЗАКРЫТЬ ТОМ). Если текущая катушка (том) в файле не последняя, все следующие катушки (тома) не обрабатываются.
Выходные файлы. Все катушки (тома) файла, предшествующие текущей катушке (тому), закрываются, если для них не выполнялся оператор CLOSE REEL (ЗАКРЫТЬ КАТУШКУ) или CLOSE UNIT (ЗАКРЫТЬ ТОМ).
Б — текущая катушка не перематывается.
Текущая катушка (том) остается в текущей позиции.
В — закрыть файл.
Входные и входные-выходные файлы. Если файл установлен в конце и записи меток для этого файла специфицированы, метки обрабатываются в соответствии со стандартной процедурой обработки меток, определенной реализацией. Действия оператора CLOSE (ЗАКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют, или когда записи меток не специфицированы, но присутствуют. Выполняются операции закрытия, определенные реализацией. Если файл установлен в конце и записи меток для него не специфицированы, метки не обрабатываются, но другие операции закрытия, определенные реализацией, выполняются. Если файл установлен не в конце, выполняются операции закрытия, определенные реализацией, но конечные метки не обрабатываются.
Выходные файлы. Если записи меток для файла специфицированы, метки создаются в соответствии со стандартной процедурой обработки меток, определенной реализацией. Действия оператора CLOSE (ЗАКРЫТЬ) не определены, когда записи меток специфицированы, но в файле отсутствуют, или когда они не специфицированы, но присутствуют. Выполняются операции закрытия, определенные реализацией. Если записи меток для файла не указаны, метки не обрабатываются, но другие операции закрытия, опре- деленные реализацией, выполняются.
Г ■— удаление катушки (тома).
Если это применимо, производится перемотка текущей катушки или тома и логическое удаление их из единицы исполнения. Однако катушка или том может снова стать доступной в порядке расположения катушек или томов в файле, если впоследствии за оператором CLOSE (ЗАКРЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) для этого файла будет выполнен оператор OPEN (ОТКРЫТЬ).
Д — закрыть с замком.
Файл закрывается; он не может быть открыт во время выполнения данной единицы исполнения.
Е — закрыть катушку или закрыть том.
Входные и входные-выходные файлы.
Выполняются следующие операции:
если текущая катушка или том является последней или единственной для файла или если катушка располагается на носителе иной природы, смена катушки или тома не производится; указатель текущего тома остается неизменным;
если для файла существует другая катушка (том), производится смена катушки (тома), указатель текущей катушки (тома) указывает на следующую катушку (том), существующую в файле, выполняется стандартная процедура обработки начальных меток катушки (тома). Если на текущем томе не существует записей данных, производится смена катушки (тома).
Выходные файлы (носители в виде катушки или тома). Выпол- няются следующие операции:
стандартная процедура обработки конечных меток катушки или тома;
смена катушки (тома). Указатель текущего тома указывает на новую катушку (том);
стандартная процедура обработки начальных меток катушки или тома;
следующий оператор WRITE (ПИСАТЬ) записывает следующую логическую запись на следующую катушку или том данного файла.
Выходные файлы (носители не в виде катушки или тома).
Выполнение этого оператора считается успешным. Файл остается открытым; не осуществляются никакие действия, кроме указанных в общем правиле (4).
Ж — перемотка.
Текущая катушка или аналогичное устройство устанавливается на физическое начало.
— необязательные фразы игнорируются.
Оператор CLOSE (ЗАКРЫТЬ) выполняется так, как будто нет необязательных фраз.
Выполнение оператора CLOSE (ЗАКРЫТЬ) приводит к обновлению значения состояния ввода-вывода, связанного с именем- файла-1 (см, п. 1.3.5 настоящей части).
Если отсутствует необязательный входной файл, для файла не выполняется обработка катушки (тома) или конца файла, а указатель позиции файла и указатель текущего тома не изменяются.
После успешного завершения оператора CLOSE (ЗАКРЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) область
записи, связанная с именем-файла-1, становится недоступной. В случае неуспешного выполнения оператора CLOSE (ЗАКРЫТЬ) доступность области записи не определена.
После успешного завершения оператора CLOSE (ЗАКРЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) файл не входит более в число открытых файлов; он более не связан с определителем файла.
Если в операторе CLOSE (ЗАКРЫТЬ) указано более одного имени-файла-1, результат выполнения этого оператора CLOSE (ЗАКРЫТЬ) является таким же, как если бы отдельный оператор CLOSE (ЗАКРЫТЬ) был написан для каждого имени-файла-1 в том же порядке, в каком эти имена файлов указаны в операторе CLOSE (ЗАКРЫТЬ).
4.3. Оператор OPEN (ОТКРЫТЬ)
Назначение
Оператор OPEN (ОТКРЫТЬ) подготавливает файл к обработке. Фраза REVERSED (РЕВЕРСНО) является устаревшим элементом в настоящем стандарте и будет удалена в следующей редакции
Общий формат
OPEN
1-0 {имя-файла-3}.. .
EXTEND {имя-файла-4} . . .
ВХОДНОЙ {имя-файла-1
РЕВЕРСНО
БЕЗ ПЕРЕМОТКИ > ■ •
В
ОТКРЫТЬ
ЫХОДНОЙ {имя-файла-2[БЕЗ ПЕРЕМОТКИ] }...
ВХОДНОЙ-ВЫХОДНОЙ {имя-файла-3}...
ДОПОЛНЯЕМЫЙ {имя-файла-4}..
.Синтаксические правила
Фраза REVERSED (РЕВЕРСНО) может указываться только для последовательных файлов.
Фраза EXTEND (ДОПОЛНЯЕМЫЙ) не может использоваться для файлов, находящихся на одной катушке с другими файлами.
Фраза EXTEND (ДОПОЛНЯЕМЫЙ) может использоваться только для файлов, для которых не была указана фраза LINAGE (ВЕРСТКА).
Файлы, перечисленные в операторе OPEN (ОТКРЫТЬ), могут иметь различную организацию или доступ.
Общие правила
Успешное выполнение оператора OPEN (ОТКРЫТЬ) делает файл доступным для обработки.
Успешное выполнение оператора OPEN (ОТКРЫТЬ) связывает файл с именем-файла посредством определителя файла.
Файл доступен, если он физически имеется в наличии и распознан системой управления вводом-выводом. Приведенная ниже табл. 1. демонстрирует результаты открытия доступных и недоступных файлов.
Таблица 1
Фраза оператора |
Файл доступен |
Файл недоступен |
INPUT (ВХОДНОЙ) INPUT (ВХОДНОЙ) (Необязательный файл) |
Нормальное открытие Нормальное открытие |
Открытие неуспешное Нормальное открытие; при первом чтении возникает условие конца |
1-0 (ВХОДНОИ-ВЫХОД- НОЙ) |
Нормальное открытие |
Открытие неуспешное |
1-0 (ВХОДНОЙ-ВЫХОД- НОЙ (Необязательный файл) OUTPUT (ВЫХОДНОЙ) |
Нормальное открытие |
Открытие приводит к созданию файла |
Нормальное открытие; файл не содержит записей |
Открытие приводит к созданию файла |
|
EXTEND (ДОПОЛНЯЕМЫЙ) |
Нормальное открытие |
Открытие неуспешное |
EXTEND (ДОПОЛНЯЕМЫЙ) (Необязательный файл) |
Нормальное открытие |
Открытие приводит к созданию файла |
Успешное выполнение оператора OPEN (ОТКРЫТЬ) делает область записи доступной программе. Если определитель фай- 434
ЛЭ, связанный с именем файла, является внешним, то существует единственная область записи, связанная с определителем файла для единицы исполнения.
Если файл не открыт, не может быть выполнен ни один оператор, явно или неявно относящийся к файлу, за исключением оператора MERGE (СЛИТЬ) с фразами USING (ИСПОЛЬЗУЯ) и GIVING (ПОЛУЧАЯ), оператора OPEN (ОТКРЫТЬ) или оператора SORT (СОРТИРОВАТЬ) с фразами USING (ИСПОЛЬЗУЯ) и GIVING (ПОЛУЧАЯ).
Оператор OPEN (ОТКРЫТЬ) должен быть успешно выполнен перед выполнением любого другого допустимого оператор» ввода-вывода.
В табл. 2 приведены допустимые операторы ввода-вывода.
Таблица 2
Оператор |
Допустимость сочетаний операторов ввода-вьпода для вариантов оператора OPEN (ОТКРЫТЬ) |
|||
INPUT (ВХОДНОЙ) |
OUTPUT (ВЫХОДНОЙ) |
1-0 (В ход ной- ВЫХОДНОЙ) |
EXTEND (ДОПОЛНЯЕ МЫ Й) |
|
READ (ЧИТАТЬ) |
X |
X |
||
WRITE (ПИСАТЬ) |
— |
X |
— |
X |
REWRITE (ОБНОВИТЬ) |
— |
— |
X |
— |
Примечание. Знак «X» означает допустимые сочетания оператора ввода- вывода и варианта OPEN (ОТКРЫТЬ), «—» — недопустимые.
Файл может быть открыт как INPUT (ВХОДНОЙ), OUTPUT (ВЫХОДНОЙ) |, EXTEND (ДОПОЛНЯЕМЫЙ) | и 1-0 (ВХОДНОЙ-ВЫХОДНОЙ) в одной и той же программе. Каждому последующему оператору OPEN (ОТКРЫТЬ) для одного и того же файла должно предшествовать выполнение оператора CLO- SE (ЗАКРЫТЬ) без фраз REEL (КАТУШКУ), UNIT (ТОМ) или LOCK (С ЗАМКОМ) для данного файла.
Выполнение оператора OPEN (ОТКРЫТЬ) не извлекает и не записывает первую запись данных.
Если указаны записи меток для файла, начальные метки обрабатываются следующим образом:
когда указана фраза INPUT (ВХОДНОЙ), оператор OPEN (ОТКРЫТЬ) осуществляет проверку метой в соответствии с процедурами, определенными реализацией для проверки входных меток;когда указана фраза OUTPUT (ВЫХОДНОЙ), выполнение оператора OPEN (ОТКРЫТЬ) вызывает запись меток в соответствии с процедурами, определенными реализацией для записи выходных меток.