Перейти до вмісту
ГОСТ 22558-89
/ 116

стандартная процедура конечных меток катушки (тома);

смена катушек (томов). Значение указателя тома указывает на следующую существующую для файла катушку (том);

стандартная процедура начальных меток катушки (тома).

Если указатель позиции файла указывает, что не сущест­вует следующей логической записи [или что нет в наличии необя- I зательного входного файла, выполняются следующие действия в указанном порядке:

значение, полученное в результате установки указателя по­зиции файла, присваивается состоянию ввода-вывода, связанному с именем-файла-1, для обозначения условия конца (см. п. 1.3.5' настоящей части);

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

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

Если возникает условие конца, выполнение оператора READ (ЧИТАТЬ) является неуспешным.

Если во время выполнения оператора READ (ЧИТАТЬ) условие конца не возникает, фраза AT END (В КОНЦЕ) игнори­руется, если она указана, и выполняются следующие действия:

устанавливается значение указателя позиции файла и изме­няется значение состояния ввода-вывода, связанного с именем- файла-1;

если существует условие особой ситуации, но не условие конца, управление передается процедуре USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ ПРОЦЕДУРЫ ОШИБКИ) согласно правилам оператора USE (ИСПОЛЬЗОВАТЬ), применимого к имени-файла-1 (п. 4.6 настоящей части);

если условие особой ситуации не существует, запись стано­вится доступной в области записи и выполняются любые неявные пересылки, предопределенные фразой INTO (В). Управление пе­редается в точку выхода оператора READ( ЧИТАТЬ) или повели- тельному-оператору-2, если он указан. В последнем случае выпол­нение продолжается согласно правилам для операторов, указанных в повелительном-операторе-2. Если выполняется оператор ветвле­ния или условный оператор, вызывающие явную передачу управ­ления, оно передается в соответствии с правилами для этих опера­торов, в противном случае после завершения выполнения повели- тельного-оператора-2 управление передается в точку выхода опе­ратора READ (ЧИТАТЬ).

После неуспешного завершения выполнения оператора READ (ЧИТАТЬ) содержимое соответствующей области записи не определено; указателю позиции файла присвоено значение, ука­зывающее, что правильная следующая запись не установлена.

Если число позиций литер прочитанной записи меньше чем минимальный размер, указанный в статьях описания запи­си для имени-файла-1, то часть области записи, находящаяся справа от последней прочитанной литеры, является неопреде­ленной. Если число позиций литер в читаемой записи больше, чем максимальный размер, указанный в статьях описания запи­си для имени-файла-1, то запись усекается справа до макси­мального размера. В любом из этих случаев оператор READ (ЧИТАТЬ) выполняется успешно и состояние ввода-вывода устанавливается для указания, что произошло нарушение дли­ны записи (см. п. 1.3 настоящей части).

Фраза END-READ (КОНЕЦ-ЧИТАТЬ) ограничивает об­ласть действия оператора READ (ЧИТАТЬ) (см. ч. 4, п. 4.6.3).

4.5 Оператор REWRITE (ОБНОВИТЬ)

Назначение

Оператор REWRITE (ОБНОВИТЬ) логически заменяет запись в файле на устройстве массовой памяти.

Общий формат

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

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

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

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

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

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

Во время выполнения этого оператора файл, связанный с именем-записи-1, должен быть файлом массовой памяти и должен быть открыт как входной-выходной (см. п. 4.3 настоящей части).

Последним оператором ввода-вывода для соответствующе­го файла перед выполнением оператора REWRITE (ОБНОВИТЬ) должен быть успешно выполненный оператор READ (ЧИТАТЬ). Система управления массовой памятью (СУМП) логически заме­няет запись, которая была извлечена оператором READ (ЧИ­ТАТЬ).

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

Выполнение оператора REWRITE (ОБНОВИТЬ) с фразой FROM (ИЗ ПОЛЯ) эквивалентно выполнению следующих опера­торов в указанном порядке:

Оператор

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

(ПОМЕСТИТЬ идентификатор-1 В имя-записи-1) соответствен­но правилам, описанным для оператора MOVE (ПОМЕСТИТЬ);

тот же оператор REWRITE (ОБНОВИТЬ) без фразы FROM (ИЗ ПОЛЯ).

После завершения выполнения оператора REWRITE (ОБ­НОВИТЬ) информация в области, указанной идентификатором-1, остается доступной, даже если информация в области, указанной именем-записи-1, не является доступной кроме случая, опреде-

ленного фразой SAME RECORD AREA (ОБЩАЯ ОБЛАСТЬ ЗА­ПИСИ).

Выполнение оператора REWRITE (ОБНОВИТЬ) не влия­ет на указатель позиции файла.

Выполнение оператора REWRITE (ОБНОВИТЬ) вызывает обновление состояния ввода-вывода для файла, связанного с име- нем-записи-1 (см. п. 1.3.5 настоящей части).

При выполнении оператора REWRITE (ОБНОВИТЬ) ло­гическая запись передается операционной системе.

Если число позиций литер, описанное в записи, указанной именем-записи-1, не равно числу позиций литер в заменяемой за^ писи, то выполнение оператора REWRITE (ОБНОВИТЬ) будет не­успешным, операции обновления не произойдет, содержимое об­ласти записи не изменится и состояние вовда-вывода файла, свя­занного с именем-записи-1, примет значение, указывающее причи­ну условия (особого состояния) (см. п. 1.3.5 настоящей части).

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

Назначение

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

Общий формат

І PROCEDURE


J EXCEPTION (ERROR


USE AFTER STANDARD


{имя-файла-1} ]

INPUT I

і OUTPUT

ON -

EXTEND

СТАНДАРТНОЙ ПРОЦЕДУРЫ


ЬО J

ИСПОЛЬЗОВАТЬ ПОСЛЕ

ОШИБКИ

{имя-файла-1} |- ■ -| ВХОДНЫХ выходных

ДЛЯ ВХОДИ ЫХ-ВЫХОДНЫХ

дополняемых

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

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

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

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

Слова ERROR и EXCEPTION обозначают особую ситуацию и являются синонимами.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

да-вывода указывает на критическую ошибку, то действие опреде­ляется реализацией.

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

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

Назначение

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

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

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


END-OF-PAGE

EOP


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


мнемоническое-имя-1

PAGE

I V


LINE

LINES


идентификатор-2 ]

