1. Оператор START (ПОДВЕСТИ)

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

Оператор START (ПОДВЕСТИ) предоставляет возмож­ность логического позиционирования относительного файла для дальнейшего последовательного извлечения записей.

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

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

KEY

IS EQUAL ТО

IS =

IS GREATER THAN

IS >

IS NOT LESS THAN

IS NOT <

IS GREATER THAN OR EQUAL TO

имя-данно ro-1


IS > -


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

ПОДВЕСТИ ЗАПИСЬ имя-файла-1

<РАВЕН

БОЛЬШЕ

I имя-дэнного-1


НЕ МЕНЬШЕ



НЕ <

БОЛЬШЕ ИЛИ РАВЕН

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

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

  1. Имя-файла-1 должно быть именем файла с последова­тельным или динамическим доступом.

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

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

  4. Имя-данного-1, если оно задано, должно относиться к данному, указанному во фразе RELATIVE KEY (ОТНОСИ­ТЕЛЬНЫЙ КЛЮЧ) фразы ACCESS MODE (ДОСТУП) соот­ветствующей статьи управления файлом.

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

  1. Файл, представленный именем-файла-1, ко времени вы­полнения оператора START (ПОДВЕСТИ) должен быть открыт для ввода или ввода-вывода (см. п. 4.4 настоящей части).

  2. Если фраза KEY (КЛЮЧ) не указана, подразумевается знак отношения ЕОИАЛ (РАВЕН).

  3. Выполнение оператора START (ПОДВЕСТИ) не изме­няет ни содержимое области записи, ни содержимое данного, представленного именем-данного, указанным во фразе DEPEN­DING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В ЗАПИ­СИ), относящейся к имени файла-1.

  4. Сравнение, определяемое знаком отношения во фразе KEY (КЛЮЧ), проводится между ключом записи файла, пред­ставленного именем-файла-1, и данным, как указано в общем правиле (10). Применяются правила числового сравнения (см. ч. 6, п. 6.3.1.1.1).

  1. Указатель позиции файла устанавливается на относи­тельный номер записи первой логической записи файла, ключ которой удовлетворяет сравнению.

  2. Если сравнение не удовлетворяется ни для одной записи файла, возникает условие ошибки ключа, и выполнение операто­ра START (ПОДВЕСТИ) считается неуспешным.

  1. При выполнении оператора START (ПОДВЕСТИ) об­новляется значение состояния ввода-вывода, относящегося к имени-файла-1 (см. п. 1.3.4 настоящей части).

  2. Если во время выполнения оператора START (ПОДВЕС­ТИ) указатель позиции файла определяет, что необязательный входной файл отсутствует, возникает условие ошибки ключа, и выполнение оператора START (ПОДВЕСТИ) является неуспеш­ным.

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

  4. После неуспешного выполнения оператора START (ПОД­ВЕСТИ) указатель позиции файла указывает, что правильная следующая, запись не установлена.

  5. Фраза END-START (КОНЕЦ-ПОДВЕСТИ) ограничи­вает область действия оператора START (ПОДВЕСТИ) (см. ч. 4, п. 6.4.3).

  6. Сравнение, описанное в общем правиле (4), использу­ет данное, представленное фразой RELATIVE KEY (ОТНОСИ­ТЕЛЬНЫЙ КЛЮЧ) фразы ACCESS MODE (ДОСТУП), отно- сящейся к имени-файла-1.

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

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

Оператор USE (ИСПОЛЬЗОВАТЬ) определяет процедуры об­работки ошибок ввода-вывода дополнительно к стандартным про­цедурам, предоставляемым системой управления вводом-выводом.

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

USE AFTER STANDARD PROCEDURE

I ERROR j

{имя-файла-1} |~j '■

INPUT ~ j

,_T OUTPUT

EXTEND і

( і

ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ

ОШИБКИ

{ {имя-файла-1} V.J |

I ВХОДНЫХ |

П ПЯ!выходных I

! входных-выходных

j ДОПОЛНЯЕМЫХ!

і _—: I

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

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

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

  2. Слова ERROR и EXCEPTION являются синонимами и взаи­мозаменяемы.

  3. Файлы, к которым явно или неявно обращаются в опера­торе USE (ИСПОЛЬЗОВАТЬ), могут иметь различную организа­цию или доступ.

  4. Каждая из фраз INPUT (ВХОДНЫХ), OUTPUTJВЫХОД­НЫХ), 1-0 (ВХОДНЫХ-ВЫХОДНЫХ) |и EXTEND (ДОПОЛНЯ-| |ЕМЫХ) [ может указываться лишь раз в декларативной части раздела процедур.

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

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

  2. Внутри декларативной процедуры не должно быть обраще­ний к каким-либо процедурам в недекларативной части раздела! процедур.

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

  4. Когда имя-файла-1 описано явно, то к имени-файла-1 не применяется никаких других операторов USE (ИСПОЛЬЗО­ВАТЬ).

  5. Процедуры, связанные с оператором USE (ИСПОЛЬЗО­ВАТЬ), выполняются системой управления вводом-выводом после завершения стандартной программы ошибки ввода-вывода при не­успешном выполнении, если только не сработает фраза AT END (В КОНЦЕ) или INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА). При выполнении процедур соблюдаются следующие правила:

  1. если указано имя-файла-1, то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ);

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

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

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

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

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

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

