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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. Оператор

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

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

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

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

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

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

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

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

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

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

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

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

  1. О

    PROCEDURE


    J EXCEPTION (ERROR


    USE AFTER STANDARD


    бщий формат

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

INPUT I

і OUTPUT

ON -

EXTEND

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


ЬО J

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



ОШИБКИ

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

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

дополняемых

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оператор 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 и идентификатор-1 не должны относиться к одной и той же области памяти.

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

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

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

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

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

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

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

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

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

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

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

.ЯЗЫК ПРОГРАММИРОВАНИЯ КОБОЛ

ГОСТ 22558—89
(СТ СЭВ 6184—88, ИСО 1989—85)

Части 1—7

Редактор В. П. Огурцов
Технический редактор О. И. Никитина
Корректор И. Д. Чехотина

Сдано в наб. ЗС.01.90 Подп. в печ. 29.04.91 28,0 усл. п. л. 28,25 усл. кр.-отт, 29,60 уч.-изд. л.
Тир. 11000 Цена 5 р. 90 к.

Ордена «Знак Почета» Издательство стандартов, 123557, Москва, ГСП,
Новопреспенсккй пер.. 3.

Калужская типография стандартов, ул. Московская, 236. Зак. 254




ГОСУДАРСТВЕННЫЙ СТАНДАРТ
СОЮЗА ССР

ЯЗЫК ПРОГРАММИРОВАНИЯ
КОБОЛ

ГОСТ 22558—89
(СТ СЭВ 6184-88, ИСО 1989-85)

ЧАСТИ 8—17

Издание официальное

10 р. 70 к.



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

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

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