PROCEDURE DIVISION.

DECLARATIVES.

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

оператор USE.

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

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



END DECLARATIVES.

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

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

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

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

ДЕКЛАРАТИВЫ.

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

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

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

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

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

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

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

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

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

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

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

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

[ NO REWIND I

I LOCK J


WITH


[FOR REMOVAL]


f REEL I UNIT


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



[С УДАЛЕНИЕМ]


КАТУШКУ ]

ТОМ } имя-файла-1



БЕЗ ПЕРЕМОТКИ ' С ЗАМКОМ


имя-файла-1


ЗАКРЫТЬ.



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

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

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

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

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

  2. Для того, чтобы показать действие различных типов опе­ратора CLOSE (ЗАКРЫТЬ) для различных носителей данных, все файлы разделяются на следующие категории:

  1. без катушек (томов). Файл, носитель которого такой, что для него понятие перемотки катушек (томов) не имеет смысла;

  2. последовательный однокатушечный (однотомный). Последо­вательный файл, который полностью располагается на одной ка­тушке (томе);

  3. последовательный файл, который располагается на несколь­ких катушках (томах).

(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 (ОТКРЫТЬ).

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

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

Е — закрыть катушку или закрыть том.

Входные и входные-выходные файлы.

Выполняются следующие операции:

  1. если текущая катушка или том является последней или един­ственной для файла или если катушка располагается на носителе иной природы, смена катушки или тома не производится; указа­тель текущего тома остается неизменным;

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

Выходные файлы (носители в виде катушки или тома). Выпол- няются следующие операции:

  1. стандартная процедура обработки конечных меток катушки или тома;

  2. смена катушки (тома). Указатель текущего тома указывает на новую катушку (том);

  3. стандартная процедура обработки начальных меток катуш­ки или тома;

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

Выходные файлы (носители не в виде катушки или тома).

Выполнение этого оператора считается успешным. Файл оста­ется открытым; не осуществляются никакие действия, кроме ука­занных в общем правиле (4).

Ж — перемотка.

Текущая катушка или аналогичное устройство устанавливается на физическое начало.

  1. — необязательные фразы игнорируются.

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

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

  2. Если отсутствует необязательный входной файл, для файла не выполняется обработка катушки (тома) или конца файла, а указатель позиции файла и указатель текущего тома не изменяются.

После успешного завершения оператора CLOSE (ЗАК­РЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) область

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

  2. После успешного завершения оператора CLOSE (ЗАК­РЫТЬ) без фразы REEL (КАТУШКУ) или UNIT (ТОМ) файл не входит более в число открытых файлов; он более не связан с опре­делителем файла.

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

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

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

Оператор OPEN (ОТКРЫТЬ) подготавливает файл к обработ­ке. Фраза REVERSED (РЕВЕРСНО) является устаревшим эле­ментом в настоящем стандарте и будет удалена в следующей ре­дакции

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


OPEN

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


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

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

РЕВЕРСНО

БЕЗ ПЕРЕМОТКИ > ■ •

В

ОТКРЫТЬ

ЫХОДНОЙ {имя-файла-2

[БЕЗ ПЕРЕМОТКИ] }...

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

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

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

  1. Фраза REVERSED (РЕВЕРСНО) может указываться только для последовательных файлов.

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

  3. Фраза EXTEND (ДОПОЛНЯЕМЫЙ) может использо­ваться только для файлов, для которых не была указана фраза LINAGE (ВЕРСТКА).

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

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

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

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

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

Таблица 1

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

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

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

INPUT (ВХОДНОЙ)

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

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

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

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

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

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

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

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

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

(Необязательный файл)

OUTPUT (ВЫХОДНОЙ)

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

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

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

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

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

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

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

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

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

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



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

ЛЭ, связанный с именем файла, является внешним, то существует единственная область записи, связанная с определителем файла для единицы исполнения.

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

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

В табл. 2 приведены допустимые операторы ввода-вывода.

Таблица 2

Оператор

Допустимость сочетаний операторов ввода-вьпода для вариантов оператора OPEN (ОТКРЫТЬ)

INPUT (ВХОДНОЙ)

OUTPUT (ВЫХОДНОЙ)

1-0 (В ход ной- ВЫХОДНОЙ)

EXTEND (ДОПОЛНЯЕ­

МЫ Й)

READ (ЧИТАТЬ)

X

X

WRITE (ПИСАТЬ)

X

X

REWRITE (ОБНОВИТЬ)

X

Примечание. Знак «X» означает допустимые сочетания оператора ввода- вывода и варианта OPEN (ОТКРЫТЬ), «—» — недопустимые.



  1. Файл может быть открыт как INPUT (ВХОДНОЙ), OUT­PUT (ВЫХОДНОЙ) |, EXTEND (ДОПОЛНЯЕМЫЙ) | и 1-0 (ВХОДНОЙ-ВЫХОДНОЙ) в одной и той же программе. Каждо­му последующему оператору OPEN (ОТКРЫТЬ) для одного и то­го же файла должно предшествовать выполнение оператора CLO- SE (ЗАКРЫТЬ) без фраз REEL (КАТУШКУ), UNIT (ТОМ) или LOCK (С ЗАМКОМ) для данного файла.

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

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

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