4.9. Оператор WRITE (ПИСАТЬ)

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

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

WRITE имя-записи-1 [FROM идентификатор-1]

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

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

[END-WRITE]

ПИСАТЬ имя-записи-1 [ИЗ ПОЛЯ идентификатор-1]

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

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

  1. Имя-записи-1 и идентификатор-1 не должны относиться к одной и той же области памяти.

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

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

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

  1. Файл, указанный именем-файла, связанным с именем-за- писи-1, должен быть открыт как OUTPUT (ВЫХОДНОЙ) : или | I EXTEND (ДОПОЛНЯЕМЫЙ) | ко времени выполнения этого оператора (см. п. 4.4 настоящей части).

  2. Логическая запись, включаемая в файл при успешном вы­полнении оператора WRITE (ПИСАТЬ), становится недоступной в области записи. 1 Исключение представляют случаи, когда имя- файла, связанное с именем-записи-1, указано во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ). Если имя от­носится к имени-файла, указанному во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), логическая запись дос­тупна программе и как запись файла, связанного с именем-за­писи-1, и как запись других файлов, указанных в той же фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), что и I соответствующий выходной файли і

  3. Результат выполнения оператора WRITE (ПИСАТЬ) с фразой FROM (ИЗ ПОЛЯ) эквивалентен выполнению следующих, операторов в указанном порядке:

  1. оператор '

MOVE идентификатор-1 ТО имя-записи-1

ПОМЕСТИТЬ идентификатор-1 В имя-записи-1

соответственно правилам, специфицированным в операторе MOVE (ПОМЕСТИТЬ);

  1. тот же оператор WRITE (ПИСАТЬ) без фразы FROM (ИЗ ПОЛЯ).

  1. После завершения выполнения оператора WRITE (ПИ­САТЬ) информация в области, указанной идентификатором-!, ос­тается доступной, даже если информация в области, указанной именем-записи-1, не является доступной, за исключением случая, определяемого фразой SAME RECORD AREA (ОБЩАЯ ОБ­ЛАСТЬ ЗАПИСИ).

  2. Выполнение оператора WRITE (ПИСАТЬ) не влияет на указатель позиции файла.

  3. Выполнение оператора WRITE (ПИСАТЬ) вызывает обнов­ление состояния ввода-вывода имени-файла, связанного с именем- записи-1 (см. п. 1.3.4 настоящей части).

  4. При выполнении оператора WRITE (ПИСАТЬ) логическая запись передается операционной системе.

  5. Количество позиций литер в записи, указанной именем- записи-1, не должно быть больше наибольшего или меньше наи­меньшего числа литер, допустимого фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО ЛИТЕР), свя­занной с именем-файла, связанного с именем-записи-1. В любом случае выполнение оператора WRITE (ПИСАТЬ) неуспешно, операция записи не производится, содержимое области записи не меняется, и состояние ввода-вывода файла, связанного с име- нем-записи-1, принимает значение, указывающее на причину возникновения условия (см. п. 1.3.4 настоящей части).

  6. Если во время выполнения оператора WRITE (ПИСАТЬ) с фразой NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) не нас­тупает условие ошибки ключа, то управление передается повели- тельному-оператору-2 следующим образом:

  1. если выполнение оператора WRITE (ПИСАТЬ) успешно, то управление передается после того, как запись записана, и после изменения состояния ввода-вывода имени-файла, связанного с именем-записи-1;

  2. если выполнение оператора WRITE (ПИСАТЬ) неуспешно не из-за ошибки ключа, то управление передается после обновле­ния состояния ввода-вывода для имени-файла, связанного с име- нем-записи-1, и после выполнения процедуры, определенной опера­тором USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), примени­мой к имени-файла, связанного с именем-записи-1, если таковая указана.

  1. Фраза END-WRITE (КОНЕЦ-ПИСАТЬ) ограничивает область действия оператора WRITE (ПИСАТЬ) (см. ч. 4, п. 6.4.3).Если относительный файл открывается как выходной, за­писи могут быть помещены в файл одним из следующих способов:

а) если доступ последовательный, оператор WRITE (ПИСАТЬ) передает запись системе управления массовой памятью. Первая за­пись будет иметь относительный номер записи 1, а последующие включаемые записи будут иметь номера записей 2, 3, 4, ... . Если фраза RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) бы­ла указана для имени-файла, связанного с именем-записи-1, во время выполнения оператора WRITE (ПИСАТЬ) относительный номер переданной записи будет помещен СУМП в данное, опреде­ленное как относительный ключ, согласно правилам для оператора MOVE (ПОМЕСТИТЬ) (см. ч. 6, п. 6.1.9);