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

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

ГОСТ 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 к.

КОМИТЕТ СТАНДАРТИЗАЦИИ И МЕТРОЛОГИИ СССР Москва

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

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

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

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

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

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

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

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

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

Если во время выполнения оператора WRITE (ПИСАТЬ) с фразой NOT END-OF-PAGE (НЕ В КОНЦЕ СТРАНИЦЫ) не наступает условие конца страницы, то управление передается повелительному-оператору-2 следующим образом:

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

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

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

Отношение следования последовательного файла уста­навливается порядком выполнения операторов WRITE (ПИ­САТЬ) при создании файла. Отношение не изменяется, | за исклю-1 |чением случая, когда записи добавляются в конец файла'Д

Когда последовательный файл открыт как EXTEND (ДОПОЛНЯЕМЫЙ), то в результате выполнения оператора WRITE (ПИСАТЬ) записи будут добавляться в конец файла так, как если бы файл был открыт как OUTPUT (ВЫХОДНОЙ), Если в файле есть записи, то первая запись, записанная после выполнения оператора OPEN (ОТКРЫТЬ) с фразой EXTEND (ДОПОЛНЯЕМЫЙ), является следующей после последней за­писи в файле.

Когда делается попытка записать запись за внешне опреде­ленными границами последовательного файла, то возникает усло­вие ошибки и содержимое области записи остается неизменным. Происходят следующие действия:

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

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

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

Если распознается конец катушки/тома и внешне опреде­ленные границы файла не превышены, то выполняются следующие операции:

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

смена катушки/тома. Указатель текущего тома изменяется для указания на следующую катушку/том, существующую для файла;

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

Фразы ADVANCING (ПРОДВИЖЕНИЯ) | и END-OF- PAGE (В КОНЦЕ СТРАНИЦЫ) | позволяют управлять верти­кальным позиционированием строки на печатаемой странице. Ес­ли фраза ADVANCING (ПРОДВИЖЕНИЯ) не используется, реа­лизацией будет обеспечиваться автоматическое продвижение, как если бы пользователь указал фразу AFTER ADVANCING 1 LINE (ПОСЛЕ ПРОДВИЖЕНИЯ 1 СТРОК). Если фраза ADVANCING (ПРОДВИЖЕНИЯ) используется, продвижение обеспечивается следующим образом:

если целое-1 или данное, указанное идентификатором-2, по­ложительно, то печатаемая страница продвигается на число строк, равное этому значению;

если значение данного, указанного идентификатором-2, от­рицательно, то результаты будут неопределенными;

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

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

если используется фраза BEFORE (ДО), строка выводится до продвижения печатаемой страницы в соответствии с приведен­ными выше правилами;

если используется фраза AFTER (ПОСЛЕ), строка выводит­ся после продвижения печатаемой страницы в соответствии с при­веденными выше правилами;

если во фразе ADVANCING (ПРОДВИЖЕНИЯ) указа­но слово PAGE (СТРАНИЦЫ) и в статье описания файла, свя­занного с выводимой записью, указана фраза LINAGE (ВЕР­СТКА), то запись выводится до или после (в зависимости от ис­пользуемой фразы) позиционирования устройства на следую­щую логическую страницу. Позиционирование устройства про­изводится на первую строку, которая может быть записана на следующей логической странице в соответствии со спецификаци­ей фразы LINAGE (ВЕРСТКА);

если во фразе ADVANCING (ПРОДВИЖЕНИЯ) указано слово PAGE (СТРАНИЦЫ) ( и в статье описания файла, указан­ного с выводимой записью, не указана фраза LINAGE (ВЕРСТ­КА)! ; запись выводится до или после (в зависимости от исполь­зуемой фразы) позиционирования устройства на следующую физи­ческую страницу. Позиционирование на следующую физическую

страницу выполняется в соответствии с правилами, определенны­ми реализацией. Если понятие физической страницы не примени­мо к указанному устройству, реализацией обеспечивается такое продвижение, как если бы пользователь указал фразу BEFORE (ДО) или AFTER ADVANCING 1 LINE (ПОСЛЕ ПРОДВИЖЕ­НИЯ 1 СТРОК). ___

Если во время выполнения оператора WRITE (ПИ­САТЬ) с фразой END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) дос­тигается логический конец печатаемой страницы, выполняется повелительный-оператор-1, указанный во фразе END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ). Логический конец специфицирует­ся фразой LINAGE (ВЕРСТКА), связанной с именем-записп.

Условие конца страницы возникает всякий раз, когда выполнение оператора WRITE (ПИСАТЬ) с фразой END-OF- PAGE (В КОНЦЕ СТРАНИЦЫ) вызывает печать или про­тяжку в области концовки тела страницы. Это происходит тог­да, когда при выполнении оператора WRITE (ПИСАТЬ) LINA­GE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) становится равным или большим, чем значение целого-2 или данного, представленного именем-данного-2 во фразе LINAGE (ВЕРСТКА), если они ука­заны. В этом случае выполняется оператор WRITE (ПИ­САТЬ), а затем повелительный-оператор-1, указанный во фразе END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ).

