home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-12-22 | 123.2 KB | 5,810 lines |
- .rs
- .\" Troff code generated by TPS Convert from ITU Original Files
- .\" Not Copyright (~c) 1991
- .\"
- .\" Assumes tbl, eqn, MS macros, and lots of luck.
- .TA 1c 2c 3c 4c 5c 6c 7c 8c
- .ds CH
- .ds CF
- .EQ
- delim @@
- .EN
- .nr LL 40.5P
- .nr ll 40.5P
- .nr HM 3P
- .nr FM 6P
- .nr PO 4P
- .nr PD 9p
- .po 4P
-
- .rs
- \v'|.5i'
- .sp 2P
- .LP
- \fBRecommendation\ X.208\fR
- .RT
- .sp 2P
- .sp 1P
- .ce 1000
- \fBSPECIFICATION OF ABSTRACT SYNTAX NOTATION ONE
- (ASN.1)\fR
- .FS
- Recommendation\ X.208
- and ISO\ 8824 [Information processing systems\ \(em\ Open Systems
- Interconnection\ \(em\ Specification of Abstract Syntax Notation One\ (ASN.1)]
- as
- extended by Addendum\ 1 to ISO\ 8824, were developed in close cooperation
- and are
- technically aligned.
- .FE
- .EF '% Fascicle\ VIII.4\ \(em\ Rec.\ X.208''
- .OF '''Fascicle\ VIII.4\ \(em\ Rec.\ X.208 %'
- .ce 0
- .sp 1P
- .ce 1000
- \fI(Melbourne, 1988)\fR
- .sp 9p
- .RT
- .ce 0
- .sp 1P
- .LP
- The\ CCITT,
- .sp 1P
- .RT
- .sp 1P
- .LP
- \fIconsidering\fR
- .sp 9p
- .RT
- .PP
- (a)
- the variety and complexity of information objects conveyed within the application
- layer;
- .PP
- (b)
- the need for a high\(hylevel notation for specifying such
- information objects;
- .PP
- (c)
- the value of isolating and standardizing the rules for
- encoding such information objects,
- .sp 1P
- .LP
- \fIunanimously recommends\fR
- .sp 9p
- .RT
- .PP
- (1)
- that the notation for defining the abstract syntax of
- information objects is defined in Section\ 1;
- .PP
- (2)
- that character string types are defined in Section 2;
- .PP
- (3)
- that other useful types are defined in Section 3;
- .PP
- (4)
- that subtypes are defined in Section 4.
- .sp 1P
- .ce 1000
- CONTENTS
- .ce 0
- .sp 1P
- .sp 2P
- .LP
- 0
- \fIIntroduction\fR
- .sp 1P
- .RT
- .sp 1P
- .LP
- 1
- \fIScope and field of application\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 2
- \fIReferences\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 3
- \fIDefinitions\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 4
- \fIAbbreviations\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 5
- \fINotation used in this Recommendation\fR
- .sp 9p
- .RT
- .LP
- 5.1
- Productions
- .LP
- 5.2
- The alternative collections
- .LP
- 5.3
- Example of a production
- .LP
- 5.4
- Layout
- .LP
- 5.5
- Recursion
- .LP
- 5.6
- References to a collection of sequences
- .LP
- 5.7
- References to an item
- .LP
- 5.8
- Tags
- .sp 1P
- .LP
- 6
- \fIUse of the ASN.1 notation\fR
- .sp 9p
- .RT
- .sp 2P
- .LP
- SECTION\ 1\ \(em\ SPECIFICATION\ OF\ ASN.1\ NOTATION
- .sp 1P
- .RT
- .sp 1P
- .LP
- 7
- \fIThe ASN.1 character set\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 8
- \fIASN.1 items\fR
- .sp 9p
- .RT
- .LP
- 8.1
- General rules
- .LP
- 8.2
- Type references
- .LP
- 8.3
- Identifiers
- .LP
- 8.4
- Value references
- .LP
- 8.5
- Module reference
- .bp
- .LP
- 8.6
- Comment
- .LP
- 8.7
- Empty item
- .LP
- 8.8
- Number item
- .LP
- 8.9
- Binary string item
- .LP
- 8.10
- Hexadecimal string item
- .LP
- 8.11
- Character string item
- .LP
- 8.12
- Assignment item
- .LP
- 8.13
- Single character items
- .LP
- 8.14
- Keyword items
- .sp 1P
- .LP
- 9
- \fIModule definition\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 10
- \fIReferencing type and value definitions\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 11
- \fIAssigning types and values\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 12
- \fIDefinition of types and values\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 13
- \fINotation for the Boolean type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 14
- \fINotation for the integer type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 15
- \fINotation for the enumerated type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 16
- \fINotation for the real type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 17
- \fINotation for the bitstring type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 18
- \fINotation for the octetstring type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 19
- \fINotation for the null type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 20
- \fINotation for sequence types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 21
- \fINotation for sequence\(hyof types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 22
- \fINotation for set types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 23
- \fINotation for set\(hyof types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 24
- \fINotation for choice types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 25
- \fINotation for selection types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 26
- \fINotation for tagged types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 27
- \fINotation for the any type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 28
- \fINotation for the object identifier type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 29
- \fINotation for character string types\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 30
- \fINotation for types defined in Section 3\fR
- .sp 9p
- .RT
- .sp 2P
- .LP
- SECTION\ 2\ \(em\ CHARACTER\ STRING\ TYPES
- .sp 1P
- .RT
- .sp 1P
- .LP
- 31
- \fIDefinition of character string types\fR .bp
- .sp 9p
- .RT
- .sp 2P
- .LP
- SECTION\ 3\ \(em\ USEFUL\ DEFINITIONS
- .sp 1P
- .RT
- .sp 1P
- .LP
- 32
- \fIGeneralized time\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 33
- \fIUniversal time\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 34
- \fIThe external type\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 35
- \fIThe object descriptor type\fR
- .sp 9p
- .RT
- .sp 2P
- .LP
- SECTION\ 4\ \(em\ SUBTYPES
- .sp 1P
- .RT
- .sp 1P
- .LP
- 36
- \fISubtype notation\fR
- .sp 9p
- .RT
- .sp 1P
- .LP
- 37
- \fISubtype Value Sets\fR
- .sp 9p
- .RT
- .LP
- 37.1
- Single Value
- .LP
- 37.2
- Contained Subtype
- .LP
- 37.3
- Value Range
- .LP
- 37.4
- Size Constraint
- .LP
- 37.5
- Permitted Alphabet
- .LP
- 37.6
- Inner Subtyping
- .sp 1P
- .LP
- \fIAnnex\ A\fR \ \(em\ The macro notation
- .sp 9p
- .RT
- .LP
- A.1
- Introduction
- .LP
- A.2
- Extensions to the ASN.1 character set and items
- .LP
- A.2.1
- Macroreference
- .LP
- A.2.2
- Productionreference
- .LP
- A.2.3
- Localtypereference
- .LP
- A.2.4
- Localvaluereference
- .LP
- A.2.5
- Alternation item
- .LP
- A.2.6
- Definition terminator item
- .LP
- A.2.7
- Syntactic terminal item
- .LP
- A.2.8
- Syntactic category keyword items
- .LP
- A.2.9
- Additional keyword items
- .LP
- A.3
- Macro definition notation
- .LP
- A.4
- Use of the new notation
- .sp 1P
- .LP
- \fIAnnex\ B\fR \ \(em\ ISO assignment of OBJECT IDENTIFIER
- .sp 9p
- .RT
- .LP
- \fIAnnex\ C\fR \ \(em\ CCITT assignment of OBJECT IDENTIFIER
- .LP
- \fIAnnex\ D\fR \ \(em\ Joint assignment of OBJECT IDENTIFIER
- .sp 1P
- .LP
- \fIAppendix\ I\fR \ \(em\ Examples and hints
- .sp 9p
- .RT
- .LP
- I.1
- Example of a personnel record
- .LP
- I.1.1
- Informal Description of Personnel Record
- .LP
- I.1.2
- ASN.1 description of the record structure
- .LP
- I.1.3
- ASN.1 description of a record value
- .LP
- I.2
- Guidelines for use of the notation
- .LP
- I.2.1
- Boolean
- .LP
- I.2.2
- Integer
- .LP
- I.2.3
- Enumerated
- .LP
- I.2.4
- Real
- .LP
- I.2.5
- Bit string
- .bp
- .LP
- I.2.6
- Octet string
- .LP
- I.2.7
- Null
- .LP
- I.2.8
- Sequence and sequence\(hyof
- .LP
- I.2.9
- Set
- .LP
- I.2.10
- Tagged
- .LP
- I.2.11
- Choice
- .LP
- I.2.12
- Selection type
- .LP
- I.2.13
- Any
- .LP
- I.2.14
- External
- .LP
- I.2.15
- Encrypted
- .LP
- I.3
- An example of the use of the macro notation
- .LP
- I.4
- Use in identifying abstract syntaxes
- .LP
- I.5
- Subtypes
- .sp 1P
- .LP
- \fIAppendix\ II\fR \ \(em\ Summary of the ASN.1 notation
- .sp 9p
- .RT
- .sp 2P
- .LP
- \fB0\fR \fBIntroduction\fR
- .sp 1P
- .RT
- .PP
- In the lower layers of the Basic Reference Model (see
- Recommendation\ X.200), each user data parameter of a service primitive is
- specified as the binary value of a sequence octets.
- .PP
- In the presentation layer, the nature of user data parameters changes.
- Application layer specifications require the presentation service user
- data
- (see Recommendation\ X.216) to carry the value of quite complex types,
- possibly including strings of characters from a variety of character sets.
- In order to specify the value which is carried, they require a defined
- notation which does not determine the representation of the value. This
- is supplemented by the
- specification of one or more algorithms called \fBencoding rules\fR which
- determine the value of the session layer octets carrying such application
- layer
- values (called the \fBtransfer syntax\fR ). The presentation layer protocol
- (see Recommendation\ X.226) can negotiate which transfer syntaxes are to
- be used.
- .PP
- The purpose of specifying a value is to distinguish it from other
- possible values. The collection of the value together with the values from
- which it is distinguished is called a \fBtype\fR , and one specific instance
- is a
- value of that type. More generally, a value or type can often be considered
- as composed of several simpler values or types, together with the relationships
- between them. The term datatype is often used as a synonym for type.
- .PP
- In order to correctly interpret the representation of a value (whether
- by marks on paper or bits on communication line), it is necessary to know
- (usually from the context), the type of the value being represented. Thus
- the identification of a type is an important part of this Recommendation.
- .PP
- A very general technique for defining a complicated type is to define a
- small number of \fBsimple types\fR by defining all possible values of the
- simple types, then combining these simple types in various ways. Some of
- the ways of defining new types are as follows:
- .RT
- .LP
- a)
- given an (ordered) list of existing types, a value can be
- formed as an (ordered) sequence of values, one from each of the existing
- types; the collection of all possible values obtained in this way is a
- new type; (if the existing types in the list are all distinct, this mechanism
- can be extended to allow omission of some values from the list);
- .LP
- b)
- given a list of (distinct) existing types, a value can be
- formed as an (unordered) set of values, one from each of the existing types;
- the collection of all possible values obtained in this way is a new type;
- (the mechanism can again be extended to allow omission of some values);
- .LP
- c)
- given a single existing type, a value can be formed
- (ordered) sequence or (unordered) set of zero, one or more values of the
- existing type; the (infinite) collection of all possible values obtained in
- this way is a new type;
- .LP
- d)
- given a list of (distinct) types, a value can be chosen from any one
- of them; the set of all possible values obtained in this way is a new type;
- .LP
- e)
- given a type, a new type can be formed as a subset of it by using some
- structure or order relationship among the values;
- .PP
- Types which are defined in this way are called \fBstructured
- types\fR .
- .bp
- .PP
- Every type defined using the notation specified in this Recommendation
- is assigned a \fBtag\fR . The tag is defined either by this Recommendation
- or by the user of the notation.
- .PP
- It is common for the same tag to be assigned to many different types, the
- particular type being identified by the context in which the tag
- is used.
- .PP
- The user of the notation may choose to assign distinct tags to two
- occurrences of a single type, thereby creating two distinct types. This
- can be necessary when it is required to distinguish which choice has been
- made in
- situations such as\ d) above.
- .PP
- Four classes of tag are specified in the notation.
- .PP
- The first is the \fBuniversal\fR class. Universal class tags are only used
- as specified within this Recommendation, and each tag is either
- .RT
- .LP
- a)
- assigned to a single type; or
- .LP
- b)
- assigned to a construction mechanism.
- .PP
- The second class of tag is the \fBapplication\fR class. Application
- class tags are assigned to types by other standards or Recommendations.
- Within a particular standard or Recommendation, an application class tag
- is assigned to only one type.
- .PP
- The third class is the \fBprivate\fR class. Private class tags are never
- assigned by ISO Standards or CCITT Recommendations. Their use is
- enterprise specific.
- .PP
- The final class of tag is the \fBcontext\(hyspecific\fR class. This is
- freely assigned within any use of this notation, and is interpreted according
- to the context in which it is used.
- .PP
- Tags are mainly intended for machine use, and are not essential for
- the human notation defined in this Recommendation. Where, however, it is
- necessary to require that certain types be distinct, this is expressed by
- requiring that they have distinct tags. The allocation of tags is therefore
- an important part of the use of this notation.
- .PP
- \fINote 1\fR \ \(em\ All types which can be defined in the notation of this
- Recommendation have a tag. Given any type, the user of the notation can
- define a new type with a different tag.
- .PP
- \fINote 2\fR \ \(em\ Encoding rules always carry the tag of a type, explicitly
- or implicitly, with any representation of a value of the type. The restrictions
- placed on the use of the notation are designed to ensure that the tag is
- sufficient to unambiguously determine the actual type, provided the applicable
- type of definitions are available.
- .PP
- This Recommendation specifies a notation which both enables
- complicated types to be defined and also enables values of these types to be
- specified. This is done without determining the way an instance of this type
- is to be represented (by a sequence of octets) during transfer. A notation
- which provides this facility is called a \fBnotation for abstract syntax
- definition\fR .
- .PP
- The purpose of this Recommendation is to specify a notation for
- abstract syntax definition called \fBAbstract Syntax Notation One\fR ,
- or ASN.1.
- Abstract Syntax Notation One is used as a semi\(hyformal tool to define
- protocols. The use of the notation does not necessarily preclude ambiguous
- specifications. It is the responsibility of the users of the notation to
- ensure that their
- specifications are not ambiguous.
- .PP
- This Recommendation is supported by other standards and
- Recommendations which specify encoding rules. The application of encoding
- rules to the value of a type defined by ASN.1 results in a complete specification
- of the representation of values of that type during transfer (a transfer
- syntax).
- .PP
- This Recommendation is technically and editorially aligned with
- ISO\ 8824 plus Addendum\ 1 to ISO\ 8824.
- .PP
- Section one of this Recommendation defines the simple types supported by
- ASN.1, and specifies the notation to be used for referencing simple types
- and defining structured types. Section one also specifies the notation to be
- used for specifying values of types defined using ASN.1.
- .PP
- Section two of this Recommendation defines additional types (character
- string types) which, by the application of encoding rules for character
- sets, can be equated with the octetstring type.
- .PP
- Section three of this Recommendation defines certain structured types which
- are considered to be of general utility, but which require no additional
- encoding rules.
- .PP
- Section four of this Recommendation defines a notation which enables subtypes
- to be defined from the values of a parent type.
- .PP
- Annex\ A is part of this Recommendation, and specifies a notation for extending
- the basic\ ASN.1 notation. This is called the macro facility.
- .PP
- Annex\ B is part of this Recommendation, and defines the object
- identifier tree for authorities supported by ISO.
- .bp
- .PP
- Annex\ C is part of this Recommendation and defines the object
- identifier tree for authorities supported by CCITT.
- .PP
- Annex\ D is part of this Recommendation and defines the object
- identifier tree for joint use by ISO and CCITT.
- .PP
- Appendix\ I is not part of this Recommendation, and provides examples and
- hints on the use of the ASN.1 notation.
- .PP
- Appendix\ II is not part of this Recommendation, and provides a summary
- of ASN.1 using the notation of\ \(sc\ 5.
- .PP
- The text of this Recommendation, and in particular the annexes B to D,
- are the subject of joint ISO\(hyCCITT agreement.
- .RT
- .sp 2P
- .LP
- \fB1\fR \fBScope and field of application\fR
- .sp 1P
- .RT
- .PP
- This Recommendation specifies a notation for abstract syntax
- definition called Abstract Syntax Notation One (ASN.1).
- .PP
- This Recommendation defines a number of simple types, with their tags,
- and specifies a notation for referencing these types and for specifying
- values of these types.
- .PP
- This Recommendation defines mechanisms for constructing new types from
- more basic types, and specifies a notation for defining such structured
- types and assigning them tags, and for specifying values of these types.
- .PP
- This Recommendation defines character sets for use within
- ASN.1.
- .PP
- This Recommendation defines a number of useful types (using ASN.1),
- which can be referenced by users of ASN.1.
- .PP
- The ASN.1 notation can be applied whenever it is necessary to define the
- abstract syntax of information. It is particularly, but not exclusively,
- applicable to application protocols.
- .PP
- The ASN.1 notation is also referenced by other presentation layer
- standards and Recommendations which define encoding rules for the simple
- types, the structured types, the character string types and the useful
- types defined in\ ASN.1.
- .RT
- .sp 2P
- .LP
- \fB2\fR \fBReferences\fR
- .sp 1P
- .RT
- .LP
- [1]
- Recommendation\ X.200, \fIReference Model of Open Systems Interconnection\fR
- \fIfor CCITT Applications\fR \|
- (see also ISO\ 7498).
- .LP
- [2]
- Recommendation\ X.209, \fISpecification of Basic Encoding Rules for\fR
- \fIAbstract Syntax Notation One (ASN.1)\fR \|
- (see also ISO\ 8825).
- .LP
- [3]
- Recommendation\ X.216, (see also ISO\ 8822), \fIPresentation Service\fR
- \fIDefinition for Open Systems Interconnection for CCITT Applications\fR .
- .LP
- [4]
- Recommendation\ X.226, \fIPresentation Protocol Specification for Open\fR
- \fISystems Interconnection for CCITT Applications\fR \|
- (see also ISO\ 8823).
- .LP
- [5]
- ISO\ 2014, \fIWriting of calendar dates in all\(hynumeric form\fR .
- .LP
- [6]
- ISO\ 2375, \fIData processing\ \(em\ Procedure for registration of escape\fR
- \fIsequences\fR .
- .LP
- [7]
- ISO\ 3166, \fICodes for the representation of names of countries\fR .
- .LP
- [8]
- ISO\ 3307, \fIInformation interchange\ \(em\ Representations of time
- of the\fR
- \fIday\fR .
- .LP
- [9]
- ISO\ 4031, \fIInformation interchange\ \(em\ Representation of local time\fR
- \fIdifferentials\fR .
- .LP
- [10]
- ISO\ 6523, \fIData interchange\ \(em\ Structure for identification of\fR
- \fIorganizations\fR .
- .LP
- [11]
- Recommendation\ X.121, \fIInternational numbering plan for public data\fR
- \fInetworks\fR .
- .sp 2P
- .LP
- \fB3\fR \fBDefinitions\fR
- .sp 1P
- .RT
- .PP
- The definitions in Recommendation\ X.200 are used in this
- Recommendation.
- .RT
- .sp 1P
- .LP
- 3.1
- \fBvalue\fR
- .sp 9p
- .RT
- .PP
- A distinguished member of a set of values.
- .bp
- .RT
- .sp 1P
- .LP
- 3.2
- \fBtype\fR
- .sp 9p
- .RT
- .PP
- A named set of values.
- .RT
- .sp 1P
- .LP
- 3.3
- \fBsimple type\fR
- .sp 9p
- .RT
- .PP
- A type defined by directly specifying the set of its
- values.
- .RT
- .sp 1P
- .LP
- 3.4
- \fBstructured type\fR
- .sp 9p
- .RT
- .PP
- A type defined by reference to one or more other types.
- .RT
- .sp 1P
- .LP
- 3.5
- \fBcomponent type\fR
- .sp 9p
- .RT
- .PP
- One of the types referenced when defining a structured type.
- .RT
- .sp 1P
- .LP
- 3.6
- \fBtag\fR
- .sp 9p
- .RT
- .PP
- A type denotation which is associated with every ASN.1 type.
- .RT
- .sp 1P
- .LP
- 3.7
- \fBtagging\fR
- .sp 9p
- .RT
- .PP
- Replacing the existing (possibly the default) tag of a type by a specified
- tag.
- .RT
- .sp 1P
- .LP
- 3.8
- \fBASN.1 character set\fR
- .sp 9p
- .RT
- .PP
- The set of characters, specified in\ \(sc\ 7, used in the ASN.1
- notation.
- .RT
- .sp 1P
- .LP
- 3.9
- \fBitems\fR
- .sp 9p
- .RT
- .PP
- Named sequences of characters from the ASN.1 character set,
- specified in\ \(sc\ 8, which are used to form the ASN.1 notation.
- .RT
- .sp 1P
- .LP
- 3.10
- \fBtype (or value) reference name\fR
- .sp 9p
- .RT
- .PP
- A name associated uniquely with a type (or value) within some
- context.
- .PP
- \fINote\fR \ \(em\ Reference names are assigned to the types defined in this
- Recommendation; these are universally available within ASN.1. Other reference
- names are defined in other standards and Recommendations, and are applicable
- only in the context of the standard or Recommendation.
- .RT
- .sp 1P
- .LP
- 3.11
- \fBASN.1 encoding rules\fR
- .sp 9p
- .RT
- .PP
- Rules which specify the representation during transfer of the
- value of any ASN.1 type; ASN.1 encoding rules enable information being
- transferred to be identified by the recipient as a specific value of a
- specific ASN.1 type.
- .RT
- .sp 1P
- .LP
- 3.12
- \fBcharacter string type\fR
- .sp 9p
- .RT
- .PP
- A type whose values are strings of characters from some defined
- character set.
- .RT
- .sp 1P
- .LP
- 3.13
- \fBBoolean type\fR
- .sp 9p
- .RT
- .PP
- A simple type with two distinguished values.
- .RT
- .sp 1P
- .LP
- 3.14
- \fBtrue\fR
- .sp 9p
- .RT
- .PP
- One of the distinguished values of the Boolean type.
- .RT
- .sp 1P
- .LP
- 3.15
- \fBfalse\fR
- .sp 9p
- .RT
- .PP
- The other distinguished value of the Boolean type.
- .bp
- .RT
- .sp 1P
- .LP
- 3.16
- \fBinteger type\fR
- .sp 9p
- .RT
- .PP
- A simple type with distinguished values which are the positive and negative
- whole numbers, including zero (as a single value).
- .PP
- \fINote\fR \ \(em\ Particular encoding rules limit the range of an integer,
- but such limitations are chosen so as not to affect any user of ASN.1.
- .RT
- .sp 1P
- .LP
- 3.17
- \fBenumerated type\fR
- .sp 9p
- .RT
- .PP
- A simple type whose values are given distinct identifiers as part of the
- type notation.
- .RT
- .sp 1P
- .LP
- 3.18
- \fBreal type\fR
- .sp 9p
- .RT
- .PP
- A simple type whose distinguished values (specified in\ \(sc\ 16.2) are
- members of the set of real numbers.
- .RT
- .sp 1P
- .LP
- 3.19
- \fBbitstring type\fR
- .sp 9p
- .RT
- .PP
- A simple type whose distinguished values are an ordered sequence of zero,
- one or more bits.
- .PP
- \fINote\fR \ \(em\ Encoding rules do not limit the number of bits in a
- bit\(hystring.
- .RT
- .sp 1P
- .LP
- 3.20
- \fBoctetstring type\fR
- .sp 9p
- .RT
- .PP
- A simple type whose distinguished values are an ordered sequence of zero,
- one or more octets, each octet being an ordered sequence of eight
- bits.
- .PP
- \fINote\fR \ \(em\ Encoding rules do not limit the number of octets in
- an octet string.
- .RT
- .sp 1P
- .LP
- 3.21
- \fBnull type\fR
- .sp 9p
- .RT
- .PP
- A simple type consisting of a single value, also called null.
- .PP
- \fINote\fR \ \(em\ The null value is commonly used where several alternatives
- are possible, but none of them apply.
- .RT
- .sp 1P
- .LP
- 3.22
- \fBsequence type\fR
- .sp 9p
- .RT
- .PP
- A structured type, defined by referencing a fixed, ordered, list of types
- (some of which may be declared to be optional); each value of the new type
- is an ordered list of values, one from each component type.
- .PP
- \fINote\fR \ \(em\ Where a component type is declared to be optional, a
- value of the new type need not contain a value of that component type.
- .RT
- .sp 1P
- .LP
- 3.23
- \fBsequence\(hyof type\fR
- .sp 9p
- .RT
- .PP
- A structured type, defined by referencing a single existing type; each
- value in the new type is an ordered list of zero, one or more values of
- the existing type.
- .PP
- \fINote\fR \ \(em\ Encoding rules do not limit the number of values in a
- sequence\(hyof value.
- .RT
- .sp 1P
- .LP
- 3.24
- \fBset type\fR
- .sp 9p
- .RT
- .PP
- A structured type, defined by referencing a fixed, unordered, list of distinct
- types (some of which may be declared to be optional); each value in the
- new type is an unordered list of values, one from each of the component
- types.
- .PP
- \fINote\fR \ \(em\ Where a component type is declared to be optional, the new
- type need not contain a value of that component type.
- .RT
- .sp 1P
- .LP
- 3.25
- \fBset\(hyof type\fR
- .sp 9p
- .RT
- .PP
- A structured type, defined by referencing a single existing type; each
- value in the new type is an unordered list zero, one or more values of
- the existing type.
- .PP
- \fINote\fR \ \(em\ Encoding rules do not limit the number of values in
- a set\(hyof value.
- .bp
- .RT
- .sp 1P
- .LP
- 3.26
- \fBtagged type\fR
- .sp 9p
- .RT
- .PP
- A type defined by referencing a single existing type and a tag;
- the new type is isomorphic to the existing type, but is distinct from
- it.
- .RT
- .sp 1P
- .LP
- 3.27
- \fBchoice type\fR
- .sp 9p
- .RT
- .PP
- A structured type, defined by referencing a fixed, unordered, list of distinct
- types; each value of the new type is a value of one of the
- component types.
- .RT
- .sp 1P
- .LP
- 3.28
- \fBselection type\fR
- .sp 9p
- .RT
- .PP
- A structured type, defined by reference to a component type of a choice type.
- .RT
- .sp 1P
- .LP
- 3.29
- \fBany type\fR
- .sp 9p
- .RT
- .PP
- A choice type whose component types are unspecified, but are
- restricted to the set of types which can be defined using ASN.1.
- .RT
- .sp 1P
- .LP
- 3.30
- \fBexternal type\fR
- .sp 9p
- .RT
- .PP
- A type whose distinguished values cannot be deduced from their
- characterisation as external, but which can be deduced from the encoding of
- such a value; the value may, but need not, be describable using ASN.1,
- and thus their encoding may, but need not, conform to ASN.1 encoding rules.
- .RT
- .sp 1P
- .LP
- 3.31
- \fBinformation object\fR
- .sp 9p
- .RT
- .PP
- A well\(hydefined piece of information, definition, or specification which
- requires a name in order to identify its use in an instance of
- communication.
- .RT
- .sp 1P
- .LP
- 3.32
- \fBobject identifier\fR
- .sp 9p
- .RT
- .PP
- A value (distinguishable from all other such values) which is
- associated with an information object.
- .RT
- .sp 1P
- .LP
- 3.33
- \fBobject identifier type\fR
- .sp 9p
- .RT
- .PP
- A type whose distinguished values are the set of all object
- identifiers allocated in accordance with the rules of this Recommendation.
- .PP
- \fINote\fR \ \(em\ The rules of this Recommendation permit a wide range of
- authorities to independently associate object identifiers with information
- objects.
- .RT
- .sp 1P
- .LP
- 3.34
- \fBobject descriptor type\fR
- .sp 9p
- .RT
- .PP
- A type whose distinguished values are human\(hyreadable text
- providing a brief description of an information object.
- .PP
- \fINote\fR \ \(em\ An object descriptor value is usually, but not always
- associated with a single information object. Only an object identifier value
- unambiguously identifies an information object.
- .RT
- .sp 1P
- .LP
- 3.35
- \fBrecursive definitions\fR
- .sp 9p
- .RT
- .PP
- A set of ASN.1 definitions which cannot be reordered so that all types
- used in a construction are defined before the definition of the
- construction.
- .PP
- \fINote\fR \ \(em\ Recursive definitions are allowed in ASN.1: the user
- of the notation has the responsibility of ensuring that those values (of
- the resulting types) which are used have a finite representation.
- .RT
- .sp 1P
- .LP
- 3.36
- \fBmodule\fR
- .sp 9p
- .RT
- .PP
- One or more instances of the use of the ASN.1 notation for type
- and value definition, encapsulated using the ASN.1 module notation
- (see\ \(sc\ 9).
- .bp
- .RT
- .sp 1P
- .LP
- 3.37
- \fBproduction\fR
- .sp 9p
- .RT
- .PP
- A part of the formal notation used to specify ASN.1, in which
- allowed sequences of items are associated with a name which can be used to
- reference those sequences in the definition of new sets of allowed
- sequences.
- .RT
- .sp 1P
- .LP
- 3.38
- \fBCoordinated Universal Time (UTC)\fR
- .sp 9p
- .RT
- .PP
- The time scale maintained by the Bureau Internationale de l'Heure (International
- Time Bureau) that forms the basis of a coordinated dissemination of standard
- frequencies and time signals.
- .PP
- \fINote 1\fR \ \(em\ The source of this definition is Recommendation\ 460\(hy2
- of
- the Consultative Committee on International Radio (CCIR). CCIR has also
- defined the acronym for Coordinated Universal Time as UTC.
- .PP
- \fINote 2\fR \ \(em\ UTC is also referred to as Greenwich Mean Time and
- appropriate time signals are regularly broadcast.
- .RT
- .sp 1P
- .LP
- 3.39
- \fBuser (of ASN.1)\fR
- .sp 9p
- .RT
- .PP
- The individual or organization that defines the abstract syntax of a particular
- piece of information using ASN.1.
- .RT
- .sp 1P
- .LP
- 3.40
- \fBsubtype (of a parent type)\fR
- .sp 9p
- .RT
- .PP
- A type whose values are specified as a subset of the values of
- some other type (the parent type).
- .RT
- .sp 1P
- .LP
- 3.41
- \fBparent type (of a subtype)\fR
- .sp 9p
- .RT
- .PP
- Type used to define a subtype.
- .PP
- \fINote\fR \ \(em\ The parent type may itself be a subtype of some other
- type.
- .RT
- .sp 1P
- .LP
- 3.42
- \fBsubtype specification\fR
- .sp 9p
- .RT
- .PP
- A notation which can be used in association with the notation for a type,
- to define a subtype of that type.
- .RT
- .sp 1P
- .LP
- 3.43
- \fBsubtype value set\fR
- .sp 9p
- .RT
- .PP
- A notation forming part of a subtype specification, specifying a set of
- values of the parent type which are to be included in the
- subtype.
- .RT
- .PP
- 3.44
- This Recommendation uses the following terms defined in
- Recommendation\ X.216:
- .sp 9p
- .RT
- .LP
- a)
- presentation data value; and
- .LP
- b)
- (an) abstract syntax; and
- .LP
- c)
- abstract syntax name; and
- .LP
- d)
- transfer syntax name.
- .PP
- 3.45
- This Recommendation also uses the following terms defined in
- ISO\ 6523;
- .sp 9p
- .RT
- .LP
- a)
- issuing organization; and
- .LP
- b)
- organization code; and
- .LP
- c)
- International Code Designator.
- .PP
- 3.46
- This Recommendation uses the following term defined in
- Recommendation\ X.226:
- .sp 9p
- .RT
- .LP
- a)
- presentation context identifier.
- .sp 2P
- .LP
- \fB4\fR \fBAbbreviations\fR
- .sp 1P
- .RT
- .PP
- ASN.1
- Abstract Syntax Notation One.
- .RT
- .LP
- UTC
- Coordinated Universal Time.
- .LP
- ICD
- International Code Designator.
- .LP
- DCC
- Data Country Code
- .LP
- DNIC
- Data Network Identification Code.
- .bp
- .sp 2P
- .LP
- \fB5\fR \fBNotation used in this Recommendation\fR
- .sp 1P
- .RT
- .PP
- The ASN.1 notation consists of a sequence of characters from the
- ASN.1 character set specified in\ \(sc\ 7.
- .PP
- Each use of the ASN.1 notation contains characters from the ASN.1
- character set grouped into items. Clause\ 8 specifies all the sequences of
- characters forming ASN.1 items, and names each item.
- .PP
- The ASN.1 notation is specified in\ \(sc\ 9 (and following clauses) by
- specifying the collection of sequences of items which form valid instances
- of the ASN.1 notation, and by specifying the semantics of each sequence.
- .PP
- In order to specify these collections, this Recommendation uses a
- formal notation defined in the following sub\(hyclauses.
- .RT
- .sp 1P
- .LP
- 5.1
- \fIProductions\fR
- .sp 9p
- .RT
- .PP
- A new (more complex) collection of ASN.1 sequences is defined by
- means of a production. This uses the names of collections of sequences
- defined in this Recommendation and forms a new collection of sequences
- by specifying
- either
- .RT
- .LP
- a)
- that the new collection of sequences is to consist of any of the original
- collections; or
- .LP
- b)
- that the new collection is to consist of any sequence which can be generated
- by taking exactly one sequence from each collection, and
- juxtaposing them in a specified order.
- .PP
- Each production consists of the following parts, on one or
- several lines, in order:
- .LP
- a)
- a name for the new collection of sequences;
- .LP
- b)
- the characters
- .sp 1P
- .ce 1000
- ::=
- .ce 0
- .sp 1P
- .LP
- c)
- one or more alternative collections of sequences, defined as
- in\ \(sc\ 5.2, separated by the character
- .sp 1P
- .ce 1000
- |
- .ce 0
- .sp 1P
- .PP
- A sequence is present in the new collection if it is present in
- one or more of the alternative collections. The new collection is referenced
- in this Recommendation by the name in\ a) above.
- .PP
- \fINote\fR \ \(em\ If the same sequence appears in more than one alternative,
- any semantic ambiguity in the resulting notation is resolved by other parts
- of the complete ASN.1 sequence.
- .RT
- .sp 1P
- .LP
- 5.2
- \fIThe alternative collections\fR
- .sp 9p
- .RT
- .PP
- Each of the alternative collections of sequences in \*Qone or more
- alternative collections of\*U is specified by a list of names. Each name is
- either the name of an item, or is the name of a collection of sequences
- defined by a production in this Recommendation.
- .PP
- The collection of sequences defined by the alternative consists of all
- sequences obtained by taking any one of the sequences (or the item) associated
- with the first name, in combination with (and followed by) any one of the
- sequences (or item) associated with the second name, in combination with
- (and followed by) any one of the sequences (or item) associated with the
- third name, and so on up to and including the last name (or item) in the
- alternative.
- .RT
- .sp 1P
- .LP
- 5.3
- \fIExample of a\fR
- \fIproduction\fR
- .sp 9p
- .RT
- .LP
- BitStringValue ::=
- .LP
- bstring\ |
- .LP
- hstring\ |
- .LP
- {IdentifierList}
- .LP
- is a production which associates with the name \fBBitStringValue\fR the
- following sequences:
- .LP
- a)
- any bstring (an item); and
- .LP
- b)
- any hstring (an item); and
- .LP
- c)
- any sequence associated with \fBIdentifierList\fR , preceded by a\ {
- and followed by a\ }
- .PP
- \fINote\fR \ \(em\ { and } are the names of items containing the single
- characters { and } (see \(sc\ 8).
- .PP
- In this example, \fBIdentifierList\fR would be defined by a further
- production, either before or after production defining
- \fBBitStringValue\fR .
- .RT
- .sp 1P
- .LP
- 5.4
- \fILayout\fR
- .sp 9p
- .RT
- .PP
- Each production used in this Recommendation is preceded and
- followed by an empty line. Empty lines do not appear within productions. The
- production may be on a single line, or may be spread over several lines.
- Layout is not significant.
- .bp
- .RT
- .sp 1P
- .LP
- 5.5
- \fIRecursion\fR
- .sp 9p
- .RT
- .PP
- The productions in this Recommendation are frequently recursive. In this
- case the productions are to be continously reapplied until no new
- sequences are generated.
- .PP
- \fINote\fR \ \(em\ In many cases, such reapplication results in an unbounded
- collection of allowed sequences, some or all of which may themselves be
- unbounded. This is not an error.
- .RT
- .sp 1P
- .LP
- 5.6
- \fIReferences to a collection of sequences\fR
- .sp 9p
- .RT
- .PP
- This Recommendation references a collection of sequences (part of the ASN.1
- notation) by referencing the first name (before the\ ::=) in a
- production; the name is surrounded by\ \*Q to distinguish it from natural
- language text, unless it appears as part of a production.
- .RT
- .sp 1P
- .LP
- 5.7
- \fIReferences to an item\fR
- .sp 9p
- .RT
- .PP
- This Recommendation references an item by referencing the name of the item;
- the name is surrounded by\ \*Q to distinguish it from natural language
- text, unless it appears as part of a production.
- .RT
- .ce
- \fBH.T. [T1.208]\fR
- .ce
- TABLE\ 1/X.208
- .ce
- \fBUniversal class tag assignments\fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- lw(72p) | lw(72p) .
- UNIVERSAL 1 Boolean type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 2 Integer type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 3 Bitstring type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 4 Octetstring type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 5 Null type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 6 Object identifier type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 7 Object descriptor type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 8 External type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 9 Real type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 10 Enumerated type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 12 \*`a 15 T{
- Reserved for future versions of this
- Recommendation
- T}
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 16 T{
- Sequence and Sequence\(hyof types
- T}
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 17 Set and Set\(hyof types
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 18\(hy22, 25\(hy27 Character string types
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 23\(hy24 Time types
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 28\(hy.\|.\|. T{
- Reserved for future versions of this
- Recommendation
- T}
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTable 1/X.208 [T1.208], p.\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .sp 1P
- .LP
- 5.8
- \fITags\fR
- .sp 9p
- .RT
- .PP
- A tag is specified by giving its class and the number within the
- class. The class is one of
- .RT
- .LP
- universal
- .LP
- application
- .LP
- private
- .LP
- context\(hyspecific
- .PP
- The number is a non\(hynegative integer, specified in decimal
- notation.
- .PP
- Restrictions on tags assigned by the user of ASN.1 are specified
- in \(sc\ 26.
- .bp
- .PP
- Tags in the universal class are assigned in such a way that, for
- structured types, the top\(hylevel structure can be deduced from the tag,
- and for simple types, the type can be deduced from the tag. Table\ 1/X.208
- summarises
- the assignment of tags in the universal class which are specified in this
- Recommendation.
- .PP
- \fINote\fR \ \(em\ Additional tags in the universal class are reserved for
- assignment by future versions of this Recommendation.
- .RT
- .sp 2P
- .LP
- \fB6\fR \fBUse of the ASN.1 notation\fR
- .sp 1P
- .RT
- .PP
- 6.1
- The ASN.1 notation for a type definition shall be
- \*QType\*U (see \(sc\ 12.1).
- .sp 9p
- .RT
- .PP
- 6.2
- The ASN.1 notation for a value of a type shall be
- \*QValue\*U (see \(sc\ 12.7).
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ It is not in general possible to interpret the value
- notation without knowledge of the type.
- .PP
- 6.3
- The ASN.1 notation for assigning a type to a type reference name shall
- be \*QTypeassignment\*U (see\ \(sc\ 11.1).
- .sp 9p
- .RT
- .PP
- 6.4
- The ASN.1 notation for assigning a value reference name shall be \*QValueassignment\*U
- (see\ \(sc\ 11.2).
- .sp 9p
- .RT
- .PP
- 6.5
- The notation \*QTypeassignment\*U and \*QValueassignment\*U shall only
- be used within the notation \*QModuleDefinition\*U (but see\ \(sc\ 9.1).
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- SECTION\ 1\ \(em\ SPECIFICATION\ OF\ ASN.1\ NOTATION
- .ce 0
- .sp 1P
- .sp 2P
- .LP
- \fB7\fR \fBThe\fR
- \fBASN.1 character set\fR
- .sp 1P
- .RT
- .PP
- 7.1
- An ASN.1 item shall consist of a sequence of the characters listed in Table\
- 2/X.208, except as specified in\ \(sc\ 7.2 and\ \(sc\ 7.3.
- .sp 9p
- .RT
- .ce
- \fBH.T. [T2.208]\fR
- .ce
- TABLE\ 2/X.208
- .ce
- \fBASN.1 characters\fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- lw(36p) .
- A to Z
- .T&
- lw(36p) .
- a to z \fR
- .T&
- lw(36p) .
- 0 to 9 \fR
- .T&
- lw(36p) .
- T{
- \fB:\fR
- = \fB,\fR
- {\|} < \fB.\fR
- T}
- .T&
- lw(36p) .
- T{
- (\|) [\|] \fB\(hy\fR
- \fB'\fR
- \fB\*U\fR
- T}
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTable 2/X.208 [T2.208], p.\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ The additional characters > and\ |\ are used in the
- macro\(hynotation (see Annex\ A).
- .PP
- \fINote\ 2\fR \ \(em\ Where equivalent derivative standards are develped by
- national standards bodies, additional characters may appear in the following
- items (the last five of which are defined in Annex\ A):
- .RT
- .LP
- typereference
- (\(sc\ 8.2.1)
- .LP
- identifier
- (\(sc\ 8.3)
- .LP
- Valuereference
- (\(sc\ 8.4)
- .LP
- modulereference
- (\(sc\ 8.5)
- .LP
- macroreference
- (\(sc\ A.2.1)
- .LP
- productionreference
- (\(sc\ A.2.2)
- .LP
- localtypereference
- (\(sc\ A.2.3)
- .LP
- localvaluereference
- (\(sc\ A.2.4)
- .LP
- astring
- (\(sc\ A.2.7)
- .bp
- .PP
- \fINote\ 3\fR \ \(em\ When additional characters are introduced to
- accommodate a language in which the distinction between upper\(hycase and
- lower\(hycase letters is without meaning, the syntactic distinction achieved by
- dictating the case of the first character of certain of the above ASN.1
- items has to be achieved in some other way.
- .PP
- 7.2
- Where the notation used to specify the value of a character string type,
- all characters of the defined character set can appear in the ASN.1
- notation, surrounded by the characters\ \*U. (See\ \(sc\ 8.11.)
- .sp 9p
- .RT
- .PP
- 7.3
- Additional characters may appear in the \*Qcomment\*U item.
- (See\ \(sc\ 8.6.)
- .sp 9p
- .RT
- .PP
- 7.4
- There shall be no significance placed on the typographical style, size,
- colour, intensity, or other display characteristics.
- .sp 9p
- .RT
- .PP
- 7.5
- The upper and lower case letters shall be regarded as
- distinct.
- .sp 9p
- .RT
- .LP
- \fB8\fR \fBASN.1 items\fR
- .sp 1P
- .RT
- .sp 2P
- .LP
- 8.1
- \fIGeneral rules\fR
- .sp 1P
- .RT
- .PP
- 8.1.1
- The following subclauses specify the characters in ASN.1 items. In each
- case the name of the item is given, together with the definition of the
- character sequences which form the item.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Annex A specifies additional items used in the macro
- notation.
- .PP
- 8.1.2
- Each item specified in the following subclauses shall appear
- on a single line, and (except for the \*Qcomment\*U item) shall not contain
- spaces.
- .sp 9p
- .RT
- .PP
- 8.1.3
- The length of a line is not restricted.
- .sp 9p
- .RT
- .PP
- 8.1.4
- The items in the sequences specified by this Recommendation (the ASN.1
- notation) may appear on one line or may appear on several lines, and may
- be separated by one or more spaces or empty lines.
- .sp 9p
- .RT
- .PP
- 8.1.5
- An item shall be separated from a following item by a space, or by being
- placed on a separate line, if the initial character (or characters) of
- the following item is a permitted character (or characters) for inclusion at
- the end of the characters in the earlier item.
- .sp 9p
- .RT
- .sp 1P
- .LP
- 8.2
- \fIType references\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hytypereference.
- .RT
- .PP
- 8.2.1
- A \*Qtypereference\*U shall consist of an arbitrary number (one or
- more) of letters, digits, and hyphens. The initial character shall be an
- upper\(hycase letter. A hyphen shall not be the last character. A hyphen
- shall not be immediately followed by another hyphen.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The rules concerning hyphen are designed to avoid
- ambiguity with (possibly following) comment.
- .PP
- 8.2.2
- A \*Qtypereference\*U shall not be one of the reserved character
- sequences listed in Table\ 3/X.208.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ \(sc\ A.2.9 specifies additional reserved character
- sequences when within a macro definition.
- .sp 1P
- .LP
- 8.3
- \fIIdentifiers\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hyidentifier.
- .PP
- An \*Qidentifier\*U shall consist of an arbitrary number (one or more)
- of letters, digits, and hyphens. The initial character shall be a lower\(hycase
- letter. A hyphen shall not be the last character. A hyphen shall not be
- immediately followed by another hyphen.
- .PP
- \fINote\fR \ \(em\ The rules concerning hyphen are designed to avoid ambiguity
- with (possibly following) comment.
- .bp
- .RT
- .ce
- (CCS)
- .ce
- .parag
- .ce
-
- .ce
- (A1) \ \
- .ce
- TABLEAUX: 7
- .ce
- .line
- .ce
- FORMULES: 0
- .ce
- .line
- .ce
- codification
- .ce
- 16.03.89
- .ce
- CR
- .ce
- .parag
- .ce
- Saisie
- .ce
- 17.03.89
- .ce
- BM
- .ce
- .parag
- .ce
- Corrections
- .ce
- 21.03.89
- .ce
- DD
- .ce
- .parag
- .ce
- FO Ins\*'er\*'ees
- .ce
- ........
- .ce
- ..
- .ce
- .parag
- .ce
- MAJ disquettes
- .ce
- ........
- .ce
- ..
- .ce
- .parag
- .ce
- \fBH.T. [T1.208]\fR
- .ce
- TABLE\ 1/X.208
- .ce
- \fBUniversal class tag assignments\fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- lw(72p) | lw(72p) .
- UNIVERSAL 1 Boolean type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 2 Integer type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 3 Bitstring type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 4 Octetstring type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 5 Null type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 6 Object identifier type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 7 Object descriptor type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 8 External type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 9 Real type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 10 Enumerated type
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 12 \*`a 15 T{
- Reserved for future versions of this
- Recommendation
- T}
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 16 T{
- Sequence and Sequence\(hyof types
- T}
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 17 Set and Set\(hyof types
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 18\(hy22, 25\(hy27 Character string types
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 23\(hy24 Time types
- .T&
- lw(72p) | lw(72p) .
- UNIVERSAL 28\(hy.\|.\|. T{
- Reserved for future versions of this
- Recommendation
- T}
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTableau 3/X.208 [T3.208], p. 3\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .sp 1P
- .LP
- .sp 5
- 8.4
- \fIValue references\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hyvaluereference.
- .PP
- A \*Qvaluereference\*U shall consist of the sequence of characters
- specified for an \*Qidentifier\*U in\ \(sc\ 8.3. In analysing an instance
- of use of this notation, a \*Qvaluereference\*U is distinguished from an
- \*Qidentifier\*U by the
- context in which it appears.
- .RT
- .sp 1P
- .LP
- 8.5
- \fIModule reference\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hymodulereference.
- .PP
- A \*Qmodulereference\*U shall consist of the sequence of characters
- specified for a \*Qtypereference\*U in\ \(sc\ 8.2. In analysing an instance
- of use of
- this notation, a \*Qmodulereference\*U is distinguished from a \*Qtypereference\*U
- by the context in which it appears.
- .RT
- .sp 1P
- .LP
- 8.6
- \fIComment\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hycomment.
- .RT
- .PP
- 8.6.1
- A \*Qcomment\*U is not referenced in the definition of the ASN.1
- notation. It may, however, appear at any time between other ASN.1 items, and
- has no significance.
- .bp
- .sp 9p
- .RT
- .PP
- 8.6.2
- A \*Qcomment\*U shall commence with a pair of adjacent hyphens and
- shall end with the next pair of adjacent hyphens or at the end of the line,
- whichever occurs first. A comment shall not contain a pair of adjacent
- hyphens other than the pair which opens it and the pair, if any, which
- ends it. It may include characters which are not in the character set specified
- in\ \(sc\ 7.1
- (see\ \(sc\ 7.3).
- .sp 9p
- .RT
- .sp 1P
- .LP
- 8.7
- \fIEmpty item\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hyempty.
- .PP
- The \*Qempty\*U item contains no characters. It is used in the notation
- of\ \(sc\ 5 when alternative sets of sequences are specified, to indicate that
- absence of all aternatives is possible.
- .RT
- .sp 1P
- .LP
- 8.8
- \fINumber item\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hynumber.
- .PP
- A \*Qnumber\*U shall consist of one or more digits. The first digit shall
- not be zero unless the \*Qnumber\*U is a single digit.
- .RT
- .sp 1P
- .LP
- 8.9
- \fIBinary string item\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hybstring.
- .PP
- A \*Qbstring\*U shall consist of an arbitrary number (possibly zero) of
- zeros and ones, preceded by a single\ ' and followed by the pair of
- characters:
- .RT
- .sp 1P
- .ce 1000
- 'B
- .ce 0
- .sp 1P
- .LP
- \fIExample:\fR '01101100'B
- .sp 1P
- .LP
- 8.10
- \fIHexadecimal string item\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hyhstring.
- .RT
- .PP
- 8.10.1
- An \*Qhstring\*U shall consist of an arbitrary number (possibly
- zero) of the characters
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- A\ B\ C\ D\ E\ F\ 0\ 1\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9
- .ce 0
- .sp 1P
- .PP
- preceded by a single\ ' and followed by the pair of
- characters
- .sp 1P
- .ce 1000
- 'H
- .ce 0
- .sp 1P
- .LP
- \fIExample:\fR 'AB0196'H
- .PP
- 8.10.2
- Each character is used to denote the value of a semi\(hyoctet using a hexadecimal
- representation.
- .sp 9p
- .RT
- .sp 1P
- .LP
- 8.11
- \fICharacter string item\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hycstring.
- .PP
- A \*Qcstring\*U shall consist of an arbitrary number (possibly zero) of
- characters from the character set referenced by a character string type,
- preceded and followed by\ \*U. If the character set includes the character\
- \*U, this character shall be represented in the \*Qcstring\*U by a pair
- of\ \*U. The character set involved is not limited to the character set
- listed in Table\ 2/X.208,
- but is determined by the type for which the \*Qcstring\*U is a value
- (see\ \(sc\ 7.2).
- .RT
- .LP
- \fIExample:\fR \fBMONTAGE\fR
- .sp 1P
- .LP
- 8.12
- \fIAssignment item\fR
- .sp 9p
- .RT
- .PP
- Name of item\(hy\*U::=\*U
- .PP
- This item shall consist of the sequence of characters
- .RT
- .sp 1P
- .ce 1000
- ::=
- .ce 0
- .sp 1P
- .PP
- \fINote\fR \ \(em\ This sequence does not contain any space characters
- (see\ \(sc\ 8.1.2).
- .bp
- .sp 1P
- .LP
- 8.13
- \fISingle character items\fR
- .sp 9p
- .RT
- .PP
- Names of items\(hy
- .RT
- .LP
- {
- }
- <
- ,
- .
- (
- )
- [
- ]
- \(hy\ (hyphen)
- ;
- .PP
- An item with any of the names listed above shall consist of the
- single character forming the name.
- .sp 1P
- .LP
- 8.14
- \fIKeyword items\fR
- .sp 9p
- .RT
- .PP
- Names of items\ \(em
- .RT
- .LP
- BOOLEAN
- .LP
- INTEGER
- .LP
- BIT
- .LP
- STRING
- .LP
- OCTET
- .LP
- NULL
- .LP
- SEQUENCE
- .LP
- OF
- .LP
- SET
- .LP
- IMPLICIT
- .LP
- CHOICE
- .LP
- ANY
- .LP
- EXTERNAL
- .LP
- OBJECT
- .LP
- IDENTIFIER
- .LP
- OPTIONAL
- .LP
- DEFAULT
- .LP
- COMPONENTS
- .LP
- UNIVERSAL
- .LP
- APPLICATION
- .LP
- PRIVATE
- .LP
- TRUE
- .LP
- FALSE
- .LP
- BEGIN
- .LP
- END
- .LP
- DEFINITIONS
- .LP
- EXPLICIT
- .LP
- ENUMERATED
- .LP
- EXPORTS
- .LP
- IMPORTS
- .LP
- REAL
- .LP
- INCLUDES
- .LP
- MIN
- .LP
- MAX
- .LP
- SIZE
- .LP
- FROM
- .bp
- .LP
- WITH
- .LP
- COMPONENT
- .LP
- PRESENT
- .LP
- ABSENT
- .LP
- DEFINED
- .LP
- BY
- .LP
- PLUS\(hyINFINITY
- .LP
- MINUS\(hyINFINITY
- .LP
- TAGS
- .PP
- Items with the above names shall consist of the sequence of
- characters in the name.
- .PP
- \fINote\ 1\fR \ \(em\ Spaces do not occur in these sequences.
- .PP
- \fINote\ 2\fR \ \(em\ Where these sequences are not listed as reserved
- sequences in\ \(sc\ 8.2.2, they are distinguished from other items containing
- the same
- characters by the context in which they appear.
- .RT
- .sp 2P
- .LP
- \fB9\fR \fBModule definition\fR
- .sp 1P
- .RT
- .PP
- 9.1
- A \*QModuleDefinition\*U is specified by the following
- productions:
- .sp 9p
- .RT
- .LP
- ModuleDefinition ::=
- .LP
- ModuleIdentifier
- .LP
- DEFINITIONS
- .LP
- TagDefault
- .LP
- \*Q::=\*U
- .LP
- BEGIN
- .LP
- ModuleBody
- .LP
- END
- .LP
- TagDefault ::=
- .LP
- EXPLICIT\ TAGS\ |
- .LP
- IMPLICIT TAGS\ |
- .LP
- empty
- .LP
- ModuleIdentifier ::=
- .LP
- modulereference
- .LP
- AssignedIdentifier
- .LP
- AssignedIdentifier ::=
- .LP
- ObjectIdentifierValue\ |
- .LP
- empty
- .LP
- ModuleBody ::=
- .LP
- Exports Imports AssignmentList\ |
- .LP
- empty
- .LP
- Exports ::=
- .LP
- EXPORTS SymbolsExported;\ |
- .LP
- empty
- .LP
- SymbolsExported ::=
- .LP
- SymbolList\ |
- .LP
- empty
- .LP
- Imports ::=
- .LP
- IMPORTS SymbolsImported;\ |
- .LP
- empty
- .LP
- SymbolsImported ::=
- .LP
- SymbolsFromModuleList\ |
- .LP
- empty
- .bp
- .LP
- SymbolsFromModuleList ::=
- .LP
- SymbolsFromModule SymbolsFromModuleList\ |
- .LP
- SymbolsFromModule
- .LP
- SymbolsFromModule ::=
- .LP
- SymbolList FROM ModuleIdentifier
- .LP
- SymbolList ::= Symbol, SymbolList\ |\ Symbol
- .LP
- Symbol ::=\fR typereference\ |\ valuereference
- .LP
- AssignmentList ::=
- .LP
- Assignment AssignmentList\ |
- .LP
- Assignment
- .LP
- Assignment ::=
- .LP
- TypeAssignment\ |\ ValueAssignment
- .PP
- \fINote\ 1\fR \ \(em\ Annex A specifies a \*QMacroDefinition\*U sequence which
- can also appear in the \*QAssignmentList\*U. Notations defined by a macro
- definition may appear before or after the macro definition, within the same
- module.
- .PP
- \fINote\ 2\fR \ \(em\ In individual (but deprecated) cases, and for examples
- and for the definition of types with universal class tags, the \*QModuleBody\*U
- can be used outside of a \*QModuleDefinition\*U.
- .PP
- \fINote\ 3\fR \ \(em\ \*QTypeassignment\*U and \*QValueassignment\*U productions
- are
- specified in\ \(sc\ 11.
- .PP
- \fINote\ 4\fR \ \(em\ The grouping of ASN.1 datatypes into modules does not
- necessarily determine the formation of presentation data values into named
- abstract syntaxes for the purpose of presentation context definition.
- .PP
- \fINote\ 5\fR \ \(em\ The value of \*QTagDefault\*U for the module definition
- affects only those types defined explicitly in the module. It does not
- affect the
- interpretation of imported types.
- .PP
- \fINote\ 6\fR \ \(em\ A \*Qmacroreference\*U (see Annex\ A), can also appear
- as a
- \*QSymbol\*U.
- .RT
- .PP
- 9.2
- The \*QTagDefault\*U is taken as \*QEXPLICIT TAGS\*U if it is \*Qempty\*U.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ \(sc 26 gives the meaning of both \*QEXPLICIT TAGS\*U and
- \*QIMPLICIT\ TAGS\*U.
- .PP
- 9.3
- The \*Qmodulereference\*U appearing in the \*QModuleDefinition\*U
- production is called the module name. Module names are chosen so as to
- ensure consistency and completeness of all \*QAssignment\*U sequences appearing
- within the \*QModuleBody\*U of all \*QModuleDefinition\*U sequences with
- this module name. A set of \*QAssignment\*U sequences is consistent and
- complete if, for every
- \*Qtypereference\*U or \*Qvaluereference\*U appearing within it, there
- is exactly one \*QTypeassignment\*U or \*QValueassignment\*U (respectively)
- associating the name with a type or value (respectively), or exactly one
- \*QSymbolsFromModule\*U in
- which the \*Qtypereference\*U or \*Qvaluereference\*U (respectively) appears
- as a
- \*QSymbol\*U.
- .sp 9p
- .RT
- .PP
- 9.4
- Module names should be used only once (except as specified
- in\ \(sc\ 9.10) within the sphere of interest of the definition of the
- module.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ It is recommended that modules defined in ISO Standards
- should have module names of the form
- .sp 1P
- .ce 1000
- ISOxxxx\(hyyyyy
- .ce 0
- .sp 1P
- .LP
- where xxxx is the number of the Standard, and yyyy is a suitable
- acronym for the Standard (e.g.\ JTM, FTAM, or CCR). A similar convention
- can be applied by other standards\(hymaking bodies.
- .PP
- 9.5
- If the \*QAssignedIdentifier\*U includes an \*QObjectIdentifierValue\*U,
- the latter unambiguously and uniquely identifies the module.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ It is recommended that an object identifier be assigned
- so that others can unambiguously refer to the module.
- .bp
- .PP
- 9.6
- The \*QModuleIdentifier\*U in a \*QSymbolsFromModule\*U shall appear in
- the \*QModuleDefinition\*U of another module, except that if it includes an
- \*QObjectIdentifierValue\*U, the \*Qmodulereference\*U may differ in the two
- cases.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ A different \*Qmodulereference\*U from that used in the
- other module should only be used when symbols are to be imported from two
- modules with the same name modules (the modules being named in disregard of
- clause\ 9.4). The use of alternative distinct names makes these names available
- for use in the body of the module\ (see\ \(sc\ 9.8).
- .PP
- \fINote\ 2\fR \ \(em\ When both a \*Qmodulereference\*U and an
- \*QObjectIdentifierValue\*U are used in referencing a module, the latter
- shall be considered definitive.
- .RT
- .PP
- 9.7
- Each \*QSymbolsExported\*U shall be defined in the module being
- constructed.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ It is recommended that every symbol to which reference
- from outside the module is appropriate be included in the \*QSymbolsExported\*U.
- If there are no such symbols, then the \*Qempty\*U alternative of \*QSymbolsExported\*U
- (not of \*QExports\*U) should be selected.
- .PP
- 9.8
- Each \*QSymbolsFromModule\*U shall be defined in the module denoted by
- the \*QModuleIdentifier\*U in \*QSymbolsFromModule\*U. If \*QExports\*U
- is used in the
- definition of that module, the \*QSymbol\*U shall appear in its
- \*QSymbolsExported\*U.
- .sp 9p
- .RT
- .PP
- 9.9
- A \*QSymbol\*U in a \*QSymbolsFromModule\*U may appear in \*QModuleBody\*U
- in a \*QDefinedType\*U (if it is a \*Qtypereference\*U) or \*QDefinedValue\*U
- (if it is a
- \*Qvaluereference\*U). The meaning associated with \*QSymbol\*U also appears
- in an
- \*QAssignmentList\*U (deprecated), or appears in one or more instances of
- \*QSymbolsFromModule\*U, it shall only be used in a \*QExternalTypeReference\*U
- or
- \*QExternalValueReference\*U whose \*Qmodulereference\*U is that in \*QSymbolsFromModule\*U
- (see\ \(sc\ 9.10). Where it does not so appear, it may be used in a \*QDefinedType\*U
- or \*QDefinedValue\*U directly.
- .sp 9p
- .RT
- .PP
- 9.10
- Except as specified in \(sc\ 9.9, a \*Qtypereference\*U or
- \*Qvaluereference\*U shall be referenced in a module different from that
- in which it is defined by using an \*QExternaltypereference\*U or \*QExternalvaluereference\*U,
- specified by the following productions:
- .sp 9p
- .RT
- .LP
- Externaltypereference ::=
- .LP
- modulereference
- .LP
- typereference
- .LP
- Externalvaluereference ::=
- .LP
- modulereference
- .LP
- valuereference
- .sp 2P
- .LP
- \fB10\fR \fBReferencing type and value definitions\fR
- .sp 1P
- .RT
- .PP
- 10.1
- The productions
- .sp 9p
- .RT
- .LP
- DefinedType ::=
- .LP
- Externaltypereference |
- .LP
- typereference
- .LP
- DefinedValue ::=
- .LP
- Externalvaluereference |
- .LP
- valuereference
- .LP
- specify the sequences which shall be used to reference type and
- value definitions.
- .PP
- 10.2
- Except as specified in \(sc\ 9.10, the \*Qtypereference\*U and
- \*Qvaluereference\*U alternatives shall not be used unless the reference
- is within the module in which a type is assigned (see\ \(sc\ 11.1 and\
- \(sc\ 11.2) to the
- typereference or valuereference.
- .sp 9p
- .RT
- .PP
- 10.3
- The \*QExternaltypereference\*U and \*QExternalvaluereference\*U shall
- not be used unless the corresponding \*Qtypereference\*U or \*Qvaluereference\*U
- has been assigned a type or value respectively (see\ \(sc\ 11.1 and\ \(sc\
- 11.2) within the
- corresponding \*Qmodulereference\*U.
- .bp
- .sp 9p
- .RT
- .sp 2P
- .LP
- \fB11\fR \fBAssigning types and values\fR
- .sp 1P
- .RT
- .PP
- 11.1
- A \*Qtypereference\*U shall be assigned a type by the notation
- specified by the \*QTypeassignment\*U production:
- .sp 9p
- .RT
- .LP
- Typeassignment ::= typereference
- .LP
- \*Q::=\*U
- .LP
- Type
- .PP
- The \*Qtypereference\*U shall not be one of the names used to
- reference the character string types defined in section two, and shall
- not be one of the names used to reference the types defined in section
- three.
- .PP
- 11.2
- A \*Qvaluereference\*U shall be assigned a value by the notation
- specified by the \*QValueassignment\*U production:
- .sp 9p
- .RT
- .LP
- Valueassignment ::= valuereference
- .LP
- Type
- .LP
- \*Q::=\*U
- .LP
- Value
- .PP
- The \*QValue\*U being assigned to the \*Qvaluereference\*U shall be a
- valid notation (see \(sc\ 12.7) for a value of the type defined by \*QType\*U.
- .sp 2P
- .LP
- \fB12\fR \fBDefinition of types and values\fR
- .sp 1P
- .RT
- .PP
- 12.1
- A type shall be referenced by one of the sequences \*QType\*U:
- .sp 9p
- .RT
- .LP
- Type ::= BuiltinType\ |\ DefinedType\ |\ Subtype
- .LP
- (see \(sc\ 10.1) (see \(sc\ 37)
- .LP
- BuiltinType ::=
- .LP
- BooleanType\ |
- .LP
- IntegerType\ |
- .LP
- BitStringType\ |
- .LP
- OctetStringType\ |
- .LP
- NullType\ |
- .LP
- SequenceType\ |
- .LP
- SequenceOfType\ |
- .LP
- SetType\ |
- .LP
- SetOfType\ |
- .LP
- ChoiceType\ |
- .LP
- SelectionType\ |
- .LP
- TaggedType\ |
- .LP
- AnyType\ |
- .LP
- ObjectIdentifierType\ |
- .LP
- CharacterStringType\ |
- .LP
- UsefulType\ |
- .LP
- EnumeratedType\ |
- .LP
- RealType\ |
- .PP
- \fINote\ 1\fR \ \(em\ A type notation defined in a macro can also be used
- as a sequence for \*QType\*U (see Annex\ A).
- .PP
- \fINote\ 2\fR \ \(em\ Additional built\(hyin types may be defined by future
- versions of this Recommendation.
- .RT
- .PP
- 12.2
- The \*QBuiltinType\*U notation is specified in the following
- clauses.
- .sp 9p
- .RT
- .PP
- 12.3
- The \*QSubtype\*U notation is specified in section four.
- .sp 9p
- .RT
- .PP
- 12.4
- The type being referenced is the type defined by the \*QBuiltinType\*U
- or \*QSubtype\*U assigned to the \*QDefinedType\*U.
- .bp
- .sp 9p
- .RT
- .PP
- 12.5
- In some notations within which a type is referenced, the type may be named.
- In such cases, this Recommendation specifies the use of the notation \*QNamedType\*U:
- .sp 9p
- .RT
- .LP
- NamedType ::=
- .LP
- identifier Type\ |
- .LP
- Type\ |
- .LP
- SelectionType
- .PP
- The notation \*QSelectionType\*U and the corresponding value notation is
- specified in\ \(sc\ 25.
- .PP
- \fINote\fR \ \(em\ The notation \*QSelectionType\*U contains an \*Qidentifier\*U
- which may form part of the value notation when \*QSelectionType\*U is used
- as a
- \*QNamedType\*U (see\ \(sc\ 25.1).
- .RT
- .PP
- 12.6
- The \*Qidentifier\*U is not part of the type, and has no effect on the
- type. The type referenced by a \*QNamedType\*U sequence is that referenced
- by the contained \*QType\*U sequence.
- .sp 9p
- .RT
- .PP
- 12.7
- The value of a type shall be specified by one of the sequences
- \*QValue\*U:
- .sp 9p
- .RT
- .LP
- Value ::= BuiltinValue\ |\ DefinedValue
- .LP
- BuiltinValue ::=
- .LP
- BooleanValue\ |
- .LP
- IntegerValue\ |
- .LP
- BitStringValue\ |
- .LP
- OctetStringValue\ |
- .LP
- NullValue\ |
- .LP
- SequenceValue\ |
- .LP
- SequenceOfValue\ |
- .LP
- SetValue\ |
- .LP
- SetOfValue\ |
- .LP
- ChoiceValue\ |
- .LP
- SelectionValue\ |
- .LP
- TaggedValue\ |
- .LP
- AnyValue\ |
- .LP
- ObjectIdentifierValue\ |
- .LP
- CharacterStringValue\ |
- .LP
- EnumeratedValue\ |
- .LP
- RealValue\ |
- .PP
- \fINote\fR \ \(em\ A value notation defined in a macro may also be used
- as a sequence for \*QValue\*U (see\ Annex\ A).
- .PP
- 12.8
- If the type is defined using one of the notations shown on the
- left below, then the value shall be specified using the notation shown
- on the right below:
- .sp 9p
- .RT
- .LP
- \fBType notation\fR
- \fBValue notation\fR
- .LP
- BooleanType
- BooleanValue
- .LP
- IntegerType
- IntegerValue
- .LP
- BitStringType
- BitStringValue
- .LP
- OctetStringType
- OctetStringValue
- .LP
- NullType
- NullValue
- .LP
- SequenceType
- SequenceValue
- .LP
- SequenceOfType
- SequenceOfValue
- .LP
- SetType
- SetValue
- .LP
- SetOfType
- SetOfValue
- .LP
- ChoiceType
- ChoiceValue
- .LP
- TaggedType
- TaggedValue
- .LP
- AnyType
- AnyValue
- .LP
- ObjectIdentifierType
- ObjectIdentifierValue
- .LP
- CharacterStringType
- CharacterStringValue
- .LP
- EnumeratedType
- EnumeratedValue
- .LP
- RealType
- RealValue
- .PP
- \fINote\fR \ \(em\ Additional value notations may be defined by future
- versions of this Recommendation.
- .PP
- Where the type is a DefinedType, the value notation shall be the
- notation for a type used in producing the DefinedType.
- .bp
- .RT
- .PP
- 12.9
- The value notation for a type defined by the \*QUsefulType\*U notation
- is specified in section three.
- .sp 9p
- .RT
- .PP
- 12.10
- The \*QBuiltinValue\*U notation is specified in the following
- clauses.
- .sp 9p
- .RT
- .PP
- 12.11
- The value of a type referenced using the \*QNamedType\*U notation
- shall be defined by the notation \*QNamedValue\*U:
- .sp 9p
- .RT
- .LP
- NamedValue ::=
- .LP
- identifier Value\ |
- .LP
- Value
- .LP
- where the \*Qidentifier\*U (if any) is the same as that used in the
- \*QNamedType\*U notation. \(sc\ 25.2 specifies further restrictions on
- the \*QNamedValue\*U when the \*QNamedType\*U was a \*QSelectionType\*U.
- .PP
- \fINote\fR \ \(em\ The \*Qidentifier\*U is part of the notation, it does not
- form part of the value itself.
- .PP
- 12.12
- The \*Qidentifier\*U shall be present in the \*QNamedValue\*U if and only
- if it was present in the \*QNamedType\*U.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ An \*Qidentifier\*U is always present in the case of a
- \*QSelectionType\*U.
- .sp 2P
- .LP
- \fB13\fR \fBNotation for the\fR
- \fBBoolean type\fR
- .sp 1P
- .RT
- .PP
- 13.1
- The Boolean type (see\ \(sc\ 3.13) shall be referenced by the notation
- \*QBooleanType\*U:
- .sp 9p
- .RT
- .LP
- BooleanType ::= BOOLEAN
- .PP
- 13.2
- The tag for types defined by this notation is universal class,
- number\ 1.
- .sp 9p
- .RT
- .PP
- 13.3
- The value of a Boolean type (see\ \(sc\ 3.14 and\ \(sc\ 3.15) shall be
- defined by the notation \*QBooleanValue\*U:
- .sp 9p
- .RT
- .LP
- BooleanValue ::= TRUE\ |\ FALSE
- .sp 2P
- .LP
- \fB14\fR \fBNotation for the \fR \fBinteger type\fR
- .sp 1P
- .RT
- .PP
- 14.1
- The integer type (see\ \(sc\ 3.16) shall be referenced by the notation
- \*QIntegerType\*U:
- .sp 9p
- .RT
- .LP
- IntegerType ::=
- .LP
- INTEGER\ |
- .LP
- INTEGER{NamedNumberList}
- .LP
- NamedNumberList ::=
- .LP
- NamedNumber\ |
- .LP
- NamedNumberList,NamedNumber
- .LP
- NamedNumber ::=
- .LP
- identifier(SignedNumber)\ |
- .LP
- identifier(DefinedValue)
- .LP
- SignedNumber ::= number\ |\ \(hynumber
- .PP
- 14.2
- The second alternative of \*QSignedNumber\*U shall not be used if the \*Qnumber\*U
- is zero.
- .sp 9p
- .RT
- .PP
- 14.3
- The \*QNamedNumberList\*U is not significant in the definition of a
- type. It is used solely in the value notation specified in\ \(sc\ 14.9.
- .sp 9p
- .RT
- .PP
- 14.4
- The \*QDefinedValue\*U shall be a reference to a value of type
- integer, or of a type derived from integer by tagging or subtyping.
- .sp 9p
- .RT
- .PP
- 14.5
- The value of each \*QSignedNumber\*U or \*QDefinedValue\*U appearing in
- the \*QNamedNumberList\*U shall be different, and represents a distinguished
- value of the integer type.
- .sp 9p
- .RT
- .PP
- 14.6
- Each \*Qidentifier\*U appearing in the \*QNamedNumberList\*U shall be
- different.
- .bp
- .sp 9p
- .RT
- .PP
- 14.7
- The order of the \*QNamedNumber\*U sequences in the \*QNamedNumberList\*U
- is not significant.
- .sp 9p
- .RT
- .PP
- 14.8
- The tag for types defined by this notation is universal class,
- number\ 2.
- .sp 9p
- .RT
- .PP
- 14.9
- The value of an integer type shall be defined by the notation
- \*QIntegerValue\*U:
- .sp 9p
- .RT
- .LP
- IntegerValue ::=
- .LP
- SignedNumber\ |
- .LP
- identifier
- .PP
- 14.10
- The \*Qidentifier\*U in \*QIntegerValue\*U shall be equal to that of an
- \*Qidentifier\*U in the \*QIntegerType\*U sequence with which the value
- is associated, and shall represent the corresponding number.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ When defining an integer value for which an \*Qidentifier\*U
- has been defined, use of the \*Qidentifier\*U form of \*QIntegerValue\*U
- should be
- preferred.
- .sp 2P
- .LP
- \fB15\fR \fBNotation for the\fR
- \fBenumerated type\fR
- .sp 1P
- .RT
- .PP
- 15.1
- The enumerated type (see\ \(sc\ 3.17) shall be referenced by the
- notation \*QEnumeratedType\*U:
- .sp 9p
- .RT
- .LP
- EnumeratedType ::= ENUMERATED {Enumeration}
- .LP
- Enumeration ::=
- .LP
- NamedNumber\ |
- .LP
- NamedNumber, Enumeration
- .PP
- \fINote\ 1\fR \ \(em\ Each value has an identifier which is associated, in
- this notation, with a distinct integer. This provides control of the
- representation of the value in order to facilitate compatible extensions,
- but the values themselves are not expected to have any integer semantics.
- .PP
- \fINote\ 2\fR \ \(em\ The numeric values inside the \*QNamedNumber\*U in the
- \*QEnumeration\*U are not necessarily ordered or contiguous.
- .RT
- .PP
- 15.2
- For each \*QNamedNumber\*U, the \*Qidentifier\*U and the \*QSignedNumber\*U
- shall be distinct from all other \*Qidentifier\*Us and \*QSignedNumber\*Us
- in the
- \*QEnumeration\*U.
- .sp 9p
- .RT
- .PP
- 15.3
- The enumerated type has a tag which is universal class,
- number\ 10.
- .sp 9p
- .RT
- .PP
- 15.4
- The value of an enumerated type shall be defined by the notation \*QEnumeratedValue\*U:
- .sp 9p
- .RT
- .LP
- EnumeratedValue ::= identifier
- .sp 2P
- .LP
- \fB16\fR \fBNotation for the\fR
- \fBreal type\fR
- .sp 1P
- .RT
- .PP
- 16.1
- The real type (see \(sc 3.18) shall be referenced by the notation
- \*QRealType\*U:
- .sp 9p
- .RT
- .LP
- RealType ::= REAL
- .PP
- 16.2
- The values of the real type are the values PLUS\(hyINFINITY and
- MINUS\(hyINFINITY together with the real numbers capable of being specified
- by the following formula involving three integers, M,\ B and\ E:
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- M \(mu B\uE\d
- .ce 0
- .sp 1P
- .LP
- where M is called the mantissa, B the base, and E the exponent.
- M\ and\ E may take any integer values, positive or negative, while\ B can take
- the values\ 2 or\ 10. All combinations of M, B\ and\ E are permitted.
- .PP
- \fINote\ 1\fR \ \(em\ This type is capable of carrying an exact
- representation of any number which can be stored in typical floating point
- hardware, and of any number with a finite character decimal
- representation.
- .PP
- \fINote\ 2\fR \ \(em\ The encoding (of this type) which is specified in
- Recommendation\ X.209 allows use of base\ 2, 8\ or\ 16 with a binary representation
- of real values, and base\ 10 with a character representation. The choice
- is a
- sender's option.
- .RT
- .PP
- 16.3
- The real type has a tag which is universal class, number\ 9.
- .bp
- .sp 9p
- .RT
- .PP
- 16.4
- The notation for defining a value of a real type shall be
- \*QRealValue\*U:
- .sp 9p
- .RT
- .LP
- RealValue ::= NumericRealValue\ |\ SpecialRealValue
- .LP
- NumericRealValue ::=
- .LP
- {Mantissa, Base, Exponent}\ |\ 0
- .LP
- Mantissa ::= SignedNumber
- .LP
- Base ::= 2\ |\ 10
- .LP
- Exponent ::= SignedNumber
- .LP
- SpecialRealValue ::= PLUS\(hyINFINITY\ |\ MINUS\(hyINFINITY
- .PP
- The form \*Q0\*U shall be used for zero values, and the alternate form
- for \*QNumericRealValue\*U shall not be used for zero values.
- .sp 2P
- .LP
- \fB17\fR \fBNotation for the \fR \fBbitstring type\fR
- .sp 1P
- .RT
- .PP
- 17.1
- The bitstring type (see \(sc\ 3.19) shall be referenced by the
- notation \*QBitStringType\*U:
- .sp 9p
- .RT
- .LP
- BitStringType ::=
- .LP
- BIT STRING\ |
- .LP
- BIT STRING{NamedBitList}
- .LP
- NamedBitList ::=
- .LP
- NamedBit\ |
- .LP
- NamedBitList,NamedBit
- .LP
- NamedBit ::=
- .LP
- identifier(number)\ |
- .LP
- identifier(DefinedValue)
- .PP
- 17.2
- The \*QNamedBitList\*U is not significant in the definition of a
- type. It is used solely in the value notation specified in \(sc\ 17.8.
- .sp 9p
- .RT
- .PP
- 17.3
- The first bit in a bitstring has the number \fBzero\fR . The final
- bit in a bit string is called the \fBtrailing bit\fR .
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ This terminology is used in specifying the value notation
- and the encoding rules.
- .PP
- 17.4
- The \*QDefinedValue\*U shall be a reference to a non\(hynegative value
- of type integer or enumerated, or of a type derived from those by tagging or
- subtyping.
- .sp 9p
- .RT
- .PP
- 17.5
- The value of each \*Qnumber\*U or \*QDefinedValue\*U appearing in the
- \*QNamedBitList\*U shall be different, and is the number of a distinguished
- bit in a bitstring value.
- .sp 9p
- .RT
- .PP
- 17.6
- Each \*Qidentifier\*U appearing in the \*QNamedBitList\*U shall be
- different.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The order of the \*QNamedBit\*U sequences in the
- \*QNamedBitList\*U is not significant.
- .PP
- 17.7
- This type has a tag which is universal class, number 3.
- .sp 9p
- .RT
- .PP
- 17.8
- The value of a bitstring type shall be defined by the notation
- \*QBitStringValue\*U:
- .sp 9p
- .RT
- .LP
- BitStringValue ::=
- .LP
- bstring\ |
- .LP
- hstring\ |
- .LP
- {IdentifierList}\ |
- .LP
- {\|}
- .LP
- IdentifierList ::=
- .LP
- identifier\ |
- .LP
- IdentifierList,identifier
- .bp
- .PP
- 17.9
- Each \*Qidentifier\*U in \*QBitStringValue\*U shall be the same as an
- \*Qidentifier\*U in the \*QBitStringType\*U sequence with which the value is
- associated.
- .sp 9p
- .RT
- .PP
- 17.10
- The use of the notation determines, and can indicate by
- comment, whether or not the presence or absence of trailing zero bits is
- significant.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Encoding rules enable the transfer of an arbitrary
- pattern, arbitrary length, string of bits.
- .PP
- 17.11
- The \*Q{IdentifierList}\*U and \*Q{\|}\*U notations for \*QBitStringValue\*U
- shall not be used if the presence or absence of trailing zero bits is
- significant. This notation denotes a bitstring value with ones in the bit
- positions specified by the numbers corresponding to the \*Qidentifier\*U
- sequences, and with all other bits zero.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The \*Q{\|}\*U sequence is used to denote a bitstring value
- which contains no one bits.
- .PP
- 17.12
- In specifying the encoding rules for a bitstring, the bits
- shall be referenced by the terms \fBfirst bit\fR and \fBtrailing bit\fR
- , as defined
- above.
- .sp 9p
- .RT
- .PP
- 17.13
- When using the \*Qbstring\*U notation, the \fBfirst bit\fR is on the
- left, and the \fBtrailing bit\fR is on the right.
- .sp 9p
- .RT
- .PP
- 17.14
- When using the \*Qhstring\*U notation, the most significant bit of
- each hexadecimal digit corresponds to the earlier (leftmost) bit in the
- bitstring.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ This notation does not in any way constrain the way
- encoding rules place a bitstring into octets for transfer.
- .PP
- 17.15
- The \*Qhstring\*U notation shall not be used unless either:
- .sp 9p
- .RT
- .LP
- a)
- the bitstring value consists of a multiple of four bits;
- or
- .LP
- b)
- the presence or absence of trailing zero bits is not
- significant.
- .LP
- \fIExample:\fR
- .sp 1P
- .ce 1000
- 'A98A'H
- .ce 0
- .sp 1P
- .LP
- and
- .sp 1P
- .ce 1000
- '1010100110001010'B
- .ce 0
- .sp 1P
- .LP
- are alternative notations for the same bitstring value.
- .sp 2P
- .LP
- \fB18\fR \fBNotation for the \fR \fBoctetstring type\fR
- .sp 1P
- .RT
- .PP
- 18.1
- The octetstring type (see \(sc\ 3.20) shall be referenced by the
- notation \*QOctetStringType\*U:
- .sp 9p
- .RT
- .LP
- OctetStringType ::= OCTET STRING
- .PP
- 18.2
- This type has a tag which is universal class, number 4.
- .sp 9p
- .RT
- .PP
- 18.3
- The value of an octetstring type shall be defined by the
- notation \*QOctetStringValue\*U:
- .sp 9p
- .RT
- .LP
- OctetStringValue ::=
- .LP
- bstring\ |
- .LP
- hstring
- .PP
- 18.4
- In specifying the encoding rules for an octetstring, the octets
- are referenced by the terms \fBfirst octet\fR and \fBtrailing octet\fR
- , and the bits
- within an octet are referenced by the terms \fBmost significant\fR and \fBleast
- significant bit\fR .
- .sp 9p
- .RT
- .PP
- 18.5
- When using the \*Qbstring\*U notation, the left\(hymost bit shall be
- the most significant bit of the first octet. If the \*Qbstring\*U is not a
- multiple of eight bits, it shall be interpreted as if it contained additional
- zero trailing bits to make it the next multiple of eight.
- .bp
- .sp 9p
- .RT
- .PP
- 18.6
- When using the \*Qhstring\*U notation, the left\(hymost hexadecimal
- digit shall be the most significant semi\(hyoctet of the first octet. If the
- \*Qhstring\*U is not an even number of hexadecimal digits, it shall be
- interpreted as if it contained a single additional trailing zero hexadecimal
- digit.
- .sp 9p
- .RT
- .sp 2P
- .LP
- \fB19\fR \fBNotation for the \fR \fBnull type\fR
- .sp 1P
- .RT
- .PP
- 19.1
- The null type (see \(sc 3.21) shall be referenced by the notation
- \*QNullType\*U:
- .sp 9p
- .RT
- .LP
- NullType ::= NULL
- .PP
- 19.2
- This type has a tag which is universal class, number 5.
- .sp 9p
- .RT
- .PP
- 19.3
- The value of the null type shall be referenced by the notation
- \*QNullValue\*U:
- .sp 9p
- .RT
- .LP
- NullValue ::= NULL
- .sp 2P
- .LP
- \fB20\fR \fBNotation for \fR \fBsequence types\fR
- .sp 1P
- .RT
- .PP
- 20.1
- The notation for defining a sequence type (see \(sc\ 3.22) from
- other types shall be the \*QSequenceType\*U:
- .sp 9p
- .RT
- .LP
- SequenceType ::=
- .LP
- SEQUENCE{ElementTypeList}\ |
- .LP
- SEQUENCE{\|}
- .LP
- ElementTypeList ::=
- .LP
- ElementType\ |
- .LP
- ElementTypeList,ElementType
- .LP
- ElementType ::=
- .LP
- NamedType\ |
- .LP
- NamedType OPTIONAL\ |
- .LP
- NamedType DEFAULT Value\ |
- .LP
- COMPONENTS OF Type
- .PP
- 20.2
- The \*QType\*U in the fourth alternative of the \*QElementType\*U shall
- be a sequence type. The \*QCOMPONENTS OF Type\*U notation shall be used
- to define the inclusion, at this point in the \*QElementTypeList\*U, of
- all the \*QElementType\*U sequences appearing in the referenced type.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ This transformation is logically completed prior to
- the satisfaction of the requirements in the following clauses.
- .PP
- 20.3
- For each series of one or more consecutive \*QElementTypes\*U
- marked as OPTIONAL or DEFAULT, the tags of those \*QElementTypes\*U and of any
- immediately following \*QElementType\*U shall be distinct (see \(sc\ 26).
- .sp 9p
- .RT
- .PP
- 20.4
- If \*QOPTIONAL\*U or \*QDEFAULT\*U are present, the corresponding value
- may be omitted from a value of the new type, and from the information
- transferred by encoding rules.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ The value notation may be ambiguous in this case,
- unless \*Qidentifier\*U sequences are present in each NamedType.
- .PP
- \fINote\ 2\fR \ \(em\ Encoding rules ensure that the encoding for a sequence
- value in which a \*QDEFAULT\*U or \*QOPTIONAL\*U element value is omitted
- is the same as that for a sequence value of a type in whose type definition
- the
- corresponding element was omitted. This feature can be useful in defining
- subsets.
- .RT
- .PP
- 20.5
- If \*QDEFAULT\*U occurs, the omission of a value for that type
- shall be exactly equivalent to the insertion of the value defined by \*QValue\*U,
- which shall be a value signification that is valid for the type defined
- by
- \*QType\*U in the \*QNamedType\*U sequence.
- .sp 9p
- .RT
- .PP
- 20.6
- The \*Qidentifier\*U (if any) in all \*QNamedType\*U sequences of the
- \*QElementTypeList\*U shall be distinct.
- .bp
- .sp 9p
- .RT
- .PP
- 20.7
- All sequence types have a tag which is universal class,
- number\ 16.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Sequence\(hyof types have the same tag (see \(sc 21.3).
- .PP
- 20.8
- The notation for defining the value of a sequence type shall be
- \*QSequenceValue\*U:
- .sp 9p
- .RT
- .LP
- SequenceValue ::=
- .LP
- {ElementValueList}\ |
- .LP
- {\|}
- .LP
- ElementValueList ::=
- .LP
- NamedValue\ |
- .LP
- ElementValueList,NamedValue
- .PP
- 20.9
- The \*Q{\|}\*U notation shall only be used if:
- .sp 9p
- .RT
- .LP
- a)
- all \*QElementType\*U sequences in the \*QSequenceType\*U are marked
- \*QDEFAULT\*U or \*QOPTIONAL\*U, and all values are omitted;
- or
- .LP
- b)
- the type notation was \*QSEQUENCE{\|}\*U.
- .PP
- 20.10
- There shall be one \*QNamedValue\*U for each \*QNamedType\*U in the
- \*QSequenceType\*U which is not marked OPTIONAL or DEFAULT, and the values
- shall be in the same order as the corresponding \*QNamedType\*U sequences.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The use of \*QNamedType\*U sequences which do not contain
- an identifier is not prohibited, but can render the value notation ambiguous
- if
- \*QOPTIONAL\*U or \*QDEFAULT\*U is used.
- .sp 2P
- .LP
- \fB21\fR \fBNotation for \fR \fBsequence\(hyof types\fR
- .sp 1P
- .RT
- .PP
- 21.1
- The notation for defining a sequence\(hyof type (see \(sc\ 3.23) from
- another type shall be the \*QSequenceOf\(hyType\*U.
- .sp 9p
- .RT
- .LP
- SequenceOfType ::=
- .LP
- SEQUENCE OF Type\ |
- .LP
- SEQUENCE
- .PP
- 21.2
- The notation \*QSEQUENCE\*U is synonymous with the notation
- \*QSEQUENCE OF ANY\*U (see \(sc\ 27).
- .sp 9p
- .RT
- .PP
- 21.3
- All sequence\(hyof types have a tag which is universal class,
- number\ 16.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Sequence types have the same tag (see \(sc\ 20.7).
- .PP
- 21.4
- The notation for defining a value of a sequence\(hyof type shall
- be the \*QSequenceOfValue\*U:
- .sp 9p
- .RT
- .LP
- SequenceOfValue ::= {ValueList}\ |\ {\|}
- .LP
- ValueList ::=
- .LP
- Value\ |
- .LP
- ValueList,Value
- .PP
- The \*Q{\|}\*U notation is used when there are no component values in the
- sequence\(hyof value.
- .PP
- 21.5
- Each \*QValue\*U sequence in the \*QValueList\*U shall be the notation
- for a value of the \*QType\*U specified in the \*QSequenceofType\*U.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Semantic significance may be placed on the order of
- these values.
- .sp 2P
- .LP
- \fB22\fR \fBNotation for \fR \fBset types\fR
- .sp 1P
- .RT
- .PP
- 22.1
- The notation for defining a set type (see \(sc\ 3.24) from other
- types shall be the \*QSetType\*U.
- .sp 9p
- .RT
- .LP
- SetType ::=
- .LP
- SET{ElementTypeList}\ |
- .LP
- SET{\|}
- .PP
- \*QElementTypeList\*U is specified in \(sc\ 20.1
- .bp
- .PP
- 22.2
- The \*QType\*U in the fourth alternative of the \*QElementType\*U (see
- \(sc\ 20.1) shall be a set type. The \*QCOMPONENTS OF Type\*U notation
- shall be used to define the inclusion of all the \*QElementType\*U sequences
- appearing in the
- referenced type.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ This transformation is logically completed prior to
- the satisfaction of the requirements in the following clauses.
- .PP
- 22.3
- The \*QElementType\*U types in a set type shall all have different
- tags. (See \(sc\ 26.)
- .sp 9p
- .RT
- .PP
- 22.4
- Sub\(hyclauses \(sc\ 20.4, \(sc\ 20.5 and \(sc\ 20.6 also apply to set
- types.
- .sp 9p
- .RT
- .PP
- 22.5
- All set types have a tag which is universal class, number 17.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Set\(hyof types have the same tag (see \(sc\ 23.3).
- .PP
- 22.6
- There shall be no more semantic associated with the order of
- values in a set type.
- .sp 9p
- .RT
- .PP
- 22.7
- The notation for defining the value of a set type shall be
- \*QSetValue\*U:
- .sp 9p
- .RT
- .LP
- SetValue ::= {ElementValueList}\ |\ {\|}
- .PP
- \*QElementValueList\*U is specified in \(sc 20.8.
- .PP
- 22.8
- The \*QSetValue\*U shall only be \*Q{\|}\*U if:
- .sp 9p
- .RT
- .LP
- a)
- all \*QElementType\*U sequences in the \*QSetType\*U are marked
- \*QDEFAULT\*U or \*QOPTIONAL\*U, and all values are omitted;
- or
- .LP
- b)
- the type notation was \*QSET\*U{\|}\*U.
- .PP
- 22.9
- There shall be one \*QNamedValue\*U for each \*QNamedType\*U in the
- \*QSetType\*U which is not marked \*QOPTIONAL\*U or \*QDEFAULT\*U.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ These \*QNamedValues\*U may appear in any order.
- .PP
- \fINote\ 2\fR \ \(em\ The use of \*QNamedType\*U sequences which do not
- contain an
- identifier is not prohibited, but can render the value notation
- ambiguous.
- .RT
- .sp 2P
- .LP
- \fB23\fR \fBNotation for set\(hyof types\fR
- .sp 1P
- .RT
- .PP
- 23.1
- The notation for defining a set\(hyof type (see \(sc\ 3.25) from
- another type shall be the \*QSet OfType\*U:
- .sp 9p
- .RT
- .LP
- SetOfType ::= SET OF Type\ |
- .LP
- SET
- .PP
- 23.2
- The notation \*QSET\*U is synonymous with the notation \*QSET OF ANY\*U
- (see \(sc\ 27).
- .sp 9p
- .RT
- .PP
- 23.3
- All set\(hyof types have a tag which is universal class,
- number 17.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Set types have the same tag (see \(sc 22.5).
- .PP
- 23.4
- The notation for defining a value of a set\(hyof type shall be the
- \*QSetOfValue\*U:
- .sp 9p
- .RT
- .LP
- SetOfValue ::= {ValueList}\ |\ {\|}
- .PP
- \*QValueList\*U is specified in \(sc 21.4
- .PP
- The \*Q{\|}\*U notation is used when there are no component values in the
- set\(hyof values.
- .RT
- .PP
- 23.5
- Each \*QValue\*U sequence in the \*QValueList\*U shall be the notation
- for a value of the \*QType\*U specified in the \*QSetofType\*U.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ Semantic significance should not be placed on the
- order of these values.
- .PP
- \fINote\ 2\fR \ \(em\ Encoding rules are not required to preserve the order of
- these values.
- .bp
- .RT
- .sp 2P
- .LP
- \fB24\fR \fBNotation for \fR \fBchoice types\fR
- .sp 1P
- .RT
- .PP
- 24.1
- The notation for defining a choice type (see \(sc 3.27) from other
- types shall be the \*QChoiceType\*U:
- .sp 9p
- .RT
- .LP
- ChoiceType ::= CHOICE{AlternativeTypeList}
- .LP
- AlternativeTypeList ::=
- .LP
- NamedType\ |
- .LP
- AlternativeTypeList,NamedType
- .PP
- \fINote\ 1\fR \ \(em\ The encoding rules encode the chosen alternative in
- a way which is indistinguishable from a \*QType\*U consisting only of the
- \*QType\*U
- contained in that alternative.
- .PP
- \fINote\ 2\fR \ \(em\ Specifying a \*QChoiceType\*U with a single \*QNamedType\*U
- in the \*QAlternativeTypeList\*U cannot be distinguished in any encoding
- of a value from direct use of the \*QType\*U in the \*QNamedType\*U.
- .RT
- .PP
- 24.2
- The types defined in the \*QAlternativeTypeList\*U shall all have
- distinct tags. (See \(sc 26.)
- .sp 9p
- .RT
- .PP
- 24.3
- The tag of the choice type shall be considered to be variable.
- When a value is selected, the tag becomes equal to the tag of the \*QType\*U
- in the \*QNamedType\*U in the \*QAlternativeTypeList\*U from which the
- value is taken.
- .sp 9p
- .RT
- .PP
- 24.4
- Where this type is used in a place where this Recommendation
- requires the use of types with distinct tags (see \(sc\ 20.3, \(sc\ 22.3
- and \(sc\ 24.2), the tags of all types defined in the \*QAlternativeTypeList\*U
- shall differ from
- those of the other types. (See \(sc\ 26.) The following examples illustrate
- this
- requirement. Examples\ 1 and\ 2 are correct uses of the notation. Example\ 3 is
- incorrect, as the tags for types\ d and\ f, and\ e and\ g are identical.
- .sp 9p
- .RT
- .LP
- \fIExample\ 1:\fR
- .LP
- A\ ::=
- CHOICE
- .LP
- {b B,
- .LP
- {
- c NULL}
- .LP
- B\ ::=
- CHOICE
- .LP
- {d [0] NULL,
- .LP
- {
- e [1] NULL}
- .LP
- \fIExample\ 2:\fR
- .LP
- A\ ::=
- CHOICE
- .LP
- {b B,
- .LP
- {
- c C}
- .LP
- B\ ::=
- CHOICE
- .LP
- {d [0] NULL,
- .LP
- {
- e [1] NULL}
- .LP
- C\ ::=
- CHOICE
- .LP
- {f [2] NULL,
- .LP
- {
- g [3] NULL}
- .LP
- \fIExample\ 3:\fR
- .LP
- (INCORRECT)
- .LP
- A\ ::=
- CHOICE
- .LP
- {b B,
- .LP
- {
- c C}
- .LP
- B\ ::=
- CHOICE
- .LP
- {d [0] NULL,
- .LP
- {
- e [1] NULL}
- .LP
- C\ ::=
- CHOICE
- .LP
- {f [0] NULL,
- .LP
- {
- g [1] NULL}
- .PP
- 24.5
- The \*Qidentifier\*U (if any) in all \*QNamedType\*U sequences of the
- \*QAlternativeTypeList\*U shall be distinct.
- .bp
- .sp 9p
- .RT
- .PP
- 24.6
- Where this type is used in a place where this Recommendation
- requires the use of \*QNamedTypes\*U with distinct \*Qidentifiers\*U, the
- \*Qidentifiers\*U (if any) of all \*QNamedTypes\*U in the \*QAlternativeTypeList\*U
- shall differ from
- those (if any) of the other \*QNamedTypes\*U.
- .sp 9p
- .RT
- .PP
- 24.7
- The notation for defining the value of a choice type shall be
- the \*QChoiceValue\*U:
- .sp 9p
- .RT
- .LP
- ChoiceValue ::= NamedValue
- .PP
- 24.8
- If the \*QNamedValue\*U contains an \*Qidentifier\*U, it shall be a
- notation for a value of that type in the \*QAlternativeTypeList\*U that
- is named by the same \*Qidentifier\*U. If the \*QNamedValue\*U does not
- contain an \*Qidentifier\*U, it shall be a notation for a value of one
- of those types in the
- \*QAlternativeTypeList\*U that are not named by an \*Qidentifier\*U.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Failure to use an \*Qidentifier\*U in the \*QNamedType\*U
- can
- make the value notation ambiguous.
- .sp 2P
- .LP
- \fB25\fR \fBNotation for \fR \fBselection types\fR
- .sp 1P
- .RT
- .PP
- 25.1
- A \*QNamedType\*U appearing in the \*QAlternativeTypeList\*U of a
- \*QChoiceType\*U can be referenced by the notation \*QSelectionType\*U:
- .sp 9p
- .RT
- .LP
- SelectionType ::= identifier<Type
- .LP
- where \*QType\*U is a notation referencing the \*QChoiceType\*U, and \*Qidentifier\*U
- is
- the \*Qidentifier\*U in the \*QNamedType\*U.
- .PP
- \fINote\fR \ \(em\ \*QSelectionType\*U can be used either as a \*QNamedType\*U,
- in which case the \*Qidentifier\*U is used in the value notation, or as
- a \*QType\*U
- within a \*QNamedType\*U, in which case its \*Qidentifier\*U is not used.
- .PP
- 25.2
- The notation for a value of a selection type shall be
- \*QSelectionValue\*U:
- .sp 9p
- .RT
- .LP
- SelectionValue ::= NamedValue
- .LP
- where the \*QNamedValue\*U contains the identifier that appears in the
- corresponding \*QSelectionType\*U if the \*QSelectionType\*U is used as
- a \*QNamedType\*U, but not otherwise.
- .sp 2P
- .LP
- \fB26\fR \fBNotation for \fR \fBtagged types\fR
- .sp 1P
- .RT
- .PP
- A tagged type (see \(sc 3.26) is a new type which is isomorphic with an
- old type, but which has a different tag. In all encoding schemes, a value
- of the new type can be distinguished from a value of the old type. The
- tagged type is mainly of use where this Recommendation requires the use
- of types with
- distinct tags. (See \(sc\ 20.3, \(sc\ 22.3, \(sc\ 24.2, \(sc\ 24.4, and
- \(sc\ 27.6.)
- .PP
- \fINote\fR \ \(em\ Where a protocol determines that values from several
- datatypes may be transmitted at any moment in time, distinct tags may be
- needed to enable the recipient to correctly decode the value.
- .RT
- .PP
- 26.1
- The notation for a tagged type shall be \*QTaggedType\*U:
- .sp 9p
- .RT
- .LP
- TaggedType ::=
- .LP
- Tag Type\ |
- .LP
- Tag IMPLICIT Type\ |
- .LP
- Tag EXPLICIT Type
- .LP
- Tag ::= [Class ClassNumber]
- .LP
- ClassNumber ::=
- .LP
- number\ |
- .LP
- DefinedValue
- .LP
- Class ::=
- .LP
- UNIVERSAL\ |
- .LP
- APPLICATION\ |
- .LP
- PRIVATE\ |
- .LP
- empty
- .bp
- .PP
- 26.2
- The \*QDefinedValue\*U shall be a reference to a non\(hynegative value
- of type integer, or of a type derived from type integer by tagging.
- .sp 9p
- .RT
- .PP
- 26.3
- The new type is isomorphic with the old type, but has a tag
- with \*QClass\*U class and number \*QClassNumber\*U, unless the \*QClass\*U
- is \*Qempty\*U,
- when the tag is context\(hyspecific class, number \*QClassNumber\*U.
- .sp 9p
- .RT
- .PP
- 26.4
- The \*QClass\*U shall not be \*QUNIVERSAL\*U except for types defined in
- this Recommendation.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Use of universal class tags is agreed from time to time
- by ISO and CCITT.
- .PP
- 26.5
- If the \*QClass\*U is \*QAPPLICATION\*U, the same \*QTag\*U shall not be
- used again in the same module.
- .sp 9p
- .RT
- .PP
- 26.6
- If the \*QClass\*U is \*QPRIVATE\*U the \*QTag\*U is available for use on
- an enterprise\(hyspecific basis.
- .sp 9p
- .RT
- .PP
- 26.7
- The tagging construction specifies explicit tagging if any of
- the following holds:
- .sp 9p
- .RT
- .LP
- a)
- the \*QTag EXPLICIT Type\*U alternative is used;
- .LP
- b)
- the \*QTag Type\*U alternative is used and the value of
- \*QTagDefault\*U for the module is \*QEXPLICIT TAGS\*U;
- .LP
- c)
- the \*QTag Type\*U alternative is used and the value of
- \*QTagDefault\*U for the module is \*QIMPLICIT TAGS\*U, but
- the type defined by \*QType\*U is a choice type or on any
- type.
- .PP
- The tagging construction specifies implicit tagging otherwise.
- .PP
- 26.8
- If the \*QClass\*U is \*Qempty\*U, there are no restrictions on the use
- of \*QTag\*U, other than those implied by the requirement for distinct tags in
- \(sc\ 20.3, \(sc\ 22.3, and \(sc\ 24.2.
- .sp 9p
- .RT
- .PP
- 26.9
- Implicit tagging indicates, for those encoding rules which
- provide the option, that explicit identification of the tag of the \*QType\*U
- in
- the \*QTaggedType\*U is not needed during transfer.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ It can be useful to retain the old tag where this was
- universal class, and hence unambiguously identifies the old type without
- knowledge of the ASN.1\ definition of the new type. Minimum transfer octets
- is, however, normally achieved by the use of IMPLICIT. An example of encoding
- using IMPLICIT is given in Recommendation\ X.209.
- .PP
- 26.10
- The \*QIMPLICIT\*U alternative shall not be used if the type
- defined by \*QType\*U is a choice type or an any type.
- .sp 9p
- .RT
- .PP
- 26.11
- The notation for a value of a \*QTaggedType\*U shall be
- \*QTaggedValue\*U:
- .sp 9p
- .RT
- .LP
- TaggedValue ::= Value
- .LP
- where \*Qvalue\*U is the notation for a value of the \*QType\*U in the
- \*QTaggedType\*U.
- .PP
- \fINote\fR \ \(em\ The \*QTag\*U does not appear in this notation.
- .sp 2P
- .LP
- \fB27\fR \fBNotation for the \fR \fBany type\fR
- .sp 1P
- .RT
- .PP
- 27.1
- The notation for any type (see \(sc\ 3.29) is \*QAnyType\*U:
- .sp 9p
- .RT
- .LP
- AnyType ::=
- .LP
- ANY\ |
- .LP
- ANY DEFINED BY identifier
- .PP
- \fINote\fR \ \(em\ The use of \*QANY\*U in an ISO Standard or CCITT
- Recommendation produces an incomplete specification unless it is supplemented
- by additional specification. The \*QANY DEFINED BY\*U construct provides
- the means of specifying in an instance of communication the type which
- fills the ANY, and a pointer to its semantics. If the following rules for
- its use are followed, it can provide a complete specification. Use of ANY
- without the DEFINED BY
- construct is deprecated.
- .bp
- .PP
- 27.2
- The \*QDEFINED BY\*U alternative shall be used only when the any
- type, or a type derived from it by tagging, is one of the component types
- of a sequence type or set type (the containing type).
- .sp 9p
- .RT
- .PP
- 27.3
- The \*Qidentifier\*U in the \*QDEFINED BY\*U alternative shall also
- appear in a \*QNamedType\*U that specifies another, non\(hyoptional, component
- of the containing type. The \*QNamedType\*U shall be an integer type or
- an enumerated type or an object identifier type or a type derived from
- those by tagging or
- subtyping.
- .sp 9p
- .RT
- .PP
- 27.4
- When the \*QNamedType\*U is an integer or enumerated type, or of a
- type derived from those types by tagging ot subtyping the document employing
- the \*QDEFINED BY\*U notation shall contain, or explicitly reference, a
- single list which specifies the ASN.1\ type to be carried by the ANY for
- each permitted
- value of the integer type. There shall be precisely any one such list in all
- instances of communication of the containing type.
- .sp 9p
- .RT
- .PP
- 27.5
- When the \*QNamedType\*U is an object identifier type, or a type
- derived from object identifier by tagging, there is a need for registers
- which, for each allocated object identifier value, associate a single ASN.1\
- type
- (which may be a CHOICE type) which is to be carried by the ANY.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ There may be an arbitrary number of registers
- associating an object identifier value with an ASN.1\ type for this purpose.
- .PP
- \fINote\ 2\fR \ \(em\ Registration of values for open interconnection is
- expected to occur within ISO Standards and CCITT Recommendations using
- the notation.
- Where a separate International Registration Authority is intended for any
- instance of \*QANY DEFINED BY\*U, this should be identified in the document
- using the notation.
- .PP
- \fINote\ 3\fR \ \(em\ The main difference between the integer and object
- identifier definers is that the use of integer references a single list,
- contained in the using standard or Recommendation, whilst the use of object
- identifier allows an open\(hyended set of types determined by any authority
- able to allocate object identifiers.
- .RT
- .PP
- 27.6
- This type has an indeterminate tag, and shall not be used where
- this Recommendation requires distinct tags. (See \(sc\ 20.3, \(sc\ 22.3,
- \(sc\ 24.2 and
- \(sc\ 24.4.)
- .sp 9p
- .RT
- .PP
- 27.7
- The notation for the value of an any type shall be defined
- using ASN.1 and is \*QAnyValue\*U:
- .sp 9p
- .RT
- .LP
- AnyValue ::= Type Value
- .LP
- where \*QType\*U is the notation for the chosen type, and \*QValue\*U is
- the notation for a value of this type.
- .sp 2P
- .LP
- \fB28\fR \fBNotation for the \fR \fBobject identifier type\fR
- .sp 1P
- .RT
- .PP
- 28.1
- The object identifier type (see \(sc\ 3.34) shall be referenced by
- the notation \*QObjectIdentifierType\*U:
- .sp 9p
- .RT
- .LP
- ObjectIdentifierType ::=
- .LP
- OBJECT IDENTIFIER
- .PP
- 28.2
- This type has a tag which is universal class, number 6.
- .sp 9p
- .RT
- .PP
- 28.3
- The value notation for an object identifier shall be
- \*QObjectIdentifierValue\*U:
- .sp 9p
- .RT
- .LP
- ObjectIdentifierValue ::=
- .LP
- {ObjIdComponentList}\ |
- .LP
- {DefinedValue ObjIdComponentList}
- .LP
- ObjIdComponentList ::=
- .LP
- ObjIdComponent\ |
- .LP
- ObjIdComponent ObjIdComponentList
- .LP
- ObjIdComponent ::=
- .LP
- NameForm\ |
- .LP
- NumberForm\ |
- .LP
- NameAndNumberForm
- .bp
- .LP
- NameForm ::= identifier
- .LP
- NumberForm ::= number\ |\ DefinedValue
- .LP
- NameAndNumberForm ::=
- .LP
- identifier(NumberForm)
- .PP
- 28.4
- The \*QDefinedValue\*U in \*QNumberForm\*U shall be a reference to a
- value of type integer or enumerated, or of a type derived from those by
- tagging or subtyping.
- .sp 9p
- .RT
- .PP
- 28.5
- The \*QDefinedValue\*U in \*QObjectIdentifierValue\*U shall be a reference
- to a value of type object identifier, or of a type derived from object
- identifier by tagging.
- .sp 9p
- .RT
- .PP
- 28.6
- The \*QNameForm\*U shall be used only for those object identifier
- components whose numeric value and identifier are specified in annexes\
- B to\ D, and shall be one of the identifiers specified in annexes\ B to\
- D.
- .sp 9p
- .RT
- .PP
- 28.7
- The \*Qnumber\*U in the \*QNumberForm\*U shall be the numeric value
- assigned to the object identifier component.
- .sp 9p
- .RT
- .PP
- 28.8
- The \*Qidentifier\*U in the \*QNameAndNumberForm\*U shall be specified
- when a numeric value is assigned to the object identifier component.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The authorities allocating numeric values to object
- identifier components are identified in the annexes to this Recommendation.
- .PP
- 28.9
- The semantics of an object identifier value are defined by
- reference to an \fBobject identifier tree\fR . An object identifier tree
- is a tree whose root corresponds to this Recommendation and whose vertices
- correspond to administrative authorities responsible for allocating arcs
- from that vertex.
- Each arc of the tree is labelled by an object identifier component which
- is a numeric value. Each information object to be identified is allocated
- precisely one vertex (normally a leaf), and no other information object
- (of the same or a different type) is allocated to that same vertex. Thus
- an information object is uniquely and unambiguously identified by the sequence
- of numeric values (object identifier components) labelling the arcs in
- a path from the root to the vertex allocated to the information object.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Object identifier values contain at least two object
- identifier components, as specified in annexes\ B to\ D.
- .PP
- 28.10
- An object identifier value is semantically an ordered list of object identifier
- component values. Starting with the root of the object
- identifier tree, each object identifier component value identifies an arc in
- the object identifier tree. The last object identifier component value
- identifies an arc leading to a vertex which an information object has been
- assigned. It is this information object which is identified by the object
- identifier value. The significant part of the object identifier component is
- the \*QNameForm\*U or \*QNumberForm\*U which it reduces to, and which provides
- the
- numeric value for the object identifier component.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ In general, an information object is a class of
- information (for example, a file format), rather than an instance of such a
- class (for example, an individual file). It is thus the class of information
- (defined by some referencable specification), rather than the piece of
- information itself, that is assigned a place in the tree.
- .PP
- 28.11
- Where the \*QObjectIdentifierValue\*U includes a \*QDefinedValue\*U,
- the list of object identifier components to which it refers is prefixed
- to the components explicitly present in the value.
- .sp 9p
- .RT
- .PP
- \fIExamples:\fR \| With identifiers is assigned as specified in
- Annex\ B, the values:
- .LP
- {iso standard 8571 pci (1)}
- .LP
- and
- .LP
- {1 0 8571 1}
- .LP
- would each identify an object, \*Qpci\*U, defined in ISO 8571.
- .bp
- .PP
- With the following additional definition:
- .LP
- ftam OBJECT IDENTIFIER ::=
- .LP
- {iso standard 8571}
- .LP
- the following value is also equivalent to those above:
- .LP
- {ftam pci (1)}
- .PP
- \fINote\fR \ \(em\ It is recommended that, whenever a CCITT Recommendation,
- ISO standard or other document assigns values of type OBJECT IDENTIFIER
- to
- information objects there should be an appendix or annex which summarizes
- the assignments made therein. It is also recommended that an authority
- assigning
- values of type OBJECT IDENTIFIER to an information object should also assign
- values of type ObjectDescriptor to that information object.
- .sp 2P
- .LP
- \fB29\fR \fBNotation for \fR \fBcharacter string\fR \fBtypes\fR
- .sp 1P
- .RT
- .PP
- 29.1
- The notation for referencing a character string type (see
- \(sc\ 3.12 and section two) shall be:
- .sp 9p
- .RT
- .LP
- CharacterStringType ::= typereference
- .LP
- where \*Qtypereference\*U is one of the character string type names listed in
- section two.
- .PP
- 29.2
- The tag of each character string type is specified in section
- two.
- .sp 9p
- .RT
- .PP
- 29.3
- The notation for a character string value shall be:
- .sp 9p
- .RT
- .LP
- CharacterStringValue ::= cstring
- .PP
- The definition of the character string type determines the
- characters appearing in the \*Qcstring\*U.
- .sp 2P
- .LP
- \fB30\fR \fBNotation for types defined in section three\fR
- .sp 1P
- .RT
- .PP
- 30.1
- The notation for referencing a type defined in section three of
- this Recommendation shall be:
- .sp 9p
- .RT
- .LP
- UsefulType ::= typereference
- .LP
- where \*Qtypereference\*U is one of those defined in section three using
- the ASN.1 notation.
- .PP
- 30.2
- The tag of each \*QUsefulType\*U is specified in section three.
- .sp 9p
- .RT
- .PP
- 30.3
- The notation for a value of a \*QUsefulType\*U is specified in
- section three.
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- SECTION\ 2\ \(em\ CHARACTER\ STRING\ TYPES
- .ce 0
- .sp 1P
- .sp 2P
- .LP
- \fB31\fR \fBDefinition of character string types\fR
- .sp 1P
- .RT
- .PP
- This clause defines types whose distinguished values are sequences of zero,
- one or more characters from some character set.
- .RT
- .PP
- 31.1
- The type is defined by specifying:
- .sp 9p
- .RT
- .LP
- a)
- the tag assigned to the type; and
- .LP
- b)
- a name by which the type definition can be referenced; and
- .LP
- c)
- the characters in the character set used in defining the
- type, either by reference to a table listing the character
- graphics or by reference to a registration number in the ISO
- International Register of Coded Character Sets to be used with
- Escape Sequences.
- .PP
- The name in b) above may be used as a \*Qtypereference\*U in the ASN.1
- notation (see \(sc\ 29).
- .bp
- .PP
- 31.2
- Table\ 6/X.208 lists the name by which each of these type
- definitions can be referenced, the number of the universal class tag assigned
- to the type, the defining registration numbers or following table, and,
- where necessary, identification of a NOTE relating to the entry in the
- table. Where a synonymous name is defined in the notation, this is listed
- in parentheses.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The tag assigned to character string types unambiguously
- identifies the type. Note, however, that if ASN.1 is used to define new
- types from this type (particularly using IMPLICIT), it may be impossible
- to recognize these types without knowledge of the ASN.1\ type definition.
- .PP
- 31.3
- Table\ 4/X.208 lists the characters which can appear in the
- NumericString type.
- .sp 9p
- .RT
- .LP
- .sp 3
- .ce
- \fBH.T. [T4.208]\fR
- .ce
- TABLE\ 4/X.208
- .ce
- \fBNumericString\fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- cw(30p) | cw(30p) .
- Name Graphic
- _
- .T&
- lw(30p) | cw(30p) .
- Digits 0, 1, .\|.\|. 9
- .T&
- lw(30p) | cw(30p) .
- Space (space)
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTableau 4/X.208 [T4.208], p. 4\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .LP
- .sp 4
- .ce
- \fBH.T. [T5.208]\fR
- .ce
- TABLE\ 5/X.208
- .ce
- \fBPrintableString\fR
- .ce
- \fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- cw(60p) | cw(36p) .
- Name Graphic
- _
- .T&
- lw(60p) | lw(36p) .
- Capital letters A, B, .\|.\|. Z
- .T&
- lw(60p) | lw(36p) .
- Small letters a, b, .\|.\|. z
- .T&
- lw(60p) | lw(36p) .
- Digits 0, 1, .\|.\|. 9
- .T&
- lw(60p) | lw(36p) .
- Space (space)
- .T&
- lw(60p) | lw(36p) .
- Apostrophe \fB'\fR
- .T&
- lw(60p) | lw(36p) .
- Left Parenthesis (
- .T&
- lw(60p) | lw(36p) .
- Right Parenthesis )
- .T&
- lw(60p) | lw(36p) .
- Plus sign +
- .T&
- lw(60p) | lw(36p) .
- Comma \fB,\fR
- .T&
- lw(60p) | lw(36p) .
- Hyphen \fB\(hy\fR
- .T&
- lw(60p) | lw(36p) .
- Full stop \fB.\fR
- .T&
- lw(60p) | lw(36p) .
- Solidus /
- .T&
- lw(60p) | lw(36p) .
- Colon \fB:\fR
- .T&
- lw(60p) | lw(36p) .
- Equal sign =
- .T&
- lw(60p) | lw(36p) .
- Question mark ?
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTableau 5/X.208 [T5.208], p. 5\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .LP
- .bp
- .ce
- \fBH.T. [T6.208]\fR
- .ce
- TABLE\ 6/X.208
- .ce
- \fBList of character string types\fR
- .ce
- \fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- cw(48p) | cw(36p) | cw(78p) | cw(30p) .
- Name for referencing the type Universal class number T{
- Defining registration numbers (see\ ISO\ 2375) or
- table number
- T} Notes
- _
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- NumericString 18 Table 4 1
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- PrintableString 19 Table 5 1
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- TeletexString (T61String) 20 T{
- 87, 102, 103, 106, 107
- +\ SPACE +\ DELETE
- T} 2
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- VideotexString 21 T{
- 1, 72, 73, 102, 108, 128, 129
- +\ SPACE +\ DELETE
- T} 3
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- VisibleString (ISO646String) 26 2 +\ SPACE
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- IA5String 22 1, 2 +\ SPACE +\ DELETE
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- GraphicString 25 All G sets +\ SPACE
- .T&
- lw(48p) | cw(36p) | lw(78p) | cw(30p) .
- GeneralString 27 T{
- All G and all C sets
- +\ SPACE +\ DELETE
- \fINote\ 1\fR
- \ \(em\ The type\(hystyle, size, colour, intensity, or other display
- characteristics are not significant.
- .parag
- \fINote\ 2\fR
- \ \(em\ The entries corresponding to these registration numbers
- reference CCITT Recommendation\ T.61 for rules concerning their use.
- .parag
- \fINote\ 3\fR
- \ \(em\ The entries corresponding to these registration numbers
- provide the functionality of CCITT Recommendations\ T.100 and\ T.101.
- .parag
- T}
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTableau 6/X.208 [T6.208], p. 6\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .PP
- 31.4
- Table 5/X.208 lists the characters which can appear in the
- PrintableString type.
- .sp 9p
- .RT
- .PP
- 31.5
- The notation for these types shall be \*Qcstring\*U.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ This notation can only be used on a medium capable of
- displaying the characters which are present in the value. The notation
- for the value in other cases is not defined.
- .PP
- 31.6
- In all cases, the range of permitted characters may be
- restricted by a comment, but shall not be extended.
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- SECTION\ 3\ \(em\ USEFUL\ DEFINITIONS
- .ce 0
- .sp 1P
- .PP
- This section contains definitions which are expected to be
- useful in a number of applications.
- .sp 1P
- .RT
- .PP
- \fINote\fR \ \(em\ It is expected that this section will be added to, to
- encompass other common datatypes such as diagnostics, authentication
- information, accounting information, security parameters and so on.
- .PP
- The value notation and semantic definition for types defined in this section
- are derived from a definition of the type using the ASN.1\ notation.
- This type definition can be referenced by standards or Recommendations
- defining encoding rules in order to specify encodings for these types.
- .bp
- .RT
- .sp 2P
- .LP
- \fB32\fR \fBGeneralized time\fR
- .sp 1P
- .RT
- .PP
- 32.1
- This type shall be referenced by the name:
- .sp 9p
- .RT
- .LP
- GeneralizedTime
- .PP
- 32.2
- The type consists of values representing:
- .sp 9p
- .RT
- .LP
- a)
- a calendar date, as defined in ISO 2014 (Writing of calendar
- dates in all\(hynumeric form); and
- .LP
- b)
- a time of day, to any of the precisions defined in clause\ 2
- of ISO\ 3307 (Representations of time of day); and
- .LP
- c)
- the local differential factor as defined in ISO 4031
- (Representation of local time differentials).
- .PP
- 32.3
- The type can be defined, using ASN.1, as follows:
- .sp 9p
- .RT
- .LP
- GeneralizedTime ::=
- .LP
- [UNIVERSAL 24] IMPLICIT
- .LP
- VisibleString
- .PP
- with the values of the \*QVisibleString\*U restricted to strings of
- characters which are either:
- .LP
- a)
- a string representing the calendar date, as specified in
- ISO\ 2014, with a four\(hydigit representation of the year, a
- two\(hydigit representation of the month and a two\(hydigit
- representation of the day, without use of separators, followed
- by a string representing the time of day, as specified in
- ISO\ 3307, without separators other than decimal comma or
- decimal period (as provided for in clauses\ 2.3, 2.4 and\ 2.5
- of ISO\ 3307), and with no terminating\ Z (as provided for in
- clause\ 3 of ISO\ 3307); or
- .LP
- b)
- the characters in a) above followed by an upper\(hycase
- letter\ Z; or
- .LP
- c)
- the characters in a) above followed by a string representing
- a local time differential, as specified in ISO\ 4031, without
- separators.
- .PP
- In case a), the time shall represent the local time. In case\ b), the time
- shall represent UTC time. In case\ c), the part of the string formed in
- case\ a) represents the local time (t\d1\u), and the time differential
- (t\d2\u)
- enables UTC time to be determined as follows:
- .LP
- UTC time is t\d1\u\ \(em\ t\d2\u
- .LP
- \fIExamples:\fR
- .LP
- Case\ a)
- 19851106210627.3
- .LP
- local time 6 minutes, 27.3 seconds
- .LP
- after 9 pm on 6 November 1985.
- .LP
- Case\ b)
- 19851106210627.3Z
- .LP
- UTC time as above.
- .LP
- Case\ c)
- 19851106210627.3\(em0500
- .LP
- Local time as in example a), with
- .LP
- local time 5 hours retarded in
- .LP
- relation to UTC time.
- .PP
- 32.4
- The tag shall be as defined in \(sc 32.3.
- .sp 9p
- .RT
- .PP
- 32.5
- The value notation shall be the value notation for the
- \*QVisibleString\*U defined in \(sc\ 32.3.
- .sp 9p
- .RT
- .sp 2P
- .LP
- \fB33\fR \fBUniversal time\fR
- .sp 1P
- .RT
- .PP
- 33.1
- This type shall be referenced by the name:
- .sp 9p
- .RT
- .LP
- UTCTime
- .PP
- 33.2
- The type consists of values representing:
- .sp 9p
- .RT
- .LP
- a)
- a calendar date; and
- .LP
- b)
- a time to a precision of one minute or one second; and
- .LP
- c)
- (optionally) a local time differential from coordinated
- universal time.
- .bp
- .PP
- 33.3
- The type can be defined, using ASN.1, as follows:
- .sp 9p
- .RT
- .LP
- UTCTime ::=
- .LP
- [UNIVERSAL 23]IMPLICIT
- .LP
- VisibleString
- .PP
- with the values of the \*QVisibleString\*U restricted to strings of
- characters which are the juxtaposition of:
- .LP
- a)
- the six digits YYMMDD where YY is the two low\(hyorder digits
- of the Christian year, MM is the month (counting January as
- 01), and DD is the day of the month (01 to 31); and
- .LP
- b)
- either:
- .LP
- 1)
- the four digits hhmm where hh is hour (00 to 23) and
- mm is minutes (00 to 59); or
- .LP
- 2)
- the six digits hhmmss where hh and mm are as in 1)
- above, and ss is seconds (00 to 59); and
- .LP
- c)
- either:
- .LP
- 1)
- the character Z; or
- .LP
- 2)
- one of the characters + or \(em, followed by hhmm,
- where hh is hour and mm is minutes.
- .PP
- The alternatives in b) above allow varying precisions in the
- specification of the time.
- .PP
- In alternative c)\|1), the time is UTC time. In alternative c)\|2), the
- time (t\d1\u) specified by a) and b) above is the local time; the time
- differential (t\d2\u) specified by c)\|2) above enables the UTC time to be
- determined as follows:
- .RT
- .LP
- UTC Time is t\d1\u\ \(em\ t\d2\u
- .PP
- \fIExample:\fR \| If local time is 7 AM on 2 January and coordinated
- universal time is 12\ noon on 2\ January, the value is either of:
- .LP
- UTCTime \*Q8201021200Z\*U
- .LP
- UTCTime \*Q8201020700\(em0500\*U
- .PP
- 33.4
- The tag shall be as defined in \(sc 33.3.
- .sp 9p
- .RT
- .PP
- 33.5
- The value notation shall be the value notation for the
- \*QVisibleString\*U defined in \(sc\ 33.3.
- .sp 9p
- .RT
- .sp 2P
- .LP
- \fB34\fR \fBThe external type\fR
- .sp 1P
- .RT
- .PP
- 34.1
- The notation for an external type (see \(sc\ 3.30) is
- \*QExternalType\*U:
- .sp 9p
- .RT
- .LP
- ExternalType ::= EXTERNAL
- .PP
- 34.2
- The type consists of values representing:
- .sp 9p
- .RT
- .LP
- a)
- an encoding of a single data value that may, but need not,
- be the value of a single ASN.1 datatype; and
- .LP
- b)
- identification information which determines the semantics
- and encoding rules; and
- .LP
- c)
- (optionally) an object descriptor which describes the
- object.
- .PP
- The optional object descriptor shall not be present unless
- explicitly permitted by comment associated with the use of the EXTERNAL
- notation.
- .PP
- 34.3
- Type EXTERNAL permits the inclusion of any data value from an identified
- set of data values.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ The specification of this set of data values, their
- semantics, the assignment of an object identifier and (optionally) an object
- descriptor, and the dissemination of this information to all communicating
- parties is called \fBregistering an abstract syntax\fR . This operation can be
- performed by any authority entitled to allocate an OBJECT IDENTIFIER value,
- as specified in Annexes\ B to\ D.
- .PP
- \fINote\ 2\fR \ \(em\ A set of data values registered as an abstract syntax
- (with associated encoding rules) is not well\(hyformed unless the encoding
- of each data value is self\(hyidentifying within the set of data value
- encodings. When
- ASN.1 is used to define an abstract syntax, tagging is used to provide
- self\(hyidentification. Where an abstract syntax is not well\(hyformed, use
- of the communications channel is either context\(hysensitive or leads to
- ambiguity.
- .bp
- .RT
- .PP
- 34.4
- The EXTERNAL type can be defined, using ASN.1, as follows:
- .sp 9p
- .RT
- .LP
- \fBEXTERNAL ::= [UNIVERSAL 8] IMPLICIT SEQUENCE\fR
- .LP
- \fB{direct\(hyreference\fR \fBOBJECT IDENTIFIER OPTIONAL,\fR
- .LP
- \fBindirect\(hyreference\fR \fBINTEGER OPTIONAL,\fR
- .LP
- \fBdata\(hyvalue\(hydescriptor\fR \fBObjectDescriptor OPTIONAL,\fR
- .LP
- \fBencoding\fR \fBCHOICE\fR
- .LP
- en
- \fB{single\(hyASN1\(hytype\fR \fB[0] ANY,\fR
- .LP
- en{
- \fBoctet\(hyaligned\fR \fB[1] IMPLICIT OCTET STRING,\fR
- .LP
- en{
- \fBarbitrary\fR \fB[2] IMPLICIT BIT STRING}}\fR
- .PP
- 34.5
- When presentation layer negotiation of encoding rules is not in
- use (prior agreement of transfer syntax) for the value of this EXTERNAL, the
- \*Qdirect\(hyreference OBJECT IDENTIFIER\*U shall be present. In this case the
- identifier of the set of data values is an object identifier which directly
- references an abstract syntax and fills the \*Qdirect\(hyreference OBJECT
- IDENTIFIER\*U field of the \*QEXTERNAL\*U. In this case, the abstract syntax
- registration also defines the encoding rules (transfer syntax) for the data
- value and the \*Qindirect\(hyreference INTEGER\*U shall not be included.
- .sp 9p
- .RT
- .PP
- 34.6
- When presentation layer negotiation is in use for the value of
- this EXTERNAL, the \*Qindirect\(hyreference INTEGER\*U shall be present.
- In this case the identifier of the set of data values is an integer which
- references an
- instance of use of an abstract syntax. The integer is called a \fBpresentation
- context identifier\fR and fills the \*Qindirect\(hyreference INTEGER\*U
- field of the
- \*QEXTERNAL\*U. If presentation layer negotiation has been completed, the
- presentation context identifier also identifies the encoding rules (transfer
- syntax) for the data value and the \*Qdirect\(hyreference OBJECT IDENTIFIER\*U
- shall not be included. If presentation layer negotiation is not complete,
- an object identifier value is also needed which identifies the encoding
- rules (transfer syntax) used for the encoding. Where presentation layer
- negotiation is in use, and where the \*Qdirect\(hyreference OBJECT IDENTIFIER\*U
- element is allowed or
- required to carry such a value, this shall be identified by comment associated
- with the use of the \*QEXTERNAL\*U notation, otherwise the field shall
- be
- absent.
- .sp 9p
- .RT
- .PP
- \fINote\ 1\fR \ \(em\ The effect of \(sc 34.5 and \(sc\ 34.6 is to make
- the presence of at least one of the \*Qdirect\(hyreference\*U and the \*Qindirect\(hyreference\*U
- mandatory.
- .PP
- \fINote\ 2\fR \ \(em\ Both references are present when presentation layer
- negotiation is in use but incomplete.
- .RT
- .PP
- 34.7
- If the data value is the value of a single ASN.1 datatype, and
- if the encoding rules for this data value are the same as those for the
- complete \*QEXTERNAL\*U datatype, then the sending implementation shall
- use any of the \*QEncoding\*U choices:
- .sp 9p
- .RT
- .LP
- single\(hyASN1\(hytype
- .LP
- octet\(hyaligned
- .LP
- arbitrary
- .LP
- as an implementation option.
- .PP
- 34.8
- If the encoding of the data value, using the agreed or
- negotiated encoding, is an integral number of octets, then the sending
- implementation shall use any of the \*QEncoding\*U choices:
- .sp 9p
- .RT
- .LP
- octet\(hyaligned
- .LP
- arbitrary
- .LP
- as an implementation option.
- .PP
- \fINote\fR \ \(em\ A data value which is a series of ASN.1 types, and for
- which the transfer syntax specifies simple concatenation of the octet strings
- produced by applying the ASN.1 Basic Encoding Rules to each ASN.1\ type,
- falls into this category, not that of \(sc\ 34.7.
- .PP
- 34.9
- If the encoding of the data value, using the agreed or
- negotiated encoding, is not an integral number of octets, the \*QEncoding\*U
- choice shall be:
- .sp 9p
- .RT
- .LP
- arbitrary
- .bp
- .PP
- 34.10
- If the \*QEncoding\*U choice is chosen as \*Qsingle\(hyASN1\(hytype\*U, then
- the ASN.1 type shall replace the \*QANY\*U, with a value equal to the data
- value to be encoded.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The range of values which might occur in the \*QANY\*U is
- determined by the registration of the object identifier value associated
- with the \*Qdirect\(hyreference\*U, and/or the integer value associated
- with the
- \*Qindirect\(hyreference\*U.
- .PP
- 34.11
- If the \*QEncoding\*U choice is chosen as \*Qoctet\(hyaligned\*U, then the
- data value shall be encoded according to the agreed or negotiated transfer
- syntax, and the result shall form the value of the bitstring.
- .sp 9p
- .RT
- .PP
- 34.12
- If the \*QEncoding\*U choice is chosen as \*Qarbitrary\*U, then the data
- value shall be encoded according to the agreed or negotiated transfer syntax,
- and the result shall form the value of the bitstring.
- .sp 9p
- .RT
- .PP
- 34.13
- The tag shall be as defined in \(sc 34.4.
- .sp 9p
- .RT
- .PP
- 34.14
- The value notation shall be the value of the type defined in
- \(sc\ 34.4.
- .sp 9p
- .RT
- .sp 2P
- .LP
- \fB35\fR \fBThe object descriptor type\fR
- .sp 1P
- .RT
- .PP
- 35.1
- This type shall be referenced by the name:
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- ObjectDescriptor
- .ce 0
- .sp 1P
- .PP
- 35.2
- The type consists of human\(hyreadable text which serves to
- describe an information object. The text is not an unambiguous identification
- of the information object, but identical text for different information
- objects is intended to be uncommon.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ It is recommended that an authority assigning values
- of type \*QOBJECT IDENTIFIER\*U to an information object should also assign
- values of type \*QObjectDescriptor\*U to that information object.
- .PP
- 35.3
- The type can be defined, using the ASN.1 notation, as follows:
- .sp 9p
- .RT
- .LP
- ObjectDescriptor ::=
- .LP
- [UNIVERSAL 7] IMPLICIT
- .LP
- GraphicString
- .PP
- The \*QGraphicString\*U contains the text describing the information object.
- .PP
- 35.4
- The tag shall be as defined in \(sc\ 35.3.
- .sp 9p
- .RT
- .PP
- 35.5
- The value notation shall be the value notation for the
- \*QGraphicString\*U defined in \(sc\ 37.3.
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- SECTION\ 4\ \(em\ SUBTYPES
- .ce 0
- .sp 1P
- .sp 2P
- .LP
- \fB36\fR \fBSubtype notation\fR
- .sp 1P
- .RT
- .PP
- 36.1
- A subtype is defined by the notation for a parent type followed
- by an appropriate subtype specification. The subtype specification notation
- is made up of subtype value sets. The values in the subtype are determined
- as
- specified in \(sc\ 36.7 by taking the union of all the subtype value sets.
- .sp 9p
- .RT
- .PP
- 36.2
- The subtype notation shall not be used so as to produce a
- subtype with no values.
- .sp 9p
- .RT
- .PP
- 36.3
- The notation for a subtype shall be \*QSubtype\*U:
- .sp 9p
- .RT
- .LP
- Subtype ::=
- .LP
- ParentType SubtypeSpec\ |
- .LP
- SET SizeConstraint OF Type\ |
- .LP
- SEQUENCE SizeConstraint OF Type
- .LP
- ParentType ::= Type
- .bp
- .PP
- 36.4
- When the \*QSubtypeSpec\*U notation follows the \*QSelectionType\*U
- notation, the parent type is the \*QSelectionType\*U, not the \*QType\*U in the
- \*QSelectionType\*U notation.
- .sp 9p
- .RT
- .PP
- 36.5
- When the \*QSubtypeSpec\*U notation follows a set\(hyof or sequence\(hyof
- type notation, it applies to the \*QType\*U in the set\(hyof or sequence\(hyof
- notation, not to the set\(hyof or sequence\(hyof type.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ The special notation \*QSET SizeConstraint OF\*U and
- \*QSEQUENCE Size Constraint OF\*U is used to provide an alternative mechanism
- (which is more readable than the general case notation) for simple cases.
- More complex cases require the general mechanism.
- .PP
- 36.6
- The subtype specification notation shall be \*QSubtypeSpec\*U:
- .sp 9p
- .RT
- .LP
- SubtypeSpec ::=
- .LP
- (SubtypeValueSet SubtypeValueSetList)
- .LP
- SubtypeList ::=
- .LP
- \*Q\ |\ \*U
- .LP
- SubtypeValueSet
- .LP
- SubtypeValueSetList\ |
- .LP
- empty
- .PP
- 36.7
- Each \*QSubtypeValueSet\*U specifies a number (possibly zero) of
- values of the parent type, which are then included in the subtype. A value
- of the parent type is a value of the subtype if and only if it is included
- by one or more of the subtype value sets. The subtype is thus formed from
- the set
- union of the values included by the subtype value sets.
- .sp 9p
- .RT
- .PP
- 36.8
- A number of different forms of notation for \*QSubtypeValueSet\*U are provided.
- They are identified below, and their syntax and semantics is defined in
- \(sc\ 37. As specified in \(sc\ 37, and summarized in Table\ 7/X.208, some
- notations can only be applied to particular parent types.
- .sp 9p
- .RT
- .ce
- \fBH.T. [T7.208]\fR
- .ce
- TABLE\ 7/X.208
- .ce
- \fBApplicability of subtype value sets\fR
- .ce
- \fR
- .ps 9
- .vs 11
- .nr VS 11
- .nr PS 9
- .TS
- center box;
- cw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- T{
- Type (or derived from such
- a type by tagging)
- T} Single Value Cont'd Subtype Value Range Size Range Alphabet Limitation Inner Subtyping
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Boolean / / x x x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Integer / / / x x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Enumerated / / x x x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Real / / / x x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Object Identifier / / x x x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Bit String / / x / x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Octet String / / x / x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Character String Types / / x / / x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Sequence / / x x x /
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Sequence\(hyof / / x / x /
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Set / / x x x /
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Set\(hyof / / x / x /
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Any / / x x x x
- _
- .T&
- lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
- Choice / / x x x /
- _
- .TE
- .nr PS 9
- .RT
- .ad r
- \fBTable 7/X.208 [T7.208], p.\fR
- .sp 1P
- .RT
- .ad b
- .RT
- .LP
- .bp
- .LP
- Subtype ValueSet ::=
- .LP
- SingleValue\ |
- .LP
- ContainedSubtype\ |
- .LP
- ValueRange\ |
- .LP
- PermittedAlphabet\ |\ SizeConstraint\ |\ InnerTypeConstraints
- .LP
- \fB37\fR \fBSubtype Value Sets\fR
- .sp 1P
- .RT
- .sp 2P
- .LP
- 37.1
- \fISingle Value\fR
- .sp 1P
- .RT
- .PP
- 37.1.1
- The \*QSingleValue\*U notation shall be:
- .sp 9p
- .RT
- .LP
- SingleValue ::= Value
- .LP
- where \*QValue\*U is the value notation for the parent type.
- .PP
- 37.1.2
- A \*QSingleValue\*U set is the single value of the parent type
- specified by \*QValue\*U. This notation can be applied to all parent types.
- .sp 9p
- .RT
- .sp 2P
- .LP
- 37.2
- \fIContained Subtype\fR
- .sp 1P
- .RT
- .PP
- 37.2.1
- The \*QContainedSubtype\*U notation shall be:
- .sp 9p
- .RT
- .LP
- ContainedSubtype ::= INCLUDES Type
- .PP
- 37.2.2
- A \*QContainedSubType\*U value consists of all the values of the
- \*QType\*U, which is itself required to be a subtype of the parent type. This
- notation can be applied to all parent types.
- .sp 9p
- .RT
- .sp 2P
- .LP
- 37.3
- \fIValue Range\fR
- .sp 1P
- .RT
- .PP
- 37.3.1
- The \*QValueRange\*U notation shall be:
- .sp 9p
- .RT
- .LP
- ValueRange ::= LowerEndpoint .. Upper Endpoint
- .PP
- 37.3.2
- A \*QValueRange\*U value set consists of all the values in a range
- which are designated by specifying the numerical values of the endpoints
- of the range. This notation can only be applied to integer types, real
- types and types derived from those types by tagging or subtyping.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ For the purpose of subtyping, \*QPLUS\(hyINFINITY\*U
- exceeds all \*QNumericReal\*U values and \*QMINUS\(hyINFINITY\*U is less
- than all \*QNumericReal\*U
- values.
- .PP
- 37.3.3
- Each endpoint of the range is either closed (in which case that
- endpoint is included in the value set) or open (in which case the endpoint
- is not included). When open, the specification of the endpoint includes
- a
- less\(hythan symbol (\*Q<\*U):
- .sp 9p
- .RT
- .LP
- LowerEndpoint ::= LowerEndValue\ |\ LowerEndValue <
- .LP
- UpperEndpoint ::= UpperEndValue\ |\ < UpperEndValue
- .PP
- 37.3.4
- An endpoint may also be unspecified, in which case the range
- extends in that direction as far as the parent type allows:
- .sp 9p
- .RT
- .LP
- LowerEndValue ::= Value\ |\ MIN
- .LP
- UpperEndValue ::= Value\ |\ MAX
- .sp 2P
- .LP
- 37.4
- \fISize Constraint\fR
- .sp 1P
- .RT
- .PP
- 37.4.1
- The \*QSizeConstraint\*U notation shall be:
- .sp 9p
- .RT
- .LP
- SizeConstraint ::= SIZE SubtypeSpec
- .bp
- .PP
- 37.4.2
- A \*QSizeConstraint\*U can only be applied to bitstring types,
- octetstring types, character string types, set\(hyof types or sequence\(hyof
- types, or types formed from any of those types by tagging or subtyping.
- .sp 9p
- .RT
- .PP
- 37.4.3
- The \*QSubtypeSpec\*U specifies the permitted integer values for
- the length of the numbers of the value set, and takes the form of any subtype
- specifications which can be applied to the following parent type:
- .sp 9p
- .RT
- .sp 1P
- .ce 1000
- INTEGER (0.\|.MAX)
- .ce 0
- .sp 1P
- .PP
- 37.4.4
- The unit of measure depends on the parent type, as follows:
- .sp 9p
- .RT
- .LP
- \fBType\fR \fBUnit of measure\fR
- .LP
- bit string
- bit
- .LP
- octet string
- octet
- .LP
- character string
- character
- .LP
- set\(hyof
- component value
- .LP
- sequence\(hyof
- component value
- .sp 2P
- .LP
- 37.5
- \fIPermitted Alphabet\fR
- .sp 1P
- .RT
- .PP
- 37.5.1
- The \*QPermittedAlphabet\*U notation shall be:
- .sp 9p
- .RT
- .LP
- PermittedAlphabet ::= FROM SubtypeSpec
- .PP
- 37.5.2
- A \*QPermittedAlphabet\*U value consists of all values which can be
- constructed using a sub\(hyalphabet of the parent string. This notation
- can only be applied to character string types, or to types formed from
- them by tagging or subtyping.
- .sp 9p
- .RT
- .PP
- 37.5.3
- The \*QSubtypeSpec\*U specifies the characters which may appear in
- the character string, and is any subtype specification which can be applied
- to the subtype obtained by applying the subtype specification \*QSIZE(1)\*U
- to the
- parent type.
- .sp 9p
- .RT
- .sp 2P
- .LP
- 37.6
- \fIInner Subtyping\fR
- .sp 1P
- .RT
- .PP
- 37.6.1
- The \*QInnerTypeConstraints\*U notation shall be:
- .sp 9p
- .RT
- .LP
- InnerTypeConstraints ::=
- .LP
- WITH\ COMPONENT\ \|SingleTypeConstraint\ |
- .LP
- WITH\ COMPONENTS\ MultipleTypeConstraints
- .PP
- 37.6.2
- An \*QInnerTypeConstraints\*U includes in the value set only those
- values which satisfy a collection of constraints on the presence and/or
- values of the components of the parent type. A value of the parent type
- is not
- included in the subtype unless it satisfies all of the constraints expressed
- or implied (see \(sc\ 37.6.6). This notation can be applied to the set\(hyof,
- sequence\(hyof, set, sequence and choice types, or types formed from them by
- tagging or subtyping.
- .sp 9p
- .RT
- .PP
- 37.6.3
- For the types which are defined in terms of a single other
- (inner) type (set\(hyof, sequence\(hyof and types derived from them by
- tagging), a
- constraint taking the form of a subtype value specification is provided. The
- notation for this is \*QSingleTypeConstraint\*U:
- .sp 9p
- .RT
- .LP
- SingleTypeConstraint ::= SubtypeSpec
- .PP
- The \*QSubtypeSpec\*U defines a subtype of the single other (inner)
- type. A value of the parent type is a member of the subtype value set if and
- only if each inner value belongs to the subtype obtained by applying the
- \*QSubtypeSpec\*U to the inner type.
- .bp
- .PP
- 37.6.4
- For the types which are defined in terms of multiple other
- (inner) types (choice, set, sequence, and types derived from them by tagging
- or subtyping), a number of constraints on these inner types can be provided.
- The notation for this is \*QMultipleTypeConstraints\*U:
- .sp 9p
- .RT
- .LP
- MultipleTypeConstraints ::=
- .LP
- FullSpecification\ |\ PartialSpecification
- .LP
- FullSpecification ::= {TypeConstraints}
- .LP
- PartialSpecification ::= {\|.\|.\|., TypeConstraints}
- .LP
- TypeConstraints ::=
- .LP
- NamedConstraint\ |
- .LP
- NamedConstraint, TypeConstraints
- .LP
- NamedConstraint ::= identifier Constraint\ |\ Constraint
- .PP
- 37.6.5
- The \*QTypeConstraints\*U contains a list of constraints on the
- component types of the parent type. For a sequence type, the constraints
- must appear in order. The inner type to which the constraint applies is
- identified by means of its identifier, if it has one, or by its position,
- in the case of sequence types.
- .sp 9p
- .RT
- .PP
- \fINote\fR \ \(em\ Where the inner type has no identifier, the notation
- can be ambiguous.
- .PP
- 37.6.6
- The \*QMultipleTypeConstraints\*U comprises either a
- \*QFullSpecification\*U or a \*QPartialSpecification\*U. Where \*QFullSpecification\*U
- is used, there is an implied presence constraint of \*QABSENT\*U on all
- inner types
- not explicitly listed (see \(sc\ 37.6.8), and each inner type which is
- not marked \*QOPTIONAL\*U or \*QDEFAULT\*U in the parent type shall be
- explicitly listed. Where
- \*QPartialSpecification\*U is employed, there are no implied constraints,
- and any inner type can be omitted from the list.
- .sp 9p
- .RT
- .PP
- 37.6.7
- A particular inner type may be constrained in terms of its
- presence (in values of the parent type), its value, or both. The notation is
- \*QConstraint\*U:
- .sp 9p
- .RT
- .LP
- Constraint ::= ValueConstraint PresenceConstraint
- .PP
- 37.6.8
- A constraint on the value of an inner type is expressed by the
- notation \*QValueConstraint\*U:
- .sp 9p
- .RT
- .LP
- ValueConstraint ::= SubtypeSpec\ |\ empty
- .PP
- The constraint is satisfied by a value of the parent type if and only if
- the inner value belongs to the subtype specified by the \*QSubtypeSpec\*U
- applied to the inner type.
- .PP
- 37.6.9
- A constraint on the presence of an inner type shall be
- expressed by the notation \*QPresenceConstraint\*U:
- .sp 9p
- .RT
- .LP
- PresenceConstraint ::= PRESENT\ |\ ABSENT\ |\ empty\ |\ OPTIONAL
- .PP
- The meaning of these alternatives, and the situations in which
- they are permitted, are defined in \(sc\ 37.6.9.1 to \(sc\ 37.6.9.3.
- .sp 1P
- .LP
- 37.6.9.1\ \ If the parent type is a sequence or set, an element type marked
- \*QOPTIONAL\*U may be constrained to be \*QPRESENT\*U (in which case the
- constraint is satisfied if and only if the corresponding element value
- is present) or to be \*QABSENT\*U (in which case the constraint is satisfied
- if and only if the
- corresponding element value is absent or to be \*QOPTIONAL\*U (in which
- case the
- constraint is placed upon the presence of the corresponding element
- value).
- .sp 9p
- .RT
- .sp 1P
- .LP
- 37.6.9.2\ \ If the parent type is a choice, a component type can be
- constrained to be \*QABSENT\*U, in which case the constraint is satisfied
- if and
- only if the corresponding component type is not used in the value.
- .sp 9p
- .RT
- .sp 1P
- .LP
- 37.6.9.3\ \ The meaning of an empty \*QPresenceConstraint\*U depends on
- whether a \*QFullSpecification\*U or a \*QPartialSpecification\*U is being
- employed:
- .sp 9p
- .RT
- .LP
- a)
- in a \*QFullSpecification\*U, this is equivalent to a
- constraint of \*QPRESENT\*U;
- .LP
- b)
- in a \*QPartialSpecification\*U, no constraint is
- imposed.
- .LP
- .bp
-