If the origin proposes version 3 and submits a negotiation record of this
type:
- The negotiation record should occur in the Other-Information parameter
of the Init request.
- If the target responds that version 3 is in force and includes a negotiation
record of this type it should occur in the Other- Information parameter
of the Init response.
- If the target responds that version 2 is in force (but still recognizes
the Other-Information parameter in the request), and includes a negotiation
record of this type it should occur within the User-Information-field
parameter of the Init response. In this case, negotiation pertains to
language only, and not to character sets except
for Z39.50 type Term, as noted in rule 3.
The ASN.1 for this definition follows.
NegotiationRecordDefinition-charSetandLanguageNegotiation-4
{Z39-50-negotiationRecordDefinition CharSetandLanguageNegotiation-4 (x)}
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 7 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
Library of
Congress