Всякий раз, когда выполнение оператора WRITE (ПИСАТЬ) (с фразой END-OF-PAGE (В КОНЦЕ СТРАНИЦЫ) или без нее) не может быть удовлетворено полностью в границах тела текущей страницы, возникает условие переполнения страницы. Это происходит тогда, когда оператор WRITE (ПИСАТЬ), если бы он был выполнен, вызвал бы установку LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) на значение, превышающее значение целого-1 или данного, представленного именем-данного-1, во фразе LINAGE (ВЕРСТКА). В этом случае запись выводит­ся на логической странице до или после (в зависимости от ис­пользуемой фразы) позиционирования устройства на первую строку, которая может быть записана на следующей логиче­ской странице, в соответствии со спецификацией фразы LINAGE (ВЕРСТКА). После вывода записи и позиционирования устрой­ства выполняется повелительный-оператор-1 фразы END-OF- PAGE (В КОНЦЕ СТРАНИЦЫ), если она указана.

Условие переполнения страницы возникает в том случае, когда в результате выполнения данного оператора WRITE (ПИ­САТЬ) значение LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ) одновременно превысит значение целого-2 или данного, указан­ного именем-данного-2 фразы LINAGE (ВЕРСТКА), и целого-1 или данного, указанного именем-данного-1 фразы LINAGE (ВЕРСТКА).

Часть 8. МОДУЛЬ ОТНОСИТЕЛЬНОГО ВВОДА-ВЫВОДА

ВВЕДЕНИЕ В МОДУЛЬ ОТНОСИТЕЛЬНОГО ВВОДА-ВЫВОДА

Назначение

Модуль относительного ввода-вывода обеспечивает возмож­ность произвольного или последовательного доступа к записям файла массовой памяти. Каждая запись относительного файла од­нозначно идентифицируется целой положительной величиной, ука­зывающей относительную позицию логической записи в файле.

Характеристика уровней

Уровень 1 относительного ввода—вывода обеспечивает огра­ниченные возможности для статьи управления файлом, статьи описания файла и статей в параграфе I-O-CONTROL (УПРАВЛЕ- НИЕ-ВВОДОМ-ВЫВОДОМ). В разделе процедур уровень 1 от­носительного ввода-вывода обеспечивает ограниченные возмож­ности операторов CLOSE (ЗАКРЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), USE (ИСПОЛЬЗО­ВАТЬ), WRITE (ПИСАТЬ) и полные возможности оператора DELETE (УДАЛИТЬ).

Уровень 2 относительного ввода-вывода обеспечивает пол­ные возможности для статьи управления файлом и статей в па­раграфе I-O-CONTROL (УПРАВЛЕНИЕ-ВВОДОМ-ВЫВО- ДОМ). В разделе процедур уровень 2 относительного ввода- вывода обеспечивает полные возможности операторов CLOSE (ЗАКРЫТЬ), DELETE (УДАЛИТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), START (ПОД­ВЕСТИ), USE (ИСПОЛЬЗОВАТЬ) и WRITE (ПИСАТЬ).

Понятия языка

1.3.1.Организация

Файл с относительной организацией является файлом массо­вой памяти, любая запись которого может быть запомнена или из­влечена по значению относительного номера записи.

Концептуально файл с относительной организацией состоит из последовательной цепочки областей, каждая из которых может содержать логическую запись. Каждой из этих областей назнача­ется относительный номер записи. Каждая логическая запись от­носительного файла идентифицируется относительным номером записи ее о'бласти памяти. Например, десятая запись — это за­пись, адресуемая относительным номером записи 10 и находящая­ся в десятой области записи, независимо от того, были заполнены первые девять областей или нет.

Для получения более эффективного доступа к записям в отно­сительном файле число позиций литер, резервируемое в запомина­ющей среде для хранения логической записи, может отличаться от числа позиций литер в описании этой записи в программе.

Методы доступа

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

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

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

У к а з а т е л ь позиции файла

Указатель позиции файла — это логическое понятие, исполь­зуемое в этом документе для облегчения точной спецификации следующей записи, к которой должен осуществляться доступ при выполнении заданных операций ввода-вывода. На установку ука­зателя позиции файла влияют только операторы CLOSE (ЗАК- РЫТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ) и START | J (ПОДВЕСТИ). J Понятие указателя позиции файла не имеет смысла для файла, открытого для вывода или дополнения ’.

С о с т о я н и е ввода-вывода

Состояние ввода-вывода — это логическое понятие, характери­зующееся двухсимвольным значением, которое устанавливается для указания состояния операции ввода-вывода во время выполне­ния операторов CLOSE (ЗАКРЫТЬ), DELETE (УДАЛИТЬ), OPEN (ОТКРЫТЬ), READ (ЧИТАТЬ), REWRITE (ОБНОВИТЬ), [START (ПОДВЕСТИ)1 или WRITE (ПИСАТЬ) перед выполне­нием любого повелительного оператора, связанного с этим опера­тором ввода-вывода, и перед выполнением любой применимой процедуры USE AFTER EXCEPTION (ИСПОЛЬЗОВАТЬ ПОСЛЕ СТАНДАРТНОЙ ПРОЦЕДУРЫ ОШИБКИ). Значение состояния ввода-вывода доступно Кобол-программе посредством фразы FILE STATUS (СОСТОЯНИЕ ФАЙЛА) в статье управления файлом.

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

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

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

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

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

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

Весь розділ →