.FROM идентификатор (ОТ идентификатор) 1 ЯДР

FROM несколько идентификаторов (ОТ несколько идентифи­каторов) 1 ЯДР

GIVING идентификатор (ПОЛУЧАЯ идентификатор) 1 ЯДР

GIVING несколько идентификаторов (ПОЛУЧАЯ несколько идентификаторов) 1 ЯДР

фраза ROUNDED (ОКРУГЛЯЯ) 1 ЯДР

фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) 1 ЯДР

фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ) 12 ЯДР

фраза END-SUBTRACT (КОНЕЦ-ОТНЯТЬ) 1 ЯДР

фраза CORRESPONDING (СООТВЕТСТВЕННО) 2 ЯДР

Оператор SUPPRESS (ПОДАВИТЬ) I ГОТ

Оператор TERMINATE (ЗАКОНЧИТЬ) 1 ГОТ

Оператор UNSTRING (РАЗОБРАТЬ) 2 ЯДР

фраза DELIMITED BY (ОГРАНИЧИВАЯСЬ) 2 ЯДР

фраза.DELIMITER IN (ОГРАНИЧИТЕЛЬ В) 2 ЯДР

фраза COUNT IN (СЧЕТ В) 2 ЯДР

фраза WITH POINTER (УКАЗАТЕЛЬ) 2 ЯДР

фраза TALLYING (СЧИТАЯ) 2 ЯДР

фраза ON OVERFLOW (ПРИ ПЕРЕПОЛНЕНИИ) 2 ЯДР

фраза NOT ON OVERFLOW (БЕЗ ПЕРЕПОЛНЕНИЯ) 2 ЯДР

фраза END-UNSTRING (КОНЕЦ-РАЗОБРАТЬ) 2 ЯДР

Оператор USE (ИСПОЛЬЗОВАТЬ) 1 ПОД


ON OUTPUT (ДЛЯ ВЫХОДНЫХ)

1 ПОД


1 ОТД:;


1 ИПД:


1 ГОТ

ON 1-0 (ДЛЯ ВХОДНЫХ-ВЫХОДНЫХ)

1 ПОД


1 ОТД


1 ипд

; ON EXTEND (ДЛЯ ДОПОЛНЯЕМЫХ)

2 ПОД'


2 ОТД


2 ИПД


1 ГОТ

фраза BEFORE REPORTING (ДО ВЫДАЧИ)

1 ГОТ

фраза GLOBAL (ГЛОБАЛЬНО)

2 МПС

фраза FOR DEBUGGING (ДЛЯ ОТЛАДКИ)

1 отл +

имя-процедуры

1 отл +

ALL PROCEDURES (ПРИ ВСЕХ ПРОЦЕДУРАХ)

1 ОТЛ +

ALL REFERENCES OF идентификатор-1 (ПРИ ВСЕХ


ССЫЛКАХ НА идентификатор-!)

2 ОТЛ •+

имя-коммуникации

2 ОТЛ 4-

пмя-файла

2 ОТЛ +

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

J ПОД


1 ОТД


• ИПД

фраза FROM (ИЗ ПОЛЯ)

! ПОД


1 ОТД


1 ИПД

фраза BEFORE/AFTER ADVANCING (ДО/ПОСЛЕ ПРО-


ДВИЖЕНИЯ)

1 под

целое LINE/LINES (целое СТРОК)

1 под

идентификатор LINE/LINES (идентификатор СТРОК)

1 под

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

9 пол

PAGE (СТРАНИЦЫ)

1 под

фраза AT END-OF-PAGE/EOP (В КОНЦЕ СТРАНИЦЫ)

2 ПОД

фраза NOT AT END-OF-PAGE/EOP (НЕ В КОНЦЕ СТРА-


НИЦЫ)

2 ПОД

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

1 ОТД


1 ИПД

фраза 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. КОНЦЕПЦИИ И СРЕДСТВА ЯЗЫКА

  1. ВВЕДЕНИЕ

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

  1. ФАЙЛЫ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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