ГОСТ Р ИСО/МЭК 8825-3—2016
22.5.1.6Этаспецификациясчитается установленной,еслииспользованоключевоеслово «PRESENCE»,
которое обязательнодолжно быть установлено во всех местах в определенном синтаксисе, где оно разреше
но. Установка по умолчанию всех остальных частей этого определенного синтаксиса (например, использова
ние одиночного «PRESENCE») может не удовлетворять вышеприведенным ограничениям.
22.5.2 Ограничения на спецификацию
22.5.2.1 Если «DETERMINED BY» не присутствует, то подразумевается безусловное значение (по
умолчанию) («field-to-be-set»).
22.5.2.2 «HANDLE» не указывается, если «DETERMINED BY» не равен «handle».
22.5.2.3 «USING» не указывается, если «DETERMINED BY» имеет значение «handlo» или «pointer...
22.5.2.4 Если «DETERMINED BY» равен «pointer», то в том же объекте кодирования должна быть
спецификация «START-POINTER» (см. 22.3).
П р и м е ч а н и е — Спецификация начального указателя обычно требует также спецификации предвари
тельного выравнивания с «ALIGNED ТО ANY» (см. 22.2).
22.5.2.5 Если «DETERMINED BY» является «handle», применяется 21.5.7.
22.5.2.6 «ENCODING-TRANSFORMS» присутствует, если только «DETERMINED BY» установлен
(возможно, по умолчанию) в «fiold-to-be-set». Ссылка «USING» в этом случае является вспомогатель
ным полем категорий «цепочка битов», «булева», «цепочка знаков» или «целочисленная».
22.5.2.7 Спецификация ECN или применение будут ошибочными, когда преобразователь в
«ENCODER-TRANSFORMS» не является обратимым для абстрактного значения, к которому он при
менен. Первый преобразователь должен иметь источник с булевым значением, а последний преобра
зователь должен иметь результат, который может быть кодирован классом поля, указанного в «USING».
22.5.2.8 «DECODER-TRANSFORMS» присутствует, если только «DETERMINED BY» установлен
в «field-to-boused». Первый преобразователь должен иметь источник той же категории, что и поле,
указанное в «USING» и но являющееся вспомогательным полем. Последний преобразователь должен
иметь результат с булевым значением.
22.5.2.9 Признак кодирования «USING», если имеется, будет ссылкой на поле, которое присут
ствует в кодировании раньше, чем поле, чье присутствие определяется. Применение или специфика
ция ECN будут ошибочными, когда в экземпляре кодирования поле, указанное признаком кодирования
«USING», затребовано декодером, но отсутствует (из-за применения факультативной возможности).
22.5.2.10 Если «DETERMINED BY» равен «container», то ссылка «USING» будет на конкатенацию
или на повторение (либо на цепочку битов или цепочку октетов с вложенным типом), в которых кодиру
емый элемент является компонентом (или компонентом компонента на любую глубину). Применение
или спецификация ECN будут ошибочными, когда в экземпляре кодирования должны кодироваться по
следние элементы внутри одной и той же конкатенации или повторения, а компонент, факультативное
значение которого определяется, отсутствует.
22.5.2.11 Если «DETERMINED BY» равен «container», то возникнет ошибка спецификации ECN.
когда какое-либо абстрактное значение факультативного компонента имеет кодовую последователь
ность длиной нуль битов.
22.5.3 Действия кодера
22.5.3.1 Кодеры не будут генерировать кодовые последовательности, если не удовлетворяются
условия 22.5.2.
22.5.3.2 Кодер определяет, желает ли приложение кодировать факультативный компонент, и соз
дает смысловое булево значение «elomont-is-presont», установленное в «TRUE», когда значение ком
понента должно кодироваться, или в «FALSE» в противном случае.
22.5.3.3 Если «DETERMINED BY» равен «field-to-be-set». то кодер применяет преобразователи,
указанные в «ENCODER-TRANSFORMS» (если он имеется), к смысловому булеву значению «elemont-is-
prosent» для создания значения, которое будет кодироваться в ссылке «USING».
П р и м е ч а н и е — Кодирование ссыпки «USING» в этом случае появляется в кодировании раньше, чем ко
дирование этого поля, а кодер должен будет отложить кодирование этого поля до определения значения, которое
будет кодироваться, с помощью кодирования этого поля.
22.5.3.4 Если «DETERMINED BY» равен «field-to-bo-used», то кодер проверяет, является ли зна
чение в ссылке «USING» при преобразовании с помощью «DECODER-TRANSFORMS» (если он есть)
булевым значением, равным смысловому значению «elemont-is-present». Применение будет ошибоч
ным. когда это условие не удовлетворяется, и кодирование не будет продолжаться.
90