целое-1 (


[NOT AT


I END-OF-PAGE lAT I EOP


ADVANCING


I BEFORE (AFTER


END-WRITE]

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

I ПРОДВИЖЕНИЯ

I ПОСЛЕ ( ДО

1 идентификатор-2 1 СурОК- j [ целое-1 I

1 мнемоническое-имя-1 I СТРАНИЦЫ

[В КОНЦЕ СТРАНИЦЫ повелительный-опер атор-1 ]

[НЕ В КОНЦЕ СТРАНИЦЫ повелительный-оператор-2]

[КОНЕЦ-ПИСАТЬ]

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

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

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

Фраза ADVINCING (ПРОДВИЖЕНИЯ) мнемониче- ское-имя-1 не может быть указана для файла, который связан со статьей описания файла, содержащей фразу LINAGE (ВЕРСТ­КА).

Идентификатор-2 должен относиться к элементарному це­лому данному.

Целое-1 может быть положительным числом или нулем, но не должно быть отрицательным.

Когда специфицируется мнемоническое-имя-1, то имя связывается с особым свойством, описанным реализацией. Мне- моническое-имя-1 определяется в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) раздела оборудования.

Фразы ADVANCING (ПРОДВИЖЕНИЯ СТРАНИ­ЦЫ) и END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) не долж- : ны быть специфицированы в одном операторе WRITE (ПИ- : САТЬ).

Если указана фраза END-OF-PAGE (В КОНЦЕ СТРА- ■ НИЦЫ) или NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИ­ЦЫ), то фраза LINAGE (ВЕРСТКА) должна быть указана в статье описания соответствующего файла.

Слова END-OF-PAGE и ЕОР являются эквивалентами.

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

Файл, указанный именем-файла, связанным с именем-за- писи-1, должен быть открыт для вывода или дополнения I ко времени выполнения этого оператора (см. п. 4.3.1 настоящей час­ти) .

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

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →