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

фраза NOT INVALID KEY (БЕЗ ОШИБКИ КЛЮЧА)

1 ОТД

фраза END-WRITE (КОНЕЦ-ПИСАТЬ)

1 ипд

2 ПОД

2 ОТД

2 ИПД

Сегментация

Номера-сегментов от 0 до 49 для постоянных сегментов

1 СЕГ +

Номера-сегментов от 50 до 99 для независимых сегментов

1 СЕГ +

Все секции, имеющие одинаковый номер-сегмента, должны быть

смежными в исходной программе

1 СЕГ +

Секции, имеющие одинаковый номер-сегмента, могут быть не-

смежными в исходной программе

2 СЕГ 4-

Обработка исходных текстов в разделе процедур

Оператор COPY (КОПИРОВАТЬ)

1 ОИТ

фраза OF/IN имя-библиотеки (ИЗ имя-библиотеки) 2 ОИТ

фраза.REPLACING (ЗАМЕНЯЯ) 2 ОИТ

псевдотекст 2 ОИТ

идентификатор 2 ОИТ

литерал 2 ОИТ

слово 2; ОИТ

Оператор REPLACE (ЗАМЕНИТЬ) 2 ОИТ

псевдотекст BY псевдотекст (псевдотекст НА псевдотекст) 2 ОИТ

OFF (ОТКЛЮЧИТЬ) 2 ОИТ

Часть 2. КОНЦЕПЦИИ И СРЕДСТВА ЯЗЫКА

ВВЕДЕНИЕ

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

ФАЙЛЫ

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

Используются следующие соглашения при описании возмож­ностей. Кобол-программ для манипулирования файлами. Термин «имя-файла» обозначает определенное пользователем слово, ис­пользуемое в исходной Кобол-программе для ссылки на файл. Тер­мины «файл, на который ссылается имя-файла» и «файл» обозна­чают физический файл независимо от имени-файла, используемо­го в Кобол-программе. Термин «определитель файла» обозначает объект^ содержащий информацию относительно файла. Все дос­тупы к,.физическим файлам осуществляются через определитель файла. В различных реализациях определитель файла может быть таблицей информации о файле, блоком управления файлом и т. п.

Свойства файла

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

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

Последовательная организация

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

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

О т н о с и т е л ь н а я организация

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

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

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

'2.1.3. Индексная организация

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

Каждый индексный файл имеет основной индекс, представля­ющий основной ключ записи каждой записи в файле. Каждая за­пись помещается в файл, изменяется или удаляется из файла только на основании значения ее основного ключа записи. Основ­ной ключ каждой записи в файле должен быть однозначным (уни­кальным) и не должен изменяться при обновлении записи. Основ­ной ключ записи объявляется в фразе RECORD KEY (КЛЮЧ ЗА­ПИСИ) статьи управления файлом для данного файла.

Дополнительные ключи записи обеспечивают дополнительные способы извлечения записей файла. Такие ключи называются в фразах ALTERNATE RECORD KEY (ДОПОЛНИТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ) статьи управления файлом. Значение отдельно­го дополнительного ключа в каждой записи не обязательно долж­но быть однозначным. В случае, когда значения могут быть неод­нозначными, в фразе ALTERNATE RECORD KEY (ДОПОЛНИ­ТЕЛЬНЫЙ КЛЮЧ ЗАПИСИ) должен быть указан вариант DUPLICATES (С ДУБЛИРОВАНИЕМ).

Логические записи

Логическая запись — это порция данных, которую можно по­местить в файл или извлечь из него. Количество записей, содер­жащихся в файле, ограничивается только возможностью запоми­нающей среды. Имеются два типа записей: запись фиксированной длины и запись переменной длины. При создании файла объявля­ется, какой тип записей он будет содержать. В любом случае со­держимое области записи не отражает никакой информации, кото­рую реализация может добавлять к записи в физической памяти (например, заголовок длины записи); длина записи, используемая программистом в Коболе, также не отражает таких добавлений.

Записи фиксированной длины

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

Записи переменной длины

Записи переменной длины могут содержать различное количе­ство позиций литер в записях файла. Для явного определения за­писей переменной длины можно указать вариант VARYING (ПЕ­РЕМЕННОЕ ЧИСЛО ЛИТЕР) фразы RECORD (В ЗАПИСИ) 60

