Статус документа
Статус документа

ГОСТ Р ИСО/МЭК 8825-3-2016 Информационная технология (ИТ). Правила кодирования АСН.1. Часть 3. Спецификация нотации контроля кодирования (ECN)

     21.5 Тип OptionalityDetermination

21.5.1 Продукцией типа "OptionalityDetermination" является:


OptionalityDetermination ::= ENUMERATED

{field-to-be-set, field-to-be-used, container, handle, pointer}

21.5.2 Безусловным значением (по умолчанию) для этого типа всегда является "field-to-be-set".

21.5.3 Признак кодирования этого типа указывает способ определения наличия или отсутствия факультативного компонента.

21.5.4 Значение "field-to-be-set" требует спецификацию REFERENCE для поля, которое будет устанавливаться кодером для переноса информации о факультативных возможностях и будет использоваться декодером. Спецификация ECN будет также содержать признак кодирования, который указывает, как кодер должен устанавливать значение этого поля со смысловым булевым значением, которое будет TRUE, когда факультативный компонент присутствует, или FALSE, когда факультативный компонент отсутствует. Если поле устанавливается более одного раза с помощью "field-to-be-set" или "flag-to-be-set" (см. 21.7), то спецификация ECN или применение будут ошибочными, когда разные значения выдаются разными процедурами кодирования; в этом случае кодеры не должны генерировать кодирования.

21.5.5 Значение "field-to-be-used" требует спецификацию REFERENCE для поля, значение которого может быть установлено из абстрактного синтаксиса (то есть соответствующее поле появляется в пределах спецификации АСН.1) либо может быть установлено некоторыми другими действиями кодера, вызванными с помощью "field-tobe-set" или "flag-to-be-set". Эта спецификация будет также содержать признак кодирования, который указывает, как декодер должен определять наличие или отсутствие факультативного компонента по значению этого поля. Кодер, соответствующий техническим требованиям, должен гарантировать, что значение этого поля правильно указывает наличие или отсутствие факультативного поля.

21.5.6 Значение "container" требует либо спецификацию REFERENCE для другого поля, у которого класс кодирования (контейнер) имеет определитель длины, а содержимое включает в себя этот факультативный компонент, либо спецификацию того, что контейнер является концом PDU (с помощью OUTER). Если конец контейнера появился тогда, когда декодер ищет начало этого факультативного компонента, то декодер будет считать, что этот факультативный компонент отсутствует.


Примечание - Эта спецификация может использоваться только в случае, когда кодируемые абстрактные значения таковы, что никакие другие кодирования не должны помещаться в контейнер. Это может потребовать ограничений, налагаемых на абстрактные значения типа АСН.1, например, запрета на введение позднего факультативного компонента, пока не имеются все ранние факультативные компоненты. Спецификация ECN или применение будут ошибочными, когда в контейнер должны быть помещены дополнительные кодирования после компонента, факультативные возможности которого определены этим способом; кодер, соответствующий требованиям, не должен генерировать такие кодирования.

21.5.7 Значение "handle" требует, чтобы был указан идентификационный описатель. Этот идентификационный описатель должен выдаваться и объектом кодирования для факультативного компонента, и объектом кодирования, применяемым к любому возможному альтернативному классу кодирования, который может следовать, если факультативный компонент отсутствует. Любой возможный альтернативный класс кодирования может быть компонентом конкатенации, содержащей факультативный компонент, или может быть классом кодирования, следующим за конкатенацией. Наборы значений описателей, указанные всеми участвующими объектами кодирования (показывающими один и тот же идентификационный описатель), должны быть непересекающимися.


Примечание - Каждое абстрактное значение данного компонента требуется для того, чтобы значение описателя соответствовало заданному набору значений описателя (см. 22.9.2.2).

21.5.8 Если конец любого открытого контейнера (или конец PDU) был обнаружен, когда декодер пытается обнаружить присутствие или отсутствие факультативного компонента, то декодер должен определить, что факультативный компонент отсутствует. В противном случае декодер должен определить, что компонент присутствует, если, и только если, декодирование оставшихся частей кодирования даст значение указанного идентификационного описателя, которое соответствует набору значений описателя факультативного компонента. Спецификация ECN будет ошибочной, если это будет не результатом правильной идентификации наличия или отсутствия кодирования факультативного компонента; кодеры, соответствующие техническим требованиям, не должны генерировать такие кодирования.

21.5.9 Значение "pointer" требует для другого поля спецификацию REFERENCE о начале кодирования. Если данное поле является нулем, то этот компонент отсутствует. Если оно не является нулем, то применяются правила для указателя начала кодирования (см. 22.3).