January 2000
In the ASN.1 definition for 10646 negotiation (Iso10646), in the earlier definition:The reason for this change is as follows:Iso10646 ::= SEQUENCE{ collections [1] IMPLICIT OBJECT IDENTIFIER, -- ........ encodingLevel [2] IMPLICIT OBJECT IDENTIFIER }The change in this definition is:
- make 'collections' OPTIONAL, so the above is changed to:
Iso10646 ::= SEQUENCE{ collections [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL, -- ........ encodingLevel [2] IMPLICIT OBJECT IDENTIFIER }- Add semantics to the effect that when 'collections' is omitted, 'implementationLevel' (see below) defaults to 3.
The object identifier (for 'collections') takes the form:1.0.10646.1.implementationLevel.repertoireSubset.arc1.arc2. ....where ImplementationLevel is 1-3, repertoireSubset is 0 or 1, and one or more "arcs" are present if and only if repertoireSubset is 1, in which case arc1, arc2, etc., are the identifiers of collections of character repertoires.Sometimes character set negotiation is intended for the purpose of negotiating implementation level and encoding (covered by the second OID in the definition cited above; the usage of this OID is not affected by this change), but not to negotiate specific collections. The object identifier may omit collections only when repertoireSubset is zero. At the time of this change, the usage of value zero for repertoireSubset is not well-understood.
NegotiationRecordDefinition-charSetandLanguageNegotiation-3 {Z39-50-negotiationRecordDefinition CharSetandLanguageNegotiation-3 (3)} DEFINITIONS ::= BEGIN CharSetandLanguageNegotiation ::= CHOICE{ proposal [1] IMPLICIT OriginProposal, response [2] IMPLICIT TargetResponse} -- -- For character sets: -- Origin proposes one, two, or all three of the following, in order of -- preference: -- (a) 2022 character sets. -- (b) 10646 character set. -- (c) Private character set. -- -- The target responds with one of (a), (b), or (c), indicating the -- character set(s) to be supported for all name and message strings. -- -- If the origin includes (a), -- the origin proposes: -- (1) A proposed environment: 7-bit, 8-bit, or no-preference. -- (2) A set of iso 2022 registration numbers. -- (3) One or more proposed initial sets of registration numbers, -- for c0, c1, g0, g1, g2 and g3. These must come from (2). -- (4) The proposed encoding level. -- And if the target selects (a), it responds with: -- (1) A selected environment: 7-bit or 8-bit. -- (2) A subset of the set of iso 2022 registration numbers proposed -- by the origin. -- (3) The initial set of registrations, which must come from (2) -- but need not be from the set of initial registrations proposed -- by the origin. -- (4) The encoding level; less than or equal to that proposed. -- -- If the origin includes (b), -- The origin proposes: -- (1) (optionally) A list of collections (i.e. subsets of characters from the -- complete 10646 definition). -- (2) An implementation level. -- (3) Syntax/form: e.g. ucs-2, ucs-4, utf-8, utf-16. -- And if the target selects (b), it responds by choosing a subset of the -- collections proposed by the origin in (1) and an implementation level less -- than or equal to that proposed by the origin in (2). -- -- If the origin includes (c), the origin proposes one of the following: -- (1) A list of private character sets, by one or more object -- identifiers. -- (2) A list of private character sets, by an EXTERNAL. -- (3) An indication to use a private, previously agreed upon -- character set. -- And if the target selects (c): -- - If the origin proposed (1), the target should respond with (1), and -- the list of object identifiers should be a subset of the list that -- the origin included. -- - If the origin proposed (2), the target should respond with (2), using -- the same EXTERNAL definition (but not necessarily the same content) -- used by the origin. -- - If the origin proposed (3), the target should respond with (3). -- -- For Languages: -- The origin optionally proposes one or more language codes. The target -- response may include a single language code, which indicates the -- language to be used for all message strings. The target may include or -- omit this, whether or not the origin included a proposed set, and the -- language code indicated need not be from among those proposed. -- -- OriginProposal ::= SEQUENCE { proposedCharSets [1] IMPLICIT SEQUENCE OF CHOICE{ -- Each should occur at most once, and in order of preference -- (the "order of preference" is the reason why this is -- "SEQUENCE OF CHOICE" rather than just "SEQUENCE") iso2022 [1] Iso2022, iso10646 [2] IMPLICIT Iso10646, private [3] PrivateCharacterSet} OPTIONAL, -- proposedCharSets must be omitted -- if origin proposes version 2 proposedlanguages [2] IMPLICIT SEQUENCE OF LanguageCode OPTIONAL, recordsInSelectedCharSets [3] IMPLICIT BOOLEAN OPTIONAL -- default 'false'. See rule 6 above. } TargetResponse ::= SEQUENCE{ selectedCharSets [1] CHOICE{ iso2022 [1] Iso2022, iso10646 [2] IMPLICIT Iso10646, private [3] PrivateCharacterSet, none [4] IMPLICIT NULL -- If selected, no negotiation -- is assumed to be in force -- for character sets. } OPTIONAL, -- Omitted if and only if proposedCharSets -- was Omitted in the request. selectedLanguage [2] IMPLICIT LanguageCode OPTIONAL, recordsInSelectedCharSets [3] IMPLICIT BOOLEAN OPTIONAL -- Omitted if and only if 'recordsInSelectedCharSets' was omitted -- in the request. See rule 6 above. } PrivateCharacterSet ::= CHOICE{ viaOid [1] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER, externallySpecified [2] IMPLICIT EXTERNAL, previouslyAgreedUpon [3] IMPLICIT NULL} LanguageCode ::= GeneralString -- from ANSI Z39.53-1994 -- Definition of ISO2022 -- For ISO 2022, the following is negotiated: -- 1) The environment: 7-bit or 8-bit; -- 2) a set of registration numbers (from the ISO Register of coded -- character sets) for graphical and control character sets; -- 3) g0, g1, g2, g3, c0, c1, the registration numbers of the graphical and -- control character sets that are initially designated to g0, g1, etc. -- The origin submits one or more sequences of values for -- g0, g1, g2, g3, c0, c1 (for each sequence: at least one of -- g0 and g1 must be included; g2 and g3 are optional and -- may be included only if g1 is included; -- c0 should be included; and c1 is optional); the target -- selects one of the proposed sequences. -- 4) gleft: which of g0, g1, g2 or g3, initially has GL shift status in -- an 8-bit environment or has shift status in a 7-bit environment; and -- 5) gright: which of g1, g2 or g3 initially has GR shift status in an -- 8-bit environment. Iso2022 ::= CHOICE{ originProposal [1] IMPLICIT SEQUENCE{ proposedEnvironment [0] Environment OPTIONAL, -- omitted means no preference proposedSets [1] IMPLICIT SEQUENCE OF INTEGER, proposedInitialSets [2] IMPLICIT SEQUENCE OF InitialSet, proposedLeftAndRight [3] IMPLICIT LeftAndRight}, targetResponse [2] IMPLICIT SEQUENCE{ selectedEnvironment [0] Environment, selectedSets [1] IMPLICIT SEQUENCE OF INTEGER, selectedinitialSet [2] IMPLICIT InitialSet, selectedLeftAndRight [3] IMPLICIT LeftAndRight}} Environment ::= CHOICE{ sevenBit [1] IMPLICIT NULL, eightBit [2] IMPLICIT NULL} InitialSet::= SEQUENCE{ g0 [0] IMPLICIT INTEGER OPTIONAL, g1 [1] IMPLICIT INTEGER OPTIONAL, -- one of g0 and g1 must be included g2 [2] IMPLICIT INTEGER OPTIONAL, g3 [3] IMPLICIT INTEGER OPTIONAL, --g2 and/or g3 may be included -- only if g1 was included c0 [4] IMPLICIT INTEGER, c1 [5] IMPLICIT INTEGER OPTIONAL} LeftAndRight ::= SEQUENCE{ gLeft [3] IMPLICIT INTEGER{ g0 (0), g1 (1), g2 (2), g3 (3)}, gRight [4] IMPLICIT INTEGER{ g1 (1), g2 (2), g3 (3)} OPTIONAL} -- Definition of Iso10646 -- -- The 10646 object identifier looks like: -- 1.0.10646.1.implementationLevel.repertoireSubset.arc1.arc2. .... -- -- (The second '1' is for "part 1" of 10646.) -- -- ImplementationLevel is 1-3 -- -- repertoireSubset is 0 or 1, for 'all' or 'collections'. -- The arcs are present only if repertoireSubset is 'collections', -- in which case arc1, arc2, etc., are the -- identifiers of collections of character repertoires. -- -- There is a second 10646 oid, for specifying syntax/form: -- 1.0.10646.1.0.form -- -- (The second '0' represents "transfer syntax".) -- -- where values of form include: -- 2: ucs-2 -- 4: ucs-4 -- 5: utf-16 -- 8: utf-8 Iso10646 ::= SEQUENCE{ collections [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL, --oid of form 1.0.10646.1.implementationLevel -- .repertoireSubset.arc1.arc2. .... -- Target to choose a subset of the collections -- proposed by the origin, and an implementation level -- less than or equal to that proposed. -- -- when 'collections' is omitted, -- 'implementationLevel' defaults to 3. -- encodingLevel [2] IMPLICIT OBJECT IDENTIFIER -- oid of form 1.0.10646.1.0.form -- where value of 'form' is 2, 4, 5, or 8 -- for ucs-2, ucs-4, utf-16, utf-8 } END