статьи описания файла. Длина записи зависит от данного, на кото­рое имеется ссылка в варианте DEPENDING ON (В ЗАВИСИ­МОСТИ ОТ) фразы RECORD (В ЗАПИСИ) или в варианте DEPENDING ON (В ЗАВИСИМОСТИ ОТ) фразы OCCURS (ПОВТОРЯЕТСЯ), или от длины записи статьи описания записи в файле.

Типы записей, определяемые реализацией

Если в статье описания файла не указана фраза RECORD ЗАПИСИ) для файла или если фраза RECORD (В ЗАПИСИ) оп­ределяет диапазон позиций литер, реализация определяет, какой получается тип записей — переменной длины или фиксированной длины.

Обработка файлов

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

О п е р а ц и и над записями

Фраза ACCESS (ДОСТУП) статьи описания файла указывает способ, которым объектная программа оперирует записями в файле. Доступ может быть последовательным, произвольным и ди­намическим.

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

Для выходного отчета его содержимое, организация и формат могут быть определены при использовании средств генератора от­четов (ч. 2, п. 3.1).

Последовательный доступ

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

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

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

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

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

Произвольный доступ

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

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

Динамический доступ

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

Режим открытия

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

для ввода — для извлечения записей;

для вывода — для занесения записей в файл;

для дополнения — для добавления записей к существующему файлу;

для ввода-вывода — для извлечения и обновления записей.

Режим открытия определяется оператором OPEN (ОТК­РЫТЬ).

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

Если файл открыт для вывода, записи помещаются в файл вы­полнением операторов GENERATE (ГЕНЕРИРОВАТЬ), TERMI­NATE (ЗАКОНЧИТЬ) или WRITE (ПИСАТЬ).

Если файл открыт для дополнения, новые записи добавляются в логический конец файла выполнением операторов GENERATE 62

(ГЕНЕРИРОВАТЬ), TERMINATE (ЗАКОНЧИТЬ) или WRITE (ПИСАТЬ).

В режиме открытия для ввода-вывода можно обращаться толь­ко к файлам массовой памяти. Дополнительные возможности уст­ройств массовой памяти позволяют обновление записей на месте, таким образом, всегда могут быть использованы операторы READ (ЧИТАТЬ) и REWRITE (ОБНОВИТЬ). Файлы массовой памяти могут быть обновлены таким же образом, как и файлы в последо­вательной запоминающей среде, перезаписыванием файла пол­ностью в другой файл (возможно в другой участок массовой па­мяти), используя операторы READ (ЧИТАТЬ) и WRITE (ПИ­САТЬ). Тем не менее, иногда более эффективно обновлять файлы массовой памяти на месте. При такой методике обработки файла массовой памяти оператор REWRITE (ОБНОВИТЬ) используется для возврата на то же место запоминающей среды только тех за­писей, которые были изменены. Операторы READ (ЧИТАТЬ) и REWRITE (ОБНОВИТЬ) являются единственными операторами, использование которых допускается во время обновления па мес­те последовательных файлов. Для индексных и относительных файлов применяются следующие дополнительные функции: опе­ратор START (ПОДВЕСТИ) может быть использован при после­довательном или динамическом доступе для изменения последова­тельности извлечения записей; оператор DELETE (УДАЛИТЬ) мо­жет быть использован при любом доступе для логического удале­ния записи из файла; оператор WRITE (ПИСАТЬ) может быть использован при произвольном или динамическом доступе для вставки новой записи в файл.

Указатель текущего тома

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

Индикатор позиции файла

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

Понятие верстки

При определении выходного отчета может быть использована фраза LINAGE (ВЕРСТКА). Она облегчает определение логиче-

ской страницы и размещение на логической странице верхнего г нижнего полей и области концовки. Использование фразы LINAGE (ВЕРСТКА) неявно определяет соответствующий специальны! регистр LINAGE-COUNTER (СЧЕТЧИК-ВЕРСТКИ), которыі действует как указатель строки в теле страницы.

О п е р а ц и и над файлами

Несколько операторов Кобола обрабатывают файлы как единое целое или как набор записей. Это операторы CLOSE (ЗАК­РЫТЬ), OPEN (ОТКРЫТЬ), MERGE (СЛИТЬ) и SORT (СОР­ТИРОВАТЬ).

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

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

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

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

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

Весь розділ →