home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Standards 1993 July / Disc.iso / ccitt / 1988 / troff / 8_4_02.tro < prev    next >
Encoding:
Text File  |  1991-12-22  |  123.2 KB  |  5,810 lines

  1. .rs
  2. .\" Troff code generated by TPS Convert from ITU Original Files
  3. .\"                 Not Copyright (~c) 1991 
  4. .\"
  5. .\" Assumes tbl, eqn, MS macros, and lots of luck.
  6. .TA 1c 2c 3c 4c 5c 6c 7c 8c
  7. .ds CH
  8. .ds CF
  9. .EQ
  10. delim @@
  11. .EN
  12. .nr LL 40.5P
  13. .nr ll 40.5P
  14. .nr HM 3P
  15. .nr FM 6P
  16. .nr PO 4P
  17. .nr PD 9p
  18. .po 4P
  19.  
  20. .rs
  21. \v'|.5i'
  22. .sp 2P
  23. .LP
  24. \fBRecommendation\ X.208\fR 
  25. .RT
  26. .sp 2P
  27. .sp 1P
  28. .ce 1000
  29. \fBSPECIFICATION OF ABSTRACT SYNTAX NOTATION ONE
  30. (ASN.1)\fR 
  31. .FS
  32. Recommendation\ X.208
  33. and ISO\ 8824 [Information processing systems\ \(em\ Open Systems
  34. Interconnection\ \(em\ Specification of Abstract Syntax Notation One\ (ASN.1)] 
  35. as 
  36. extended by Addendum\ 1 to ISO\ 8824, were developed in close cooperation 
  37. and are 
  38. technically aligned.
  39. .FE
  40. .EF '%    Fascicle\ VIII.4\ \(em\ Rec.\ X.208''
  41. .OF '''Fascicle\ VIII.4\ \(em\ Rec.\ X.208    %'
  42. .ce 0
  43. .sp 1P
  44. .ce 1000
  45. \fI(Melbourne, 1988)\fR 
  46. .sp 9p
  47. .RT
  48. .ce 0
  49. .sp 1P
  50. .LP
  51.     The\ CCITT,
  52. .sp 1P
  53. .RT
  54. .sp 1P
  55. .LP
  56. \fIconsidering\fR 
  57. .sp 9p
  58. .RT
  59. .PP
  60. (a)
  61. the variety and complexity of information objects conveyed within the application 
  62. layer; 
  63. .PP
  64. (b)
  65. the need for a high\(hylevel notation for specifying such
  66. information objects;
  67. .PP
  68. (c)
  69. the value of isolating and standardizing the rules for
  70. encoding such information objects,
  71. .sp 1P
  72. .LP
  73. \fIunanimously recommends\fR 
  74. .sp 9p
  75. .RT
  76. .PP
  77. (1)
  78. that the notation for defining the abstract syntax of
  79. information objects is defined in Section\ 1;
  80. .PP
  81. (2)
  82. that character string types are defined in Section 2;
  83. .PP
  84. (3)
  85. that other useful types are defined in Section 3;
  86. .PP
  87. (4)
  88. that subtypes are defined in Section 4.
  89. .sp 1P
  90. .ce 1000
  91. CONTENTS
  92. .ce 0
  93. .sp 1P
  94. .sp 2P
  95. .LP
  96. 0
  97.     \fIIntroduction\fR 
  98. .sp 1P
  99. .RT
  100. .sp 1P
  101. .LP
  102. 1
  103.     \fIScope and field of application\fR 
  104. .sp 9p
  105. .RT
  106. .sp 1P
  107. .LP
  108. 2
  109.     \fIReferences\fR 
  110. .sp 9p
  111. .RT
  112. .sp 1P
  113. .LP
  114. 3
  115.     \fIDefinitions\fR 
  116. .sp 9p
  117. .RT
  118. .sp 1P
  119. .LP
  120. 4
  121.     \fIAbbreviations\fR 
  122. .sp 9p
  123. .RT
  124. .sp 1P
  125. .LP
  126. 5
  127.     \fINotation used in this Recommendation\fR 
  128. .sp 9p
  129. .RT
  130. .LP
  131.     5.1
  132.     Productions
  133. .LP
  134.     5.2
  135.     The alternative collections
  136. .LP
  137.     5.3
  138.     Example of a production
  139. .LP
  140.     5.4
  141.     Layout
  142. .LP
  143.     5.5
  144.     Recursion
  145. .LP
  146.     5.6
  147.     References to a collection of sequences
  148. .LP
  149.     5.7
  150.     References to an item
  151. .LP
  152.     5.8
  153.     Tags
  154. .sp 1P
  155. .LP
  156. 6
  157.     \fIUse of the ASN.1 notation\fR 
  158. .sp 9p
  159. .RT
  160. .sp 2P
  161. .LP
  162. SECTION\ 1\ \(em\ SPECIFICATION\ OF\ ASN.1\ NOTATION
  163. .sp 1P
  164. .RT
  165. .sp 1P
  166. .LP
  167. 7
  168.     \fIThe ASN.1 character set\fR 
  169. .sp 9p
  170. .RT
  171. .sp 1P
  172. .LP
  173. 8
  174.     \fIASN.1 items\fR 
  175. .sp 9p
  176. .RT
  177. .LP
  178.     8.1 
  179.     General rules
  180. .LP
  181.     8.2 
  182.     Type references
  183. .LP
  184.     8.3 
  185.     Identifiers
  186. .LP
  187.     8.4 
  188.     Value references
  189. .LP
  190.     8.5 
  191.     Module reference
  192. .bp
  193. .LP
  194.     8.6 
  195.     Comment
  196. .LP
  197.     8.7 
  198.     Empty item
  199. .LP
  200.     8.8 
  201.     Number item
  202. .LP
  203.     8.9 
  204.     Binary string item
  205. .LP
  206.     8.10
  207.     Hexadecimal string item
  208. .LP
  209.     8.11
  210.     Character string item
  211. .LP
  212.     8.12
  213.     Assignment item
  214. .LP
  215.     8.13
  216.     Single character items
  217. .LP
  218.     8.14
  219.     Keyword items
  220. .sp 1P
  221. .LP
  222. 9
  223.     \fIModule definition\fR 
  224. .sp 9p
  225. .RT
  226. .sp 1P
  227. .LP
  228. 10
  229.     \fIReferencing type and value definitions\fR 
  230. .sp 9p
  231. .RT
  232. .sp 1P
  233. .LP
  234. 11
  235.     \fIAssigning types and values\fR 
  236. .sp 9p
  237. .RT
  238. .sp 1P
  239. .LP
  240. 12
  241.     \fIDefinition of types and values\fR 
  242. .sp 9p
  243. .RT
  244. .sp 1P
  245. .LP
  246. 13
  247.     \fINotation for the Boolean type\fR 
  248. .sp 9p
  249. .RT
  250. .sp 1P
  251. .LP
  252. 14
  253.     \fINotation for the integer type\fR 
  254. .sp 9p
  255. .RT
  256. .sp 1P
  257. .LP
  258. 15
  259.     \fINotation for the enumerated type\fR 
  260. .sp 9p
  261. .RT
  262. .sp 1P
  263. .LP
  264. 16
  265.     \fINotation for the real type\fR 
  266. .sp 9p
  267. .RT
  268. .sp 1P
  269. .LP
  270. 17
  271.     \fINotation for the bitstring type\fR 
  272. .sp 9p
  273. .RT
  274. .sp 1P
  275. .LP
  276. 18
  277.     \fINotation for the octetstring type\fR 
  278. .sp 9p
  279. .RT
  280. .sp 1P
  281. .LP
  282. 19
  283.     \fINotation for the null type\fR 
  284. .sp 9p
  285. .RT
  286. .sp 1P
  287. .LP
  288. 20
  289.     \fINotation for sequence types\fR 
  290. .sp 9p
  291. .RT
  292. .sp 1P
  293. .LP
  294. 21
  295.     \fINotation for sequence\(hyof types\fR 
  296. .sp 9p
  297. .RT
  298. .sp 1P
  299. .LP
  300. 22
  301.     \fINotation for set types\fR 
  302. .sp 9p
  303. .RT
  304. .sp 1P
  305. .LP
  306. 23
  307.     \fINotation for set\(hyof types\fR 
  308. .sp 9p
  309. .RT
  310. .sp 1P
  311. .LP
  312. 24
  313.     \fINotation for choice types\fR 
  314. .sp 9p
  315. .RT
  316. .sp 1P
  317. .LP
  318. 25
  319.     \fINotation for selection types\fR 
  320. .sp 9p
  321. .RT
  322. .sp 1P
  323. .LP
  324. 26
  325.     \fINotation for tagged types\fR 
  326. .sp 9p
  327. .RT
  328. .sp 1P
  329. .LP
  330. 27
  331.     \fINotation for the any type\fR 
  332. .sp 9p
  333. .RT
  334. .sp 1P
  335. .LP
  336. 28
  337.     \fINotation for the object identifier type\fR 
  338. .sp 9p
  339. .RT
  340. .sp 1P
  341. .LP
  342. 29
  343.     \fINotation for character string types\fR 
  344. .sp 9p
  345. .RT
  346. .sp 1P
  347. .LP
  348. 30
  349.     \fINotation for types defined in Section 3\fR 
  350. .sp 9p
  351. .RT
  352. .sp 2P
  353. .LP
  354. SECTION\ 2\ \(em\ CHARACTER\ STRING\ TYPES
  355. .sp 1P
  356. .RT
  357. .sp 1P
  358. .LP
  359. 31
  360.     \fIDefinition of character string types\fR .bp
  361. .sp 9p
  362. .RT
  363. .sp 2P
  364. .LP
  365. SECTION\ 3\ \(em\ USEFUL\ DEFINITIONS
  366. .sp 1P
  367. .RT
  368. .sp 1P
  369. .LP
  370. 32
  371.     \fIGeneralized time\fR 
  372. .sp 9p
  373. .RT
  374. .sp 1P
  375. .LP
  376. 33
  377.     \fIUniversal time\fR 
  378. .sp 9p
  379. .RT
  380. .sp 1P
  381. .LP
  382. 34
  383.     \fIThe external type\fR 
  384. .sp 9p
  385. .RT
  386. .sp 1P
  387. .LP
  388. 35
  389.     \fIThe object descriptor type\fR 
  390. .sp 9p
  391. .RT
  392. .sp 2P
  393. .LP
  394. SECTION\ 4\ \(em\ SUBTYPES
  395. .sp 1P
  396. .RT
  397. .sp 1P
  398. .LP
  399. 36
  400.     \fISubtype notation\fR 
  401. .sp 9p
  402. .RT
  403. .sp 1P
  404. .LP
  405. 37
  406.     \fISubtype Value Sets\fR 
  407. .sp 9p
  408. .RT
  409. .LP
  410.     37.1
  411.     Single Value
  412. .LP
  413.     37.2
  414.     Contained Subtype
  415. .LP
  416.     37.3
  417.     Value Range
  418. .LP
  419.     37.4
  420.     Size Constraint
  421. .LP
  422.     37.5
  423.     Permitted Alphabet
  424. .LP
  425.     37.6
  426.     Inner Subtyping
  427. .sp 1P
  428. .LP
  429. \fIAnnex\ A\fR \ \(em\ The macro notation
  430. .sp 9p
  431. .RT
  432. .LP
  433.     A.1
  434.     Introduction
  435. .LP
  436.     A.2
  437.     Extensions to the ASN.1 character set and items
  438. .LP
  439.     A.2.1
  440.     Macroreference
  441. .LP
  442.     A.2.2
  443.     Productionreference
  444. .LP
  445.     A.2.3
  446.     Localtypereference
  447. .LP
  448.     A.2.4
  449.     Localvaluereference
  450. .LP
  451.     A.2.5
  452.     Alternation item
  453. .LP
  454.     A.2.6
  455.     Definition terminator item
  456. .LP
  457.     A.2.7
  458.     Syntactic terminal item
  459. .LP
  460.     A.2.8
  461.     Syntactic category keyword items
  462. .LP
  463.     A.2.9
  464.     Additional keyword items
  465. .LP
  466.     A.3
  467.     Macro definition notation
  468. .LP
  469.     A.4
  470.     Use of the new notation
  471. .sp 1P
  472. .LP
  473. \fIAnnex\ B\fR \ \(em\ ISO assignment of OBJECT IDENTIFIER
  474. .sp 9p
  475. .RT
  476. .LP
  477. \fIAnnex\ C\fR \ \(em\ CCITT assignment of OBJECT IDENTIFIER
  478. .LP
  479. \fIAnnex\ D\fR \ \(em\ Joint assignment of OBJECT IDENTIFIER
  480. .sp 1P
  481. .LP
  482. \fIAppendix\ I\fR \ \(em\ Examples and hints
  483. .sp 9p
  484. .RT
  485. .LP
  486.     I.1
  487.     Example of a personnel record
  488. .LP
  489.     I.1.1
  490.     Informal Description of Personnel Record
  491. .LP
  492.     I.1.2
  493.     ASN.1 description of the record structure
  494. .LP
  495.     I.1.3
  496.     ASN.1 description of a record value
  497. .LP
  498.     I.2
  499.     Guidelines for use of the notation
  500. .LP
  501.     I.2.1 
  502.     Boolean
  503. .LP
  504.     I.2.2 
  505.     Integer
  506. .LP
  507.     I.2.3 
  508.     Enumerated
  509. .LP
  510.     I.2.4 
  511.     Real
  512. .LP
  513.     I.2.5 
  514.     Bit string
  515. .bp
  516. .LP
  517.     I.2.6 
  518.     Octet string
  519. .LP
  520.     I.2.7 
  521.     Null
  522. .LP
  523.     I.2.8 
  524.     Sequence and sequence\(hyof
  525. .LP
  526.     I.2.9 
  527.     Set
  528. .LP
  529.     I.2.10
  530.     Tagged
  531. .LP
  532.     I.2.11
  533.     Choice
  534. .LP
  535.     I.2.12
  536.     Selection type
  537. .LP
  538.     I.2.13
  539.     Any
  540. .LP
  541.     I.2.14
  542.     External
  543. .LP
  544.     I.2.15
  545.     Encrypted
  546. .LP
  547.     I.3
  548.     An example of the use of the macro notation
  549. .LP
  550.     I.4
  551.     Use in identifying abstract syntaxes
  552. .LP
  553.     I.5
  554.     Subtypes
  555. .sp 1P
  556. .LP
  557. \fIAppendix\ II\fR \ \(em\ Summary of the ASN.1 notation
  558. .sp 9p
  559. .RT
  560. .sp 2P
  561. .LP
  562. \fB0\fR     \fBIntroduction\fR 
  563. .sp 1P
  564. .RT
  565. .PP
  566. In the lower layers of the Basic Reference Model (see
  567. Recommendation\ X.200), each user data parameter of a service primitive is
  568. specified as the binary value of a sequence octets.
  569. .PP
  570. In the presentation layer, the nature of user data parameters changes. 
  571. Application layer specifications require the presentation service user 
  572. data 
  573. (see Recommendation\ X.216) to carry the value of quite complex types, 
  574. possibly including strings of characters from a variety of character sets. 
  575. In order to specify the value which is carried, they require a defined 
  576. notation which does not determine the representation of the value. This 
  577. is supplemented by the 
  578. specification of one or more algorithms called \fBencoding rules\fR which 
  579. determine the value of the session layer octets carrying such application 
  580. layer 
  581. values (called the \fBtransfer syntax\fR ). The presentation layer protocol
  582. (see Recommendation\ X.226) can negotiate which transfer syntaxes are to
  583. be used.
  584. .PP
  585. The purpose of specifying a value is to distinguish it from other
  586. possible values. The collection of the value together with the values from
  587. which it is distinguished is called a \fBtype\fR , and one specific instance 
  588. is a 
  589. value of that type. More generally, a value or type can often be considered 
  590. as composed of several simpler values or types, together with the relationships 
  591. between them. The term datatype is often used as a synonym for type.
  592. .PP
  593. In order to correctly interpret the representation of a value (whether 
  594. by marks on paper or bits on communication line), it is necessary to know 
  595. (usually from the context), the type of the value being represented. Thus 
  596. the identification of a type is an important part of this Recommendation. 
  597. .PP
  598. A very general technique for defining a complicated type is to define a 
  599. small number of \fBsimple types\fR by defining all possible values of the 
  600. simple types, then combining these simple types in various ways. Some of 
  601. the ways of defining new types are as follows: 
  602. .RT
  603. .LP
  604.     a)
  605.     given an (ordered) list of existing types, a value can be
  606. formed as an (ordered) sequence of values, one from each of the existing 
  607. types; the collection of all possible values obtained in this way is a 
  608. new type; (if the existing types in the list are all distinct, this mechanism 
  609. can be extended to allow omission of some values from the list); 
  610. .LP
  611.     b)
  612.     given a list of (distinct) existing types, a value can be
  613. formed as an (unordered) set of values, one from each of the existing types;
  614. the collection of all possible values obtained in this way is a new type; 
  615. (the mechanism can again be extended to allow omission of some values); 
  616. .LP
  617.     c)
  618.     given a single existing type, a value can be formed
  619. (ordered) sequence or (unordered) set of zero, one or more values of the
  620. existing type; the (infinite) collection of all possible values obtained in
  621. this way is a new type;
  622. .LP
  623.     d)
  624.      given a list of (distinct) types, a value can be chosen from any one 
  625. of them; the set of all possible values obtained in this way is a new type; 
  626. .LP
  627.     e)
  628.      given a type, a new type can be formed as a subset of it by using some 
  629. structure or order relationship among the values; 
  630. .PP
  631. Types which are defined in this way are called \fBstructured
  632. types\fR .
  633. .bp
  634. .PP
  635. Every type defined using the notation specified in this Recommendation 
  636. is assigned a \fBtag\fR . The tag is defined either by this Recommendation 
  637. or by the user of the notation. 
  638. .PP
  639. It is common for the same tag to be assigned to many different types, the 
  640. particular type being identified by the context in which the tag 
  641. is used.
  642. .PP
  643. The user of the notation may choose to assign distinct tags to two
  644. occurrences of a single type, thereby creating two distinct types. This 
  645. can be necessary when it is required to distinguish which choice has been 
  646. made in 
  647. situations such as\ d) above.
  648. .PP
  649. Four classes of tag are specified in the notation.
  650. .PP
  651. The first is the \fBuniversal\fR class. Universal class tags are only used 
  652. as specified within this Recommendation, and each tag is either 
  653. .RT
  654. .LP
  655.     a)
  656.     assigned to a single type; or
  657. .LP
  658.     b)
  659.     assigned to a construction mechanism.
  660. .PP
  661. The second class of tag is the \fBapplication\fR class. Application
  662. class tags are assigned to types by other standards or Recommendations. 
  663. Within a particular standard or Recommendation, an application class tag 
  664. is assigned to only one type. 
  665. .PP
  666. The third class is the \fBprivate\fR class. Private class tags are never 
  667. assigned by ISO Standards or CCITT Recommendations. Their use is 
  668. enterprise specific.
  669. .PP
  670. The final class of tag is the \fBcontext\(hyspecific\fR class. This is 
  671. freely assigned within any use of this notation, and is interpreted according 
  672. to the context in which it is used. 
  673. .PP
  674. Tags are mainly intended for machine use, and are not essential for
  675. the human notation defined in this Recommendation. Where, however, it is
  676. necessary to require that certain types be distinct, this is expressed by
  677. requiring that they have distinct tags. The allocation of tags is therefore 
  678. an important part of the use of this notation. 
  679. .PP
  680. \fINote 1\fR \ \(em\ All types which can be defined in the notation of this
  681. Recommendation have a tag. Given any type, the user of the notation can 
  682. define a new type with a different tag. 
  683. .PP
  684. \fINote 2\fR \ \(em\ Encoding rules always carry the tag of a type, explicitly 
  685. or implicitly, with any representation of a value of the type. The restrictions 
  686. placed on the use of the notation are designed to ensure that the tag is 
  687. sufficient to unambiguously determine the actual type, provided the applicable 
  688. type of definitions are available. 
  689. .PP
  690. This Recommendation specifies a notation which both enables
  691. complicated types to be defined and also enables values of these types to be
  692. specified. This is done without determining the way an instance of this type
  693. is to be represented (by a sequence of octets) during transfer. A notation
  694. which provides this facility is called a \fBnotation for abstract syntax
  695. definition\fR .
  696. .PP
  697. The purpose of this Recommendation is to specify a notation for
  698. abstract syntax definition called \fBAbstract Syntax Notation One\fR , 
  699. or ASN.1. 
  700. Abstract Syntax Notation One is used as a semi\(hyformal tool to define 
  701. protocols. The use of the notation does not necessarily preclude ambiguous 
  702. specifications. It is the responsibility of the users of the notation to 
  703. ensure that their 
  704. specifications are not ambiguous.
  705. .PP
  706. This Recommendation is supported by other standards and
  707. Recommendations which specify encoding rules. The application of encoding 
  708. rules to the value of a type defined by ASN.1 results in a complete specification 
  709. of the representation of values of that type during transfer (a transfer 
  710. syntax).
  711. .PP
  712. This Recommendation is technically and editorially aligned with
  713. ISO\ 8824 plus Addendum\ 1 to ISO\ 8824.
  714. .PP
  715. Section one of this Recommendation defines the simple types supported by 
  716. ASN.1, and specifies the notation to be used for referencing simple types 
  717. and defining structured types. Section one also specifies the notation to be
  718. used for specifying values of types defined using ASN.1.
  719. .PP
  720. Section two of this Recommendation defines additional types (character 
  721. string types) which, by the application of encoding rules for character 
  722. sets, can be equated with the octetstring type. 
  723. .PP
  724. Section three of this Recommendation defines certain structured types which 
  725. are considered to be of general utility, but which require no additional 
  726. encoding rules. 
  727. .PP
  728. Section four of this Recommendation defines a notation which enables subtypes 
  729. to be defined from the values of a parent type. 
  730. .PP
  731. Annex\ A is part of this Recommendation, and specifies a notation for extending 
  732. the basic\ ASN.1 notation. This is called the macro facility. 
  733. .PP
  734. Annex\ B is part of this Recommendation, and defines the object
  735. identifier tree for authorities supported by ISO.
  736. .bp
  737. .PP
  738. Annex\ C is part of this Recommendation and defines the object
  739. identifier tree for authorities supported by CCITT.
  740. .PP
  741. Annex\ D is part of this Recommendation and defines the object
  742. identifier tree for joint use by ISO and CCITT.
  743. .PP
  744. Appendix\ I is not part of this Recommendation, and provides examples and 
  745. hints on the use of the ASN.1 notation. 
  746. .PP
  747. Appendix\ II is not part of this Recommendation, and provides a summary 
  748. of ASN.1 using the notation of\ \(sc\ 5. 
  749. .PP
  750. The text of this Recommendation, and in particular the annexes B to D, 
  751. are the subject of joint ISO\(hyCCITT agreement. 
  752. .RT
  753. .sp 2P
  754. .LP
  755. \fB1\fR     \fBScope and field of application\fR 
  756. .sp 1P
  757. .RT
  758. .PP
  759. This Recommendation specifies a notation for abstract syntax
  760. definition called Abstract Syntax Notation One (ASN.1).
  761. .PP
  762. This Recommendation defines a number of simple types, with their tags, 
  763. and specifies a notation for referencing these types and for specifying 
  764. values of these types. 
  765. .PP
  766. This Recommendation defines mechanisms for constructing new types from 
  767. more basic types, and specifies a notation for defining such structured 
  768. types and assigning them tags, and for specifying values of these types. 
  769. .PP
  770. This Recommendation defines character sets for use within
  771. ASN.1.
  772. .PP
  773. This Recommendation defines a number of useful types (using ASN.1),
  774. which can be referenced by users of ASN.1.
  775. .PP
  776. The ASN.1 notation can be applied whenever it is necessary to define the 
  777. abstract syntax of information. It is particularly, but not exclusively, 
  778. applicable to application protocols.
  779. .PP
  780. The ASN.1 notation is also referenced by other presentation layer
  781. standards and Recommendations which define encoding rules for the simple 
  782. types, the structured types, the character string types and the useful 
  783. types defined in\ ASN.1. 
  784. .RT
  785. .sp 2P
  786. .LP
  787. \fB2\fR     \fBReferences\fR 
  788. .sp 1P
  789. .RT
  790. .LP
  791. [1]
  792.      Recommendation\ X.200, \fIReference Model of Open Systems Interconnection\fR 
  793. \fIfor CCITT Applications\fR \| 
  794. (see also ISO\ 7498).
  795. .LP
  796. [2]
  797.     Recommendation\ X.209, \fISpecification of Basic Encoding Rules for\fR 
  798. \fIAbstract Syntax Notation One (ASN.1)\fR \|
  799. (see also ISO\ 8825).
  800. .LP
  801. [3]
  802.     Recommendation\ X.216, (see also ISO\ 8822), \fIPresentation Service\fR 
  803. \fIDefinition for Open Systems Interconnection for CCITT Applications\fR .
  804. .LP
  805. [4]
  806.     Recommendation\ X.226, \fIPresentation Protocol Specification for Open\fR 
  807. \fISystems Interconnection for CCITT Applications\fR \|
  808. (see also ISO\ 8823).
  809. .LP
  810. [5]
  811.     ISO\ 2014, \fIWriting of calendar dates in all\(hynumeric form\fR .
  812. .LP
  813. [6]
  814.     ISO\ 2375, \fIData processing\ \(em\ Procedure for registration of escape\fR 
  815. \fIsequences\fR .
  816. .LP
  817. [7]
  818.     ISO\ 3166, \fICodes for the representation of names of countries\fR .
  819. .LP
  820. [8]
  821.      ISO\ 3307, \fIInformation interchange\ \(em\ Representations of time 
  822. of the\fR 
  823. \fIday\fR .
  824. .LP
  825. [9]
  826.     ISO\ 4031, \fIInformation interchange\ \(em\ Representation of local time\fR 
  827. \fIdifferentials\fR .
  828. .LP
  829. [10]
  830.     ISO\ 6523, \fIData interchange\ \(em\ Structure for identification of\fR 
  831. \fIorganizations\fR .
  832. .LP
  833. [11]
  834.      Recommendation\ X.121, \fIInternational numbering plan for public data\fR 
  835. \fInetworks\fR . 
  836. .sp 2P
  837. .LP
  838. \fB3\fR     \fBDefinitions\fR 
  839. .sp 1P
  840. .RT
  841. .PP
  842. The definitions in Recommendation\ X.200 are used in this
  843. Recommendation.
  844. .RT
  845. .sp 1P
  846. .LP
  847. 3.1
  848.     \fBvalue\fR 
  849. .sp 9p
  850. .RT
  851. .PP
  852. A distinguished member of a set of values.
  853. .bp
  854. .RT
  855. .sp 1P
  856. .LP
  857. 3.2
  858.     \fBtype\fR 
  859. .sp 9p
  860. .RT
  861. .PP
  862. A named set of values.
  863. .RT
  864. .sp 1P
  865. .LP
  866. 3.3
  867.     \fBsimple type\fR 
  868. .sp 9p
  869. .RT
  870. .PP
  871. A type defined by directly specifying the set of its
  872. values.
  873. .RT
  874. .sp 1P
  875. .LP
  876. 3.4
  877.     \fBstructured type\fR 
  878. .sp 9p
  879. .RT
  880. .PP
  881. A type defined by reference to one or more other types.
  882. .RT
  883. .sp 1P
  884. .LP
  885. 3.5
  886.     \fBcomponent type\fR 
  887. .sp 9p
  888. .RT
  889. .PP
  890. One of the types referenced when defining a structured type.
  891. .RT
  892. .sp 1P
  893. .LP
  894. 3.6
  895.     \fBtag\fR 
  896. .sp 9p
  897. .RT
  898. .PP
  899. A type denotation which is associated with every ASN.1 type.
  900. .RT
  901. .sp 1P
  902. .LP
  903. 3.7
  904.     \fBtagging\fR 
  905. .sp 9p
  906. .RT
  907. .PP
  908. Replacing the existing (possibly the default) tag of a type by a specified 
  909. tag. 
  910. .RT
  911. .sp 1P
  912. .LP
  913. 3.8
  914.     \fBASN.1 character set\fR 
  915. .sp 9p
  916. .RT
  917. .PP
  918. The set of characters, specified in\ \(sc\ 7, used in the ASN.1
  919. notation.
  920. .RT
  921. .sp 1P
  922. .LP
  923. 3.9
  924.     \fBitems\fR 
  925. .sp 9p
  926. .RT
  927. .PP
  928. Named sequences of characters from the ASN.1 character set,
  929. specified in\ \(sc\ 8, which are used to form the ASN.1 notation.
  930. .RT
  931. .sp 1P
  932. .LP
  933. 3.10
  934.     \fBtype (or value) reference name\fR 
  935. .sp 9p
  936. .RT
  937. .PP
  938. A name associated uniquely with a type (or value) within some
  939. context.
  940. .PP
  941. \fINote\fR \ \(em\ Reference names are assigned to the types defined in this
  942. Recommendation; these are universally available within ASN.1. Other reference 
  943. names are defined in other standards and Recommendations, and are applicable 
  944. only in the context of the standard or Recommendation.
  945. .RT
  946. .sp 1P
  947. .LP
  948. 3.11
  949.     \fBASN.1 encoding rules\fR 
  950. .sp 9p
  951. .RT
  952. .PP
  953. Rules which specify the representation during transfer of the
  954. value of any ASN.1 type; ASN.1 encoding rules enable information being
  955. transferred to be identified by the recipient as a specific value of a 
  956. specific ASN.1 type. 
  957. .RT
  958. .sp 1P
  959. .LP
  960. 3.12
  961.     \fBcharacter string type\fR 
  962. .sp 9p
  963. .RT
  964. .PP
  965. A type whose values are strings of characters from some defined
  966. character set.
  967. .RT
  968. .sp 1P
  969. .LP
  970. 3.13
  971.     \fBBoolean type\fR 
  972. .sp 9p
  973. .RT
  974. .PP
  975. A simple type with two distinguished values.
  976. .RT
  977. .sp 1P
  978. .LP
  979. 3.14
  980.     \fBtrue\fR 
  981. .sp 9p
  982. .RT
  983. .PP
  984. One of the distinguished values of the Boolean type.
  985. .RT
  986. .sp 1P
  987. .LP
  988. 3.15
  989.     \fBfalse\fR 
  990. .sp 9p
  991. .RT
  992. .PP
  993. The other distinguished value of the Boolean type.
  994. .bp
  995. .RT
  996. .sp 1P
  997. .LP
  998. 3.16
  999.     \fBinteger type\fR 
  1000. .sp 9p
  1001. .RT
  1002. .PP
  1003. A simple type with distinguished values which are the positive and negative 
  1004. whole numbers, including zero (as a single value). 
  1005. .PP
  1006. \fINote\fR \ \(em\ Particular encoding rules limit the range of an integer, 
  1007. but such limitations are chosen so as not to affect any user of ASN.1. 
  1008. .RT
  1009. .sp 1P
  1010. .LP
  1011. 3.17
  1012.     \fBenumerated type\fR 
  1013. .sp 9p
  1014. .RT
  1015. .PP
  1016. A simple type whose values are given distinct identifiers as part of the 
  1017. type notation. 
  1018. .RT
  1019. .sp 1P
  1020. .LP
  1021. 3.18
  1022.     \fBreal type\fR 
  1023. .sp 9p
  1024. .RT
  1025. .PP
  1026. A simple type whose distinguished values (specified in\ \(sc\ 16.2) are 
  1027. members of the set of real numbers. 
  1028. .RT
  1029. .sp 1P
  1030. .LP
  1031. 3.19
  1032.     \fBbitstring type\fR 
  1033. .sp 9p
  1034. .RT
  1035. .PP
  1036. A simple type whose distinguished values are an ordered sequence of zero, 
  1037. one or more bits. 
  1038. .PP
  1039. \fINote\fR \ \(em\ Encoding rules do not limit the number of bits in a
  1040. bit\(hystring.
  1041. .RT
  1042. .sp 1P
  1043. .LP
  1044. 3.20
  1045.     \fBoctetstring type\fR 
  1046. .sp 9p
  1047. .RT
  1048. .PP
  1049. A simple type whose distinguished values are an ordered sequence of zero, 
  1050. one or more octets, each octet being an ordered sequence of eight 
  1051. bits.
  1052. .PP
  1053. \fINote\fR \ \(em\ Encoding rules do not limit the number of octets in 
  1054. an octet string. 
  1055. .RT
  1056. .sp 1P
  1057. .LP
  1058. 3.21
  1059.     \fBnull type\fR 
  1060. .sp 9p
  1061. .RT
  1062. .PP
  1063. A simple type consisting of a single value, also called null.
  1064. .PP
  1065. \fINote\fR \ \(em\ The null value is commonly used where several alternatives
  1066. are possible, but none of them apply.
  1067. .RT
  1068. .sp 1P
  1069. .LP
  1070. 3.22
  1071.     \fBsequence type\fR 
  1072. .sp 9p
  1073. .RT
  1074. .PP
  1075. A structured type, defined by referencing a fixed, ordered, list of types 
  1076. (some of which may be declared to be optional); each value of the new type 
  1077. is an ordered list of values, one from each component type. 
  1078. .PP
  1079. \fINote\fR \ \(em\ Where a component type is declared to be optional, a 
  1080. value of the new type need not contain a value of that component type. 
  1081. .RT
  1082. .sp 1P
  1083. .LP
  1084. 3.23
  1085.     \fBsequence\(hyof type\fR 
  1086. .sp 9p
  1087. .RT
  1088. .PP
  1089. A structured type, defined by referencing a single existing type; each 
  1090. value in the new type is an ordered list of zero, one or more values of 
  1091. the existing type.
  1092. .PP
  1093. \fINote\fR \ \(em\ Encoding rules do not limit the number of values in a
  1094. sequence\(hyof value.
  1095. .RT
  1096. .sp 1P
  1097. .LP
  1098. 3.24
  1099.     \fBset type\fR 
  1100. .sp 9p
  1101. .RT
  1102. .PP
  1103. A structured type, defined by referencing a fixed, unordered, list of distinct 
  1104. types (some of which may be declared to be optional); each value in the 
  1105. new type is an unordered list of values, one from each of the component 
  1106. types.
  1107. .PP
  1108. \fINote\fR \ \(em\ Where a component type is declared to be optional, the new
  1109. type need not contain a value of that component type.
  1110. .RT
  1111. .sp 1P
  1112. .LP
  1113. 3.25
  1114.     \fBset\(hyof type\fR 
  1115. .sp 9p
  1116. .RT
  1117. .PP
  1118. A structured type, defined by referencing a single existing type; each 
  1119. value in the new type is an unordered list zero, one or more values of 
  1120. the existing type. 
  1121. .PP
  1122. \fINote\fR \ \(em\ Encoding rules do not limit the number of values in 
  1123. a set\(hyof value. 
  1124. .bp
  1125. .RT
  1126. .sp 1P
  1127. .LP
  1128. 3.26
  1129.     \fBtagged type\fR 
  1130. .sp 9p
  1131. .RT
  1132. .PP
  1133. A type defined by referencing a single existing type and a tag;
  1134. the new type is isomorphic to the existing type, but is distinct from
  1135. it.
  1136. .RT
  1137. .sp 1P
  1138. .LP
  1139. 3.27
  1140.     \fBchoice type\fR 
  1141. .sp 9p
  1142. .RT
  1143. .PP
  1144. A structured type, defined by referencing a fixed, unordered, list of distinct 
  1145. types; each value of the new type is a value of one of the 
  1146. component types.
  1147. .RT
  1148. .sp 1P
  1149. .LP
  1150. 3.28
  1151.     \fBselection type\fR 
  1152. .sp 9p
  1153. .RT
  1154. .PP
  1155. A structured type, defined by reference to a component type of a   choice type.
  1156. .RT
  1157. .sp 1P
  1158. .LP
  1159. 3.29
  1160.     \fBany type\fR 
  1161. .sp 9p
  1162. .RT
  1163. .PP
  1164. A choice type whose component types are unspecified, but are
  1165. restricted to the set of types which can be defined using ASN.1.
  1166. .RT
  1167. .sp 1P
  1168. .LP
  1169. 3.30
  1170.     \fBexternal type\fR 
  1171. .sp 9p
  1172. .RT
  1173. .PP
  1174. A type whose distinguished values cannot be deduced from their
  1175. characterisation as external, but which can be deduced from the encoding of
  1176. such a value; the value may, but need not, be describable using ASN.1, 
  1177. and thus their encoding may, but need not, conform to ASN.1 encoding rules. 
  1178. .RT
  1179. .sp 1P
  1180. .LP
  1181. 3.31
  1182.     \fBinformation object\fR 
  1183. .sp 9p
  1184. .RT
  1185. .PP
  1186. A well\(hydefined piece of information, definition, or specification which 
  1187. requires a name in order to identify its use in an instance of 
  1188. communication.
  1189. .RT
  1190. .sp 1P
  1191. .LP
  1192. 3.32
  1193.     \fBobject identifier\fR 
  1194. .sp 9p
  1195. .RT
  1196. .PP
  1197. A value (distinguishable from all other such values) which is
  1198. associated with an information object.
  1199. .RT
  1200. .sp 1P
  1201. .LP
  1202. 3.33
  1203.     \fBobject identifier type\fR 
  1204. .sp 9p
  1205. .RT
  1206. .PP
  1207. A type whose distinguished values are the set of all object
  1208. identifiers allocated in accordance with the rules of this Recommendation.
  1209. .PP
  1210. \fINote\fR \ \(em\ The rules of this Recommendation permit a wide range of
  1211. authorities to independently associate object identifiers with information
  1212. objects.
  1213. .RT
  1214. .sp 1P
  1215. .LP
  1216. 3.34
  1217.     \fBobject descriptor type\fR 
  1218. .sp 9p
  1219. .RT
  1220. .PP
  1221. A type whose distinguished values are human\(hyreadable text
  1222. providing a brief description of an information object.
  1223. .PP
  1224. \fINote\fR \ \(em\ An object descriptor value is usually, but not always
  1225. associated with a single information object. Only an object identifier value
  1226. unambiguously identifies an information object.
  1227. .RT
  1228. .sp 1P
  1229. .LP
  1230. 3.35
  1231.     \fBrecursive definitions\fR 
  1232. .sp 9p
  1233. .RT
  1234. .PP
  1235. A set of ASN.1 definitions which cannot be reordered so that all types 
  1236. used in a construction are defined before the definition of the 
  1237. construction.
  1238. .PP
  1239. \fINote\fR \ \(em\ Recursive definitions are allowed in ASN.1: the user 
  1240. of the notation has the responsibility of ensuring that those values (of 
  1241. the resulting types) which are used have a finite representation. 
  1242. .RT
  1243. .sp 1P
  1244. .LP
  1245. 3.36
  1246.     \fBmodule\fR 
  1247. .sp 9p
  1248. .RT
  1249. .PP
  1250. One or more instances of the use of the ASN.1 notation for type
  1251. and value definition, encapsulated using the ASN.1 module notation
  1252. (see\ \(sc\ 9).
  1253. .bp
  1254. .RT
  1255. .sp 1P
  1256. .LP
  1257. 3.37
  1258.     \fBproduction\fR 
  1259. .sp 9p
  1260. .RT
  1261. .PP
  1262. A part of the formal notation used to specify ASN.1, in which
  1263. allowed sequences of items are associated with a name which can be used to
  1264. reference those sequences in the definition of new sets of allowed
  1265. sequences.
  1266. .RT
  1267. .sp 1P
  1268. .LP
  1269. 3.38
  1270.     \fBCoordinated Universal Time (UTC)\fR 
  1271. .sp 9p
  1272. .RT
  1273. .PP
  1274. The time scale maintained by the Bureau Internationale de l'Heure (International 
  1275. Time Bureau) that forms the basis of a coordinated dissemination of standard 
  1276. frequencies and time signals. 
  1277. .PP
  1278. \fINote 1\fR \ \(em\ The source of this definition is Recommendation\ 460\(hy2 
  1279. of 
  1280. the Consultative Committee on International Radio (CCIR). CCIR has also 
  1281. defined the acronym for Coordinated Universal Time as UTC. 
  1282. .PP
  1283. \fINote 2\fR \ \(em\ UTC is also referred to as Greenwich Mean Time and
  1284. appropriate time signals are regularly broadcast.
  1285. .RT
  1286. .sp 1P
  1287. .LP
  1288. 3.39
  1289.     \fBuser (of ASN.1)\fR 
  1290. .sp 9p
  1291. .RT
  1292. .PP
  1293. The individual or organization that defines the abstract syntax of a particular 
  1294. piece of information using ASN.1. 
  1295. .RT
  1296. .sp 1P
  1297. .LP
  1298. 3.40
  1299.     \fBsubtype (of a parent type)\fR 
  1300. .sp 9p
  1301. .RT
  1302. .PP
  1303. A type whose values are specified as a subset of the values of
  1304. some other type (the parent type).
  1305. .RT
  1306. .sp 1P
  1307. .LP
  1308. 3.41
  1309.     \fBparent type (of a subtype)\fR 
  1310. .sp 9p
  1311. .RT
  1312. .PP
  1313. Type used to define a subtype.
  1314. .PP
  1315. \fINote\fR \ \(em\ The parent type may itself be a subtype of some other
  1316. type.
  1317. .RT
  1318. .sp 1P
  1319. .LP
  1320. 3.42
  1321.     \fBsubtype specification\fR 
  1322. .sp 9p
  1323. .RT
  1324. .PP
  1325. A notation which can be used in association with the notation for a type, 
  1326. to define a subtype of that type. 
  1327. .RT
  1328. .sp 1P
  1329. .LP
  1330. 3.43
  1331.     \fBsubtype value set\fR 
  1332. .sp 9p
  1333. .RT
  1334. .PP
  1335. A notation forming part of a subtype specification, specifying a set of 
  1336. values of the parent type which are to be included in the 
  1337. subtype.
  1338. .RT
  1339. .PP
  1340. 3.44
  1341. This Recommendation uses the following terms defined in
  1342. Recommendation\ X.216:
  1343. .sp 9p
  1344. .RT
  1345. .LP
  1346.     a)
  1347.     presentation data value; and
  1348. .LP
  1349.     b)
  1350.     (an) abstract syntax; and
  1351. .LP
  1352.     c)
  1353.     abstract syntax name; and
  1354. .LP
  1355.     d)
  1356.     transfer syntax name.
  1357. .PP
  1358. 3.45
  1359. This Recommendation also uses the following terms defined in
  1360. ISO\ 6523;
  1361. .sp 9p
  1362. .RT
  1363. .LP
  1364.     a)
  1365.     issuing organization; and
  1366. .LP
  1367.     b)
  1368.     organization code; and
  1369. .LP
  1370.     c)
  1371.     International Code Designator.
  1372. .PP
  1373. 3.46
  1374. This Recommendation uses the following term defined in
  1375. Recommendation\ X.226:
  1376. .sp 9p
  1377. .RT
  1378. .LP
  1379.     a)
  1380.     presentation context identifier.
  1381. .sp 2P
  1382. .LP
  1383. \fB4\fR     \fBAbbreviations\fR 
  1384. .sp 1P
  1385. .RT
  1386. .PP
  1387. ASN.1
  1388.     Abstract Syntax Notation One.
  1389. .RT
  1390. .LP
  1391.     UTC
  1392.     Coordinated Universal Time.
  1393. .LP
  1394.     ICD
  1395.     International Code Designator.
  1396. .LP
  1397.     DCC
  1398.     Data Country Code
  1399. .LP
  1400.     DNIC
  1401.     Data Network Identification Code.
  1402. .bp
  1403. .sp 2P
  1404. .LP
  1405. \fB5\fR     \fBNotation used in this Recommendation\fR 
  1406. .sp 1P
  1407. .RT
  1408. .PP
  1409. The ASN.1 notation consists of a sequence of characters from the
  1410. ASN.1 character set specified in\ \(sc\ 7.
  1411. .PP
  1412. Each use of the ASN.1 notation contains characters from the ASN.1
  1413. character set grouped into items. Clause\ 8 specifies all the sequences of
  1414. characters forming ASN.1 items, and names each item.
  1415. .PP
  1416. The ASN.1 notation is specified in\ \(sc\ 9 (and following clauses) by
  1417. specifying the collection of sequences of items which form valid instances 
  1418. of the ASN.1 notation, and by specifying the semantics of each sequence. 
  1419. .PP
  1420. In order to specify these collections, this Recommendation uses a
  1421. formal notation defined in the following sub\(hyclauses.
  1422. .RT
  1423. .sp 1P
  1424. .LP
  1425. 5.1
  1426.     \fIProductions\fR 
  1427. .sp 9p
  1428. .RT
  1429. .PP
  1430. A new (more complex) collection of ASN.1 sequences is defined by
  1431. means of a production. This uses the names of collections of sequences 
  1432. defined in this Recommendation and forms a new collection of sequences 
  1433. by specifying 
  1434. either
  1435. .RT
  1436. .LP
  1437.     a)
  1438.      that the new collection of sequences is to consist of any of the original 
  1439. collections; or 
  1440. .LP
  1441.     b)
  1442.      that the new collection is to consist of any sequence which can be generated 
  1443. by taking exactly one sequence from each collection, and 
  1444. juxtaposing them in a specified order.
  1445. .PP
  1446. Each production consists of the following parts, on one or
  1447. several lines, in order:
  1448. .LP
  1449.     a)
  1450.     a name for the new collection of sequences;
  1451. .LP
  1452.     b)
  1453.     the characters
  1454. .sp 1P
  1455. .ce 1000
  1456. ::=
  1457. .ce 0
  1458. .sp 1P
  1459. .LP
  1460.     c)
  1461.     one or more alternative collections of sequences, defined as
  1462. in\ \(sc\ 5.2, separated by the character
  1463. .sp 1P
  1464. .ce 1000
  1465. |
  1466. .ce 0
  1467. .sp 1P
  1468. .PP
  1469. A sequence is present in the new collection if it is present in
  1470. one or more of the alternative collections. The new collection is referenced 
  1471. in this Recommendation by the name in\ a) above. 
  1472. .PP
  1473. \fINote\fR \ \(em\ If the same sequence appears in more than one alternative,
  1474. any semantic ambiguity in the resulting notation is resolved by other parts 
  1475. of the complete ASN.1 sequence. 
  1476. .RT
  1477. .sp 1P
  1478. .LP
  1479. 5.2
  1480.     \fIThe alternative collections\fR 
  1481. .sp 9p
  1482. .RT
  1483. .PP
  1484. Each of the alternative collections of sequences in \*Qone or more
  1485. alternative collections of\*U is specified by a list of names. Each name is
  1486. either the name of an item, or is the name of a collection of sequences 
  1487. defined by a production in this Recommendation. 
  1488. .PP
  1489. The collection of sequences defined by the alternative consists of all 
  1490. sequences obtained by taking any one of the sequences (or the item) associated 
  1491. with the first name, in combination with (and followed by) any one of the 
  1492. sequences (or item) associated with the second name, in combination with 
  1493. (and followed by) any one of the sequences (or item) associated with the 
  1494. third name, and so on up to and including the last name (or item) in the 
  1495. alternative.
  1496. .RT
  1497. .sp 1P
  1498. .LP
  1499. 5.3
  1500.     \fIExample of a\fR 
  1501. \fIproduction\fR 
  1502. .sp 9p
  1503. .RT
  1504. .LP
  1505.     BitStringValue ::=
  1506. .LP
  1507.     bstring\ |
  1508. .LP
  1509. hstring\ |
  1510. .LP
  1511. {IdentifierList}
  1512. .LP
  1513. is a production which associates with the name \fBBitStringValue\fR the
  1514. following sequences:
  1515. .LP
  1516.     a)
  1517.     any bstring (an item); and
  1518. .LP
  1519.     b)
  1520.     any hstring (an item); and
  1521. .LP
  1522.     c)
  1523.      any sequence associated with \fBIdentifierList\fR , preceded by a\ { 
  1524. and followed by a\ } 
  1525. .PP
  1526. \fINote\fR \ \(em\ { and } are the names of items containing the single
  1527. characters { and } (see \(sc\ 8).
  1528. .PP
  1529. In this example, \fBIdentifierList\fR would be defined by a further
  1530. production, either before or after production defining
  1531. \fBBitStringValue\fR .
  1532. .RT
  1533. .sp 1P
  1534. .LP
  1535. 5.4
  1536.     \fILayout\fR 
  1537. .sp 9p
  1538. .RT
  1539. .PP
  1540. Each production used in this Recommendation is preceded and
  1541. followed by an empty line. Empty lines do not appear within productions. The
  1542. production may be on a single line, or may be spread over several lines. 
  1543. Layout is not significant. 
  1544. .bp
  1545. .RT
  1546. .sp 1P
  1547. .LP
  1548. 5.5
  1549.     \fIRecursion\fR 
  1550. .sp 9p
  1551. .RT
  1552. .PP
  1553. The productions in this Recommendation are frequently recursive. In this 
  1554. case the productions are to be continously reapplied until no new 
  1555. sequences are generated.
  1556. .PP
  1557. \fINote\fR \ \(em\ In many cases, such reapplication results in an unbounded
  1558. collection of allowed sequences, some or all of which may themselves be
  1559. unbounded. This is not an error.
  1560. .RT
  1561. .sp 1P
  1562. .LP
  1563. 5.6
  1564.     \fIReferences to a collection of sequences\fR 
  1565. .sp 9p
  1566. .RT
  1567. .PP
  1568. This Recommendation references a collection of sequences (part of the ASN.1 
  1569. notation) by referencing the first name (before the\ ::=) in a 
  1570. production; the name is surrounded by\ \*Q to distinguish it from natural 
  1571. language text, unless it appears as part of a production. 
  1572. .RT
  1573. .sp 1P
  1574. .LP
  1575. 5.7
  1576.     \fIReferences to an item\fR 
  1577. .sp 9p
  1578. .RT
  1579. .PP
  1580. This Recommendation references an item by referencing the name of the item; 
  1581. the name is surrounded by\ \*Q to distinguish it from natural language 
  1582. text, unless it appears as part of a production. 
  1583. .RT
  1584. .ce
  1585. \fBH.T. [T1.208]\fR 
  1586. .ce
  1587. TABLE\ 1/X.208
  1588. .ce
  1589. \fBUniversal class tag assignments\fR 
  1590. .ps 9
  1591. .vs 11
  1592. .nr VS 11
  1593. .nr PS 9
  1594. .TS
  1595. center box;
  1596. lw(72p) | lw(72p) .
  1597. UNIVERSAL 1    Boolean type  
  1598. .T&
  1599. lw(72p) | lw(72p) .
  1600. UNIVERSAL 2    Integer type
  1601. .T&
  1602. lw(72p) | lw(72p) .
  1603. UNIVERSAL 3    Bitstring type
  1604. .T&
  1605. lw(72p) | lw(72p) .
  1606. UNIVERSAL 4    Octetstring type
  1607. .T&
  1608. lw(72p) | lw(72p) .
  1609. UNIVERSAL 5    Null type
  1610. .T&
  1611. lw(72p) | lw(72p) .
  1612. UNIVERSAL 6    Object identifier type
  1613. .T&
  1614. lw(72p) | lw(72p) .
  1615. UNIVERSAL 7    Object descriptor type
  1616. .T&
  1617. lw(72p) | lw(72p) .
  1618. UNIVERSAL 8    External type
  1619. .T&
  1620. lw(72p) | lw(72p) .
  1621. UNIVERSAL 9    Real type
  1622. .T&
  1623. lw(72p) | lw(72p) .
  1624. UNIVERSAL 10    Enumerated type
  1625. .T&
  1626. lw(72p) | lw(72p) .
  1627. UNIVERSAL 12 \*`a 15    T{
  1628. Reserved for future versions of this
  1629. Recommendation
  1630. T}
  1631. .T&
  1632. lw(72p) | lw(72p) .
  1633. UNIVERSAL 16    T{
  1634. Sequence and Sequence\(hyof types
  1635. T}
  1636. .T&
  1637. lw(72p) | lw(72p) .
  1638. UNIVERSAL 17    Set and Set\(hyof types
  1639. .T&
  1640. lw(72p) | lw(72p) .
  1641. UNIVERSAL 18\(hy22, 25\(hy27    Character string types
  1642. .T&
  1643. lw(72p) | lw(72p) .
  1644. UNIVERSAL 23\(hy24    Time types
  1645. .T&
  1646. lw(72p) | lw(72p) .
  1647. UNIVERSAL 28\(hy.\|.\|.    T{
  1648. Reserved for future versions of this
  1649. Recommendation
  1650. T}
  1651. _
  1652. .TE
  1653. .nr PS 9
  1654. .RT
  1655. .ad r
  1656. \fBTable 1/X.208 [T1.208], p.\fR 
  1657. .sp 1P
  1658. .RT
  1659. .ad b
  1660. .RT
  1661. .sp 1P
  1662. .LP
  1663. 5.8
  1664.     \fITags\fR 
  1665. .sp 9p
  1666. .RT
  1667. .PP
  1668. A tag is specified by giving its class and the number within the
  1669. class. The class is one of
  1670. .RT
  1671. .LP
  1672.     universal
  1673. .LP
  1674. application
  1675. .LP
  1676. private
  1677. .LP
  1678. context\(hyspecific
  1679. .PP
  1680. The number is a non\(hynegative integer, specified in decimal
  1681. notation.
  1682. .PP
  1683. Restrictions on tags assigned by the user of ASN.1 are specified
  1684. in \(sc\ 26.
  1685. .bp
  1686. .PP
  1687. Tags in the universal class are assigned in such a way that, for
  1688. structured types, the top\(hylevel structure can be deduced from the tag, 
  1689. and for simple types, the type can be deduced from the tag. Table\ 1/X.208 
  1690. summarises 
  1691. the assignment of tags in the universal class which are specified in this
  1692. Recommendation.
  1693. .PP
  1694. \fINote\fR \ \(em\ Additional tags in the universal class are reserved for
  1695. assignment by future versions of this Recommendation.
  1696. .RT
  1697. .sp 2P
  1698. .LP
  1699. \fB6\fR     \fBUse of the ASN.1 notation\fR 
  1700. .sp 1P
  1701. .RT
  1702. .PP
  1703. 6.1
  1704. The ASN.1 notation for a type definition shall be
  1705. \*QType\*U (see \(sc\ 12.1).
  1706. .sp 9p
  1707. .RT
  1708. .PP
  1709. 6.2
  1710. The ASN.1 notation for a value of a type shall be
  1711. \*QValue\*U (see \(sc\ 12.7).
  1712. .sp 9p
  1713. .RT
  1714. .PP
  1715. \fINote\fR \ \(em\ It is not in general possible to interpret the value
  1716. notation without knowledge of the type.
  1717. .PP
  1718. 6.3
  1719. The ASN.1 notation for assigning a type to a type reference name shall 
  1720. be \*QTypeassignment\*U (see\ \(sc\ 11.1). 
  1721. .sp 9p
  1722. .RT
  1723. .PP
  1724. 6.4
  1725. The ASN.1 notation for assigning a value reference name shall be \*QValueassignment\*U 
  1726. (see\ \(sc\ 11.2). 
  1727. .sp 9p
  1728. .RT
  1729. .PP
  1730. 6.5
  1731. The notation \*QTypeassignment\*U and \*QValueassignment\*U shall only 
  1732. be used within the notation \*QModuleDefinition\*U (but see\ \(sc\ 9.1). 
  1733. .sp 9p
  1734. .RT
  1735. .sp 1P
  1736. .ce 1000
  1737. SECTION\ 1\ \(em\ SPECIFICATION\ OF\ ASN.1\ NOTATION
  1738. .ce 0
  1739. .sp 1P
  1740. .sp 2P
  1741. .LP
  1742. \fB7\fR     \fBThe\fR 
  1743. \fBASN.1 character set\fR 
  1744. .sp 1P
  1745. .RT
  1746. .PP
  1747. 7.1
  1748. An ASN.1 item shall consist of a sequence of the characters listed in Table\ 
  1749. 2/X.208, except as specified in\ \(sc\ 7.2 and\ \(sc\ 7.3. 
  1750. .sp 9p
  1751. .RT
  1752. .ce
  1753. \fBH.T. [T2.208]\fR 
  1754. .ce
  1755. TABLE\ 2/X.208
  1756. .ce
  1757. \fBASN.1 characters\fR 
  1758. .ps 9
  1759. .vs 11
  1760. .nr VS 11
  1761. .nr PS 9
  1762. .TS
  1763. center box;
  1764. lw(36p) .
  1765. A to Z  
  1766. .T&
  1767. lw(36p) .
  1768. a to z \fR  
  1769. .T&
  1770. lw(36p) .
  1771. 0 to 9 \fR
  1772. .T&
  1773. lw(36p) .
  1774. T{
  1775. \fB:\fR
  1776. = \fB,\fR
  1777. {\|} < \fB.\fR
  1778. T}
  1779. .T&
  1780. lw(36p) .
  1781. T{
  1782. (\|) [\|] \fB\(hy\fR
  1783. \fB'\fR
  1784. \fB\*U\fR
  1785. T}
  1786. _
  1787. .TE
  1788. .nr PS 9
  1789. .RT
  1790. .ad r
  1791. \fBTable 2/X.208 [T2.208], p.\fR 
  1792. .sp 1P
  1793. .RT
  1794. .ad b
  1795. .RT
  1796. .PP
  1797. \fINote\ 1\fR \ \(em\ The additional characters > and\ |\ are used in the
  1798. macro\(hynotation (see Annex\ A).
  1799. .PP
  1800. \fINote\ 2\fR \ \(em\ Where equivalent derivative standards are develped by
  1801. national standards bodies, additional characters may appear in the following
  1802. items (the last five of which are defined in Annex\ A):
  1803. .RT
  1804. .LP
  1805.     typereference
  1806.     (\(sc\ 8.2.1)
  1807. .LP
  1808.     identifier
  1809.     (\(sc\ 8.3)
  1810. .LP
  1811.     Valuereference
  1812.     (\(sc\ 8.4)
  1813. .LP
  1814.     modulereference
  1815.     (\(sc\ 8.5)
  1816. .LP
  1817.     macroreference
  1818.     (\(sc\ A.2.1)
  1819. .LP
  1820.     productionreference
  1821.     (\(sc\ A.2.2)
  1822. .LP
  1823.     localtypereference 
  1824.     (\(sc\ A.2.3)
  1825. .LP
  1826.     localvaluereference
  1827.     (\(sc\ A.2.4)
  1828. .LP
  1829.     astring
  1830.     (\(sc\ A.2.7)
  1831. .bp
  1832. .PP
  1833. \fINote\ 3\fR \ \(em\ When additional characters are introduced to
  1834. accommodate a language in which the distinction between upper\(hycase and
  1835. lower\(hycase letters is without meaning, the syntactic distinction achieved by
  1836. dictating the case of the first character of certain of the above ASN.1 
  1837. items has to be achieved in some other way. 
  1838. .PP
  1839. 7.2
  1840. Where the notation used to specify the value of a character string type, 
  1841. all characters of the defined character set can appear in the ASN.1 
  1842. notation, surrounded by the characters\ \*U. (See\ \(sc\ 8.11.)
  1843. .sp 9p
  1844. .RT
  1845. .PP
  1846. 7.3
  1847. Additional characters may appear in the \*Qcomment\*U item.
  1848. (See\ \(sc\ 8.6.)
  1849. .sp 9p
  1850. .RT
  1851. .PP
  1852. 7.4
  1853. There shall be no significance placed on the typographical style, size, 
  1854. colour, intensity, or other display characteristics. 
  1855. .sp 9p
  1856. .RT
  1857. .PP
  1858. 7.5
  1859. The upper and lower case letters shall be regarded as
  1860. distinct.
  1861. .sp 9p
  1862. .RT
  1863. .LP
  1864. \fB8\fR     \fBASN.1 items\fR 
  1865. .sp 1P
  1866. .RT
  1867. .sp 2P
  1868. .LP
  1869. 8.1
  1870.     \fIGeneral rules\fR 
  1871. .sp 1P
  1872. .RT
  1873. .PP
  1874. 8.1.1 
  1875. The following subclauses specify the characters in ASN.1 items. In each 
  1876. case the name of the item is given, together with the definition of the 
  1877. character sequences which form the item.
  1878. .sp 9p
  1879. .RT
  1880. .PP
  1881. \fINote\fR \ \(em\ Annex A specifies additional items used in the macro
  1882. notation.
  1883. .PP
  1884. 8.1.2 
  1885. Each item specified in the following subclauses shall appear
  1886. on a single line, and (except for the \*Qcomment\*U item) shall not contain
  1887. spaces.
  1888. .sp 9p
  1889. .RT
  1890. .PP
  1891. 8.1.3 
  1892. The length of a line is not restricted.
  1893. .sp 9p
  1894. .RT
  1895. .PP
  1896. 8.1.4 
  1897. The items in the sequences specified by this Recommendation (the ASN.1 
  1898. notation) may appear on one line or may appear on several lines, and may 
  1899. be separated by one or more spaces or empty lines. 
  1900. .sp 9p
  1901. .RT
  1902. .PP
  1903. 8.1.5 
  1904. An item shall be separated from a following item by a space, or by being 
  1905. placed on a separate line, if the initial character (or characters) of 
  1906. the following item is a permitted character (or characters) for inclusion at
  1907. the end of the characters in the earlier item.
  1908. .sp 9p
  1909. .RT
  1910. .sp 1P
  1911. .LP
  1912. 8.2
  1913.     \fIType references\fR 
  1914. .sp 9p
  1915. .RT
  1916. .PP
  1917. Name of item\(hytypereference.
  1918. .RT
  1919. .PP
  1920. 8.2.1 
  1921. A \*Qtypereference\*U shall consist of an arbitrary number (one or
  1922. more) of letters, digits, and hyphens. The initial character shall be an
  1923. upper\(hycase letter. A hyphen shall not be the last character. A hyphen 
  1924. shall not be immediately followed by another hyphen. 
  1925. .sp 9p
  1926. .RT
  1927. .PP
  1928. \fINote\fR \ \(em\ The rules concerning hyphen are designed to avoid
  1929. ambiguity with (possibly following) comment.
  1930. .PP
  1931. 8.2.2 
  1932. A \*Qtypereference\*U shall not be one of the reserved character
  1933. sequences listed in Table\ 3/X.208.
  1934. .sp 9p
  1935. .RT
  1936. .PP
  1937. \fINote\fR \ \(em\ \(sc\ A.2.9 specifies additional reserved character 
  1938. sequences when within a macro definition. 
  1939. .sp 1P
  1940. .LP
  1941. 8.3
  1942.     \fIIdentifiers\fR 
  1943. .sp 9p
  1944. .RT
  1945. .PP
  1946. Name of item\(hyidentifier.
  1947. .PP
  1948. An \*Qidentifier\*U shall consist of an arbitrary number (one or more) 
  1949. of letters, digits, and hyphens. The initial character shall be a lower\(hycase 
  1950. letter. A hyphen shall not be the last character. A hyphen shall not be
  1951. immediately followed by another hyphen.
  1952. .PP
  1953. \fINote\fR \ \(em\ The rules concerning hyphen are designed to avoid ambiguity 
  1954. with (possibly following) comment. 
  1955. .bp
  1956. .RT
  1957. .ce
  1958. (CCS)
  1959. .ce
  1960. .parag
  1961. .ce
  1962.  
  1963. .ce
  1964. (A1)  \ \ 
  1965. .ce
  1966. TABLEAUX: 7
  1967. .ce
  1968. .line
  1969. .ce
  1970. FORMULES: 0 
  1971. .ce
  1972. .line
  1973. .ce
  1974. codification
  1975. .ce
  1976. 16.03.89
  1977. .ce
  1978. CR
  1979. .ce
  1980. .parag
  1981. .ce
  1982. Saisie
  1983. .ce
  1984. 17.03.89
  1985. .ce
  1986. BM
  1987. .ce
  1988. .parag
  1989. .ce
  1990. Corrections
  1991. .ce
  1992. 21.03.89
  1993. .ce
  1994. DD
  1995. .ce
  1996. .parag
  1997. .ce
  1998. FO Ins\*'er\*'ees
  1999. .ce
  2000. ........
  2001. .ce
  2002. ..
  2003. .ce
  2004. .parag
  2005. .ce
  2006. MAJ disquettes
  2007. .ce
  2008. ........
  2009. .ce
  2010. ..
  2011. .ce
  2012. .parag
  2013. .ce
  2014. \fBH.T. [T1.208]\fR 
  2015. .ce
  2016. TABLE\ 1/X.208
  2017. .ce
  2018. \fBUniversal class tag assignments\fR 
  2019. .ps 9
  2020. .vs 11
  2021. .nr VS 11
  2022. .nr PS 9
  2023. .TS
  2024. center box;
  2025. lw(72p) | lw(72p) .
  2026. UNIVERSAL 1    Boolean type  
  2027. .T&
  2028. lw(72p) | lw(72p) .
  2029. UNIVERSAL 2    Integer type
  2030. .T&
  2031. lw(72p) | lw(72p) .
  2032. UNIVERSAL 3    Bitstring type
  2033. .T&
  2034. lw(72p) | lw(72p) .
  2035. UNIVERSAL 4    Octetstring type
  2036. .T&
  2037. lw(72p) | lw(72p) .
  2038. UNIVERSAL 5    Null type
  2039. .T&
  2040. lw(72p) | lw(72p) .
  2041. UNIVERSAL 6    Object identifier type
  2042. .T&
  2043. lw(72p) | lw(72p) .
  2044. UNIVERSAL 7    Object descriptor type
  2045. .T&
  2046. lw(72p) | lw(72p) .
  2047. UNIVERSAL 8    External type
  2048. .T&
  2049. lw(72p) | lw(72p) .
  2050. UNIVERSAL 9    Real type
  2051. .T&
  2052. lw(72p) | lw(72p) .
  2053. UNIVERSAL 10    Enumerated type
  2054. .T&
  2055. lw(72p) | lw(72p) .
  2056. UNIVERSAL 12 \*`a 15    T{
  2057. Reserved for future versions of this
  2058. Recommendation
  2059. T}
  2060. .T&
  2061. lw(72p) | lw(72p) .
  2062. UNIVERSAL 16    T{
  2063. Sequence and Sequence\(hyof types
  2064. T}
  2065. .T&
  2066. lw(72p) | lw(72p) .
  2067. UNIVERSAL 17    Set and Set\(hyof types
  2068. .T&
  2069. lw(72p) | lw(72p) .
  2070. UNIVERSAL 18\(hy22, 25\(hy27    Character string types
  2071. .T&
  2072. lw(72p) | lw(72p) .
  2073. UNIVERSAL 23\(hy24    Time types
  2074. .T&
  2075. lw(72p) | lw(72p) .
  2076. UNIVERSAL 28\(hy.\|.\|.    T{
  2077. Reserved for future versions of this
  2078. Recommendation
  2079. T}
  2080. _
  2081. .TE
  2082. .nr PS 9
  2083. .RT
  2084. .ad r
  2085. \fBTableau 3/X.208 [T3.208], p. 3\fR 
  2086. .sp 1P
  2087. .RT
  2088. .ad b
  2089. .RT
  2090. .sp 1P
  2091. .LP
  2092. .sp 5
  2093. 8.4
  2094.     \fIValue references\fR 
  2095. .sp 9p
  2096. .RT
  2097. .PP
  2098. Name of item\(hyvaluereference.
  2099. .PP
  2100. A \*Qvaluereference\*U shall consist of the sequence of characters
  2101. specified for an \*Qidentifier\*U in\ \(sc\ 8.3. In analysing an instance 
  2102. of use of this notation, a \*Qvaluereference\*U is distinguished from an 
  2103. \*Qidentifier\*U by the 
  2104. context in which it appears.
  2105. .RT
  2106. .sp 1P
  2107. .LP
  2108. 8.5
  2109.     \fIModule reference\fR 
  2110. .sp 9p
  2111. .RT
  2112. .PP
  2113. Name of item\(hymodulereference.
  2114. .PP
  2115. A \*Qmodulereference\*U shall consist of the sequence of characters
  2116. specified for a \*Qtypereference\*U in\ \(sc\ 8.2. In analysing an instance 
  2117. of use of 
  2118. this notation, a \*Qmodulereference\*U is distinguished from a \*Qtypereference\*U 
  2119. by the context in which it appears. 
  2120. .RT
  2121. .sp 1P
  2122. .LP
  2123. 8.6
  2124.     \fIComment\fR 
  2125. .sp 9p
  2126. .RT
  2127. .PP
  2128. Name of item\(hycomment.
  2129. .RT
  2130. .PP
  2131. 8.6.1 
  2132. A \*Qcomment\*U is not referenced in the definition of the ASN.1
  2133. notation. It may, however, appear at any time between other ASN.1 items, and
  2134. has no significance.
  2135. .bp
  2136. .sp 9p
  2137. .RT
  2138. .PP
  2139. 8.6.2 
  2140. A \*Qcomment\*U shall commence with a pair of adjacent hyphens and
  2141. shall end with the next pair of adjacent hyphens or at the end of the line,
  2142. whichever occurs first. A comment shall not contain a pair of adjacent 
  2143. hyphens other than the pair which opens it and the pair, if any, which 
  2144. ends it. It may include characters which are not in the character set specified 
  2145. in\ \(sc\ 7.1 
  2146. (see\ \(sc\ 7.3).
  2147. .sp 9p
  2148. .RT
  2149. .sp 1P
  2150. .LP
  2151. 8.7
  2152.     \fIEmpty item\fR 
  2153. .sp 9p
  2154. .RT
  2155. .PP
  2156. Name of item\(hyempty.
  2157. .PP
  2158. The \*Qempty\*U item contains no characters. It is used in the notation
  2159. of\ \(sc\ 5 when alternative sets of sequences are specified, to indicate that
  2160. absence of all aternatives is possible.
  2161. .RT
  2162. .sp 1P
  2163. .LP
  2164. 8.8
  2165.     \fINumber item\fR 
  2166. .sp 9p
  2167. .RT
  2168. .PP
  2169. Name of item\(hynumber.
  2170. .PP
  2171. A \*Qnumber\*U shall consist of one or more digits. The first digit shall 
  2172. not be zero unless the \*Qnumber\*U is a single digit. 
  2173. .RT
  2174. .sp 1P
  2175. .LP
  2176. 8.9
  2177.     \fIBinary string item\fR 
  2178. .sp 9p
  2179. .RT
  2180. .PP
  2181. Name of item\(hybstring.
  2182. .PP
  2183. A \*Qbstring\*U shall consist of an arbitrary number (possibly zero) of
  2184. zeros and ones, preceded by a single\ ' and followed by the pair of
  2185. characters:
  2186. .RT
  2187. .sp 1P
  2188. .ce 1000
  2189. 'B
  2190. .ce 0
  2191. .sp 1P
  2192. .LP
  2193.     \fIExample:\fR     '01101100'B
  2194. .sp 1P
  2195. .LP
  2196. 8.10
  2197.     \fIHexadecimal string item\fR 
  2198. .sp 9p
  2199. .RT
  2200. .PP
  2201. Name of item\(hyhstring.
  2202. .RT
  2203. .PP
  2204. 8.10.1
  2205. An \*Qhstring\*U shall consist of an arbitrary number (possibly
  2206. zero) of the characters
  2207. .sp 9p
  2208. .RT
  2209. .sp 1P
  2210. .ce 1000
  2211. A\ B\ C\ D\ E\ F\ 0\ 1\ 2\ 3\ 4\ 5\ 6\ 7\ 8\ 9
  2212. .ce 0
  2213. .sp 1P
  2214. .PP
  2215. preceded by a single\ ' and followed by the pair of
  2216. characters
  2217. .sp 1P
  2218. .ce 1000
  2219. 'H
  2220. .ce 0
  2221. .sp 1P
  2222. .LP
  2223.     \fIExample:\fR     'AB0196'H
  2224. .PP
  2225. 8.10.2
  2226. Each character is used to denote the value of a semi\(hyoctet using a hexadecimal 
  2227. representation. 
  2228. .sp 9p
  2229. .RT
  2230. .sp 1P
  2231. .LP
  2232. 8.11
  2233.     \fICharacter string item\fR 
  2234. .sp 9p
  2235. .RT
  2236. .PP
  2237. Name of item\(hycstring.
  2238. .PP
  2239. A \*Qcstring\*U shall consist of an arbitrary number (possibly zero) of
  2240. characters from the character set referenced by a character string type,
  2241. preceded and followed by\ \*U. If the character set includes the character\ 
  2242. \*U, this character shall be represented in the \*Qcstring\*U by a pair 
  2243. of\ \*U. The character set involved is not limited to the character set 
  2244. listed in Table\ 2/X.208, 
  2245. but is determined by the type for which the \*Qcstring\*U is a value
  2246. (see\ \(sc\ 7.2).
  2247. .RT
  2248. .LP
  2249.     \fIExample:\fR     \fBMONTAGE\fR 
  2250. .sp 1P
  2251. .LP
  2252. 8.12
  2253.     \fIAssignment item\fR 
  2254. .sp 9p
  2255. .RT
  2256. .PP
  2257. Name of item\(hy\*U::=\*U
  2258. .PP
  2259. This item shall consist of the sequence of characters
  2260. .RT
  2261. .sp 1P
  2262. .ce 1000
  2263. ::=
  2264. .ce 0
  2265. .sp 1P
  2266. .PP
  2267. \fINote\fR \ \(em\ This sequence does not contain any space characters
  2268. (see\ \(sc\ 8.1.2).
  2269. .bp
  2270. .sp 1P
  2271. .LP
  2272. 8.13
  2273.     \fISingle character items\fR 
  2274. .sp 9p
  2275. .RT
  2276. .PP
  2277. Names of items\(hy
  2278. .RT
  2279. .LP
  2280. {
  2281. }
  2282. <
  2283. ,
  2284. .
  2285. (
  2286. )
  2287. [
  2288. ]
  2289. \(hy\ (hyphen)
  2290. ;
  2291. .PP
  2292. An item with any of the names listed above shall consist of the
  2293. single character forming the name.
  2294. .sp 1P
  2295. .LP
  2296. 8.14
  2297.     \fIKeyword items\fR 
  2298. .sp 9p
  2299. .RT
  2300. .PP
  2301. Names of items\ \(em
  2302. .RT
  2303. .LP
  2304.     BOOLEAN
  2305. .LP
  2306.     INTEGER
  2307. .LP
  2308.     BIT
  2309. .LP
  2310.     STRING
  2311. .LP
  2312.     OCTET
  2313. .LP
  2314.     NULL
  2315. .LP
  2316.     SEQUENCE
  2317. .LP
  2318.     OF
  2319. .LP
  2320.     SET
  2321. .LP
  2322.     IMPLICIT
  2323. .LP
  2324.     CHOICE
  2325. .LP
  2326.     ANY
  2327. .LP
  2328.     EXTERNAL
  2329. .LP
  2330.     OBJECT
  2331. .LP
  2332.     IDENTIFIER
  2333. .LP
  2334.     OPTIONAL
  2335. .LP
  2336.     DEFAULT
  2337. .LP
  2338.     COMPONENTS
  2339. .LP
  2340.     UNIVERSAL
  2341. .LP
  2342.     APPLICATION
  2343. .LP
  2344.     PRIVATE
  2345. .LP
  2346.     TRUE
  2347. .LP
  2348.     FALSE
  2349. .LP
  2350.     BEGIN
  2351. .LP
  2352.     END
  2353. .LP
  2354.     DEFINITIONS
  2355. .LP
  2356.     EXPLICIT
  2357. .LP
  2358.     ENUMERATED
  2359. .LP
  2360.     EXPORTS
  2361. .LP
  2362.     IMPORTS
  2363. .LP
  2364.     REAL
  2365. .LP
  2366.     INCLUDES
  2367. .LP
  2368.     MIN
  2369. .LP
  2370.     MAX
  2371. .LP
  2372.     SIZE
  2373. .LP
  2374.     FROM
  2375. .bp
  2376. .LP
  2377.     WITH
  2378. .LP
  2379.     COMPONENT
  2380. .LP
  2381.     PRESENT
  2382. .LP
  2383.     ABSENT
  2384. .LP
  2385.     DEFINED
  2386. .LP
  2387.     BY
  2388. .LP
  2389.     PLUS\(hyINFINITY
  2390. .LP
  2391.     MINUS\(hyINFINITY
  2392. .LP
  2393.     TAGS
  2394. .PP
  2395. Items with the above names shall consist of the sequence of
  2396. characters in the name.
  2397. .PP
  2398. \fINote\ 1\fR \ \(em\ Spaces do not occur in these sequences.
  2399. .PP
  2400. \fINote\ 2\fR \ \(em\ Where these sequences are not listed as reserved 
  2401. sequences in\ \(sc\ 8.2.2, they are distinguished from other items containing 
  2402. the same 
  2403. characters by the context in which they appear.
  2404. .RT
  2405. .sp 2P
  2406. .LP
  2407. \fB9\fR     \fBModule definition\fR 
  2408. .sp 1P
  2409. .RT
  2410. .PP
  2411. 9.1
  2412. A \*QModuleDefinition\*U is specified by the following
  2413. productions:
  2414. .sp 9p
  2415. .RT
  2416. .LP
  2417.     ModuleDefinition ::=
  2418. .LP
  2419.     ModuleIdentifier
  2420. .LP
  2421. DEFINITIONS
  2422. .LP
  2423. TagDefault
  2424. .LP
  2425. \*Q::=\*U
  2426. .LP
  2427. BEGIN
  2428. .LP
  2429. ModuleBody
  2430. .LP
  2431. END
  2432. .LP
  2433.     TagDefault ::=
  2434. .LP
  2435.     EXPLICIT\ TAGS\ |
  2436. .LP
  2437. IMPLICIT TAGS\ |
  2438. .LP
  2439. empty
  2440. .LP
  2441.     ModuleIdentifier ::=
  2442. .LP
  2443.     modulereference
  2444. .LP
  2445. AssignedIdentifier
  2446. .LP
  2447.     AssignedIdentifier ::=
  2448. .LP
  2449.     ObjectIdentifierValue\ |
  2450. .LP
  2451. empty
  2452. .LP
  2453.     ModuleBody ::=
  2454. .LP
  2455.     Exports Imports AssignmentList\ |
  2456. .LP
  2457. empty
  2458. .LP
  2459.     Exports ::=
  2460. .LP
  2461.     EXPORTS SymbolsExported;\ |
  2462. .LP
  2463. empty
  2464. .LP
  2465.     SymbolsExported ::=
  2466. .LP
  2467.     SymbolList\ |
  2468. .LP
  2469. empty
  2470. .LP
  2471.     Imports ::=
  2472. .LP
  2473.     IMPORTS SymbolsImported;\ |
  2474. .LP
  2475. empty
  2476. .LP
  2477.     SymbolsImported ::=
  2478. .LP
  2479.     SymbolsFromModuleList\ |
  2480. .LP
  2481. empty
  2482. .bp
  2483. .LP
  2484.     SymbolsFromModuleList ::=
  2485. .LP
  2486.     SymbolsFromModule SymbolsFromModuleList\ |
  2487. .LP
  2488. SymbolsFromModule
  2489. .LP
  2490.     SymbolsFromModule ::=
  2491. .LP
  2492.     SymbolList FROM ModuleIdentifier
  2493. .LP
  2494.     SymbolList ::= Symbol, SymbolList\ |\ Symbol
  2495. .LP
  2496.     Symbol ::=\fR typereference\ |\ valuereference
  2497. .LP
  2498.     AssignmentList ::=
  2499. .LP
  2500.     Assignment AssignmentList\ |
  2501. .LP
  2502. Assignment
  2503. .LP
  2504.     Assignment ::=
  2505. .LP
  2506.     TypeAssignment\ |\ ValueAssignment
  2507. .PP
  2508. \fINote\ 1\fR \ \(em\ Annex A specifies a \*QMacroDefinition\*U sequence which
  2509. can also appear in the \*QAssignmentList\*U. Notations defined by a macro
  2510. definition may appear before or after the macro definition, within the same
  2511. module.
  2512. .PP
  2513. \fINote\ 2\fR \ \(em\ In individual (but deprecated) cases, and for examples 
  2514. and for the definition of types with universal class tags, the \*QModuleBody\*U 
  2515. can be used outside of a \*QModuleDefinition\*U. 
  2516. .PP
  2517. \fINote\ 3\fR \ \(em\ \*QTypeassignment\*U and \*QValueassignment\*U productions 
  2518. are 
  2519. specified in\ \(sc\ 11.
  2520. .PP
  2521. \fINote\ 4\fR \ \(em\ The grouping of ASN.1 datatypes into modules does not
  2522. necessarily determine the formation of presentation data values into named
  2523. abstract syntaxes for the purpose of presentation context definition.
  2524. .PP
  2525. \fINote\ 5\fR \ \(em\ The value of \*QTagDefault\*U for the module definition 
  2526. affects only those types defined explicitly in the module. It does not 
  2527. affect the 
  2528. interpretation of imported types.
  2529. .PP
  2530. \fINote\ 6\fR \ \(em\ A \*Qmacroreference\*U (see Annex\ A), can also appear 
  2531. as a 
  2532. \*QSymbol\*U.
  2533. .RT
  2534. .PP
  2535. 9.2
  2536. The \*QTagDefault\*U is taken as \*QEXPLICIT TAGS\*U if it is \*Qempty\*U.
  2537. .sp 9p
  2538. .RT
  2539. .PP
  2540. \fINote\fR \ \(em\ \(sc 26 gives the meaning of both \*QEXPLICIT TAGS\*U and
  2541. \*QIMPLICIT\ TAGS\*U.
  2542. .PP
  2543. 9.3
  2544. The \*Qmodulereference\*U appearing in the \*QModuleDefinition\*U
  2545. production is called the module name. Module names are chosen so as to 
  2546. ensure consistency and completeness of all \*QAssignment\*U sequences appearing 
  2547. within the \*QModuleBody\*U of all \*QModuleDefinition\*U sequences with 
  2548. this module name. A set of \*QAssignment\*U sequences is consistent and 
  2549. complete if, for every 
  2550. \*Qtypereference\*U or \*Qvaluereference\*U appearing within it, there 
  2551. is exactly one \*QTypeassignment\*U or \*QValueassignment\*U (respectively) 
  2552. associating the name with a type or value (respectively), or exactly one 
  2553. \*QSymbolsFromModule\*U in 
  2554. which the \*Qtypereference\*U or \*Qvaluereference\*U (respectively) appears 
  2555. as a 
  2556. \*QSymbol\*U.
  2557. .sp 9p
  2558. .RT
  2559. .PP
  2560. 9.4
  2561. Module names should be used only once (except as specified
  2562. in\ \(sc\ 9.10) within the sphere of interest of the definition of the
  2563. module.
  2564. .sp 9p
  2565. .RT
  2566. .PP
  2567. \fINote\fR \ \(em\ It is recommended that modules defined in ISO Standards 
  2568. should have module names of the form 
  2569. .sp 1P
  2570. .ce 1000
  2571. ISOxxxx\(hyyyyy
  2572. .ce 0
  2573. .sp 1P
  2574. .LP
  2575. where xxxx is the number of the Standard, and yyyy is a suitable
  2576. acronym for the Standard (e.g.\ JTM, FTAM, or CCR). A similar convention 
  2577. can be applied by other standards\(hymaking bodies. 
  2578. .PP
  2579. 9.5
  2580. If the \*QAssignedIdentifier\*U includes an \*QObjectIdentifierValue\*U, 
  2581. the latter unambiguously and uniquely identifies the module. 
  2582. .sp 9p
  2583. .RT
  2584. .PP
  2585. \fINote\fR \ \(em\ It is recommended that an object identifier be assigned 
  2586. so that others can unambiguously refer to the module. 
  2587. .bp
  2588. .PP
  2589. 9.6
  2590. The \*QModuleIdentifier\*U in a \*QSymbolsFromModule\*U shall appear in
  2591. the \*QModuleDefinition\*U of another module, except that if it includes an
  2592. \*QObjectIdentifierValue\*U, the \*Qmodulereference\*U may differ in the two
  2593. cases.
  2594. .sp 9p
  2595. .RT
  2596. .PP
  2597. \fINote\ 1\fR \ \(em\ A different \*Qmodulereference\*U from that used in the
  2598. other module should only be used when symbols are to be imported from two
  2599. modules with the same name modules (the modules being named in disregard of
  2600. clause\ 9.4). The use of alternative distinct names makes these names available 
  2601. for use in the body of the module\ (see\ \(sc\ 9.8). 
  2602. .PP
  2603. \fINote\ 2\fR \ \(em\ When both a \*Qmodulereference\*U and an
  2604. \*QObjectIdentifierValue\*U are used in referencing a module, the latter 
  2605. shall be considered definitive. 
  2606. .RT
  2607. .PP
  2608. 9.7
  2609. Each \*QSymbolsExported\*U shall be defined in the module being
  2610. constructed.
  2611. .sp 9p
  2612. .RT
  2613. .PP
  2614. \fINote\fR \ \(em\ It is recommended that every symbol to which reference
  2615. from outside the module is appropriate be included in the \*QSymbolsExported\*U. 
  2616. If there are no such symbols, then the \*Qempty\*U alternative of \*QSymbolsExported\*U 
  2617. (not of \*QExports\*U) should be selected.
  2618. .PP
  2619. 9.8
  2620. Each \*QSymbolsFromModule\*U shall be defined in the module denoted by 
  2621. the \*QModuleIdentifier\*U in \*QSymbolsFromModule\*U. If \*QExports\*U 
  2622. is used in the 
  2623. definition of that module, the \*QSymbol\*U shall appear in its
  2624. \*QSymbolsExported\*U.
  2625. .sp 9p
  2626. .RT
  2627. .PP
  2628. 9.9
  2629. A \*QSymbol\*U in a \*QSymbolsFromModule\*U may appear in \*QModuleBody\*U 
  2630. in a \*QDefinedType\*U (if it is a \*Qtypereference\*U) or \*QDefinedValue\*U 
  2631. (if it is a 
  2632. \*Qvaluereference\*U). The meaning associated with \*QSymbol\*U also appears 
  2633. in an 
  2634. \*QAssignmentList\*U (deprecated), or appears in one or more instances of
  2635. \*QSymbolsFromModule\*U, it shall only be used in a \*QExternalTypeReference\*U 
  2636. or 
  2637. \*QExternalValueReference\*U whose \*Qmodulereference\*U is that in \*QSymbolsFromModule\*U 
  2638. (see\ \(sc\ 9.10). Where it does not so appear, it may be used in a \*QDefinedType\*U 
  2639. or \*QDefinedValue\*U directly. 
  2640. .sp 9p
  2641. .RT
  2642. .PP
  2643. 9.10
  2644. Except as specified in \(sc\ 9.9, a \*Qtypereference\*U or
  2645. \*Qvaluereference\*U shall be referenced in a module different from that 
  2646. in which it is defined by using an \*QExternaltypereference\*U or \*QExternalvaluereference\*U, 
  2647. specified by the following productions: 
  2648. .sp 9p
  2649. .RT
  2650. .LP
  2651.     Externaltypereference ::=
  2652. .LP
  2653.     modulereference
  2654. .LP
  2655. typereference
  2656. .LP
  2657.     Externalvaluereference ::=
  2658. .LP
  2659.     modulereference
  2660. .LP
  2661. valuereference
  2662. .sp 2P
  2663. .LP
  2664. \fB10\fR     \fBReferencing type and value definitions\fR 
  2665. .sp 1P
  2666. .RT
  2667. .PP
  2668. 10.1
  2669. The productions
  2670. .sp 9p
  2671. .RT
  2672. .LP
  2673.     DefinedType ::=
  2674. .LP
  2675.     Externaltypereference |
  2676. .LP
  2677. typereference
  2678. .LP
  2679.     DefinedValue ::=
  2680. .LP
  2681.     Externalvaluereference |
  2682. .LP
  2683. valuereference
  2684. .LP
  2685. specify the sequences which shall be used to reference type and
  2686. value definitions.
  2687. .PP
  2688. 10.2
  2689. Except as specified in \(sc\ 9.10, the \*Qtypereference\*U and
  2690. \*Qvaluereference\*U alternatives shall not be used unless the reference 
  2691. is within the module in which a type is assigned (see\ \(sc\ 11.1 and\ 
  2692. \(sc\ 11.2) to the 
  2693. typereference or valuereference.
  2694. .sp 9p
  2695. .RT
  2696. .PP
  2697. 10.3
  2698. The \*QExternaltypereference\*U and \*QExternalvaluereference\*U shall 
  2699. not be used unless the corresponding \*Qtypereference\*U or \*Qvaluereference\*U 
  2700. has been assigned a type or value respectively (see\ \(sc\ 11.1 and\ \(sc\ 
  2701. 11.2) within the 
  2702. corresponding \*Qmodulereference\*U.
  2703. .bp
  2704. .sp 9p
  2705. .RT
  2706. .sp 2P
  2707. .LP
  2708. \fB11\fR     \fBAssigning types and values\fR 
  2709. .sp 1P
  2710. .RT
  2711. .PP
  2712. 11.1
  2713. A \*Qtypereference\*U shall be assigned a type by the notation
  2714. specified by the \*QTypeassignment\*U production:
  2715. .sp 9p
  2716. .RT
  2717. .LP
  2718.     Typeassignment ::= typereference
  2719. .LP
  2720.     \*Q::=\*U
  2721. .LP
  2722. Type
  2723. .PP
  2724. The \*Qtypereference\*U shall not be one of the names used to
  2725. reference the character string types defined in section two, and shall 
  2726. not be one of the names used to reference the types defined in section 
  2727. three. 
  2728. .PP
  2729. 11.2
  2730. A \*Qvaluereference\*U shall be assigned a value by the notation
  2731. specified by the \*QValueassignment\*U production:
  2732. .sp 9p
  2733. .RT
  2734. .LP
  2735.     Valueassignment ::= valuereference
  2736. .LP
  2737.     Type
  2738. .LP
  2739. \*Q::=\*U
  2740. .LP
  2741. Value
  2742. .PP
  2743. The \*QValue\*U being assigned to the \*Qvaluereference\*U shall be a
  2744. valid notation (see \(sc\ 12.7) for a value of the type defined by \*QType\*U.
  2745. .sp 2P
  2746. .LP
  2747. \fB12\fR     \fBDefinition of types and values\fR 
  2748. .sp 1P
  2749. .RT
  2750. .PP
  2751. 12.1
  2752. A type shall be referenced by one of the sequences \*QType\*U:
  2753. .sp 9p
  2754. .RT
  2755. .LP
  2756.     Type ::= BuiltinType\ |\ DefinedType\ |\ Subtype
  2757. .LP
  2758.     (see \(sc\ 10.1) (see \(sc\ 37)
  2759. .LP
  2760.     BuiltinType ::=
  2761. .LP
  2762.     BooleanType\ |
  2763. .LP
  2764. IntegerType\ |
  2765. .LP
  2766. BitStringType\ |
  2767. .LP
  2768. OctetStringType\ |
  2769. .LP
  2770. NullType\ |
  2771. .LP
  2772. SequenceType\ |
  2773. .LP
  2774. SequenceOfType\ |
  2775. .LP
  2776. SetType\ |
  2777. .LP
  2778. SetOfType\ |
  2779. .LP
  2780. ChoiceType\ |
  2781. .LP
  2782. SelectionType\ |
  2783. .LP
  2784. TaggedType\ |
  2785. .LP
  2786. AnyType\ |
  2787. .LP
  2788. ObjectIdentifierType\ |
  2789. .LP
  2790. CharacterStringType\ |
  2791. .LP
  2792. UsefulType\ |
  2793. .LP
  2794. EnumeratedType\ |
  2795. .LP
  2796. RealType\ |
  2797. .PP
  2798. \fINote\ 1\fR \ \(em\ A type notation defined in a macro can also be used 
  2799. as a sequence for \*QType\*U (see Annex\ A). 
  2800. .PP
  2801. \fINote\ 2\fR \ \(em\ Additional built\(hyin types may be defined by future 
  2802. versions of this Recommendation. 
  2803. .RT
  2804. .PP
  2805. 12.2
  2806. The \*QBuiltinType\*U notation is specified in the following
  2807. clauses.
  2808. .sp 9p
  2809. .RT
  2810. .PP
  2811. 12.3
  2812. The \*QSubtype\*U notation is specified in section four.
  2813. .sp 9p
  2814. .RT
  2815. .PP
  2816. 12.4
  2817. The type being referenced is the type defined by the \*QBuiltinType\*U 
  2818. or \*QSubtype\*U assigned to the \*QDefinedType\*U. 
  2819. .bp
  2820. .sp 9p
  2821. .RT
  2822. .PP
  2823. 12.5
  2824. In some notations within which a type is referenced, the type may be named. 
  2825. In such cases, this Recommendation specifies the use of the notation \*QNamedType\*U: 
  2826. .sp 9p
  2827. .RT
  2828. .LP
  2829.     NamedType ::=
  2830. .LP
  2831.     identifier Type\ |
  2832. .LP
  2833. Type\ |
  2834. .LP
  2835. SelectionType
  2836. .PP
  2837. The notation \*QSelectionType\*U and the corresponding value notation is 
  2838. specified in\ \(sc\ 25. 
  2839. .PP
  2840. \fINote\fR \ \(em\ The notation \*QSelectionType\*U contains an \*Qidentifier\*U 
  2841. which may form part of the value notation when \*QSelectionType\*U is used 
  2842. as a 
  2843. \*QNamedType\*U (see\ \(sc\ 25.1).
  2844. .RT
  2845. .PP
  2846. 12.6
  2847. The \*Qidentifier\*U is not part of the type, and has no effect on the 
  2848. type. The type referenced by a \*QNamedType\*U sequence is that referenced 
  2849. by the contained \*QType\*U sequence. 
  2850. .sp 9p
  2851. .RT
  2852. .PP
  2853. 12.7
  2854. The value of a type shall be specified by one of the sequences
  2855. \*QValue\*U:
  2856. .sp 9p
  2857. .RT
  2858. .LP
  2859.     Value ::= BuiltinValue\ |\ DefinedValue
  2860. .LP
  2861.     BuiltinValue ::=
  2862. .LP
  2863.     BooleanValue\ |
  2864. .LP
  2865. IntegerValue\ |
  2866. .LP
  2867. BitStringValue\ |
  2868. .LP
  2869. OctetStringValue\ |
  2870. .LP
  2871. NullValue\ |
  2872. .LP
  2873. SequenceValue\ |
  2874. .LP
  2875. SequenceOfValue\ |
  2876. .LP
  2877. SetValue\ |
  2878. .LP
  2879. SetOfValue\ |
  2880. .LP
  2881. ChoiceValue\ |
  2882. .LP
  2883. SelectionValue\ |
  2884. .LP
  2885. TaggedValue\ |
  2886. .LP
  2887. AnyValue\ |
  2888. .LP
  2889. ObjectIdentifierValue\ |
  2890. .LP
  2891. CharacterStringValue\ |
  2892. .LP
  2893. EnumeratedValue\ |
  2894. .LP
  2895. RealValue\ |
  2896. .PP
  2897. \fINote\fR \ \(em\ A value notation defined in a macro may also be used 
  2898. as a sequence for \*QValue\*U (see\ Annex\ A). 
  2899. .PP
  2900. 12.8
  2901. If the type is defined using one of the notations shown on the
  2902. left below, then the value shall be specified using the notation shown 
  2903. on the right below: 
  2904. .sp 9p
  2905. .RT
  2906. .LP
  2907.     \fBType notation\fR 
  2908.     \fBValue notation\fR 
  2909. .LP
  2910.     BooleanType
  2911.     BooleanValue
  2912. .LP
  2913.     IntegerType
  2914.     IntegerValue
  2915. .LP
  2916.     BitStringType
  2917.     BitStringValue
  2918. .LP
  2919.     OctetStringType
  2920.     OctetStringValue
  2921. .LP
  2922.     NullType
  2923.     NullValue
  2924. .LP
  2925.     SequenceType
  2926.     SequenceValue
  2927. .LP
  2928.     SequenceOfType
  2929.     SequenceOfValue
  2930. .LP
  2931.     SetType
  2932.     SetValue
  2933. .LP
  2934.     SetOfType
  2935.     SetOfValue
  2936. .LP
  2937.     ChoiceType
  2938.     ChoiceValue
  2939. .LP
  2940.     TaggedType
  2941.     TaggedValue
  2942. .LP
  2943.     AnyType
  2944.     AnyValue
  2945. .LP
  2946.     ObjectIdentifierType
  2947.     ObjectIdentifierValue
  2948. .LP
  2949.     CharacterStringType 
  2950.     CharacterStringValue
  2951. .LP
  2952.     EnumeratedType
  2953.     EnumeratedValue
  2954. .LP
  2955.     RealType
  2956.     RealValue
  2957. .PP
  2958. \fINote\fR \ \(em\ Additional value notations may be defined by future
  2959. versions of this Recommendation.
  2960. .PP
  2961. Where the type is a DefinedType, the value notation shall be the
  2962. notation for a type used in producing the DefinedType.
  2963. .bp
  2964. .RT
  2965. .PP
  2966. 12.9
  2967. The value notation for a type defined by the \*QUsefulType\*U notation 
  2968. is specified in section three. 
  2969. .sp 9p
  2970. .RT
  2971. .PP
  2972. 12.10 
  2973. The \*QBuiltinValue\*U notation is specified in the following
  2974. clauses.
  2975. .sp 9p
  2976. .RT
  2977. .PP
  2978. 12.11 
  2979. The value of a type referenced using the \*QNamedType\*U notation
  2980. shall be defined by the notation \*QNamedValue\*U:
  2981. .sp 9p
  2982. .RT
  2983. .LP
  2984.     NamedValue ::=
  2985. .LP
  2986.     identifier Value\ |
  2987. .LP
  2988. Value
  2989. .LP
  2990. where the \*Qidentifier\*U (if any) is the same as that used in the
  2991. \*QNamedType\*U notation. \(sc\ 25.2 specifies further restrictions on 
  2992. the \*QNamedValue\*U when the \*QNamedType\*U was a \*QSelectionType\*U. 
  2993. .PP
  2994. \fINote\fR \ \(em\ The \*Qidentifier\*U is part of the notation, it does not
  2995. form part of the value itself.
  2996. .PP
  2997. 12.12 
  2998. The \*Qidentifier\*U shall be present in the \*QNamedValue\*U if and only 
  2999. if it was present in the \*QNamedType\*U. 
  3000. .sp 9p
  3001. .RT
  3002. .PP
  3003. \fINote\fR \ \(em\ An \*Qidentifier\*U is always present in the case of a
  3004. \*QSelectionType\*U.
  3005. .sp 2P
  3006. .LP
  3007. \fB13\fR     \fBNotation for the\fR 
  3008. \fBBoolean type\fR 
  3009. .sp 1P
  3010. .RT
  3011. .PP
  3012. 13.1
  3013. The Boolean type (see\ \(sc\ 3.13) shall be referenced by the notation
  3014. \*QBooleanType\*U:
  3015. .sp 9p
  3016. .RT
  3017. .LP
  3018.     BooleanType ::= BOOLEAN
  3019. .PP
  3020. 13.2
  3021. The tag for types defined by this notation is universal class,
  3022. number\ 1.
  3023. .sp 9p
  3024. .RT
  3025. .PP
  3026. 13.3
  3027. The value of a Boolean type (see\ \(sc\ 3.14 and\ \(sc\ 3.15) shall be
  3028. defined by the notation \*QBooleanValue\*U:
  3029. .sp 9p
  3030. .RT
  3031. .LP
  3032.     BooleanValue ::= TRUE\ |\ FALSE
  3033. .sp 2P
  3034. .LP
  3035. \fB14\fR     \fBNotation for the \fR \fBinteger type\fR 
  3036. .sp 1P
  3037. .RT
  3038. .PP
  3039. 14.1
  3040. The integer type (see\ \(sc\ 3.16) shall be referenced by the notation 
  3041. \*QIntegerType\*U: 
  3042. .sp 9p
  3043. .RT
  3044. .LP
  3045.     IntegerType ::=
  3046. .LP
  3047.     INTEGER\ |
  3048. .LP
  3049. INTEGER{NamedNumberList}
  3050. .LP
  3051.     NamedNumberList ::=
  3052. .LP
  3053.     NamedNumber\ |
  3054. .LP
  3055. NamedNumberList,NamedNumber
  3056. .LP
  3057.     NamedNumber ::=
  3058. .LP
  3059.     identifier(SignedNumber)\ |
  3060. .LP
  3061. identifier(DefinedValue)
  3062. .LP
  3063.     SignedNumber ::= number\ |\ \(hynumber
  3064. .PP
  3065. 14.2
  3066. The second alternative of \*QSignedNumber\*U shall not be used if the \*Qnumber\*U 
  3067. is zero. 
  3068. .sp 9p
  3069. .RT
  3070. .PP
  3071. 14.3
  3072. The \*QNamedNumberList\*U is not significant in the definition of a
  3073. type. It is used solely in the value notation specified in\ \(sc\ 14.9.
  3074. .sp 9p
  3075. .RT
  3076. .PP
  3077. 14.4
  3078. The \*QDefinedValue\*U shall be a reference to a value of type
  3079. integer, or of a type derived from integer by tagging or subtyping.
  3080. .sp 9p
  3081. .RT
  3082. .PP
  3083. 14.5
  3084. The value of each \*QSignedNumber\*U or \*QDefinedValue\*U appearing in
  3085. the \*QNamedNumberList\*U shall be different, and represents a distinguished 
  3086. value of the integer type. 
  3087. .sp 9p
  3088. .RT
  3089. .PP
  3090. 14.6
  3091. Each \*Qidentifier\*U appearing in the \*QNamedNumberList\*U shall be
  3092. different.
  3093. .bp
  3094. .sp 9p
  3095. .RT
  3096. .PP
  3097. 14.7
  3098. The order of the \*QNamedNumber\*U sequences in the \*QNamedNumberList\*U 
  3099. is not significant. 
  3100. .sp 9p
  3101. .RT
  3102. .PP
  3103. 14.8
  3104. The tag for types defined by this notation is universal class,
  3105. number\ 2.
  3106. .sp 9p
  3107. .RT
  3108. .PP
  3109. 14.9
  3110. The value of an integer type shall be defined by the notation
  3111. \*QIntegerValue\*U:
  3112. .sp 9p
  3113. .RT
  3114. .LP
  3115.     IntegerValue ::=
  3116. .LP
  3117.     SignedNumber\ |
  3118. .LP
  3119. identifier
  3120. .PP
  3121. 14.10 
  3122. The \*Qidentifier\*U in \*QIntegerValue\*U shall be equal to that of an
  3123. \*Qidentifier\*U in the \*QIntegerType\*U sequence with which the value 
  3124. is associated, and shall represent the corresponding number. 
  3125. .sp 9p
  3126. .RT
  3127. .PP
  3128. \fINote\fR \ \(em\ When defining an integer value for which an \*Qidentifier\*U 
  3129. has been defined, use of the \*Qidentifier\*U form of \*QIntegerValue\*U 
  3130. should be 
  3131. preferred.
  3132. .sp 2P
  3133. .LP
  3134. \fB15\fR     \fBNotation for the\fR 
  3135. \fBenumerated type\fR 
  3136. .sp 1P
  3137. .RT
  3138. .PP
  3139. 15.1
  3140. The enumerated type (see\ \(sc\ 3.17) shall be referenced by the
  3141. notation \*QEnumeratedType\*U:
  3142. .sp 9p
  3143. .RT
  3144. .LP
  3145.     EnumeratedType ::= ENUMERATED {Enumeration}
  3146. .LP
  3147.     Enumeration ::=
  3148. .LP
  3149.     NamedNumber\ |
  3150. .LP
  3151. NamedNumber, Enumeration
  3152. .PP
  3153. \fINote\ 1\fR \ \(em\ Each value has an identifier which is associated, in
  3154. this notation, with a distinct integer. This provides control of the
  3155. representation of the value in order to facilitate compatible extensions, 
  3156. but the values themselves are not expected to have any integer semantics. 
  3157. .PP
  3158. \fINote\ 2\fR \ \(em\ The numeric values inside the \*QNamedNumber\*U in the
  3159. \*QEnumeration\*U are not necessarily ordered or contiguous.
  3160. .RT
  3161. .PP
  3162. 15.2
  3163. For each \*QNamedNumber\*U, the \*Qidentifier\*U and the \*QSignedNumber\*U
  3164. shall be distinct from all other \*Qidentifier\*Us and \*QSignedNumber\*Us 
  3165. in the 
  3166. \*QEnumeration\*U.
  3167. .sp 9p
  3168. .RT
  3169. .PP
  3170. 15.3
  3171. The enumerated type has a tag which is universal class,
  3172. number\ 10.
  3173. .sp 9p
  3174. .RT
  3175. .PP
  3176. 15.4
  3177. The value of an enumerated type shall be defined by the notation \*QEnumeratedValue\*U: 
  3178. .sp 9p
  3179. .RT
  3180. .LP
  3181.     EnumeratedValue ::= identifier
  3182. .sp 2P
  3183. .LP
  3184. \fB16\fR     \fBNotation for the\fR 
  3185. \fBreal type\fR 
  3186. .sp 1P
  3187. .RT
  3188. .PP
  3189. 16.1
  3190. The real type (see \(sc 3.18) shall be referenced by the notation
  3191. \*QRealType\*U:
  3192. .sp 9p
  3193. .RT
  3194. .LP
  3195.     RealType ::= REAL
  3196. .PP
  3197. 16.2
  3198. The values of the real type are the values PLUS\(hyINFINITY and
  3199. MINUS\(hyINFINITY together with the real numbers capable of being specified 
  3200. by the following formula involving three integers, M,\ B and\ E: 
  3201. .sp 9p
  3202. .RT
  3203. .sp 1P
  3204. .ce 1000
  3205. M \(mu B\uE\d
  3206. .ce 0
  3207. .sp 1P
  3208. .LP
  3209. where M is called the mantissa, B the base, and E the exponent.
  3210. M\ and\ E may take any integer values, positive or negative, while\ B can take
  3211. the values\ 2 or\ 10. All combinations of M, B\ and\ E are permitted.
  3212. .PP
  3213. \fINote\ 1\fR \ \(em\ This type is capable of carrying an exact
  3214. representation of any number which can be stored in typical floating point
  3215. hardware, and of any number with a finite character decimal
  3216. representation.
  3217. .PP
  3218. \fINote\ 2\fR \ \(em\ The encoding (of this type) which is specified in
  3219. Recommendation\ X.209 allows use of base\ 2, 8\ or\ 16 with a binary representation 
  3220. of real values, and base\ 10 with a character representation. The choice 
  3221. is a 
  3222. sender's option.
  3223. .RT
  3224. .PP
  3225. 16.3
  3226. The real type has a tag which is universal class, number\ 9.
  3227. .bp
  3228. .sp 9p
  3229. .RT
  3230. .PP
  3231. 16.4
  3232. The notation for defining a value of a real type shall be
  3233. \*QRealValue\*U:
  3234. .sp 9p
  3235. .RT
  3236. .LP
  3237.     RealValue ::= NumericRealValue\ |\ SpecialRealValue
  3238. .LP
  3239.     NumericRealValue ::=
  3240. .LP
  3241.     {Mantissa, Base, Exponent}\ |\ 0
  3242. .LP
  3243.     Mantissa ::= SignedNumber
  3244. .LP
  3245.     Base ::= 2\ |\ 10
  3246. .LP
  3247.     Exponent ::= SignedNumber
  3248. .LP
  3249.     SpecialRealValue ::= PLUS\(hyINFINITY\ |\ MINUS\(hyINFINITY
  3250. .PP
  3251. The form \*Q0\*U shall be used for zero values, and the alternate form 
  3252. for \*QNumericRealValue\*U shall not be used for zero values. 
  3253. .sp 2P
  3254. .LP
  3255. \fB17\fR     \fBNotation for the \fR \fBbitstring type\fR 
  3256. .sp 1P
  3257. .RT
  3258. .PP
  3259. 17.1
  3260. The bitstring type (see \(sc\ 3.19) shall be referenced by the
  3261. notation \*QBitStringType\*U:
  3262. .sp 9p
  3263. .RT
  3264. .LP
  3265.     BitStringType ::=
  3266. .LP
  3267.     BIT STRING\ |
  3268. .LP
  3269. BIT STRING{NamedBitList}
  3270. .LP
  3271.     NamedBitList ::=
  3272. .LP
  3273.     NamedBit\ |
  3274. .LP
  3275. NamedBitList,NamedBit
  3276. .LP
  3277.     NamedBit ::=
  3278. .LP
  3279.     identifier(number)\ |
  3280. .LP
  3281. identifier(DefinedValue)
  3282. .PP
  3283. 17.2
  3284. The \*QNamedBitList\*U is not significant in the definition of a
  3285. type. It is used solely in the value notation specified in \(sc\ 17.8.
  3286. .sp 9p
  3287. .RT
  3288. .PP
  3289. 17.3
  3290. The first bit in a bitstring has the number \fBzero\fR . The final
  3291. bit in a bit string is called the \fBtrailing bit\fR .
  3292. .sp 9p
  3293. .RT
  3294. .PP
  3295. \fINote\fR \ \(em\ This terminology is used in specifying the value notation 
  3296. and the encoding rules. 
  3297. .PP
  3298. 17.4
  3299. The \*QDefinedValue\*U shall be a reference to a non\(hynegative value
  3300. of type integer or enumerated, or of a type derived from those by tagging or
  3301. subtyping.
  3302. .sp 9p
  3303. .RT
  3304. .PP
  3305. 17.5
  3306. The value of each \*Qnumber\*U or \*QDefinedValue\*U appearing in the
  3307. \*QNamedBitList\*U shall be different, and is the number of a distinguished 
  3308. bit in a bitstring value. 
  3309. .sp 9p
  3310. .RT
  3311. .PP
  3312. 17.6
  3313. Each \*Qidentifier\*U appearing in the \*QNamedBitList\*U shall be
  3314. different.
  3315. .sp 9p
  3316. .RT
  3317. .PP
  3318. \fINote\fR \ \(em\ The order of the \*QNamedBit\*U sequences in the
  3319. \*QNamedBitList\*U  is not significant.
  3320. .PP
  3321. 17.7
  3322. This type has a tag which is universal class, number 3.
  3323. .sp 9p
  3324. .RT
  3325. .PP
  3326. 17.8
  3327. The value of a bitstring type shall be defined by the notation
  3328. \*QBitStringValue\*U:
  3329. .sp 9p
  3330. .RT
  3331. .LP
  3332.     BitStringValue ::=
  3333. .LP
  3334.     bstring\ |
  3335. .LP
  3336. hstring\ |
  3337. .LP
  3338. {IdentifierList}\ |
  3339. .LP
  3340. {\|}
  3341. .LP
  3342.     IdentifierList ::=
  3343. .LP
  3344.     identifier\ |
  3345. .LP
  3346. IdentifierList,identifier
  3347. .bp
  3348. .PP
  3349. 17.9
  3350. Each \*Qidentifier\*U in \*QBitStringValue\*U shall be the same as an
  3351. \*Qidentifier\*U in the \*QBitStringType\*U sequence with which the value is
  3352. associated.
  3353. .sp 9p
  3354. .RT
  3355. .PP
  3356. 17.10 
  3357. The use of the notation determines, and can indicate by
  3358. comment, whether or not the presence or absence of trailing zero bits is
  3359. significant.
  3360. .sp 9p
  3361. .RT
  3362. .PP
  3363. \fINote\fR \ \(em\ Encoding rules enable the transfer of an arbitrary
  3364. pattern, arbitrary length, string of bits.
  3365. .PP
  3366. 17.11 
  3367. The \*Q{IdentifierList}\*U and \*Q{\|}\*U notations for \*QBitStringValue\*U
  3368. shall not be used if the presence or absence of trailing zero bits is
  3369. significant. This notation denotes a bitstring value with ones in the bit
  3370. positions specified by the numbers corresponding to the \*Qidentifier\*U 
  3371. sequences, and with all other bits zero. 
  3372. .sp 9p
  3373. .RT
  3374. .PP
  3375. \fINote\fR \ \(em\ The \*Q{\|}\*U sequence is used to denote a bitstring value
  3376. which contains no one bits.
  3377. .PP
  3378. 17.12 
  3379. In specifying the encoding rules for a bitstring, the bits
  3380. shall be referenced by the terms \fBfirst bit\fR and \fBtrailing bit\fR 
  3381. , as defined 
  3382. above.
  3383. .sp 9p
  3384. .RT
  3385. .PP
  3386. 17.13 
  3387. When using the \*Qbstring\*U notation, the \fBfirst bit\fR is on the
  3388. left, and the \fBtrailing bit\fR is on the right.
  3389. .sp 9p
  3390. .RT
  3391. .PP
  3392. 17.14 
  3393. When using the \*Qhstring\*U notation, the most significant bit of
  3394. each hexadecimal digit corresponds to the earlier (leftmost) bit in the
  3395. bitstring.
  3396. .sp 9p
  3397. .RT
  3398. .PP
  3399. \fINote\fR \ \(em\ This notation does not in any way constrain the way
  3400. encoding rules place a bitstring into octets for transfer.
  3401. .PP
  3402. 17.15 
  3403. The \*Qhstring\*U notation shall not be used unless either:
  3404. .sp 9p
  3405. .RT
  3406. .LP
  3407.     a)
  3408.     the bitstring value consists of a multiple of four bits;
  3409. or
  3410. .LP
  3411.     b)
  3412.     the presence or absence of trailing zero bits is not
  3413. significant.
  3414. .LP
  3415.     \fIExample:\fR 
  3416. .sp 1P
  3417. .ce 1000
  3418. 'A98A'H
  3419. .ce 0
  3420. .sp 1P
  3421. .LP
  3422. and
  3423. .sp 1P
  3424. .ce 1000
  3425. '1010100110001010'B
  3426. .ce 0
  3427. .sp 1P
  3428. .LP
  3429. are alternative notations for the same bitstring value.
  3430. .sp 2P
  3431. .LP
  3432. \fB18\fR     \fBNotation for the \fR \fBoctetstring type\fR 
  3433. .sp 1P
  3434. .RT
  3435. .PP
  3436. 18.1
  3437. The octetstring type (see \(sc\ 3.20) shall be referenced by the
  3438. notation \*QOctetStringType\*U:
  3439. .sp 9p
  3440. .RT
  3441. .LP
  3442.     OctetStringType ::= OCTET STRING
  3443. .PP
  3444. 18.2
  3445. This type has a tag which is universal class, number 4.
  3446. .sp 9p
  3447. .RT
  3448. .PP
  3449. 18.3
  3450. The value of an octetstring type shall be defined by the
  3451. notation \*QOctetStringValue\*U:
  3452. .sp 9p
  3453. .RT
  3454. .LP
  3455.     OctetStringValue ::=
  3456. .LP
  3457.     bstring\ |
  3458. .LP
  3459. hstring
  3460. .PP
  3461. 18.4
  3462. In specifying the encoding rules for an octetstring, the octets
  3463. are referenced by the terms \fBfirst octet\fR and \fBtrailing octet\fR 
  3464. , and the bits 
  3465. within an octet are referenced by the terms \fBmost significant\fR and \fBleast
  3466. significant bit\fR .
  3467. .sp 9p
  3468. .RT
  3469. .PP
  3470. 18.5
  3471. When using the \*Qbstring\*U notation, the left\(hymost bit shall be
  3472. the most significant bit of the first octet. If the \*Qbstring\*U is not a
  3473. multiple of eight bits, it shall be interpreted as if it contained additional 
  3474. zero trailing bits to make it the next multiple of eight. 
  3475. .bp
  3476. .sp 9p
  3477. .RT
  3478. .PP
  3479. 18.6
  3480. When using the \*Qhstring\*U notation, the left\(hymost hexadecimal
  3481. digit shall be the most significant semi\(hyoctet of the first octet. If the
  3482. \*Qhstring\*U is not an even number of hexadecimal digits, it shall be
  3483. interpreted as if it contained a single additional trailing zero hexadecimal
  3484. digit.
  3485. .sp 9p
  3486. .RT
  3487. .sp 2P
  3488. .LP
  3489. \fB19\fR     \fBNotation for the \fR \fBnull type\fR 
  3490. .sp 1P
  3491. .RT
  3492. .PP
  3493. 19.1
  3494. The null type (see \(sc 3.21) shall be referenced by the notation
  3495. \*QNullType\*U:
  3496. .sp 9p
  3497. .RT
  3498. .LP
  3499.     NullType ::= NULL
  3500. .PP
  3501. 19.2
  3502. This type has a tag which is universal class, number 5.
  3503. .sp 9p
  3504. .RT
  3505. .PP
  3506. 19.3
  3507. The value of the null type shall be referenced by the notation
  3508. \*QNullValue\*U:
  3509. .sp 9p
  3510. .RT
  3511. .LP
  3512.     NullValue ::= NULL
  3513. .sp 2P
  3514. .LP
  3515. \fB20\fR     \fBNotation for \fR \fBsequence types\fR 
  3516. .sp 1P
  3517. .RT
  3518. .PP
  3519. 20.1
  3520. The notation for defining a sequence type (see \(sc\ 3.22) from
  3521. other types shall be the \*QSequenceType\*U:
  3522. .sp 9p
  3523. .RT
  3524. .LP
  3525.     SequenceType ::=
  3526. .LP
  3527.     SEQUENCE{ElementTypeList}\ |
  3528. .LP
  3529. SEQUENCE{\|}
  3530. .LP
  3531.     ElementTypeList ::=
  3532. .LP
  3533.     ElementType\ |
  3534. .LP
  3535. ElementTypeList,ElementType
  3536. .LP
  3537.     ElementType ::=
  3538. .LP
  3539.     NamedType\ |
  3540. .LP
  3541. NamedType OPTIONAL\ |
  3542. .LP
  3543. NamedType DEFAULT Value\ |
  3544. .LP
  3545. COMPONENTS OF Type
  3546. .PP
  3547. 20.2
  3548. The \*QType\*U in the fourth alternative of the \*QElementType\*U shall
  3549. be a sequence type. The \*QCOMPONENTS OF Type\*U notation shall be used 
  3550. to define the inclusion, at this point in the \*QElementTypeList\*U, of 
  3551. all the \*QElementType\*U sequences appearing in the referenced type. 
  3552. .sp 9p
  3553. .RT
  3554. .PP
  3555. \fINote\fR \ \(em\ This transformation is logically completed prior to 
  3556. the satisfaction of the requirements in the following clauses. 
  3557. .PP
  3558. 20.3
  3559. For each series of one or more consecutive \*QElementTypes\*U
  3560. marked as OPTIONAL or DEFAULT, the tags of those \*QElementTypes\*U and of any
  3561. immediately following \*QElementType\*U shall be distinct (see \(sc\ 26).
  3562. .sp 9p
  3563. .RT
  3564. .PP
  3565. 20.4
  3566. If \*QOPTIONAL\*U or \*QDEFAULT\*U are present, the corresponding value
  3567. may be omitted from a value of the new type, and from the information
  3568. transferred by encoding rules.
  3569. .sp 9p
  3570. .RT
  3571. .PP
  3572. \fINote\ 1\fR \ \(em\ The value notation may be ambiguous in this case,
  3573. unless \*Qidentifier\*U sequences are present in each NamedType.
  3574. .PP
  3575. \fINote\ 2\fR \ \(em\ Encoding rules ensure that the encoding for a sequence
  3576. value in which a \*QDEFAULT\*U or \*QOPTIONAL\*U element value is omitted 
  3577. is the same as that for a sequence value of a type in whose type definition 
  3578. the 
  3579. corresponding element was omitted. This feature can be useful in defining
  3580. subsets.
  3581. .RT
  3582. .PP
  3583. 20.5
  3584. If \*QDEFAULT\*U occurs, the omission of a value for that type
  3585. shall be exactly equivalent to the insertion of the value defined by \*QValue\*U, 
  3586. which shall be a value signification that is valid for the type defined 
  3587. by 
  3588. \*QType\*U in the \*QNamedType\*U sequence.
  3589. .sp 9p
  3590. .RT
  3591. .PP
  3592. 20.6
  3593. The \*Qidentifier\*U (if any) in all \*QNamedType\*U sequences of the
  3594. \*QElementTypeList\*U shall be distinct.
  3595. .bp
  3596. .sp 9p
  3597. .RT
  3598. .PP
  3599. 20.7
  3600. All sequence types have a tag which is universal class,
  3601. number\ 16.
  3602. .sp 9p
  3603. .RT
  3604. .PP
  3605. \fINote\fR \ \(em\ Sequence\(hyof types have the same tag (see \(sc 21.3).
  3606. .PP
  3607. 20.8
  3608. The notation for defining the value of a sequence type shall be
  3609. \*QSequenceValue\*U:
  3610. .sp 9p
  3611. .RT
  3612. .LP
  3613.     SequenceValue ::=
  3614. .LP
  3615.     {ElementValueList}\ |
  3616. .LP
  3617. {\|}
  3618. .LP
  3619.     ElementValueList ::=
  3620. .LP
  3621.     NamedValue\ |
  3622. .LP
  3623. ElementValueList,NamedValue
  3624. .PP
  3625. 20.9
  3626. The \*Q{\|}\*U notation shall only be used if:
  3627. .sp 9p
  3628. .RT
  3629. .LP
  3630.     a)
  3631.     all \*QElementType\*U sequences in the \*QSequenceType\*U are marked
  3632. \*QDEFAULT\*U or \*QOPTIONAL\*U, and all values are omitted;
  3633. or
  3634. .LP
  3635.     b)
  3636.     the type notation was \*QSEQUENCE{\|}\*U.
  3637. .PP
  3638. 20.10 
  3639. There shall be one \*QNamedValue\*U for each \*QNamedType\*U in the
  3640. \*QSequenceType\*U which is not marked OPTIONAL or DEFAULT, and the values 
  3641. shall be in the same order as the corresponding \*QNamedType\*U sequences. 
  3642. .sp 9p
  3643. .RT
  3644. .PP
  3645. \fINote\fR \ \(em\ The use of \*QNamedType\*U sequences which do not contain 
  3646. an identifier is not prohibited, but can render the value notation ambiguous 
  3647. if 
  3648. \*QOPTIONAL\*U or \*QDEFAULT\*U is used.
  3649. .sp 2P
  3650. .LP
  3651. \fB21\fR     \fBNotation for \fR \fBsequence\(hyof types\fR 
  3652. .sp 1P
  3653. .RT
  3654. .PP
  3655. 21.1
  3656. The notation for defining a sequence\(hyof type (see \(sc\ 3.23) from
  3657. another type shall be the \*QSequenceOf\(hyType\*U.
  3658. .sp 9p
  3659. .RT
  3660. .LP
  3661.     SequenceOfType ::=
  3662. .LP
  3663.     SEQUENCE OF Type\ |
  3664. .LP
  3665. SEQUENCE
  3666. .PP
  3667. 21.2
  3668. The notation \*QSEQUENCE\*U is synonymous with the notation
  3669. \*QSEQUENCE OF ANY\*U (see \(sc\ 27).
  3670. .sp 9p
  3671. .RT
  3672. .PP
  3673. 21.3
  3674. All sequence\(hyof types have a tag which is universal class,
  3675. number\ 16.
  3676. .sp 9p
  3677. .RT
  3678. .PP
  3679. \fINote\fR \ \(em\ Sequence types have the same tag (see \(sc\ 20.7).
  3680. .PP
  3681. 21.4
  3682. The notation for defining a value of a sequence\(hyof type shall
  3683. be the \*QSequenceOfValue\*U:
  3684. .sp 9p
  3685. .RT
  3686. .LP
  3687.     SequenceOfValue ::= {ValueList}\ |\ {\|}
  3688. .LP
  3689.     ValueList ::=
  3690. .LP
  3691.     Value\ |
  3692. .LP
  3693. ValueList,Value
  3694. .PP
  3695. The \*Q{\|}\*U notation is used when there are no component values in the 
  3696. sequence\(hyof value. 
  3697. .PP
  3698. 21.5
  3699. Each \*QValue\*U sequence in the \*QValueList\*U shall be the notation
  3700. for a value of the \*QType\*U specified in the \*QSequenceofType\*U.
  3701. .sp 9p
  3702. .RT
  3703. .PP
  3704. \fINote\fR \ \(em\ Semantic significance may be placed on the order of 
  3705. these values. 
  3706. .sp 2P
  3707. .LP
  3708. \fB22\fR     \fBNotation for \fR \fBset types\fR 
  3709. .sp 1P
  3710. .RT
  3711. .PP
  3712. 22.1
  3713. The notation for defining a set type (see \(sc\ 3.24) from other
  3714. types shall be the \*QSetType\*U.
  3715. .sp 9p
  3716. .RT
  3717. .LP
  3718.     SetType ::=
  3719. .LP
  3720.     SET{ElementTypeList}\ |
  3721. .LP
  3722. SET{\|}
  3723. .PP
  3724. \*QElementTypeList\*U is specified in \(sc\ 20.1
  3725. .bp
  3726. .PP
  3727. 22.2
  3728. The \*QType\*U in the fourth alternative of the \*QElementType\*U (see
  3729. \(sc\ 20.1) shall be a set type. The \*QCOMPONENTS OF Type\*U notation 
  3730. shall be used to define the inclusion of all the \*QElementType\*U sequences 
  3731. appearing in the 
  3732. referenced type.
  3733. .sp 9p
  3734. .RT
  3735. .PP
  3736. \fINote\fR \ \(em\ This transformation is logically completed prior to 
  3737. the satisfaction of the requirements in the following clauses. 
  3738. .PP
  3739. 22.3
  3740. The \*QElementType\*U types in a set type shall all have different
  3741. tags. (See \(sc\ 26.)
  3742. .sp 9p
  3743. .RT
  3744. .PP
  3745. 22.4
  3746. Sub\(hyclauses \(sc\ 20.4, \(sc\ 20.5 and \(sc\ 20.6 also apply to set
  3747. types.
  3748. .sp 9p
  3749. .RT
  3750. .PP
  3751. 22.5
  3752. All set types have a tag which is universal class, number 17.
  3753. .sp 9p
  3754. .RT
  3755. .PP
  3756. \fINote\fR \ \(em\ Set\(hyof types have the same tag (see \(sc\ 23.3).
  3757. .PP
  3758. 22.6
  3759. There shall be no more semantic associated with the order of
  3760. values in a set type.
  3761. .sp 9p
  3762. .RT
  3763. .PP
  3764. 22.7 
  3765. The notation for defining the value of a set type shall be
  3766. \*QSetValue\*U:
  3767. .sp 9p
  3768. .RT
  3769. .LP
  3770.     SetValue ::= {ElementValueList}\ |\ {\|}
  3771. .PP
  3772. \*QElementValueList\*U is specified in \(sc 20.8.
  3773. .PP
  3774. 22.8
  3775. The \*QSetValue\*U shall only be \*Q{\|}\*U if:
  3776. .sp 9p
  3777. .RT
  3778. .LP
  3779.     a)
  3780.     all \*QElementType\*U sequences in the \*QSetType\*U are marked
  3781. \*QDEFAULT\*U or \*QOPTIONAL\*U, and all values are omitted;
  3782. or
  3783. .LP
  3784.     b)
  3785.     the type notation was \*QSET\*U{\|}\*U.
  3786. .PP
  3787. 22.9
  3788. There shall be one \*QNamedValue\*U for each \*QNamedType\*U in the
  3789. \*QSetType\*U which is not marked \*QOPTIONAL\*U or \*QDEFAULT\*U.
  3790. .sp 9p
  3791. .RT
  3792. .PP
  3793. \fINote\ 1\fR \ \(em\ These \*QNamedValues\*U may appear in any order.
  3794. .PP
  3795. \fINote\ 2\fR \ \(em\ The use of \*QNamedType\*U sequences which do not 
  3796. contain an 
  3797. identifier is not prohibited, but can render the value notation
  3798. ambiguous.
  3799. .RT
  3800. .sp 2P
  3801. .LP
  3802. \fB23\fR     \fBNotation for set\(hyof types\fR 
  3803. .sp 1P
  3804. .RT
  3805. .PP
  3806. 23.1
  3807. The notation for defining a set\(hyof type (see \(sc\ 3.25) from
  3808. another type shall be the \*QSet OfType\*U:
  3809. .sp 9p
  3810. .RT
  3811. .LP
  3812.     SetOfType ::= SET OF Type\ |
  3813. .LP
  3814.     SET
  3815. .PP
  3816. 23.2
  3817. The notation \*QSET\*U is synonymous with the notation \*QSET OF ANY\*U
  3818. (see \(sc\ 27).
  3819. .sp 9p
  3820. .RT
  3821. .PP
  3822. 23.3
  3823. All set\(hyof types have a tag which is universal class,
  3824. number 17.
  3825. .sp 9p
  3826. .RT
  3827. .PP
  3828. \fINote\fR \ \(em\ Set types have the same tag (see \(sc 22.5).
  3829. .PP
  3830. 23.4
  3831. The notation for defining a value of a set\(hyof type shall be the
  3832. \*QSetOfValue\*U:
  3833. .sp 9p
  3834. .RT
  3835. .LP
  3836.     SetOfValue ::= {ValueList}\ |\ {\|}
  3837. .PP
  3838. \*QValueList\*U is specified in \(sc 21.4
  3839. .PP
  3840. The \*Q{\|}\*U notation is used when there are no component values in the 
  3841. set\(hyof values. 
  3842. .RT
  3843. .PP
  3844. 23.5
  3845. Each \*QValue\*U sequence in the \*QValueList\*U shall be the notation
  3846. for a value of the \*QType\*U specified in the \*QSetofType\*U.
  3847. .sp 9p
  3848. .RT
  3849. .PP
  3850. \fINote\ 1\fR \ \(em\ Semantic significance should not be placed on the 
  3851. order of these values. 
  3852. .PP
  3853. \fINote\ 2\fR \ \(em\ Encoding rules are not required to preserve the order of
  3854. these values.
  3855. .bp
  3856. .RT
  3857. .sp 2P
  3858. .LP
  3859. \fB24\fR     \fBNotation for \fR \fBchoice types\fR 
  3860. .sp 1P
  3861. .RT
  3862. .PP
  3863. 24.1
  3864. The notation for defining a choice type (see \(sc 3.27) from other
  3865. types shall be the \*QChoiceType\*U:
  3866. .sp 9p
  3867. .RT
  3868. .LP
  3869.     ChoiceType ::= CHOICE{AlternativeTypeList}
  3870. .LP
  3871.     AlternativeTypeList ::=
  3872. .LP
  3873.     NamedType\ |
  3874. .LP
  3875. AlternativeTypeList,NamedType
  3876. .PP
  3877. \fINote\ 1\fR \ \(em\ The encoding rules encode the chosen alternative in
  3878. a way which is indistinguishable from a \*QType\*U consisting only of the 
  3879. \*QType\*U 
  3880. contained in that alternative.
  3881. .PP
  3882. \fINote\ 2\fR \ \(em\ Specifying a \*QChoiceType\*U with a single \*QNamedType\*U 
  3883. in the \*QAlternativeTypeList\*U cannot be distinguished in any encoding 
  3884. of a value from direct use of the \*QType\*U in the \*QNamedType\*U. 
  3885. .RT
  3886. .PP
  3887. 24.2
  3888. The types defined in the \*QAlternativeTypeList\*U shall all have
  3889. distinct tags. (See \(sc 26.)
  3890. .sp 9p
  3891. .RT
  3892. .PP
  3893. 24.3
  3894. The tag of the choice type shall be considered to be variable.
  3895. When a value is selected, the tag becomes equal to the tag of the \*QType\*U 
  3896. in the \*QNamedType\*U in the \*QAlternativeTypeList\*U from which the 
  3897. value is taken. 
  3898. .sp 9p
  3899. .RT
  3900. .PP
  3901. 24.4
  3902. Where this type is used in a place where this Recommendation
  3903. requires the use of types with distinct tags (see \(sc\ 20.3, \(sc\ 22.3 
  3904. and \(sc\ 24.2), the tags of all types defined in the \*QAlternativeTypeList\*U 
  3905. shall differ from 
  3906. those of the other types. (See \(sc\ 26.) The following examples illustrate 
  3907. this 
  3908. requirement. Examples\ 1 and\ 2 are correct uses of the notation. Example\ 3 is
  3909. incorrect, as the tags for types\ d and\ f, and\ e and\ g are identical.
  3910. .sp 9p
  3911. .RT
  3912. .LP
  3913.     \fIExample\ 1:\fR 
  3914. .LP
  3915.     A\ ::=
  3916.     CHOICE
  3917. .LP
  3918. {b B,
  3919. .LP
  3920. {
  3921. c NULL}
  3922. .LP
  3923.     B\ ::=
  3924.     CHOICE
  3925. .LP
  3926. {d [0] NULL,
  3927. .LP
  3928. {
  3929. e [1] NULL}
  3930. .LP
  3931.     \fIExample\ 2:\fR 
  3932. .LP
  3933.     A\ ::=
  3934.     CHOICE
  3935. .LP
  3936. {b B,
  3937. .LP
  3938. {
  3939. c C}
  3940. .LP
  3941.     B\ ::=
  3942.     CHOICE
  3943. .LP
  3944. {d [0] NULL,
  3945. .LP
  3946. {
  3947. e [1] NULL}
  3948. .LP
  3949.     C\ ::=
  3950.     CHOICE
  3951. .LP
  3952. {f [2] NULL,
  3953. .LP
  3954. {
  3955. g [3] NULL}
  3956. .LP
  3957.     \fIExample\ 3:\fR 
  3958. .LP
  3959.     (INCORRECT)
  3960. .LP
  3961. A\ ::=
  3962.     CHOICE
  3963. .LP
  3964. {b B,
  3965. .LP
  3966. {
  3967. c C}
  3968. .LP
  3969.     B\ ::=
  3970.     CHOICE
  3971. .LP
  3972. {d [0] NULL,
  3973. .LP
  3974. {
  3975. e [1] NULL}
  3976. .LP
  3977.     C\ ::=
  3978.     CHOICE
  3979. .LP
  3980. {f [0] NULL,
  3981. .LP
  3982. {
  3983. g [1] NULL}
  3984. .PP
  3985. 24.5
  3986. The \*Qidentifier\*U (if any) in all \*QNamedType\*U sequences of the
  3987. \*QAlternativeTypeList\*U shall be distinct.
  3988. .bp
  3989. .sp 9p
  3990. .RT
  3991. .PP
  3992. 24.6
  3993. Where this type is used in a place where this Recommendation
  3994. requires the use of \*QNamedTypes\*U with distinct \*Qidentifiers\*U, the 
  3995. \*Qidentifiers\*U (if any) of all \*QNamedTypes\*U in the \*QAlternativeTypeList\*U 
  3996. shall differ from 
  3997. those (if any) of the other \*QNamedTypes\*U.
  3998. .sp 9p
  3999. .RT
  4000. .PP
  4001. 24.7
  4002. The notation for defining the value of a choice type shall be
  4003. the \*QChoiceValue\*U:
  4004. .sp 9p
  4005. .RT
  4006. .LP
  4007.     ChoiceValue ::= NamedValue
  4008. .PP
  4009. 24.8
  4010. If the \*QNamedValue\*U contains an \*Qidentifier\*U, it shall be a
  4011. notation for a value of that type in the \*QAlternativeTypeList\*U that 
  4012. is named by the same \*Qidentifier\*U. If the \*QNamedValue\*U does not 
  4013. contain an \*Qidentifier\*U, it shall be a notation for a value of one 
  4014. of those types in the 
  4015. \*QAlternativeTypeList\*U that are not named by an \*Qidentifier\*U.
  4016. .sp 9p
  4017. .RT
  4018. .PP
  4019. \fINote\fR \ \(em\ Failure to use an \*Qidentifier\*U in the \*QNamedType\*U 
  4020. can 
  4021. make the value notation ambiguous.
  4022. .sp 2P
  4023. .LP
  4024. \fB25\fR     \fBNotation for \fR \fBselection types\fR 
  4025. .sp 1P
  4026. .RT
  4027. .PP
  4028. 25.1
  4029. A \*QNamedType\*U appearing in the \*QAlternativeTypeList\*U of a
  4030. \*QChoiceType\*U can be referenced by the notation \*QSelectionType\*U:
  4031. .sp 9p
  4032. .RT
  4033. .LP
  4034.     SelectionType ::= identifier<Type
  4035. .LP
  4036. where \*QType\*U is a notation referencing the \*QChoiceType\*U, and \*Qidentifier\*U 
  4037. is 
  4038. the \*Qidentifier\*U in the \*QNamedType\*U.
  4039. .PP
  4040. \fINote\fR \ \(em\ \*QSelectionType\*U can be used either as a \*QNamedType\*U, 
  4041. in which case the \*Qidentifier\*U is used in the value notation, or as 
  4042. a \*QType\*U 
  4043. within a \*QNamedType\*U, in which case its \*Qidentifier\*U is not used.
  4044. .PP
  4045. 25.2
  4046. The notation for a value of a selection type shall be
  4047. \*QSelectionValue\*U:
  4048. .sp 9p
  4049. .RT
  4050. .LP
  4051.     SelectionValue ::= NamedValue
  4052. .LP
  4053. where the \*QNamedValue\*U contains the identifier that appears in the
  4054. corresponding \*QSelectionType\*U if the \*QSelectionType\*U is used as 
  4055. a \*QNamedType\*U, but not otherwise. 
  4056. .sp 2P
  4057. .LP
  4058. \fB26\fR     \fBNotation for \fR \fBtagged types\fR 
  4059. .sp 1P
  4060. .RT
  4061. .PP
  4062. A tagged type (see \(sc 3.26) is a new type which is isomorphic with an 
  4063. old type, but which has a different tag. In all encoding schemes, a value 
  4064. of the new type can be distinguished from a value of the old type. The 
  4065. tagged type is mainly of use where this Recommendation requires the use 
  4066. of types with 
  4067. distinct tags. (See \(sc\ 20.3, \(sc\ 22.3, \(sc\ 24.2, \(sc\ 24.4, and 
  4068. \(sc\ 27.6.) 
  4069. .PP
  4070. \fINote\fR \ \(em\ Where a protocol determines that values from several
  4071. datatypes may be transmitted at any moment in time, distinct tags may be 
  4072. needed to enable the recipient to correctly decode the value. 
  4073. .RT
  4074. .PP
  4075. 26.1
  4076. The notation for a tagged type shall be \*QTaggedType\*U:
  4077. .sp 9p
  4078. .RT
  4079. .LP
  4080.     TaggedType ::=
  4081. .LP
  4082.     Tag Type\ |
  4083. .LP
  4084. Tag IMPLICIT Type\ |
  4085. .LP
  4086. Tag EXPLICIT Type
  4087. .LP
  4088.     Tag ::= [Class ClassNumber]
  4089. .LP
  4090.     ClassNumber ::=
  4091. .LP
  4092.     number\ |
  4093. .LP
  4094. DefinedValue
  4095. .LP
  4096.     Class ::=
  4097. .LP
  4098.     UNIVERSAL\ |
  4099. .LP
  4100. APPLICATION\ |
  4101. .LP
  4102. PRIVATE\ |
  4103. .LP
  4104. empty
  4105. .bp
  4106. .PP
  4107. 26.2
  4108. The \*QDefinedValue\*U shall be a reference to a non\(hynegative value
  4109. of type integer, or of a type derived from type integer by tagging.
  4110. .sp 9p
  4111. .RT
  4112. .PP
  4113. 26.3
  4114. The new type is isomorphic with the old type, but has a tag
  4115. with \*QClass\*U class and number \*QClassNumber\*U, unless the \*QClass\*U 
  4116. is \*Qempty\*U, 
  4117. when the tag is context\(hyspecific class, number \*QClassNumber\*U.
  4118. .sp 9p
  4119. .RT
  4120. .PP
  4121. 26.4
  4122. The \*QClass\*U shall not be \*QUNIVERSAL\*U except for types defined in 
  4123. this Recommendation. 
  4124. .sp 9p
  4125. .RT
  4126. .PP
  4127. \fINote\fR \ \(em\ Use of universal class tags is agreed from time to time 
  4128. by ISO and CCITT. 
  4129. .PP
  4130. 26.5
  4131. If the \*QClass\*U is \*QAPPLICATION\*U, the same \*QTag\*U shall not be
  4132. used again in the same module.
  4133. .sp 9p
  4134. .RT
  4135. .PP
  4136. 26.6
  4137. If the \*QClass\*U is \*QPRIVATE\*U the \*QTag\*U is available for use on
  4138. an enterprise\(hyspecific basis.
  4139. .sp 9p
  4140. .RT
  4141. .PP
  4142. 26.7
  4143. The tagging construction specifies explicit tagging if any of
  4144. the following holds:
  4145. .sp 9p
  4146. .RT
  4147. .LP
  4148.     a)
  4149.     the \*QTag EXPLICIT Type\*U alternative is used;
  4150. .LP
  4151.     b)
  4152.     the \*QTag Type\*U alternative is used and the value of
  4153. \*QTagDefault\*U for the module is \*QEXPLICIT TAGS\*U;
  4154. .LP
  4155.     c)
  4156.     the \*QTag Type\*U alternative is used and the value of
  4157. \*QTagDefault\*U for the module is \*QIMPLICIT TAGS\*U, but
  4158. the type defined by \*QType\*U is a choice type or on any
  4159. type.
  4160. .PP
  4161. The tagging construction specifies implicit tagging otherwise.
  4162. .PP
  4163. 26.8
  4164. If the \*QClass\*U is \*Qempty\*U, there are no restrictions on the use
  4165. of \*QTag\*U, other than those implied by the requirement for distinct tags in
  4166. \(sc\ 20.3, \(sc\ 22.3, and \(sc\ 24.2.
  4167. .sp 9p
  4168. .RT
  4169. .PP
  4170. 26.9
  4171. Implicit tagging indicates, for those encoding rules which
  4172. provide the option, that explicit identification of the tag of the \*QType\*U 
  4173. in 
  4174. the \*QTaggedType\*U is not needed during transfer.
  4175. .sp 9p
  4176. .RT
  4177. .PP
  4178. \fINote\fR \ \(em\ It can be useful to retain the old tag where this was
  4179. universal class, and hence unambiguously identifies the old type without
  4180. knowledge of the ASN.1\ definition of the new type. Minimum transfer octets 
  4181. is, however, normally achieved by the use of IMPLICIT. An example of encoding 
  4182. using IMPLICIT is given in Recommendation\ X.209. 
  4183. .PP
  4184. 26.10 
  4185. The \*QIMPLICIT\*U alternative shall not be used if the type
  4186. defined by \*QType\*U is a choice type or an any type. 
  4187. .sp 9p
  4188. .RT
  4189. .PP
  4190. 26.11
  4191. The notation for a value of a \*QTaggedType\*U shall be
  4192. \*QTaggedValue\*U:
  4193. .sp 9p
  4194. .RT
  4195. .LP
  4196.     TaggedValue ::= Value
  4197. .LP
  4198. where \*Qvalue\*U is the notation for a value of the \*QType\*U in the 
  4199. \*QTaggedType\*U. 
  4200. .PP
  4201. \fINote\fR \ \(em\ The \*QTag\*U does not appear in this notation.
  4202. .sp 2P
  4203. .LP
  4204. \fB27\fR     \fBNotation for the \fR \fBany type\fR 
  4205. .sp 1P
  4206. .RT
  4207. .PP
  4208. 27.1
  4209. The notation for any type (see \(sc\ 3.29) is \*QAnyType\*U:
  4210. .sp 9p
  4211. .RT
  4212. .LP
  4213.     AnyType ::=
  4214. .LP
  4215.     ANY\ |
  4216. .LP
  4217. ANY DEFINED BY identifier
  4218. .PP
  4219. \fINote\fR \ \(em\ The use of \*QANY\*U in an ISO Standard or CCITT
  4220. Recommendation produces an incomplete specification unless it is supplemented 
  4221. by additional specification. The \*QANY DEFINED BY\*U construct provides 
  4222. the means of specifying in an instance of communication the type which 
  4223. fills the ANY, and a pointer to its semantics. If the following rules for 
  4224. its use are followed, it can provide a complete specification. Use of ANY 
  4225. without the DEFINED BY 
  4226. construct is deprecated.
  4227. .bp
  4228. .PP
  4229. 27.2
  4230. The \*QDEFINED BY\*U alternative shall be used only when the any
  4231. type, or a type derived from it by tagging, is one of the component types 
  4232. of a sequence type or set type (the containing type). 
  4233. .sp 9p
  4234. .RT
  4235. .PP
  4236. 27.3
  4237. The \*Qidentifier\*U in the \*QDEFINED BY\*U alternative shall also
  4238. appear in a \*QNamedType\*U that specifies another, non\(hyoptional, component 
  4239. of the containing type. The \*QNamedType\*U shall be an integer type or 
  4240. an enumerated type or an object identifier type or a type derived from 
  4241. those by tagging or 
  4242. subtyping.
  4243. .sp 9p
  4244. .RT
  4245. .PP
  4246. 27.4
  4247. When the \*QNamedType\*U is an integer or enumerated type, or of a
  4248. type derived from those types by tagging ot subtyping the document employing
  4249. the \*QDEFINED BY\*U notation shall contain, or explicitly reference, a 
  4250. single list which specifies the ASN.1\ type to be carried by the ANY for 
  4251. each permitted 
  4252. value of the integer type. There shall be precisely any one such list in all
  4253. instances of communication of the containing type.
  4254. .sp 9p
  4255. .RT
  4256. .PP
  4257. 27.5
  4258. When the \*QNamedType\*U is an object identifier type, or a type
  4259. derived from object identifier by tagging, there is a need for registers 
  4260. which, for each allocated object identifier value, associate a single ASN.1\ 
  4261. type 
  4262. (which may be a CHOICE type) which is to be carried by the ANY.
  4263. .sp 9p
  4264. .RT
  4265. .PP
  4266. \fINote\ 1\fR \ \(em\ There may be an arbitrary number of registers
  4267. associating an object identifier value with an ASN.1\ type for this purpose.
  4268. .PP
  4269. \fINote\ 2\fR \ \(em\ Registration of values for open interconnection is 
  4270. expected to occur within ISO Standards and CCITT Recommendations using 
  4271. the notation. 
  4272. Where a separate International Registration Authority is intended for any
  4273. instance of \*QANY DEFINED BY\*U, this should be identified in the document 
  4274. using the notation. 
  4275. .PP
  4276. \fINote\ 3\fR \ \(em\ The main difference between the integer and object
  4277. identifier definers is that the use of integer references a single list,
  4278. contained in the using standard or Recommendation, whilst the use of object
  4279. identifier allows an open\(hyended set of types determined by any authority 
  4280. able to allocate object identifiers. 
  4281. .RT
  4282. .PP
  4283. 27.6
  4284. This type has an indeterminate tag, and shall not be used where
  4285. this Recommendation requires distinct tags. (See \(sc\ 20.3, \(sc\ 22.3, 
  4286. \(sc\ 24.2 and 
  4287. \(sc\ 24.4.)
  4288. .sp 9p
  4289. .RT
  4290. .PP
  4291. 27.7
  4292. The notation for the value of an any type shall be defined
  4293. using ASN.1 and is \*QAnyValue\*U:
  4294. .sp 9p
  4295. .RT
  4296. .LP
  4297.     AnyValue ::= Type Value
  4298. .LP
  4299. where \*QType\*U is the notation for the chosen type, and \*QValue\*U is 
  4300. the notation for a value of this type. 
  4301. .sp 2P
  4302. .LP
  4303. \fB28\fR     \fBNotation for the \fR \fBobject identifier type\fR 
  4304. .sp 1P
  4305. .RT
  4306. .PP
  4307. 28.1
  4308. The object identifier type (see \(sc\ 3.34) shall be referenced by
  4309. the notation \*QObjectIdentifierType\*U:
  4310. .sp 9p
  4311. .RT
  4312. .LP
  4313.     ObjectIdentifierType ::=
  4314. .LP
  4315.     OBJECT IDENTIFIER
  4316. .PP
  4317. 28.2
  4318. This type has a tag which is universal class, number 6.
  4319. .sp 9p
  4320. .RT
  4321. .PP
  4322. 28.3
  4323. The value notation for an object identifier shall be
  4324. \*QObjectIdentifierValue\*U:
  4325. .sp 9p
  4326. .RT
  4327. .LP
  4328.     ObjectIdentifierValue ::=
  4329. .LP
  4330.     {ObjIdComponentList}\ |
  4331. .LP
  4332. {DefinedValue ObjIdComponentList}
  4333. .LP
  4334.     ObjIdComponentList ::=
  4335. .LP
  4336.     ObjIdComponent\ |
  4337. .LP
  4338. ObjIdComponent ObjIdComponentList
  4339. .LP
  4340.     ObjIdComponent ::=
  4341. .LP
  4342.     NameForm\ |
  4343. .LP
  4344. NumberForm\ |
  4345. .LP
  4346. NameAndNumberForm
  4347. .bp
  4348. .LP
  4349.     NameForm ::= identifier
  4350. .LP
  4351.     NumberForm ::= number\ |\ DefinedValue
  4352. .LP
  4353.     NameAndNumberForm ::=
  4354. .LP
  4355.     identifier(NumberForm)
  4356. .PP
  4357. 28.4
  4358. The \*QDefinedValue\*U in \*QNumberForm\*U shall be a reference to a
  4359. value of type integer or enumerated, or of a type derived from those by 
  4360. tagging or subtyping. 
  4361. .sp 9p
  4362. .RT
  4363. .PP
  4364. 28.5 
  4365. The \*QDefinedValue\*U in \*QObjectIdentifierValue\*U shall be a reference 
  4366. to a value of type object identifier, or of a type derived from object 
  4367. identifier by tagging.
  4368. .sp 9p
  4369. .RT
  4370. .PP
  4371. 28.6
  4372. The \*QNameForm\*U shall be used only for those object identifier
  4373. components whose numeric value and identifier are specified in annexes\ 
  4374. B to\ D, and shall be one of the identifiers specified in annexes\ B to\ 
  4375. D. 
  4376. .sp 9p
  4377. .RT
  4378. .PP
  4379. 28.7
  4380. The \*Qnumber\*U in the \*QNumberForm\*U shall be the numeric value
  4381. assigned to the object identifier component.
  4382. .sp 9p
  4383. .RT
  4384. .PP
  4385. 28.8
  4386. The \*Qidentifier\*U in the \*QNameAndNumberForm\*U shall be specified
  4387. when a numeric value is assigned to the object identifier component.
  4388. .sp 9p
  4389. .RT
  4390. .PP
  4391. \fINote\fR \ \(em\ The authorities allocating numeric values to object
  4392. identifier components are identified in the annexes to this Recommendation.
  4393. .PP
  4394. 28.9
  4395. The semantics of an object identifier value are defined by
  4396. reference to an \fBobject identifier tree\fR . An object identifier tree 
  4397. is a tree whose root corresponds to this Recommendation and whose vertices 
  4398. correspond to administrative authorities responsible for allocating arcs 
  4399. from that vertex. 
  4400. Each arc of the tree is labelled by an object identifier component which 
  4401. is a numeric value. Each information object to be identified is allocated 
  4402. precisely one vertex (normally a leaf), and no other information object 
  4403. (of the same or a different type) is allocated to that same vertex. Thus 
  4404. an information object is uniquely and unambiguously identified by the sequence 
  4405. of numeric values (object identifier components) labelling the arcs in 
  4406. a path from the root to the vertex allocated to the information object. 
  4407. .sp 9p
  4408. .RT
  4409. .PP
  4410. \fINote\fR \ \(em\ Object identifier values contain at least two object
  4411. identifier components, as specified in annexes\ B to\ D.
  4412. .PP
  4413. 28.10
  4414. An object identifier value is semantically an ordered list of object identifier 
  4415. component values. Starting with the root of the object 
  4416. identifier tree, each object identifier component value identifies an arc in
  4417. the object identifier tree. The last object identifier component value
  4418. identifies an arc leading to a vertex which an information object has been
  4419. assigned. It is this information object which is identified by the object
  4420. identifier value. The significant part of the object identifier component is
  4421. the \*QNameForm\*U or \*QNumberForm\*U which it reduces to, and which provides 
  4422. the 
  4423. numeric value for the object identifier component.
  4424. .sp 9p
  4425. .RT
  4426. .PP
  4427. \fINote\fR \ \(em\ In general, an information object is a class of
  4428. information (for example, a file format), rather than an instance of such a
  4429. class (for example, an individual file). It is thus the class of information
  4430. (defined by some referencable specification), rather than the piece of
  4431. information itself, that is assigned a place in the tree.
  4432. .PP
  4433. 28.11 
  4434. Where the \*QObjectIdentifierValue\*U includes a \*QDefinedValue\*U,
  4435. the list of object identifier components to which it refers is prefixed 
  4436. to the components explicitly present in the value. 
  4437. .sp 9p
  4438. .RT
  4439. .PP
  4440. \fIExamples:\fR \| With identifiers is assigned as specified in
  4441. Annex\ B, the values:
  4442. .LP
  4443.     {iso standard 8571 pci (1)}
  4444. .LP
  4445. and
  4446. .LP
  4447.     {1 0 8571 1}
  4448. .LP
  4449. would each identify an object, \*Qpci\*U, defined in ISO 8571.
  4450. .bp
  4451. .PP
  4452. With the following additional definition:
  4453. .LP
  4454.     ftam OBJECT IDENTIFIER ::=
  4455. .LP
  4456.     {iso standard 8571}
  4457. .LP
  4458. the following value is also equivalent to those above:
  4459. .LP
  4460.     {ftam pci (1)}
  4461. .PP
  4462. \fINote\fR \ \(em\ It is recommended that, whenever a CCITT Recommendation, 
  4463. ISO standard or other document assigns values of type OBJECT IDENTIFIER 
  4464. to 
  4465. information objects there should be an appendix or annex which summarizes 
  4466. the assignments made therein. It is also recommended that an authority 
  4467. assigning 
  4468. values of type OBJECT IDENTIFIER to an information object should also assign
  4469. values of type ObjectDescriptor to that information object.
  4470. .sp 2P
  4471. .LP
  4472. \fB29\fR     \fBNotation for \fR \fBcharacter string\fR \fBtypes\fR 
  4473. .sp 1P
  4474. .RT
  4475. .PP
  4476. 29.1
  4477. The notation for referencing a character string type (see
  4478. \(sc\ 3.12 and section two) shall be:
  4479. .sp 9p
  4480. .RT
  4481. .LP
  4482.     CharacterStringType ::= typereference
  4483. .LP
  4484. where \*Qtypereference\*U is one of the character string type names listed in
  4485. section two.
  4486. .PP
  4487. 29.2
  4488. The tag of each character string type is specified in section
  4489. two.
  4490. .sp 9p
  4491. .RT
  4492. .PP
  4493. 29.3
  4494. The notation for a character string value shall be:
  4495. .sp 9p
  4496. .RT
  4497. .LP
  4498.     CharacterStringValue ::= cstring
  4499. .PP
  4500. The definition of the character string type determines the
  4501. characters appearing in the \*Qcstring\*U.
  4502. .sp 2P
  4503. .LP
  4504. \fB30\fR     \fBNotation for types defined in section three\fR 
  4505. .sp 1P
  4506. .RT
  4507. .PP
  4508. 30.1
  4509. The notation for referencing a type defined in section three of
  4510. this Recommendation shall be:
  4511. .sp 9p
  4512. .RT
  4513. .LP
  4514.     UsefulType ::= typereference
  4515. .LP
  4516. where \*Qtypereference\*U is one of those defined in section three using 
  4517. the ASN.1 notation. 
  4518. .PP
  4519. 30.2
  4520. The tag of each \*QUsefulType\*U is specified in section three.
  4521. .sp 9p
  4522. .RT
  4523. .PP
  4524. 30.3
  4525. The notation for a value of a \*QUsefulType\*U is specified in
  4526. section three.
  4527. .sp 9p
  4528. .RT
  4529. .sp 1P
  4530. .ce 1000
  4531. SECTION\ 2\ \(em\ CHARACTER\ STRING\ TYPES
  4532. .ce 0
  4533. .sp 1P
  4534. .sp 2P
  4535. .LP
  4536. \fB31\fR     \fBDefinition of character string types\fR 
  4537. .sp 1P
  4538. .RT
  4539. .PP
  4540. This clause defines types whose distinguished values are sequences of zero, 
  4541. one or more characters from some character set. 
  4542. .RT
  4543. .PP
  4544. 31.1
  4545. The type is defined by specifying:
  4546. .sp 9p
  4547. .RT
  4548. .LP
  4549.     a)
  4550.     the tag assigned to the type; and
  4551. .LP
  4552.     b)
  4553.     a name by which the type definition can be referenced; and
  4554. .LP
  4555.     c)
  4556.     the characters in the character set used in defining the
  4557. type, either by reference to a table listing the character
  4558. graphics or by reference to a registration number in the ISO
  4559. International Register of Coded Character Sets to be used with
  4560. Escape Sequences.
  4561. .PP
  4562. The name in b) above may be used as a \*Qtypereference\*U in the ASN.1 
  4563. notation (see \(sc\ 29). 
  4564. .bp
  4565. .PP
  4566. 31.2
  4567. Table\ 6/X.208 lists the name by which each of these type
  4568. definitions can be referenced, the number of the universal class tag assigned 
  4569. to the type, the defining registration numbers or following table, and, 
  4570. where necessary, identification of a NOTE relating to the entry in the 
  4571. table. Where a synonymous name is defined in the notation, this is listed 
  4572. in parentheses. 
  4573. .sp 9p
  4574. .RT
  4575. .PP
  4576. \fINote\fR \ \(em\ The tag assigned to character string types unambiguously 
  4577. identifies the type. Note, however, that if ASN.1 is used to define new 
  4578. types from this type (particularly using IMPLICIT), it may be impossible 
  4579. to recognize these types without knowledge of the ASN.1\ type definition. 
  4580. .PP
  4581. 31.3
  4582. Table\ 4/X.208 lists the characters which can appear in the
  4583. NumericString type.
  4584. .sp 9p
  4585. .RT
  4586. .LP
  4587. .sp 3
  4588. .ce
  4589. \fBH.T. [T4.208]\fR 
  4590. .ce
  4591. TABLE\ 4/X.208
  4592. .ce
  4593. \fBNumericString\fR 
  4594. .ps 9
  4595. .vs 11
  4596. .nr VS 11
  4597. .nr PS 9
  4598. .TS
  4599. center box;
  4600. cw(30p) | cw(30p) .
  4601. Name    Graphic
  4602. _
  4603. .T&
  4604. lw(30p) | cw(30p) .
  4605. Digits    0, 1, .\|.\|. 9
  4606. .T&
  4607. lw(30p) | cw(30p) .
  4608. Space    (space)
  4609. _
  4610. .TE
  4611. .nr PS 9
  4612. .RT
  4613. .ad r
  4614. \fBTableau 4/X.208 [T4.208], p. 4\fR 
  4615. .sp 1P
  4616. .RT
  4617. .ad b
  4618. .RT
  4619. .LP
  4620. .sp 4
  4621. .ce
  4622. \fBH.T. [T5.208]\fR 
  4623. .ce
  4624. TABLE\ 5/X.208
  4625. .ce
  4626. \fBPrintableString\fR 
  4627. .ce
  4628. \fR 
  4629. .ps 9
  4630. .vs 11
  4631. .nr VS 11
  4632. .nr PS 9
  4633. .TS
  4634. center box;
  4635. cw(60p) | cw(36p) .
  4636. Name    Graphic
  4637. _
  4638. .T&
  4639. lw(60p) | lw(36p) .
  4640. Capital letters    A, B, .\|.\|. Z
  4641. .T&
  4642. lw(60p) | lw(36p) .
  4643. Small letters    a, b, .\|.\|. z
  4644. .T&
  4645. lw(60p) | lw(36p) .
  4646. Digits    0, 1, .\|.\|. 9
  4647. .T&
  4648. lw(60p) | lw(36p) .
  4649. Space    (space)
  4650. .T&
  4651. lw(60p) | lw(36p) .
  4652. Apostrophe    \fB'\fR
  4653. .T&
  4654. lw(60p) | lw(36p) .
  4655. Left Parenthesis    (
  4656. .T&
  4657. lw(60p) | lw(36p) .
  4658. Right Parenthesis    )
  4659. .T&
  4660. lw(60p) | lw(36p) .
  4661. Plus sign    +
  4662. .T&
  4663. lw(60p) | lw(36p) .
  4664. Comma    \fB,\fR
  4665. .T&
  4666. lw(60p) | lw(36p) .
  4667. Hyphen    \fB\(hy\fR
  4668. .T&
  4669. lw(60p) | lw(36p) .
  4670. Full stop    \fB.\fR
  4671. .T&
  4672. lw(60p) | lw(36p) .
  4673. Solidus    /
  4674. .T&
  4675. lw(60p) | lw(36p) .
  4676. Colon    \fB:\fR
  4677. .T&
  4678. lw(60p) | lw(36p) .
  4679. Equal sign    =
  4680. .T&
  4681. lw(60p) | lw(36p) .
  4682. Question mark    ?  
  4683. _
  4684. .TE
  4685. .nr PS 9
  4686. .RT
  4687. .ad r
  4688. \fBTableau 5/X.208 [T5.208], p. 5\fR 
  4689. .sp 1P
  4690. .RT
  4691. .ad b
  4692. .RT
  4693. .LP
  4694. .bp
  4695. .ce
  4696. \fBH.T. [T6.208]\fR 
  4697. .ce
  4698. TABLE\ 6/X.208
  4699. .ce
  4700. \fBList of character string types\fR 
  4701. .ce
  4702. \fR 
  4703. .ps 9
  4704. .vs 11
  4705. .nr VS 11
  4706. .nr PS 9
  4707. .TS
  4708. center box;
  4709. cw(48p) | cw(36p) | cw(78p) | cw(30p) .
  4710. Name for referencing the type    Universal class number    T{
  4711. Defining registration numbers (see\ ISO\ 2375) or
  4712. table number
  4713. T}    Notes
  4714. _
  4715. .T&
  4716. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4717. NumericString    18    Table 4    1
  4718. .T&
  4719. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4720. PrintableString    19    Table 5    1
  4721. .T&
  4722. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4723. TeletexString (T61String)    20    T{
  4724. 87, 102, 103, 106, 107
  4725. +\ SPACE +\ DELETE
  4726. T}    2
  4727. .T&
  4728. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4729. VideotexString    21    T{
  4730. 1, 72, 73, 102, 108, 128, 129
  4731. +\ SPACE +\ DELETE
  4732. T}    3
  4733. .T&
  4734. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4735. VisibleString (ISO646String)    26    2 +\ SPACE    
  4736. .T&
  4737. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4738. IA5String    22    1, 2 +\ SPACE +\ DELETE    
  4739. .T&
  4740. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4741. GraphicString    25    All G sets +\ SPACE     
  4742. .T&
  4743. lw(48p) | cw(36p) | lw(78p) | cw(30p) .
  4744. GeneralString    27    T{
  4745. All G and all C sets
  4746. +\ SPACE +\ DELETE
  4747. \fINote\ 1\fR
  4748. \ \(em\ The type\(hystyle, size, colour, intensity, or other display
  4749. characteristics are not significant.
  4750. .parag
  4751. \fINote\ 2\fR
  4752. \ \(em\ The entries corresponding to these registration numbers
  4753. reference CCITT Recommendation\ T.61 for rules concerning their use.
  4754. .parag
  4755. \fINote\ 3\fR
  4756. \ \(em\ The entries corresponding to these registration numbers
  4757. provide the functionality of CCITT Recommendations\ T.100 and\ T.101.
  4758. .parag
  4759. T}    
  4760. _
  4761. .TE
  4762. .nr PS 9
  4763. .RT
  4764. .ad r
  4765. \fBTableau 6/X.208 [T6.208], p. 6\fR 
  4766. .sp 1P
  4767. .RT
  4768. .ad b
  4769. .RT
  4770. .PP
  4771. 31.4
  4772. Table 5/X.208 lists the characters which can appear in the
  4773. PrintableString type.
  4774. .sp 9p
  4775. .RT
  4776. .PP
  4777. 31.5
  4778. The notation for these types shall be \*Qcstring\*U.
  4779. .sp 9p
  4780. .RT
  4781. .PP
  4782. \fINote\fR \ \(em\ This notation can only be used on a medium capable of
  4783. displaying the characters which are present in the value. The notation 
  4784. for the value in other cases is not defined. 
  4785. .PP
  4786. 31.6
  4787. In all cases, the range of permitted characters may be
  4788. restricted by a comment, but shall not be extended.
  4789. .sp 9p
  4790. .RT
  4791. .sp 1P
  4792. .ce 1000
  4793. SECTION\ 3\ \(em\ USEFUL\ DEFINITIONS
  4794. .ce 0
  4795. .sp 1P
  4796. .PP
  4797. This section contains definitions which are expected to be
  4798. useful in a number of applications.
  4799. .sp 1P
  4800. .RT
  4801. .PP
  4802. \fINote\fR \ \(em\ It is expected that this section will be added to, to
  4803. encompass other common datatypes such as diagnostics, authentication
  4804. information, accounting information, security parameters and so on.
  4805. .PP
  4806. The value notation and semantic definition for types defined in this section 
  4807. are derived from a definition of the type using the ASN.1\ notation. 
  4808. This type definition can be referenced by standards or Recommendations 
  4809. defining encoding rules in order to specify encodings for these types. 
  4810. .bp
  4811. .RT
  4812. .sp 2P
  4813. .LP
  4814. \fB32\fR     \fBGeneralized time\fR 
  4815. .sp 1P
  4816. .RT
  4817. .PP
  4818. 32.1
  4819. This type shall be referenced by the name:
  4820. .sp 9p
  4821. .RT
  4822. .LP
  4823.     GeneralizedTime
  4824. .PP
  4825. 32.2
  4826. The type consists of values representing:
  4827. .sp 9p
  4828. .RT
  4829. .LP
  4830.     a)
  4831.     a calendar date, as defined in ISO 2014 (Writing of calendar
  4832. dates in all\(hynumeric form); and
  4833. .LP
  4834.     b)
  4835.     a time of day, to any of the precisions defined in clause\ 2
  4836. of ISO\ 3307 (Representations of time of day); and
  4837. .LP
  4838.     c)
  4839.     the local differential factor as defined in ISO 4031
  4840. (Representation of local time differentials).
  4841. .PP
  4842. 32.3
  4843. The type can be defined, using ASN.1, as follows:
  4844. .sp 9p
  4845. .RT
  4846. .LP
  4847.     GeneralizedTime ::=
  4848. .LP
  4849.     [UNIVERSAL 24] IMPLICIT
  4850. .LP
  4851. VisibleString
  4852. .PP
  4853. with the values of the \*QVisibleString\*U restricted to strings of
  4854. characters which are either:
  4855. .LP
  4856.     a)
  4857.     a string representing the calendar date, as specified in
  4858. ISO\ 2014, with a four\(hydigit representation of the year, a
  4859. two\(hydigit representation of the month and a two\(hydigit
  4860. representation of the day, without use of separators, followed
  4861. by a string representing the time of day, as specified in
  4862. ISO\ 3307, without separators other than decimal comma or
  4863. decimal period (as provided for in clauses\ 2.3, 2.4 and\ 2.5
  4864. of ISO\ 3307), and with no terminating\ Z (as provided for in
  4865. clause\ 3 of ISO\ 3307); or
  4866. .LP
  4867.     b)
  4868.     the characters in a) above followed by an upper\(hycase
  4869. letter\ Z; or
  4870. .LP
  4871.     c)
  4872.     the characters in a) above followed by a string representing
  4873. a local time differential, as specified in ISO\ 4031, without
  4874. separators.
  4875. .PP
  4876. In case a), the time shall represent the local time. In case\ b), the time 
  4877. shall represent UTC time. In case\ c), the part of the string formed in 
  4878. case\ a) represents the local time (t\d1\u), and the time differential 
  4879. (t\d2\u) 
  4880. enables UTC time to be determined as follows:
  4881. .LP
  4882.     UTC time is t\d1\u\ \(em\ t\d2\u
  4883. .LP
  4884.     \fIExamples:\fR 
  4885. .LP
  4886.     Case\ a)
  4887.     19851106210627.3
  4888. .LP
  4889. local time 6 minutes, 27.3 seconds
  4890. .LP
  4891. after 9 pm on 6 November 1985.
  4892. .LP
  4893.     Case\ b)
  4894.     19851106210627.3Z
  4895. .LP
  4896. UTC time as above.
  4897. .LP
  4898.     Case\ c)
  4899.     19851106210627.3\(em0500
  4900. .LP
  4901. Local time as in example a), with
  4902. .LP
  4903. local time 5 hours retarded in
  4904. .LP
  4905. relation to UTC time.
  4906. .PP
  4907. 32.4
  4908. The tag shall be as defined in \(sc 32.3.
  4909. .sp 9p
  4910. .RT
  4911. .PP
  4912. 32.5
  4913. The value notation shall be the value notation for the
  4914. \*QVisibleString\*U defined in \(sc\ 32.3.
  4915. .sp 9p
  4916. .RT
  4917. .sp 2P
  4918. .LP
  4919. \fB33\fR     \fBUniversal time\fR 
  4920. .sp 1P
  4921. .RT
  4922. .PP
  4923. 33.1
  4924. This type shall be referenced by the name:
  4925. .sp 9p
  4926. .RT
  4927. .LP
  4928.     UTCTime
  4929. .PP
  4930. 33.2
  4931. The type consists of values representing:
  4932. .sp 9p
  4933. .RT
  4934. .LP
  4935.     a)
  4936.     a calendar date; and
  4937. .LP
  4938.     b)
  4939.     a time to a precision of one minute or one second; and
  4940. .LP
  4941.     c)
  4942.     (optionally) a local time differential from coordinated
  4943. universal time.
  4944. .bp
  4945. .PP
  4946. 33.3
  4947. The type can be defined, using ASN.1, as follows:
  4948. .sp 9p
  4949. .RT
  4950. .LP
  4951.     UTCTime ::=
  4952. .LP
  4953.     [UNIVERSAL 23]IMPLICIT
  4954. .LP
  4955. VisibleString
  4956. .PP
  4957. with the values of the \*QVisibleString\*U restricted to strings of
  4958. characters which are the juxtaposition of:
  4959. .LP
  4960.     a)
  4961.     the six digits YYMMDD where YY is the two low\(hyorder digits
  4962. of the Christian year, MM is the month (counting January as
  4963. 01), and DD is the day of the month (01 to 31); and
  4964. .LP
  4965.     b)
  4966.     either:
  4967. .LP
  4968.     1)
  4969.     the four digits hhmm where hh is hour (00 to 23) and
  4970. mm is minutes (00 to 59); or
  4971. .LP
  4972.     2)
  4973.     the six digits hhmmss where hh and mm are as in 1)
  4974. above, and ss is seconds (00 to 59); and
  4975. .LP
  4976.     c)
  4977.     either:
  4978. .LP
  4979.     1)
  4980.     the character Z; or
  4981. .LP
  4982.     2)
  4983.     one of the characters + or \(em, followed by hhmm,
  4984. where hh is hour and mm is minutes.
  4985. .PP
  4986. The alternatives in b) above allow varying precisions in the
  4987. specification of the time.
  4988. .PP
  4989. In alternative c)\|1), the time is UTC time. In alternative c)\|2), the 
  4990. time (t\d1\u) specified by a) and b) above is the local time; the time 
  4991. differential (t\d2\u) specified by c)\|2) above enables the UTC time to be
  4992. determined as follows:
  4993. .RT
  4994. .LP
  4995.     UTC Time is t\d1\u\ \(em\ t\d2\u
  4996. .PP
  4997. \fIExample:\fR \| If local time is 7 AM on 2 January and coordinated
  4998. universal time is 12\ noon on 2\ January, the value is either of:
  4999. .LP
  5000.     UTCTime \*Q8201021200Z\*U
  5001. .LP
  5002. UTCTime \*Q8201020700\(em0500\*U
  5003. .PP
  5004. 33.4
  5005. The tag shall be as defined in \(sc 33.3.
  5006. .sp 9p
  5007. .RT
  5008. .PP
  5009. 33.5
  5010. The value notation shall be the value notation for the
  5011. \*QVisibleString\*U defined in \(sc\ 33.3.
  5012. .sp 9p
  5013. .RT
  5014. .sp 2P
  5015. .LP
  5016. \fB34\fR     \fBThe external type\fR 
  5017. .sp 1P
  5018. .RT
  5019. .PP
  5020. 34.1
  5021. The notation for an external type (see \(sc\ 3.30) is
  5022. \*QExternalType\*U:
  5023. .sp 9p
  5024. .RT
  5025. .LP
  5026.     ExternalType ::= EXTERNAL
  5027. .PP
  5028. 34.2
  5029. The type consists of values representing:
  5030. .sp 9p
  5031. .RT
  5032. .LP
  5033.     a)
  5034.     an encoding of a single data value that may, but need not,
  5035. be the value of a single ASN.1 datatype; and
  5036. .LP
  5037.     b)
  5038.     identification information which determines the semantics
  5039. and encoding rules; and
  5040. .LP
  5041.     c)
  5042.     (optionally) an object descriptor which describes the
  5043. object.
  5044. .PP
  5045. The optional object descriptor shall not be present unless
  5046. explicitly permitted by comment associated with the use of the EXTERNAL
  5047. notation.
  5048. .PP
  5049. 34.3
  5050. Type EXTERNAL permits the inclusion of any data value from an identified 
  5051. set of data values. 
  5052. .sp 9p
  5053. .RT
  5054. .PP
  5055. \fINote\ 1\fR \ \(em\ The specification of this set of data values, their
  5056. semantics, the assignment of an object identifier and (optionally) an object
  5057. descriptor, and the dissemination of this information to all communicating
  5058. parties is called \fBregistering an abstract syntax\fR . This operation can be
  5059. performed by any authority entitled to allocate an OBJECT IDENTIFIER value, 
  5060. as specified in Annexes\ B to\ D. 
  5061. .PP
  5062. \fINote\ 2\fR \ \(em\ A set of data values registered as an abstract syntax 
  5063. (with associated encoding rules) is not well\(hyformed unless the encoding 
  5064. of each data value is self\(hyidentifying within the set of data value 
  5065. encodings. When 
  5066. ASN.1 is used to define an abstract syntax, tagging is used to provide
  5067. self\(hyidentification.  Where an abstract syntax is not well\(hyformed, use
  5068. of the communications channel is either context\(hysensitive or leads to
  5069. ambiguity.
  5070. .bp
  5071. .RT
  5072. .PP
  5073. 34.4
  5074. The EXTERNAL type can be defined, using ASN.1, as follows:
  5075. .sp 9p
  5076. .RT
  5077. .LP
  5078.     \fBEXTERNAL ::= [UNIVERSAL 8] IMPLICIT SEQUENCE\fR 
  5079. .LP
  5080.     \fB{direct\(hyreference\fR     \fBOBJECT IDENTIFIER OPTIONAL,\fR 
  5081. .LP
  5082.     \fBindirect\(hyreference\fR     \fBINTEGER OPTIONAL,\fR 
  5083. .LP
  5084.     \fBdata\(hyvalue\(hydescriptor\fR     \fBObjectDescriptor OPTIONAL,\fR 
  5085. .LP
  5086.     \fBencoding\fR     \fBCHOICE\fR 
  5087. .LP
  5088.     en
  5089. \fB{single\(hyASN1\(hytype\fR     \fB[0] ANY,\fR 
  5090. .LP
  5091.     en{
  5092. \fBoctet\(hyaligned\fR     \fB[1] IMPLICIT OCTET STRING,\fR 
  5093. .LP
  5094.     en{
  5095. \fBarbitrary\fR     \fB[2] IMPLICIT BIT STRING}}\fR 
  5096. .PP
  5097. 34.5
  5098. When presentation layer negotiation of encoding rules is not in
  5099. use (prior agreement of transfer syntax) for the value of this EXTERNAL, the
  5100. \*Qdirect\(hyreference OBJECT IDENTIFIER\*U shall be present. In this case the
  5101. identifier of the set of data values is an object identifier which directly
  5102. references an abstract syntax and fills the \*Qdirect\(hyreference OBJECT
  5103. IDENTIFIER\*U field of the \*QEXTERNAL\*U. In this case, the abstract syntax
  5104. registration also defines the encoding rules (transfer syntax) for the data
  5105. value and the \*Qindirect\(hyreference INTEGER\*U shall not be included.
  5106. .sp 9p
  5107. .RT
  5108. .PP
  5109. 34.6
  5110. When presentation layer negotiation is in use for the value of
  5111. this EXTERNAL, the \*Qindirect\(hyreference INTEGER\*U shall be present. 
  5112. In this case the identifier of the set of data values is an integer which 
  5113. references an 
  5114. instance of use of an abstract syntax. The integer is called a \fBpresentation
  5115. context identifier\fR and fills the \*Qindirect\(hyreference INTEGER\*U 
  5116. field of the 
  5117. \*QEXTERNAL\*U. If presentation layer negotiation has been completed, the
  5118. presentation context identifier also identifies the encoding rules (transfer
  5119. syntax) for the data value and the \*Qdirect\(hyreference OBJECT IDENTIFIER\*U 
  5120. shall not be included. If presentation layer negotiation is not complete, 
  5121. an object identifier value is also needed which identifies the encoding 
  5122. rules (transfer syntax) used for the encoding. Where presentation layer 
  5123. negotiation is in use, and where the \*Qdirect\(hyreference OBJECT IDENTIFIER\*U 
  5124. element is allowed or 
  5125. required to carry such a value, this shall be identified by comment associated 
  5126. with the use of the \*QEXTERNAL\*U notation, otherwise the field shall 
  5127. be 
  5128. absent.
  5129. .sp 9p
  5130. .RT
  5131. .PP
  5132. \fINote\ 1\fR \ \(em\ The effect of \(sc 34.5 and \(sc\ 34.6 is to make 
  5133. the presence of at least one of the \*Qdirect\(hyreference\*U and the \*Qindirect\(hyreference\*U 
  5134. mandatory.
  5135. .PP
  5136. \fINote\ 2\fR \ \(em\ Both references are present when presentation layer
  5137. negotiation is in use but incomplete.
  5138. .RT
  5139. .PP
  5140. 34.7
  5141. If the data value is the value of a single ASN.1 datatype, and
  5142. if the encoding rules for this data value are the same as those for the
  5143. complete \*QEXTERNAL\*U datatype, then the sending implementation shall 
  5144. use any of the \*QEncoding\*U choices: 
  5145. .sp 9p
  5146. .RT
  5147. .LP
  5148.     single\(hyASN1\(hytype
  5149. .LP
  5150. octet\(hyaligned
  5151. .LP
  5152. arbitrary
  5153. .LP
  5154. as an implementation option.
  5155. .PP
  5156. 34.8
  5157. If the encoding of the data value, using the agreed or
  5158. negotiated encoding, is an integral number of octets, then the sending
  5159. implementation shall use any of the \*QEncoding\*U choices:
  5160. .sp 9p
  5161. .RT
  5162. .LP
  5163.     octet\(hyaligned
  5164. .LP
  5165. arbitrary
  5166. .LP
  5167. as an implementation option.
  5168. .PP
  5169. \fINote\fR \ \(em\ A data value which is a series of ASN.1 types, and for
  5170. which the transfer syntax specifies simple concatenation of the octet strings 
  5171. produced by applying the ASN.1 Basic Encoding Rules to each ASN.1\ type, 
  5172. falls into this category, not that of \(sc\ 34.7. 
  5173. .PP
  5174. 34.9
  5175. If the encoding of the data value, using the agreed or
  5176. negotiated encoding, is not an integral number of octets, the \*QEncoding\*U 
  5177. choice shall be: 
  5178. .sp 9p
  5179. .RT
  5180. .LP
  5181.     arbitrary
  5182. .bp
  5183. .PP
  5184. 34.10 
  5185. If the \*QEncoding\*U choice is chosen as \*Qsingle\(hyASN1\(hytype\*U, then
  5186. the ASN.1 type shall replace the \*QANY\*U, with a value equal to the data 
  5187. value to be encoded. 
  5188. .sp 9p
  5189. .RT
  5190. .PP
  5191. \fINote\fR \ \(em\ The range of values which might occur in the \*QANY\*U is
  5192. determined by the registration of the object identifier value associated 
  5193. with the \*Qdirect\(hyreference\*U, and/or the integer value associated 
  5194. with the 
  5195. \*Qindirect\(hyreference\*U.
  5196. .PP
  5197. 34.11 
  5198. If the \*QEncoding\*U choice is chosen as \*Qoctet\(hyaligned\*U, then the
  5199. data value shall be encoded according to the agreed or negotiated transfer
  5200. syntax, and the result shall form the value of the bitstring.
  5201. .sp 9p
  5202. .RT
  5203. .PP
  5204. 34.12 
  5205. If the \*QEncoding\*U choice is chosen as \*Qarbitrary\*U, then the data 
  5206. value shall be encoded according to the agreed or negotiated transfer syntax, 
  5207. and the result shall form the value of the bitstring. 
  5208. .sp 9p
  5209. .RT
  5210. .PP
  5211. 34.13 
  5212. The tag shall be as defined in \(sc 34.4.
  5213. .sp 9p
  5214. .RT
  5215. .PP
  5216. 34.14 
  5217. The value notation shall be the value of the type defined in
  5218. \(sc\ 34.4.
  5219. .sp 9p
  5220. .RT
  5221. .sp 2P
  5222. .LP
  5223. \fB35\fR     \fBThe object descriptor type\fR 
  5224. .sp 1P
  5225. .RT
  5226. .PP
  5227. 35.1
  5228. This type shall be referenced by the name:
  5229. .sp 9p
  5230. .RT
  5231. .sp 1P
  5232. .ce 1000
  5233. ObjectDescriptor
  5234. .ce 0
  5235. .sp 1P
  5236. .PP
  5237. 35.2
  5238. The type consists of human\(hyreadable text which serves to
  5239. describe an information object. The text is not an unambiguous identification 
  5240. of the information object, but identical text for different information 
  5241. objects is intended to be uncommon. 
  5242. .sp 9p
  5243. .RT
  5244. .PP
  5245. \fINote\fR \ \(em\ It is recommended that an authority assigning values 
  5246. of type \*QOBJECT IDENTIFIER\*U to an information object should also assign 
  5247. values of type \*QObjectDescriptor\*U to that information object. 
  5248. .PP
  5249. 35.3
  5250. The type can be defined, using the ASN.1 notation, as follows:
  5251. .sp 9p
  5252. .RT
  5253. .LP
  5254.     ObjectDescriptor ::=
  5255. .LP
  5256.     [UNIVERSAL 7] IMPLICIT
  5257. .LP
  5258. GraphicString
  5259. .PP
  5260. The \*QGraphicString\*U contains the text describing the information   object.
  5261. .PP
  5262. 35.4
  5263. The tag shall be as defined in \(sc\ 35.3.
  5264. .sp 9p
  5265. .RT
  5266. .PP
  5267. 35.5
  5268. The value notation shall be the value notation for the
  5269. \*QGraphicString\*U defined in \(sc\ 37.3.
  5270. .sp 9p
  5271. .RT
  5272. .sp 1P
  5273. .ce 1000
  5274. SECTION\ 4\ \(em\ SUBTYPES
  5275. .ce 0
  5276. .sp 1P
  5277. .sp 2P
  5278. .LP
  5279. \fB36\fR     \fBSubtype notation\fR 
  5280. .sp 1P
  5281. .RT
  5282. .PP
  5283. 36.1
  5284. A subtype is defined by the notation for a parent type followed
  5285. by an appropriate subtype specification. The subtype specification notation 
  5286. is made up of subtype value sets. The values in the subtype are determined 
  5287. as 
  5288. specified in \(sc\ 36.7 by taking the union of all the subtype value sets.
  5289. .sp 9p
  5290. .RT
  5291. .PP
  5292. 36.2
  5293. The subtype notation shall not be used so as to produce a
  5294. subtype with no values.
  5295. .sp 9p
  5296. .RT
  5297. .PP
  5298. 36.3
  5299. The notation for a subtype shall be \*QSubtype\*U:
  5300. .sp 9p
  5301. .RT
  5302. .LP
  5303.     Subtype ::=
  5304. .LP
  5305.     ParentType SubtypeSpec\ |
  5306. .LP
  5307. SET SizeConstraint OF Type\ |
  5308. .LP
  5309. SEQUENCE SizeConstraint OF Type
  5310. .LP
  5311.     ParentType ::= Type
  5312. .bp
  5313. .PP
  5314. 36.4
  5315. When the \*QSubtypeSpec\*U notation follows the \*QSelectionType\*U
  5316. notation, the parent type is the \*QSelectionType\*U, not the \*QType\*U in the
  5317. \*QSelectionType\*U notation.
  5318. .sp 9p
  5319. .RT
  5320. .PP
  5321. 36.5
  5322. When the \*QSubtypeSpec\*U notation follows a set\(hyof or sequence\(hyof
  5323. type notation, it applies to the \*QType\*U in the set\(hyof or sequence\(hyof 
  5324. notation, not to the set\(hyof or sequence\(hyof type. 
  5325. .sp 9p
  5326. .RT
  5327. .PP
  5328. \fINote\fR \ \(em\ The special notation \*QSET SizeConstraint OF\*U and
  5329. \*QSEQUENCE Size Constraint OF\*U is used to provide an alternative mechanism
  5330. (which is more readable than the general case notation) for simple cases. 
  5331. More complex cases require the general mechanism. 
  5332. .PP
  5333. 36.6
  5334. The subtype specification notation shall be \*QSubtypeSpec\*U:
  5335. .sp 9p
  5336. .RT
  5337. .LP
  5338.     SubtypeSpec ::=
  5339. .LP
  5340.     (SubtypeValueSet SubtypeValueSetList)
  5341. .LP
  5342.     SubtypeList ::=
  5343. .LP
  5344.     \*Q\ |\ \*U
  5345. .LP
  5346. SubtypeValueSet
  5347. .LP
  5348. SubtypeValueSetList\ |
  5349. .LP
  5350. empty
  5351. .PP
  5352. 36.7
  5353. Each \*QSubtypeValueSet\*U specifies a number (possibly zero) of
  5354. values of the parent type, which are then included in the subtype. A value 
  5355. of the parent type is a value of the subtype if and only if it is included 
  5356. by one or more of the subtype value sets. The subtype is thus formed from 
  5357. the set 
  5358. union of the values included by the subtype value sets.
  5359. .sp 9p
  5360. .RT
  5361. .PP
  5362. 36.8
  5363. A number of different forms of notation for \*QSubtypeValueSet\*U are provided. 
  5364. They are identified below, and their syntax and semantics is defined in 
  5365. \(sc\ 37. As specified in \(sc\ 37, and summarized in Table\ 7/X.208, some 
  5366. notations can only be applied to particular parent types. 
  5367. .sp 9p
  5368. .RT
  5369. .ce
  5370. \fBH.T. [T7.208]\fR 
  5371. .ce
  5372. TABLE\ 7/X.208
  5373. .ce
  5374. \fBApplicability of subtype value sets\fR 
  5375. .ce
  5376. \fR 
  5377. .ps 9
  5378. .vs 11
  5379. .nr VS 11
  5380. .nr PS 9
  5381. .TS
  5382. center box;
  5383. cw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5384. T{
  5385. Type (or derived from such
  5386. a type by tagging)
  5387. T}    Single Value    Cont'd Subtype    Value Range    Size Range    Alphabet Limitation    Inner Subtyping
  5388. _
  5389. .T&
  5390. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5391. Boolean    /    /    x    x    x    x
  5392. _
  5393. .T&
  5394. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5395. Integer    /    /    /    x    x    x
  5396. _
  5397. .T&
  5398. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5399. Enumerated    /    /    x    x    x    x
  5400. _
  5401. .T&
  5402. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5403. Real    /    /    /    x    x    x
  5404. _
  5405. .T&
  5406. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5407. Object Identifier    /    /    x    x    x    x
  5408. _
  5409. .T&
  5410. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5411. Bit String    /    /    x    /    x    x
  5412. _
  5413. .T&
  5414. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5415. Octet String    /    /    x    /    x    x
  5416. _
  5417. .T&
  5418. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5419. Character String Types    /    /    x    /    /    x
  5420. _
  5421. .T&
  5422. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5423. Sequence    /    /    x    x    x    /
  5424. _
  5425. .T&
  5426. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5427. Sequence\(hyof    /    /    x    /    x    /
  5428. _
  5429. .T&
  5430. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5431. Set    /    /    x    x    x    /
  5432. _
  5433. .T&
  5434. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5435. Set\(hyof    /    /    x    /    x    /
  5436. _
  5437. .T&
  5438. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5439. Any    /    /    x    x    x    x
  5440. _
  5441. .T&
  5442. lw(60p) | cw(30p) | cw(24p) | cw(30p) | cw(24p) | cw(30p) | cw(30p) .
  5443. Choice    /    /    x    x    x    /
  5444. _
  5445. .TE
  5446. .nr PS 9
  5447. .RT
  5448. .ad r
  5449. \fBTable 7/X.208 [T7.208], p.\fR 
  5450. .sp 1P
  5451. .RT
  5452. .ad b
  5453. .RT
  5454. .LP
  5455. .bp
  5456. .LP
  5457.     Subtype ValueSet ::=
  5458. .LP
  5459.     SingleValue\ |
  5460. .LP
  5461. ContainedSubtype\ |
  5462. .LP
  5463. ValueRange\ |
  5464. .LP
  5465. PermittedAlphabet\ |\ SizeConstraint\ |\ InnerTypeConstraints
  5466. .LP
  5467. \fB37\fR     \fBSubtype Value Sets\fR 
  5468. .sp 1P
  5469. .RT
  5470. .sp 2P
  5471. .LP
  5472. 37.1
  5473.     \fISingle Value\fR 
  5474. .sp 1P
  5475. .RT
  5476. .PP
  5477. 37.1.1
  5478. The \*QSingleValue\*U notation shall be:
  5479. .sp 9p
  5480. .RT
  5481. .LP
  5482.     SingleValue ::= Value
  5483. .LP
  5484. where \*QValue\*U is the value notation for the parent type.
  5485. .PP
  5486. 37.1.2
  5487. A \*QSingleValue\*U set is the single value of the parent type
  5488. specified by \*QValue\*U. This notation can be applied to all parent types.
  5489. .sp 9p
  5490. .RT
  5491. .sp 2P
  5492. .LP
  5493. 37.2
  5494.     \fIContained Subtype\fR 
  5495. .sp 1P
  5496. .RT
  5497. .PP
  5498. 37.2.1
  5499. The \*QContainedSubtype\*U notation shall be:
  5500. .sp 9p
  5501. .RT
  5502. .LP
  5503.     ContainedSubtype ::= INCLUDES Type
  5504. .PP
  5505. 37.2.2
  5506. A \*QContainedSubType\*U value consists of all the values of the
  5507. \*QType\*U, which is itself required to be a subtype of the parent type. This
  5508. notation can be applied to all parent types.
  5509. .sp 9p
  5510. .RT
  5511. .sp 2P
  5512. .LP
  5513. 37.3
  5514.     \fIValue Range\fR 
  5515. .sp 1P
  5516. .RT
  5517. .PP
  5518. 37.3.1
  5519. The \*QValueRange\*U notation shall be:
  5520. .sp 9p
  5521. .RT
  5522. .LP
  5523.     ValueRange ::= LowerEndpoint .. Upper Endpoint
  5524. .PP
  5525. 37.3.2
  5526. A \*QValueRange\*U value set consists of all the values in a range
  5527. which are designated by specifying the numerical values of the endpoints 
  5528. of the range. This notation can only be applied to integer types, real 
  5529. types and types derived from those types by tagging or subtyping. 
  5530. .sp 9p
  5531. .RT
  5532. .PP
  5533. \fINote\fR \ \(em\ For the purpose of subtyping, \*QPLUS\(hyINFINITY\*U 
  5534. exceeds all \*QNumericReal\*U values and \*QMINUS\(hyINFINITY\*U is less 
  5535. than all \*QNumericReal\*U 
  5536. values.
  5537. .PP
  5538. 37.3.3
  5539. Each endpoint of the range is either closed (in which case that
  5540. endpoint is included in the value set) or open (in which case the endpoint 
  5541. is not included). When open, the specification of the endpoint includes 
  5542. less\(hythan symbol (\*Q<\*U):
  5543. .sp 9p
  5544. .RT
  5545. .LP
  5546.     LowerEndpoint ::= LowerEndValue\ |\ LowerEndValue <
  5547. .LP
  5548.     UpperEndpoint ::= UpperEndValue\ |\ < UpperEndValue
  5549. .PP
  5550. 37.3.4
  5551. An endpoint may also be unspecified, in which case the range
  5552. extends in that direction as far as the parent type allows:
  5553. .sp 9p
  5554. .RT
  5555. .LP
  5556.     LowerEndValue ::= Value\ |\ MIN
  5557. .LP
  5558.     UpperEndValue ::= Value\ |\ MAX
  5559. .sp 2P
  5560. .LP
  5561. 37.4
  5562.     \fISize Constraint\fR 
  5563. .sp 1P
  5564. .RT
  5565. .PP
  5566. 37.4.1
  5567. The \*QSizeConstraint\*U notation shall be:
  5568. .sp 9p
  5569. .RT
  5570. .LP
  5571.     SizeConstraint ::= SIZE SubtypeSpec
  5572. .bp
  5573. .PP
  5574. 37.4.2
  5575. A \*QSizeConstraint\*U can only be applied to bitstring types,
  5576. octetstring types, character string types, set\(hyof types or sequence\(hyof 
  5577. types, or types formed from any of those types by tagging or subtyping. 
  5578. .sp 9p
  5579. .RT
  5580. .PP
  5581. 37.4.3
  5582. The \*QSubtypeSpec\*U specifies the permitted integer values for
  5583. the length of the numbers of the value set, and takes the form of any subtype 
  5584. specifications which can be applied to the following parent type: 
  5585. .sp 9p
  5586. .RT
  5587. .sp 1P
  5588. .ce 1000
  5589. INTEGER (0.\|.MAX)
  5590. .ce 0
  5591. .sp 1P
  5592. .PP
  5593. 37.4.4
  5594. The unit of measure depends on the parent type, as follows:
  5595. .sp 9p
  5596. .RT
  5597. .LP
  5598.     \fBType\fR     \fBUnit of measure\fR 
  5599. .LP
  5600.     bit string
  5601.     bit
  5602. .LP
  5603.     octet string
  5604.     octet
  5605. .LP
  5606.     character string
  5607.     character
  5608. .LP
  5609.     set\(hyof
  5610.     component value
  5611. .LP
  5612.     sequence\(hyof
  5613.     component value
  5614. .sp 2P
  5615. .LP
  5616. 37.5
  5617.     \fIPermitted Alphabet\fR 
  5618. .sp 1P
  5619. .RT
  5620. .PP
  5621. 37.5.1
  5622. The \*QPermittedAlphabet\*U notation shall be:
  5623. .sp 9p
  5624. .RT
  5625. .LP
  5626.     PermittedAlphabet ::= FROM SubtypeSpec
  5627. .PP
  5628. 37.5.2
  5629. A \*QPermittedAlphabet\*U value consists of all values which can be
  5630. constructed using a sub\(hyalphabet of the parent string. This notation 
  5631. can only be applied to character string types, or to types formed from 
  5632. them by tagging or subtyping. 
  5633. .sp 9p
  5634. .RT
  5635. .PP
  5636. 37.5.3
  5637. The \*QSubtypeSpec\*U specifies the characters which may appear in
  5638. the character string, and is any subtype specification which can be applied 
  5639. to the subtype obtained by applying the subtype specification \*QSIZE(1)\*U 
  5640. to the 
  5641. parent type.
  5642. .sp 9p
  5643. .RT
  5644. .sp 2P
  5645. .LP
  5646. 37.6
  5647.     \fIInner Subtyping\fR 
  5648. .sp 1P
  5649. .RT
  5650. .PP
  5651. 37.6.1
  5652. The \*QInnerTypeConstraints\*U notation shall be:
  5653. .sp 9p
  5654. .RT
  5655. .LP
  5656.     InnerTypeConstraints ::=
  5657. .LP
  5658.     WITH\ COMPONENT\ \|SingleTypeConstraint\ |
  5659. .LP
  5660.     WITH\ COMPONENTS\ MultipleTypeConstraints
  5661. .PP
  5662. 37.6.2
  5663. An \*QInnerTypeConstraints\*U includes in the value set only those
  5664. values which satisfy a collection of constraints on the presence and/or 
  5665. values of the components of the parent type. A value of the parent type 
  5666. is not 
  5667. included in the subtype unless it satisfies all of the constraints expressed 
  5668. or implied (see \(sc\ 37.6.6). This notation can be applied to the set\(hyof, 
  5669. sequence\(hyof, set, sequence and choice types, or types formed from them by
  5670. tagging or subtyping.
  5671. .sp 9p
  5672. .RT
  5673. .PP
  5674. 37.6.3
  5675. For the types which are defined in terms of a single other
  5676. (inner) type (set\(hyof, sequence\(hyof and types derived from them by 
  5677. tagging), a 
  5678. constraint taking the form of a subtype value specification is provided. The
  5679. notation for this is \*QSingleTypeConstraint\*U:
  5680. .sp 9p
  5681. .RT
  5682. .LP
  5683.     SingleTypeConstraint ::= SubtypeSpec
  5684. .PP
  5685. The \*QSubtypeSpec\*U defines a subtype of the single other (inner)
  5686. type. A value of the parent type is a member of the subtype value set if and
  5687. only if each inner value belongs to the subtype obtained by applying the
  5688. \*QSubtypeSpec\*U to the inner type.
  5689. .bp
  5690. .PP
  5691. 37.6.4
  5692. For the types which are defined in terms of multiple other
  5693. (inner) types (choice, set, sequence, and types derived from them by tagging 
  5694. or subtyping), a number of constraints on these inner types can be provided. 
  5695. The notation for this is \*QMultipleTypeConstraints\*U: 
  5696. .sp 9p
  5697. .RT
  5698. .LP
  5699.     MultipleTypeConstraints ::=
  5700. .LP
  5701.     FullSpecification\ |\ PartialSpecification
  5702. .LP
  5703.     FullSpecification ::= {TypeConstraints}
  5704. .LP
  5705.     PartialSpecification ::= {\|.\|.\|., TypeConstraints}
  5706. .LP
  5707.     TypeConstraints ::=
  5708. .LP
  5709.     NamedConstraint\ |
  5710. .LP
  5711. NamedConstraint, TypeConstraints
  5712. .LP
  5713.     NamedConstraint ::= identifier Constraint\ |\ Constraint
  5714. .PP
  5715. 37.6.5
  5716. The \*QTypeConstraints\*U contains a list of constraints on the
  5717. component types of the parent type. For a sequence type, the constraints 
  5718. must appear in order. The inner type to which the constraint applies is 
  5719. identified by means of its identifier, if it has one, or by its position, 
  5720. in the case of sequence types. 
  5721. .sp 9p
  5722. .RT
  5723. .PP
  5724. \fINote\fR \ \(em\ Where the inner type has no identifier, the notation 
  5725. can be ambiguous. 
  5726. .PP
  5727. 37.6.6
  5728. The \*QMultipleTypeConstraints\*U comprises either a
  5729. \*QFullSpecification\*U or a \*QPartialSpecification\*U. Where \*QFullSpecification\*U 
  5730. is used, there is an implied presence constraint of \*QABSENT\*U on all 
  5731. inner types 
  5732. not explicitly listed (see \(sc\ 37.6.8), and each inner type which is 
  5733. not marked \*QOPTIONAL\*U or \*QDEFAULT\*U in the parent type shall be 
  5734. explicitly listed. Where 
  5735. \*QPartialSpecification\*U is employed, there are no implied constraints, 
  5736. and any inner type can be omitted from the list. 
  5737. .sp 9p
  5738. .RT
  5739. .PP
  5740. 37.6.7
  5741. A particular inner type may be constrained in terms of its
  5742. presence (in values of the parent type), its value, or both. The notation is
  5743. \*QConstraint\*U:
  5744. .sp 9p
  5745. .RT
  5746. .LP
  5747.     Constraint ::= ValueConstraint PresenceConstraint
  5748. .PP
  5749. 37.6.8
  5750. A constraint on the value of an inner type is expressed by the
  5751. notation \*QValueConstraint\*U:
  5752. .sp 9p
  5753. .RT
  5754. .LP
  5755.     ValueConstraint ::= SubtypeSpec\ |\ empty
  5756. .PP
  5757. The constraint is satisfied by a value of the parent type if and only if 
  5758. the inner value belongs to the subtype specified by the \*QSubtypeSpec\*U 
  5759. applied to the inner type. 
  5760. .PP
  5761. 37.6.9
  5762. A constraint on the presence of an inner type shall be
  5763. expressed by the notation \*QPresenceConstraint\*U:
  5764. .sp 9p
  5765. .RT
  5766. .LP
  5767.     PresenceConstraint ::= PRESENT\ |\ ABSENT\ |\ empty\ |\ OPTIONAL
  5768. .PP
  5769. The meaning of these alternatives, and the situations in which
  5770. they are permitted, are defined in \(sc\ 37.6.9.1 to \(sc\ 37.6.9.3.
  5771. .sp 1P
  5772. .LP
  5773. 37.6.9.1\ \ If the parent type is a sequence or set, an element type marked
  5774. \*QOPTIONAL\*U may be constrained to be \*QPRESENT\*U (in which case the 
  5775. constraint is satisfied if and only if the corresponding element value 
  5776. is present) or to be \*QABSENT\*U (in which case the constraint is satisfied 
  5777. if and only if the 
  5778. corresponding element value is absent or to be \*QOPTIONAL\*U (in which 
  5779. case the 
  5780. constraint is placed upon the presence of the corresponding element
  5781. value).
  5782. .sp 9p
  5783. .RT
  5784. .sp 1P
  5785. .LP
  5786. 37.6.9.2\ \ If the parent type is a choice, a component type can be
  5787. constrained to be \*QABSENT\*U, in which case the constraint is satisfied 
  5788. if and 
  5789. only if the corresponding component type is not used in the value.
  5790. .sp 9p
  5791. .RT
  5792. .sp 1P
  5793. .LP
  5794. 37.6.9.3\ \ The meaning of an empty \*QPresenceConstraint\*U depends on
  5795. whether a \*QFullSpecification\*U or a \*QPartialSpecification\*U is being
  5796. employed:
  5797. .sp 9p
  5798. .RT
  5799. .LP
  5800.     a)
  5801.     in a \*QFullSpecification\*U, this is equivalent to a
  5802. constraint of \*QPRESENT\*U;
  5803. .LP
  5804.     b)
  5805.     in a \*QPartialSpecification\*U, no constraint is
  5806. imposed.
  5807. .LP
  5808. .bp
  5809.