Оператор START (ПОДВЕСТИ)
Назначение
Оператор START (ПОДВЕСТИ) предоставляет возможность логического позиционирования относительного файла для дальнейшего последовательного извлечения записей.
Общий формат
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 не определена соответствующая процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), должна быть указана фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА).
Имя-данного-1, если оно задано, должно относиться к данному, указанному во фразе RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) фразы ACCESS MODE (ДОСТУП) соответствующей статьи управления файлом.
Общие правила
Файл, представленный именем-файла-1, ко времени выполнения оператора START (ПОДВЕСТИ) должен быть открыт для ввода или ввода-вывода (см. п. 4.4 настоящей части).
Если фраза KEY (КЛЮЧ) не указана, подразумевается знак отношения ЕОИАЛ (РАВЕН).
Выполнение оператора START (ПОДВЕСТИ) не изменяет ни содержимое области записи, ни содержимое данного, представленного именем-данного, указанным во фразе DEPENDING ON (В ЗАВИСИМОСТИ ОТ) фразы RECORD (В ЗАПИСИ), относящейся к имени файла-1.
Сравнение, определяемое знаком отношения во фразе KEY (КЛЮЧ), проводится между ключом записи файла, представленного именем-файла-1, и данным, как указано в общем правиле (10). Применяются правила числового сравнения (см. ч. 6, п. 6.3.1.1.1).
Указатель позиции файла устанавливается на относительный номер записи первой логической записи файла, ключ которой удовлетворяет сравнению.
Если сравнение не удовлетворяется ни для одной записи файла, возникает условие ошибки ключа, и выполнение оператора START (ПОДВЕСТИ) считается неуспешным.
При выполнении оператора START (ПОДВЕСТИ) обновляется значение состояния ввода-вывода, относящегося к имени-файла-1 (см. п. 1.3.4 настоящей части).
Если во время выполнения оператора START (ПОДВЕСТИ) указатель позиции файла определяет, что необязательный входной файл отсутствует, возникает условие ошибки ключа, и выполнение оператора START (ПОДВЕСТИ) является неуспешным.
Передача управления после успешного или неуспешного выполнения оператора START (ПОДВЕСТИ) зависит от наличия или отсутствия необязательных фраз INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) и NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) в операторе START (ПОДВЕСТИ) (см. п. 1.3.5 настоящей части).
После неуспешного выполнения оператора START (ПОДВЕСТИ) указатель позиции файла указывает, что правильная следующая, запись не установлена.
Фраза END-START (КОНЕЦ-ПОДВЕСТИ) ограничивает область действия оператора START (ПОДВЕСТИ) (см. ч. 4, п. 6.4.3).
Сравнение, описанное в общем правиле (4), использует данное, представленное фразой RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) фразы ACCESS MODE (ДОСТУП), отно- сящейся к имени-файла-1.
Оператор USE (ИСПОЛЬЗОВАТЬ)
Назначение
Оператор USE (ИСПОЛЬЗОВАТЬ) определяет процедуры обработки ошибок ввода-вывода дополнительно к стандартным процедурам, предоставляемым системой управления вводом-выводом.
Общий формат
USE AFTER STANDARD PROCEDURE
I ERROR j
{имя-файла-1} |~j '■
INPUT ~ j
,_T OUTPUT
EXTEND і
( і
ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ
ОШИБКИ
{ {имя-файла-1} V.J |
I ВХОДНЫХ |
П ПЯ!выходных I
! входных-выходных
j ДОПОЛНЯЕМЫХ!
і _—: I
С и н т а к с и ч е с к и е правила
(1) Оператор USE (ИСПОЛЬЗОВАТЬ) должен непосредственно следовать за заголовком секции декларативной части раздела процедур и должен быть единственным в предложении. Остальная часть декларативной секции должна состоять из одного или более процедурных параграфов, определяющих процедуры, которые должны использоваться.
-(2) Сам оператор USE (ИСПОЛЬЗОВАТЬ) никогда не выполняется; он только определяет условия, вызывающие выполнение указанных после него процедур.Появление имени-файла-1 в операторе USE (ИСПОЛЬЗОВАТЬ) не должно требовать одновременного выполнения более чем одной декларативной секции.
Слова ERROR и EXCEPTION являются синонимами и взаимозаменяемы.
Файлы, к которым явно или неявно обращаются в операторе USE (ИСПОЛЬЗОВАТЬ), могут иметь различную организацию или доступ.
Каждая из фраз INPUT (ВХОДНЫХ), OUTPUTJВЫХОДНЫХ), 1-0 (ВХОДНЫХ-ВЫХОДНЫХ) |и EXTEND (ДОПОЛНЯ-| |ЕМЫХ) [ может указываться лишь раз в декларативной части раздела процедур.
4.8.4. Общие правила
Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли эта программа другую программу, или сама содержится в другой программе. Декларатива вызывается тогда, когда во время выполнения программы выполняются условия, описанные в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе. Только одна декларатива внутри отдельно скомпилированной программы, содержащей оператор, который вызвал уточняющее условие, вызывается тогда, когда выполняется какое-либо из условий, описанных в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе, во время выполнения программы. Если не существует уточняющей декларативы в отдельно скомпилированной программе, то декларатива не выполняется.
Внутри декларативной процедуры не должно быть обращений к каким-либо процедурам в недекларативной части раздела! процедур.
К именам процедур, связанных с оператором USE (ИСПОЛЬЗОВАТЬ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только оператором PERFORM (ВЫПОЛНИТЬ).
Когда имя-файла-1 описано явно, то к имени-файла-1 не применяется никаких других операторов USE (ИСПОЛЬЗОВАТЬ).
Процедуры, связанные с оператором USE (ИСПОЛЬЗОВАТЬ), выполняются системой управления вводом-выводом после завершения стандартной программы ошибки ввода-вывода при неуспешном выполнении, если только не сработает фраза AT END (В КОНЦЕ) или INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА). При выполнении процедур соблюдаются следующие правила:
если указано имя-файла-1, то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ);
если указано INPUT (ВХОДНЫХ), то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для ввода или в процессе открытия для ввода, за исключением файлов, указанных именем-файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;
если указано OUTPUT (ВЫХОДНЫХ), то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для вывода или же в процессе открытия для вывода, за исключением файлов, указанных именем-файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;
если указано 1-0 (ВХОДНЫХ-ВЫХОДНЫХ), то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для ввода-вывода или в процессе открытия для ввода-вывода, за исключением файлов, указанных именем-файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;
если указано EXTEND (ДОПОЛНЯЕМЫХ), то соответствующая процедура выполняется при выполнении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ), для какого-либо файла, открытого для дополнения или в процессе открытия для дополнения, за исключением файлов, указанных именем- файла-1 в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;
После выполнения процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), управление передается вызывающей программе в системе управления вводом-выводом. Если значение состояния ввода-вывода не указывает на критическую ошибку ввода-вывода, то система управления вводом-выводом возвращает управление оператору, следующему за оператором ввода-вывода, выполнение которого вызвало ошибку. Если значение состояния ввода-вывода указывает на критическую ошибку, то действие определяется реализацией (см. п. 1.3.4 настоящей части).
В процедуре, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, которые могут потребовать выполнения процедуры, связанной с другим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.
4.9. Оператор WRITE (ПИСАТЬ)
Назначение
Оператор WRITE (ПИСАТЬ) включает логическую запись в выходной или входной-выходной файл.Общий формат
WRITE имя-записи-1 [FROM идентификатор-1]
[INVALID KEY повелительный-оператор-1]
[NOT INVALID KEY повелительный-оператор-2]
[END-WRITE]
ПИСАТЬ имя-записи-1 [ИЗ ПОЛЯ идентификатор-1]
[ПРИ ОШИБКЕ КЛЮЧА повелительный-оператор-1] [БЕЗ ОШИБКИ КЛЮЧА повелительный-оператор-2] [КОНЕЦ-ПИСАТЬ]
Синтаксические правила
Имя-записи-1 и идентификатор-1 не должны относиться к одной и той же области памяти.
Имя-записи-1 является именем логической записи в секции файлов раздела данных и может быть уточнено.
Фраза INVALID KEY (ПРИ ОШИБКЕ КЛЮЧА) должна указываться в операторе WRITE (ПИСАТЬ) для файлов, для которых не определена соответствующая процедура USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ).
Общие правила
Файл, указанный именем-файла, связанным с именем-за- писи-1, должен быть открыт как OUTPUT (ВЫХОДНОЙ) : или | I EXTEND (ДОПОЛНЯЕМЫЙ) | ко времени выполнения этого оператора (см. п. 4.4 настоящей части).
Логическая запись, включаемая в файл при успешном выполнении оператора WRITE (ПИСАТЬ), становится недоступной в области записи. 1 Исключение представляют случаи, когда имя- файла, связанное с именем-записи-1, указано во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ). Если имя относится к имени-файла, указанному во фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), логическая запись доступна программе и как запись файла, связанного с именем-записи-1, и как запись других файлов, указанных в той же фразе SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ), что и I соответствующий выходной файли і
Результат выполнения оператора WRITE (ПИСАТЬ) с фразой FROM (ИЗ ПОЛЯ) эквивалентен выполнению следующих, операторов в указанном порядке:
оператор '
MOVE идентификатор-1 ТО имя-записи-1
ПОМЕСТИТЬ идентификатор-1 В имя-записи-1
соответственно правилам, специфицированным в операторе MOVE (ПОМЕСТИТЬ);
тот же оператор WRITE (ПИСАТЬ) без фразы FROM (ИЗ ПОЛЯ).
После завершения выполнения оператора WRITE (ПИСАТЬ) информация в области, указанной идентификатором-!, остается доступной, даже если информация в области, указанной именем-записи-1, не является доступной, за исключением случая, определяемого фразой SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗАПИСИ).
Выполнение оператора WRITE (ПИСАТЬ) не влияет на указатель позиции файла.
Выполнение оператора WRITE (ПИСАТЬ) вызывает обновление состояния ввода-вывода имени-файла, связанного с именем- записи-1 (см. п. 1.3.4 настоящей части).
При выполнении оператора WRITE (ПИСАТЬ) логическая запись передается операционной системе.
Количество позиций литер в записи, указанной именем- записи-1, не должно быть больше наибольшего или меньше наименьшего числа литер, допустимого фразой RECORD IS VARYING (В ЗАПИСИ ПЕРЕМЕННОЕ ЧИСЛО ЛИТЕР), связанной с именем-файла, связанного с именем-записи-1. В любом случае выполнение оператора WRITE (ПИСАТЬ) неуспешно, операция записи не производится, содержимое области записи не меняется, и состояние ввода-вывода файла, связанного с име- нем-записи-1, принимает значение, указывающее на причину возникновения условия (см. п. 1.3.4 настоящей части).
Если во время выполнения оператора WRITE (ПИСАТЬ) с фразой NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА) не наступает условие ошибки ключа, то управление передается повели- тельному-оператору-2 следующим образом:
если выполнение оператора WRITE (ПИСАТЬ) успешно, то управление передается после того, как запись записана, и после изменения состояния ввода-вывода имени-файла, связанного с именем-записи-1;
если выполнение оператора WRITE (ПИСАТЬ) неуспешно не из-за ошибки ключа, то управление передается после обновления состояния ввода-вывода для имени-файла, связанного с име- нем-записи-1, и после выполнения процедуры, определенной оператором USE AFTER STANDARD EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ), применимой к имени-файла, связанного с именем-записи-1, если таковая указана.
Фраза END-WRITE (КОНЕЦ-ПИСАТЬ) ограничивает область действия оператора WRITE (ПИСАТЬ) (см. ч. 4, п. 6.4.3).Если относительный файл открывается как выходной, записи могут быть помещены в файл одним из следующих способов:
а) если доступ последовательный, оператор WRITE (ПИСАТЬ) передает запись системе управления массовой памятью. Первая запись будет иметь относительный номер записи 1, а последующие включаемые записи будут иметь номера записей 2, 3, 4, ... . Если фраза RELATIVE KEY (ОТНОСИТЕЛЬНЫЙ КЛЮЧ) была указана для имени-файла, связанного с именем-записи-1, во время выполнения оператора WRITE (ПИСАТЬ) относительный номер переданной записи будет помещен СУМП в данное, определенное как относительный ключ, согласно правилам для оператора MOVE (ПОМЕСТИТЬ) (см. ч. 6, п. 6.1.9);