числовые литералы должны быть целыми без знака и иметь значения от 1 до целого, равного количеству литер во внутреннем наборе литер;
нечисловые литералы, указанные после слов THROUGH (ПО) и ALSO (ТАКЖЕ), должны состоять из одной литеры.
Литерал-1, литерал-2, литерал-3, литерал-4 и литерал-5 не должны совпадать по написанию со стандартными константами, являющимися символическими литерами.
Слова THROUGH и THRU эквивалентны.
Во фразе SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА) одна и та же литера может встречаться только один раз.
Соответствие между символической-литерой-1 и целым-1 определяется позицией во фразе SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА). Первая символическая литера-1 соответствует первому целому-1, вторая — второму и так далее.
Между экземплярами символического-имени-1 и экземплярами целого-1 должно быть взаимно однозначное соответствие.
Порядковая позиция, определяемая целым-1, должна существовать во внутреннем наборе кодов литер. Если указана фраза IN (ИЗ), то эта порядковая позиция должна существовать в наборе литер, определяемом именем-алфавита-2.
Правила для литералов фразы литерал-4 следующие:
числовые литералы должны быть целыми без знака и иметь значения от 1 до целого, равного количеству литер во внутреннем наборе литер;
нечисловые литералы, указанные после слова THROUGH ЩО) , должны состоять из одной литеры.
Литерал не должен быть стандартной константой.
О б щ и е правила
Все фразы, указанные в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) некоторой программы; относятся ко всем содержащимся в ней программам. На определенные в данном параграфе имена условий можно ссылаться из любой включенной в эту программу программы.
Если имя-реализации-1 относится к внешнему переключателю, то состояния переключателя должны быть связаны с именами условий и опрашиваются посредством проверки имен условий (п. 6.3.1.4 настоящей части).
Если имя-реализации-1 относится к внешнему переключателю, то состояние этого переключателя может быть изменено оператором SET (УСТАНОВИТЬ) формата 3, в качестве операнда которого указывается мнемоническое имя, связанное с этим переключателем (п. 6.2.3 настоящей части). Разработчик определяет, какие внешние переключатели можно использовать в операторе SET (УСТАНОВИТЬ).
Указание имени-алфавита-1 обеспечивает средства присвоения некоторого имени заданному набору кодов литер и (или) основной последовательности. Если указанное имя-алфавита-1 используется во фразе PROGRAM. COLLATING SEQUENCE (ПРОГРАММНЫЙ АЛФАВИТ) (см. п. 4.4 настоящей части) или во фразе COLLATING SEQUENCE (АЛФАВИТ) оператора SORT (СОРТИРОВАТЬ) или MERGE (СЛИТЬ) (ч. И, пп. 4.1, 4.4), фраза имя-алфавита задает основную последовательность. Если имя-алфавита-1 используется | Во фразе SYMBOLIC CHARAC- | I TERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА) или | во фразе CODE^SET (АЛФАВИТ) в описании файла (ч. 7, п. 3.4) то фраза ALPHABET (имя-алфавита) определяет набор кодов литер:
если задана фраза STANDARD-R (СТАНДАРТ-Р), набор кодов литер или соответствующая основная последовательность определяется в соответствии с упорядоченностью русского алфавита.
Если задана фраза STANDARD-1 (СТАНДАРТ-А), набор кодов литер или соответствующая основная последовательность определяется Американским Национальным Стандартным Кодом для Обмена Информацией, Х3.4—1968.
Если задана фраза STANDARD-2 (СТАНДАРТ-М), то набор кодов определяется Международной версией 7-битового кода, определенной в Международном стандарте 646, 7-битовый Код литер для обмена информацией.
Если между отдельными литерами стандартного и внутреннего наборов отсутствует соответствие, это соответствие устанавливает реализация;
если задана фраза NATIVE (ВНУТРЕННИЙ), используется внутренний набор кодов литер или внутренняя основная последовательность;
если задана фраза имя-реализации-2, набор кодов литер или соответствующая основная последовательность, а также их соответствие внутренней основной последовательности определяются реализацией. Реализация также определяет соответствие между литерами или литерой набора кодов литер, специфицированного фразой имя-реализации-2, и литерами внутреннего набора кодов литер;
если фраза имя-алфавита содержит литералы, соответствующее имя-алфавита не может упоминаться во фразе CODESET (АЛФАВИТ) (ч. 7, п. 3.4), при этом основная последовательность определяется следующим образом:
значение каждого числового литерала определяет порядковый номер литеры во внутреннем наборе литер; это значение не должно превосходить количество литер во внутреннем наборе литер;
значение каждого нечислового литерала определяет явную литеру во внутреннем наборе литер. Если нечисловой литерал содержит несколько литер, каждая его литера, начиная с самой левой, ставится в соответствие последовательным возрастающим позициям в определяемой основной последовательности;
порядок, в котором литералы появляются во фразе имя-алфавита, точно определяет используемую основную последовательность (в возрастающем порядке);
не указанные явно литералами литеры внутренней основной последовательности занимают позиции в основной последовательности, следующие за явно заданными во фразе имя-алфавита литерами. Относительный порядок литер, не указанных в определяемой основной последовательности, соответствует внутренней основной последовательности;
если задана фраза THROUGH (ПО), последовательность литер внутреннего набора, начиная от литеры, заданной значением литерала-1, и кончая литерой, заданной значением литерала-2, занимает последовательные позиции определяемой основной последовательности. Кроме того, последовательность литер, заданных фразой THRU (ПО), может задавать литеры внутреннего набора либо в возрастающем, либо в убывающем порядке;
если указана фраза ALSO (ТАКЖЕ), литеры внутреннего набора, заданные значением литерала-1, литерала-3, литерала-4 ... , ставятся в соответствие одной и той же позиции определяемой основной последовательности или набора кодов литер, используемых для представления данных, и если имя-алфавита-1 используется во фразе SYMBOLIC CHARACTERS (СИМВОЛИЧЕСКАЯ ЛИТЕРА), то только литерал-1 исполь- зуется для представления литеры во внутреннем наборе литер.
Литера, которая занимает самую старшую позицию в задаваемой программной основной последовательности, ставится в соответствие стандартной константе HIGH-VALUE (НАИ- БОЛЫПЕЕ-ЗНАЧЕНИЕ), кроме случая, когда эта последняя стандартная константа используется в качестве литерала в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА).
Если таких литер несколько, то стандартной константе HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ) ставится в соответствие литера, указанная последней из них.
Литера, которая занимает самую младшую позицию в задаваемой программной основной последовательности, ставится в соответствие стандартной константе LOW-VALUE (НАИ- МЕНЫПЕЕ-ЗНАЧЕНИЕ), кроме случая, когда эта стандартная константа используется в качестве литерала в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА). Если таких литер несколько, стандартной константе LOW-VALUE (НАИМЕНЬ- ШЕЕ-ЗНАЧЕНИЕ) ставится в соответствие литера, указанная первой из них.
Стандартные константы HIGH-VALUE (НАИБОЛЬШЕЕ-ЗНАЧЕНИЕ) и LOW-VALUE (НАИМЕНЬШЕЕ-ЗНАЧЕ- НИЕ), определенные как литералы в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА), соответствуют литерам, имеющим наибольшую и наименьшую позиции во внутренней основной последовательности.
Если не указана фраза IN (ИЗ), то символическая-лите- ра-1 представляет литеру, чья порядковая позиция во внутреннем наборе определяется целым-1. Если фраза IN (ИЗ) указана, то целое-1 определяет порядковую позицию литеры, находящейся в наборе литер, названном ииенем-алфавита-2.
Внутреннее представление символической-литеры-1 яв- I ляется внутренним представлением литеры внутреннего набора.
Фраза CLASS (КЛАСС) обеспечивает соответствие имени, указанному во фразе набору литер. На имя-класса-1 можно ссылаться только в условии класса. Литеры, указанные значениями литералов в этой фразе, определяют набор литер, из которых состоит значение данного, принадлежащего к этому классу.
Значение каждого литерала специфицирует
порядковый номер литеры во внутреннем наборе, если литерал числовой. Его значение не должно превышать числа литер во внутреннем наборе;
действительное значение литеры во внутреннем наборе, если литерал нечисловой. Если значение нечислового литерала состоит из нескольких литер, то каждая литера литерала включается в набор литер, идентифицируемый именем-класса-1.
Если фраза THROUGH (ПО) указана, то все литеры внутреннего набора, начиная с литеры, указанной значением литерала-4,, и кончая литерой, указанной значением литерала-5, включаются в набор литер, идентифицируемый именем-класса-1. Кроме того, литеры, указанные во фразе THROUGH (ПО), могут определять литеры внутреннего набора в возрастающей или убывающей последовательности.
Литерал-6, указанный во фразе CURRENCY SIGN (ВАЛЮТНЫЙ ЗНАК), используется во фразе PICTURE (ШАБЛОН) для представления валютного символа. Литерал должен представлять одну литеру и не должен совпадать ни с одной из следующих, литер:
цифры: от 0 до 9;
буквы прописные А, В, С, D, Р, R, S, V, X, Y, Z (А, Б, В, Д,. З, Р, К, М, П, Т, X) и строчные или пробел;
специальные * литеры, +, —, „ ., ;, (, ), », /, =. Если эта фраза отсутствует, во фразе PICTURE (ШАБЛОН) используется только валютный символ из набора литер Кобола.
Фраза DECIMAL POINT IS СОММА (ДЕСЯТИЧНАЯ ТОЧКА ЗАПЯТАЯ) означает, что в строке-литер фразы PICTURE (ШАБЛОН) и в числовых литералах функции запятой и точки меняются местами.
5. РАЗДЕЛ ДАННЫХ В ЯДРЕ
Общее описание
Раздел данных описывает данные, которые обрабатываются объектной программой. Раздел данных не обязателен в исходной Кобол-программе.
Секция рабочей памяти
Секция рабочей памяти входит в раздел данных исходной программы. Секция рабочей памяти описывает записи и их элементы, которые не являются частью файлов данных.
Секция рабочей памяти составляется из заголовка секции, за которым следуют статьи описания записей и (или) статьи описания несвязанных данных. Общий формат секции рабочей памяти следующий:
WORKING-STORAGE SECTION.
статья-описания-уровня-77 статья-описания-записи
СЕКЦИЯ РАБОЧЕЙ-ПАМЯТИ.
статья-описания-уровня-77 статья-описания-записи
Н е с в я з а н н ы е данные рабочей памяти
Данные и константы в рабочей памяти, которые не имеют никакой иерархической связи друг с другом и которые в дальнейшем не потребуется подразделять, нет необходимости группировать в .•записи. Они классифицируются и определяются как несвязанные элементарные данные. Каждое из этих данных определяется отдельной статьей описания данного, которая начинается со специального номера уровня 77. В каждой статье описания таких данных обязательны следующие фразы: номер уровня 77, имя-данного, PICTURE (ШАБЛОН) или USAGE IS INDEX (ДЛЯ ИНДЕКСА).
Другие фразы описания данного не обязательны, но могут, при необходимости, дополнять описание данного.
Записи рабочей памяти
Элементы данных и константы в рабочей памяти, которые находятся в определенной иерархической связи друг с другом, должны быть сгруппированы в записи согласно правилам образования описания записи. Элементы данных, не находящиеся в иерархической связи друг с другом, могут быть описаны как записи из одного элементарного данного. Фразы, допустимые в описании записей в секции файлов, могут быть использованы для описания записей рабочей памяти.
Структура описания записи
Описание записи состоит из набора статей описания данных, которые описывают характеристики отдельной записи. Каждая статья описания данного состоит из номера уровня, за которым может следовать имя данного или фраза FILLER (ЗАПОЛНИТЕЛЬ), после чего следует, если это требуется, ряд независимых фраз. Описание записи может иметь иерархическую структуру, поэтому фразы, используемые в отдельных статьях, могут сильно отличаться, в зависимости от наличия подчиненных статей. Структура описания записи и разрешенные элементы в статье описания записи объясняются в ч. 4, п. 4.3.2 и в п. 5.3 настоящей части.
Начальные значения
Начальное значение любого данного в секции рабочей памяти, за исключением индексного данного, задается в описании данного фразой VALUE (ЗНАЧЕНИЕ). Начальное значение индексного данного и данного, не связанного с фразой VALUE (ЗНАЧЕНИЕ), не определено.
Статья описания данного
Назначение
Статья описания данного задает характеристики отдельного данного.Общий формат Формат 1
имя-данного-1
FILLER
номер-уровня
[REDEFINES имя-данного-2]
IS строка-литер
’/PICTURE
І РІСBINARY
COMPUTATIONAL
COMP
DISPLAY
INDEX
PACKED-DECIMAL
[USAGE IS]
[SEPARATE CHARACTER]]
/ LEADING I TRAILING
[ [SIGN IS]
ВЛЕВО
ВПРАВО
ВЫДЕЛЕНО
/ ВОЗРАСТАНИЮ 1 КЛЮЧА
( УБЫВАНИЮ ) КЛЮЧА {имя-данного-3} ... ] ...
[ИНДЕКСИРУЕТСЯ {имя-индекса-1} ... ] ПОВТОРЯЕТСЯ ОТ целое-1 ДО целое-2 РАЗ В ЗАВИСИМОСТИ ОТ имя-данного-4
rrr„ ( ВОЗРАСТАНИЮ ]
1В2 ( УБЫВАНИЮ IКЛЮЧА {имя-данного-3} ... ] ...
[ИНДЕКСИРУЕТСЯ {имя-индекса-1}... ]
~ ПОВТОРЯЕТСЯ целое-2 РАЗ
в {йбсЛЁдний } 'ОТДЕЛЬН°І
для |
ВЫЧИСЛЕНИЙ выч ВЫДАЧИ ИНДЕКСА ) |