+++ /dev/null
-NegotiationRecordDefinition-charSetandLanguageNegotiation-3
-{Z39-50-negotiationRecordDefinition CharSetandLanguageNegotiation-3 (3)}
-DEFINITIONS ::= BEGIN
-IMPORTS LanguageCode FROM RecordSyntax-explain;
-
-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}
-
--- IMPORTED
--- 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
-