•5.8.4. Общие правила
Исключая фразу OCCURS (ПОВТОРЯЕТСЯ), все фразы описания данных, относящиеся к данному, описание которого включает фразу OCCURS (ПОВТОРЯЕТСЯ), применяются к каждому вхождению описанного данного,
Число вхождений предмета статьи определяется следующим образом:
а) в формате 1 значение целого-2 представляет точное число повторений;
: б) в формате 2 текущее значение данного, именуемого име-
нем-данного-1, представляет число повторений.
Формат 2 указывает, что предмет статьи имеет переменное і число повторений. Значение целого-2 представляет максималь- і ное число повторений, а значение целого-1 — минимальное. Это не означает, что размер предмета статьи переменный, а говорит лишь только о том, что переменно число его повторений.
Всякий раз, когда ссылаются на предмет статьи или на под- : чиненное ему данное или на данное, которому подчиняется пред- ! мет статьи, значение данного, определенное именем-данного-1, ' должно принадлежать диапазону от целого-1 до целого-2. Зна- : чения данных, номера вхождений которых превышают значение . имени-данного-1, не определены.
При обращении к групповому данному, содержащему данное, в статье описания которого содержится фраза OCCURS (ПОВТОРЯЕТСЯ) формата 2, используется только часть области таблицы, определяемая следующим образом:
если данное, определяемое именем-данного-1, не входит в группу, то используется только часть области таблицы, определяемая значением имени-данного-1 в момент начала обработки;
если данное, определенное именем-данного-1, входит в группу и групповое данное пересылается, то в пересылке будет использоваться только часть области таблицы, определенная значением имени-данного-1 в момент начала работы. Если группа есть принимающее данное, то будет использоваться максимальная длина группы.
Вариант DESCENDING (ASCENDING) KEY (ПО УБЫ- ВАНИЮ/ВОЗРАСТАНИЮ КЛЮЧА) указывает, что повторяющиеся данные упорядочены в возрастающем или убывающем порядке в соответствии со значениями имени-данного-2, имени- данного-3 и т. д. Возрастающий или убывающий порядок определяется в соответствии с правилами сравнения операндов (пп. 6.3.1.1.1 и 6.3.1.1.2 настоящей части). И мена-да иных перечисляются в порядке уменьшения значимости.
Если формат 2 используется в статье описания записи и соответствующее описание файла или описание сортируемого- сливаемого файла содержит вариант VARYING (ПЕРЕМЕННОЕ ЧИСЛО) во фразе RECORD (В ЗАПИСИ), то запись имеет переменную длину. Если вариант DEPENDING ON (В ЗАВИСИМОСТИ ОТ) во фразе RECORD (В ЗАПИСИ) не указан, то значение данного, определяемого именем-данного-1 во фразе OCCURS (ПОВТОРЯЕТСЯ), должно быть установлено на число записываемых повторений до выполнения любого из операторов RELEASE (ПЕРЕДАТЬ), REWRITE (ОБНОВИТЬ) или WRITE (ПИСАТЬ).
5.9. Фраза PICTURE (ШАБЛОН)
Назначение
Фраза PICTURE (ШАБЛОН) описывает общие характеристики и требования редактирования элементарного данного.
О б щ и й формат
1 PICTURE )
j IS строка-литер
( ШАБЛОН )
1 щ 1 строка-литер
Синтаксические правила
Фраза PICTURE (ШАБЛОН) может быть задана только на уровне элементарного данного.
Строка-литер содержит отдельные допустимые комбинации литер из набора литер, используемых в качестве символов шаблона. Для каждой категории элементарного данного определены допустимые комбинации символов шаблона.
Для символов шаблона А, В, Р(М), S(3), V(T), X, Z(n)s CR(KP), DB (ДБ) строчные буквы эквивалентны в описании строки литер шаблона прописным буквам. Остальные строчные буквы не эквивалентны соответствующим прописным буквам.
Строка-литер может содержать не более 30 литер.
Фраза PICTURE (ШАБЛОН) должна быть определена для каждого элементарного данного, за исключением индексного дан- ного I или предмета фразы RENAMES (ПЕРЕИМЕНОВЫВАЕТ). | В этих случаях использование фразы PICTURE (ШАБЛОН) запрещено.
РІС (Ш) есть сокращение слова PICTURE (ШАБЛОН).
Звездочка в строке-литер, используемая как символ подавления нуля, и фраза BLANK WHEN ZERO (ПРОБЕЛ КОГДА НУЛЬ) не могут появляться в одной и той же статье.
Общие правила
Имеется пять категорий данных, которые могут быть описаны фразой PICTURE (ШАБЛОН): буквенная, числовая, буквенно-цифровая, буквенно-цифровая редактируемая и числовая редактируемая.
Данное определяется как буквенное, если:
строка-литер его шаблона содержит только символ А;
его значение, будучи представлено в стандартном формате данных, является любой комбинацией одной или более буквенных литер алфавита.
Данное определяется как числовое, если:
строка литер шаблона данного состоит только из символов 9, Р(М), S(3) и V(T), при этом количество цифровых позиций, задаваемых строкой-литер шаблона, должно быть от 1 до 18 включительно;
значение данного, будучи представлено в стандартном формате данных, может быть комбинацией цифр; оно может также включать знак числа.
Данное определяется как буквенно-цифровое, если:
строка-литер шаблона данного ограничивается некоторыми комбинациями символов А, X, 9, при этом данное обрабатывается так, будто строка-литер шаблона содержит только литеры X. Строка- литер шаблона, которая состоит только из литер А или только из литер 9, не определяет буквенно-цифровое данное;
значение данного, будучи представлено в стандартном формате данных, состоит из любых литер набора литер машины.
Данное определяется как буквенно-цифровое редактируемое если:
строка-литер шаблона данного представляется некоторыми комбинациями символов А, X, 9, В, 0 (нуль) или /, при этом должна содержать по крайней мере один из символов А или X и по крайней мере один из символов В, 0 (нуль) или /;
значение данного, будучи представлено в стандартном формате данных, состоит из любых литер набора литер машины.
Данное определяется как числовое редактируемое, если:строка-литер его шаблона представляется некоторыми комбинациями символов В, /, Р(М), V(T), Z(FI), 0, 9, „ *, +, —>
CR(KP), DB (ДБ) и символа валютного знака; допустимые комбинации этих символов определяются правилами предшествования ■символов и редактирования. Максимальное число цифровых позиций данного, определяемых строкой-литер, равно 18. Строка-литер должна содержать по крайней мере один из символов О, В, /, 2(П), *, +, „ , CR(KP), ЦБ (ДБ) или символ валютного знака;
содержимое каждой из позиций литер должно соответствовать указанному для нее символу шаблона.
Размер элементарного данного (число позиций литер в терминах стандартного формата данных, занимаемых элементарным данным) определяется числом допустимых символов, определяющих позиции литер.
Целое, заключенное в круглые скобки и следующее за символами А, „ X, 9, Р(М), Z(H), », +, В, 0, /, — или валютным знаком, указывает число повторений символа. Символы S(3), V(T), ., CR(KP), ОВ(ДБ) могут появляться в одном шаблоне только один раз.
Функции символов, используемых для описания элементарного данного, поясняются ниже;
А — каждый символ А в строке-литер предстайляет позицию литеры, которая может содержать только букву или пробел,
В — каждый символ В в строке-литер представляет позицию, в которую будет помещена литера пробела.
Р(М) — каждый символ Р(М) указывает на подразумеваемую десятичную позицию; кроме того, если точка не находится между цифрами, представляющими число, литеры Р(М) используются для указания места подразумеваемой десятичной точки. Литеры Р(М) не учитываются при определении размера данного. Литеры Р(М) учитываются при определении максимального числа цифровых позиций (не превышающего 18) в числовых редактируемых данных или в данных, которые появляются в качестве операндов в арифметических операторах. Литеры Р(М) могут появляться в строке-литер шаблона только справа или только слева в виде непрерывной последовательности. Так как литера Р(М) предполагает наличие подразумеваемой десятичной точки (слева от всех Р(М), если все Р(М) являются самыми левыми литерами шаблона, и справа от всех Р(М), если все Р(М) являются самыми правыми литерами шаблона), символ подразумеваемой точки V(T) является излишним. Литера Р(М.) и литера вставки «.» не могут использоваться одновременно в одной и той же строке-литер шаблона.
Если в некоторой операции ссылаются на данное, шаблон которого содержит символ Р(М), то в ней используется алгебраическое 274значение данного, а не его действительное литерное представление. Это алгебраическое значение предполагает наличие десятичной точки на указанной позиции и нуля на десятичной позиции, указанной символом Р(М). Размер значения определяется общим числом десятичных позиций, представленных в шаблоне. Вышесказанное относится к следующим операциям:
любым операциям, требующим пересылки числового операнда;
оператору MOVE (ПОМЕСТИТЬ), в котором пересылаемый операнд является числовым и его шаблон содержит символ Р(М);
оператору MOVE (ПОМЕСТИТЬ), в котором пересылаемый операнд является числовым редактируемым и его шаблон содержит символ Р(М), а принимающий операнд является числовым или числовым редактируемым;
операции сравнения, в которой оба операнда числовые.
Во всех других операциях десятичные позиции, определенные при помощи символа Р(М), игнорируются и не учитываются при подсчете размера операнда.
S(3) — символ S(3) используется в строке-литер для указания наличия знака числа, не определяя при этом позицию или представление знака. Символ S(3) должен быть записан как самая левая литера в шаблоне. Символ S(3) не учитывается при определении размера элементарного данного, если статья описания этого данного не содержит фразу SEPARATE CHARACTER (ЗНАК ОТДЕЛЬНО) (п. 5.12 настоящей части).
V(T) — символ V(T) используется в строке-литер для указания расположения подразумеваемой десятичной точки и может появляться в строке-литер только один раз. Символ V(T) не представляет позицию литеры и поэтому не учитывается при определении размера элементарного данного. Если подразумеваемая десятичная точка находится справа от самого правого символа в строке, символ V(T) является излишним и может быть опущен.
X — каждый символ X в строке-литер представляет позицию литеры, содержащую любую допустимую литеру из набора литер машины и подсчитывается при определении размера данного.
Z(H) — каждый символ Z(H) в строке-литер представляет левые ведущие позиции цифр числа, которые должны быть заменены пробелами, если содержимое этих позиций окажется нулем. Каждый символ Z(H) подсчитывается при определении размера данного.
— каждый символ 9 в строке-литер представляет позицию литеры, содержащую цифру и учитывается при определении размера данного.
О — каждый символ 0 (нуль) в строке-литер представляет по-; зицию литеры, в которую будет помещен числовой нуль. О подсчитывается при определении размера данного.
/ — каждый символ / (дробная черта) в строке-литер представляет позицию литеры, в которую будет помещена дробная черта. Символ / подсчитывается при определении размера данного.
. — каждый символ , (запятая) в строке-литер представляет позицию литеры, в которую будет помещена литера , . Эта позиция литеры подсчитывается при определении размера данного.
. — символ . (точка) появляется в строке-литер в качестве ре-' дактирующего символа, представляющего десятичную точку, по которой происходит выравнивание и, кроме того, представляет позицию, в которую будет помещена литера «.». Литера «.» подсчитывается при определении размера данного. Для данной программы функции точки и запятой меняются, если в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) приведена фраза DECIMAL POINT IS СОММА (ДЕСЯТИЧНАЯ ТОЧКА ЗАПЯТАЯ); в этом случае правила для точки применяются к запятой и правила для запятой применяются к точке, где бы они ни встречались во фразе PICTURE (ШАБЛОН).
+, —, CR(KP), ОВ(ДБ) — эти символы при использовании представляют позицию литеры, в которую будет помещен редактирующий символ, управляемый знаком. Эти символы являются взаимно исключающими в любой строке-литер, и каждая литера, используемая в качестве символа редактирования, подсчитывается при определении размера данного.
*— каждый символ * (звездочка) в строке-литер представляет позицию ведущей числовой литеры, в которую, если содержимое этой позиции окажется нулем, будет помещена звездочка. Каждый символ * подсчитывается при определении размера данного.
Валютный символ — валютный символ в строке-литер представляет позицию литеры в данном, в которую должен быть помещен валютный знак. Валютный символ в строке-литер представляется либо валютным знаком, либо литерой, определенной во фразе CURRENCY SIGN (ВАЛЮТНЫЙ ЗНАК) в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА).
Валютный символ учитывается при определении размера данного.
П р а в и л а редактирования
Имеются два общих метода редактирования во фразе PICTURE (ШАБЛОН): либо путем вставки, либо путем подавления и замещения. Допустимы четыре типа редактирования вставкой;
простая вставка;
специальная вставка;
фиксированная вставка;
плавающая вставка.
Имеются два типа редактирования посредством подавления и замещения нулей;
подавление нуля и замещение пробелами;
подавление нуля и замещение звездочками.
Тип редактирования, который может выполняться над данным, зависит от категории, к которой данное принадлежит. Ниже ■определяется тип редактирования, разрешенный для данной категории;
Т
Категория
ип редакгиронанияБ
Никакой
Никакой
Никакой
Простая вставка О, В и /
Все типы с учетом правила 3
уквеннаяЧисловая
Буквенно-цифровая