.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. КОНЦЕПЦИИ И СРЕДСТВА ЯЗЫКА
ВВЕДЕНИЕ
Кобол предлагает множество средств, позволяющих пользователю применять необходимую функцию, не программируя ее в деталях. Ниже обсуждается каждое из этих средств, рассматриваются доводы для включения его в язык и смысл его использования и организации.
ФАЙЛЫ
Файл — это совокупность записей, которые могут быть помещены в, запоминающую среду или извлечены из нее. Пользователь выбирает не только организацию файла, но выбирает также метод и последовательность обработки. Для последовательной запоминающей среды организация файла и метод обработки ограничены, для массовой памяти таких ограничений нет.
Используются следующие соглашения при описании возможностей. Кобол-программ для манипулирования файлами. Термин «имя-файла» обозначает определенное пользователем слово, используемое в исходной Кобол-программе для ссылки на файл. Термины «файл, на который ссылается имя-файла» и «файл» обозначают физический файл независимо от имени-файла, используемого в Кобол-программе. Термин «определитель файла» обозначает объект^ содержащий информацию относительно файла. Все доступы к,.физическим файлам осуществляются через определитель файла. В различных реализациях определитель файла может быть таблицей информации о файле, блоком управления файлом и т. п.
Свойства файла
Файл имеет несколько свойств, которые придаются файлу при его создании и не могут изменяться за время существования файла. Оснойным свойством является организация файла, описыва-тощая его логическую структуру. Имеются три организации: последовательная, относительная и индексная. Другими фиксированными свойствами файла, обеспечиваемыми Кобол-программой, являются основной ключ записи, дополнительные ключи записи, набор кодов, минимальный и максимальный размер логической записи, тип записи (фиксированной или переменной длины), основная последовательность для ключей индексных файлов, фактор блокирования, литера заполнитель и ограничитель записи.
Последовательная организация
Последовательные файлы организованы так, что каждая запись, за исключением последней, имеет единственную последующую запись; каждая запись, за исключением первой, имеет единственную предшествующую запись. Отношение «предшественник-преемник» устанавливается порядком выполнения оператора 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 (ПОДВЕСТИ).