ГОСТ 22558-89 сторінка 35 з 116
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
уквенная
Числовая
Буквенно-цифровая
Буквенно-цифровая редактируемая
Числовая редактируемая
Во фразе PICTURE (ШАБЛОН) редактирование плавающей вставкой и редактирование подавлением и замещением нуля взаимно исключаются. Во фразе PICTURE (ШАБЛОН) может быть использован только один тип замещения при подавлении нуля.
Редактирование простой вставкой указывается символами шаблона: , (запятая), В (пробел), / (дробная черта) и 0 (нуль). Литеры вставки учитываются при определении размера данного и представляют позицию в данном, в которую будет вставлена литера, соответствующая символу шаблона. Если литера вставки , (запятая) является последним символом в шаблоне, фраза PICTURE (ШАБЛОН) должна быть последней фразой статьи описания данного и за ней непосредственно должен следовать разделитель точка. В результате в статье описания данного появляется комбинация «,.» или две последовательные точки, если используется фраза DECIMAL-POINT IS СОММА (ДЕСЯТИЧНАЯ ТОЧКА ЗАПЯТАЯ).
При редактировании специальной вставкой в качестве литеры вставки используется символ . (точка), которая кроме того служит для выравнивания. Литера вставки для явной десятичной точки учитывается при определении размера данного. В одной и той же строке-литер шаблона не разрешается использование подразумеваемой десятичной точки, представленной символом V (Т), и явной десятичной точки, представленной символом вставки. Если литера вставки является последней литерой шаблона, то фраза PICTURE (ШАБЛОН) должна быть последней фразой в статье •описания данного и за ней непосредственно должен следовать разделитель точка. В результате в статье описания данного появляются две последовательные точки или комбинация,. , если используется фраза DECIMAL-POINT IS СОММА (ДЕСЯТИЧНАЯ ТОЧКА ЗАПЯТАЯ).
Результатом редактирования специальной вставкой является появление литеры специальной вставки в значении данного на позиции, указанной в строке-литер шаблона.
Редактирование фиксированной вставкой указывается валютным символом и символами редактирования, управляемыми знаком: +, —, CR(KP), ОВ(ДБ).
В данной строке-литер шаблона может быть использован только один валютный символ и только один из символов редактирования, управляемых знаком. Если используются символы CR (КР) и DB (ДБ), они представляют две самые правые позиции литер и учитываются при определении размера данного. Если используется символ + или —, он должен быть самой левой или самой правой позицией литеры, которая учитывается при определении размера данного. Валютный знак должен быть самой левой позицией литеры, кроме случаев, когда ему может предшествовать символ + или символ —; валютный знак учитывается при определении размера данного. При редактировании фиксированной вставкой в редактируемое данное помещается литера вставки, управляемая знаком, на позицию литеры, которую эта литера занимает в строке-литер шаблона.
Зависимость результатов редактирования фиксированной вставкой от значения данного приведена ниже.
Редактирующий символ в строке-литер шаблона
Литеры вставки, появляющиеся в редактируемом данном
Данное положительное или нуль
Данное отрицательное
+
+
—
—
Пробел
—
CR (КР)
'2 пробела
CR (КР)
'DB (ДБ)
То же
DB (ДБ)
Редактирование плавающей вставкой указывается валютным символом и редактирующими символами, управляемыми знаком + или —, которые являются литерами плавающей вставки, взаимно исключающими друг друга в данной строке-литер шаблона.
Редактирование плавающей вставкой указывается в строке- литер шаблона цепочкой из двух или более литер плавающей вставки. Цепочка литер плавающей вставки может содержать любые символы фиксированной вставки или предшествовать литерам фиксированной вставки. Литеры простой вставки рассматриваются как часть цепочки литер плавающей вставки. Если литерой плавающей вставки является валютный символ, то цепочка литер плавающей вставки может содержать литеры фиксированной вставки ■CR (КР) или DB (ДБ) непосредственно справа от этой цепочки.
Побачили розбіжність з офіційним текстом?