Revert "TODO epan/dissectors/asn1/kerberos/packet-kerberos-template.c new GSS flags"
[wireshark-sm.git] / epan / dissectors / asn1 / z3950 / z3950-externals.asn
blob4ce968361784c518216a4080b86147932f4c2ec6
1 RecordSyntax-SUTRS
2 {z39-50-recordSyntax sutrs (101)} DEFINITIONS ::=
3 BEGIN 
4 IMPORTS InternationalString  FROM Z39-50-APDU-1995;
5         SutrsRecord ::= InternationalString
6 -- Line terminator is ASCII LF (X'0A').
7 -- Recommended maximum line length is 72 characters.
8 END
10 RecordSyntax-opac
11 {z39-50-recordSyntax opac (102)} DEFINITIONS ::=
12 BEGIN 
13 IMPORTS InternationalString  FROM Z39-50-APDU-1995;
15 OPACRecord ::= SEQUENCE {
16    bibliographicRecord    [1] IMPLICIT EXTERNAL OPTIONAL,
17    holdingsData           [2] IMPLICIT SEQUENCE OF HoldingsRecord OPTIONAL}
19 HoldingsRecord ::=  CHOICE {
20    marcHoldingsRecord     [1] IMPLICIT EXTERNAL,
21    holdingsAndCirc        [2] IMPLICIT HoldingsAndCircData}
23 HoldingsAndCircData ::=  SEQUENCE {
24                              -- the following elements are required to display
25                              -- holdings in conformance with NISO standards.
26    typeOfRecord       [1]    IMPLICIT InternationalString OPTIONAL,-- LDR 06
27    encodingLevel      [2]    IMPLICIT InternationalString OPTIONAL, -- LDR 017
28    format             [3]    IMPLICIT InternationalString OPTIONAL, -- 007
29                                                                            -- 00-01
30    receiptAcqStatus   [4]    IMPLICIT InternationalString OPTIONAL, -- 008 06
31    generalRetention   [5]    IMPLICIT InternationalString OPTIONAL, -- 008 12
32    completeness       [6]    IMPLICIT InternationalString OPTIONAL, -- 008 16
33    dateOfReport       [7]    IMPLICIT InternationalString OPTIONAL, -- 008
34                                                                            -- 26-31
35    nucCode            [8]    IMPLICIT InternationalString OPTIONAL, -- 852 $a
36    localLocation      [9]    IMPLICIT InternationalString OPTIONAL, -- 852 $b
37    shelvingLocation   [10]   IMPLICIT InternationalString OPTIONAL, -- 852 $c
38    callNumber         [11]   IMPLICIT InternationalString OPTIONAL, -- 852 $h
39                                                                        -- and $i
40    shelvingData       [12]   IMPLICIT InternationalString OPTIONAL, -- 852 $j
41                                                                        -- thru $m
42    copyNumber         [13]   IMPLICIT InternationalString OPTIONAL, -- 852 $t
43    publicNote         [14]   IMPLICIT InternationalString OPTIONAL, -- 852 $z
44    reproductionNote   [15]   IMPLICIT InternationalString OPTIONAL, -- 843
45    termsUseRepro      [16]   IMPLICIT InternationalString OPTIONAL, -- 845
46    enumAndChron       [17]   IMPLICIT InternationalString OPTIONAL, -- all 85x,
47                                                                            --  86x
48    volumes            [18]   IMPLICIT SEQUENCE OF Volume OPTIONAL, 
49                                 -- repeats for each volume held
50    circulationData    [19]   IMPLICIT SEQUENCE OF CircRecord OPTIONAL 
51                                 -- repeats for each circulating item.
52                   }
54 Volume ::=  SEQUENCE {
55    enumeration        [1]    IMPLICIT InternationalString OPTIONAL,
56    chronology         [2]    IMPLICIT InternationalString OPTIONAL,
57    enumAndChron       [3]    IMPLICIT InternationalString OPTIONAL }
59 CircRecord ::=  SEQUENCE {
60    availableNow       [1]    IMPLICIT BOOLEAN,
61    availablityDate    [2]    IMPLICIT InternationalString OPTIONAL,
62    availableThru      [3]    IMPLICIT InternationalString OPTIONAL,
63    restrictions       [4]    IMPLICIT InternationalString OPTIONAL,
64    itemId             [5]    IMPLICIT InternationalString OPTIONAL,
65    renewable          [6]    IMPLICIT BOOLEAN,
66    onHold             [7]    IMPLICIT BOOLEAN,
67    enumAndChron       [8]    IMPLICIT InternationalString OPTIONAL,
68    midspine           [9]    IMPLICIT InternationalString OPTIONAL,
69    temporaryLocation  [10]   IMPLICIT InternationalString OPTIONAL}
70 END
72 DiagnosticFormatDiag1
73 {z39-50-diagnostic diag-1 (2)} DEFINITIONS ::=
74 BEGIN
75 IMPORTS Term, Specification, AttributeList, SortElement,
76 DatabaseName, 
77 DefaultDiagFormat, InternationalString FROM Z39-50-APDU-1995;
80 DiagnosticFormat ::=  SEQUENCE OF SEQUENCE{ 
81    diagnostic   [1] CHOICE{
82                      defaultDiagRec          [1]   IMPLICIT DefaultDiagFormat,
83                      explicitDiagnostic      [2]   DiagFormat} OPTIONAL, 
84    message      [2] IMPLICIT InternationalString OPTIONAL} 
87 DiagFormat ::= CHOICE{
89 tooMany         [1000]    IMPLICIT SEQUENCE{
90                            tooManyWhat    [1]   IMPLICIT INTEGER{
91                                                     argumentWords          (1), 
92                                                     truncatedWords         (2), 
93                                                     booleanOperators       (3),
94                                                     incompleteSubfields    (4), 
95                                                     characters             (5),
96                                                     recordsRetrieved       (6), 
97                                                     dataBasesSpecified     (7),
98                                                     resultSetsCreated      (8), 
99                                                     indexTermsProcessed    (9)},
100                            max            [2]   IMPLICIT INTEGER OPTIONAL},
103 badSpec         [1001]   IMPLICIT SEQUENCE{  
104                       -- element set name or specification
105                         spec       [1] IMPLICIT Specification, 
106                                           -- esn or element spec not supported
107                         db         [2] IMPLICIT DatabaseName OPTIONAL,
108                                           -- if db specified, above spec not
109                                           -- supported for db; otherwise,
110                                           -- spec not supported period.
111                         goodOnes   [3] IMPLICIT SEQUENCE OF Specification
112                                                                   OPTIONAL  
113                                           -- target supplies ones that are
114                                           -- supported
115                                           },
118 dbUnavail       [1002]   IMPLICIT SEQUENCE{ -- database unavailable
119                           db    [1] IMPLICIT DatabaseName,
120                           why   [2] IMPLICIT SEQUENCE{
121                                     reasonCode      [1] IMPLICIT INTEGER{
122                                                           doesNotExist        (0),
123                                                           existsButUnavail    (1),
124                                                           locked              (2),
125                                                           accessDenied        (3)}
126                                                               OPTIONAL,
127                                     message         [2] IMPLICIT
128                                                 InternationalString OPTIONAL}},
131 unSupOp         [1003]   IMPLICIT INTEGER{  -- unsupported operator
132                           and       (0),
133                           or        (1),
134                           and-not   (2),
135                           prox      (3)},
138 attribute       [1004]   IMPLICIT SEQUENCE{
139                              -- Applies for unsupported attribute set,
140                              -- attribute type, attribute value, or term (for
141                              -- a given attribute type or value).
142                         id         [1]    IMPLICIT OBJECT IDENTIFIER,
143                                              -- if only "id" occurs, then
144                                              -- attribute set is not supported
145                         type       [2]    IMPLICIT INTEGER OPTIONAL,
146                                              -- must occur if value occurs.
147                         value      [3]    IMPLICIT INTEGER OPTIONAL,
148                                              -- if omitted, and Type occurs,
149                                              -- then Type is what is unsupported
150                         term       [4]    Term OPTIONAL
151                                              -- If occurs, term is illegal or
152                                              -- not supported, for attribute
153                                              -- value, if value occurs;
154                                              -- otherwise, for type.
155                                                 },
158 attCombo     [1005]   IMPLICIT SEQUENCE{ 
159                              -- attribute combination not supported
160                           unsupportedCombination    [1] IMPLICIT AttributeList, 
161                           recommendedAlternatives   [2] IMPLICIT SEQUENCE OF
162                                                      AttributeList OPTIONAL}, 
165 term            [1006]   IMPLICIT SEQUENCE{
166                            problem      [1] IMPLICIT INTEGER{
167                                                 codedValue   (1),
168                                                 unparsable   (2),
169                                                 tooShort     (3),
170                                                 type         (4)} OPTIONAL,
171                            term         [2] Term},
174 proximity       [1007] CHOICE{            -- proximity diagnostics:
175                           resultSets   [1] IMPLICIT NULL,             
176                                              -- proximity between sets not
177                                              -- supported
178                           badSet       [2] IMPLICIT InternationalString,   
179                                              -- bad result set specified
180                           relation     [3] IMPLICIT INTEGER,         
181                                              -- 1 to 6 ; relation not supported
182                           unit         [4] IMPLICIT INTEGER,         
183                                              -- unsupported unit code
184                           distance     [5] IMPLICIT INTEGER,         
185                                              -- unsupported distance
186                           attributes   [6] AttributeList,                   
187                                              --   proximity not supported with
188                                              -- specified attribute combination
189                           ordered      [7] IMPLICIT NULL,            
190                                              -- ordered flag not supported
191                           exclusion    [8] IMPLICIT NULL               
192                                              -- exclusion flag not supported
193                               },
196 scan            [1008] CHOICE{         -- scan diagnostics:
197                           nonZeroStepSize    [0] IMPLICIT NULL,   
198                                                     -- only zero step size    
199                                                     -- supported
200                           specifiedStepSize  [1] IMPLICIT NULL,   
201                                                     -- specified step size not
202                                                     -- supported
203                           termList1          [3] IMPLICIT NULL,   
204                                                     -- term list not supported
205                                                     -- (no alternative supplied)
206                           termList2          [4] IMPLICIT SEQUENCE OF
207                                                            AttributeList,
208                                                     -- term list not supported
209                                                     -- (alternatives supplied)
210                           posInResponse      [5] IMPLICIT INTEGER{   
211                                                        -- value of positionIn-
212                                                        -- Response not supported
213                                                     mustBeOne              (1),
214                                                     mustBePositive         (2),
215                                                     mustBeNonNegative      (3),
216                                                     other                  (4)},
217                           resources         [6] IMPLICIT NULL,    
218                                                     -- resources exhausted
219                                                     -- looking for satisfying
220                                                     -- terms
221                           endOfList         [7] IMPLICIT NULL 
222                                                     -- beginning or end of term
223                                                     -- list
224                         },
227 sort            [1009] CHOICE{
228                           sequence           [0] IMPLICIT NULL,            
229                                                     -- cannot sort according
230                                                     -- to sequence
231                           noRsName           [1] IMPLICIT NULL,            
232                                                     -- no result set name
233                                                     -- supplied
234                           tooMany            [2] IMPLICIT INTEGER,         
235                                                     --  Too many input result
236                                                     -- sets, maximum supplied.
237                           incompatible       [3] IMPLICIT NULL,            
238                                                     -- records with different
239                                                     -- formats not compatible for
240                                                     -- sorting
241                           generic            [4] IMPLICIT NULL,            
242                                                     -- generic sort not supported
243                                                     -- (db specific only)
244                           dbSpecific         [5] IMPLICIT NULL,            
245                                                     -- db specific sort not
246                                                     -- supported
247                           sortElement        [6] SortElement,
248                           key                [7] IMPLICIT INTEGER{
249                                                     tooMany      (1),      
250                                                        -- too many sort keys
251                                                     duplicate    (2)},      
252                                                        -- duplicate sort keys
253                           action             [8] IMPLICIT NULL,   
254                                                 -- unuspported missing data
255                                                 -- action
256                           illegal            [9] IMPLICIT INTEGER{
257                                                     relation   (1),   
258                                                        -- illegal sort relation
259                                                     case      (2),   
260                                                        -- illegal case value
261                                                     action   (3),    
262                                                        -- illegal missing data
263                                                        -- action
264                                                     sort      (4)},   
265                                                        -- illegal sort
266                           inputTooLarge      [10] IMPLICIT SEQUENCE OF
267                                                    InternationalString,
268                                                        -- one or more of the
269                                                        -- input result sets too
270                                                        -- large to sort
271                           aggregateTooLarge  [11] IMPLICIT NULL   
272                                                        --  aggregate result set
273                                                        -- too large
274                                        },
275 segmentation  [1010]  CHOICE{
276                 segmentCount  [0]    IMPLICIT NULL,
277                                        -- Cannot guarantee record will fit 
278                                        -- within max segments. Target
279                                        -- suggests that origin try again 
280                                        -- to retrieve record, without
281                                        -- including max-segment-count.
282                 segmentSize  [1]    IMPLICIT INTEGER
283                                        -- record cannot be segmented into 
284                                        -- fragments such that the largest 
285                                        -- will fit within max segment 
286                                        -- size specified. Target supplies (in 
287                                        -- bytes) the smallest acceptable value.
288                                        -- of Max-segment-size to retrieve 
289                                        -- the record.
290                           },
292 extServices     [1011] CHOICE{
293                         req        [1] IMPLICIT INTEGER{    -- bad request
294                                           nameInUse       (1),   
295                                              -- package name already in use
296                                           noSuchName      (2),   
297                                              -- no such package, on
298                                              -- modify/delete
299                                           quota            (3),   
300                                              -- quota exceeded
301                                           type            (4)},   
302                                              -- extended service type not
303                                              -- supported
304                       permission   [2] IMPLICIT INTEGER{ 
305                                        -- permission denied on ES, because: 
306                                           id             (1),      
307                                              -- id not authorized, or
308                                           modifyDelete   (2)},      
309                                              -- cannot modify or delete
310                       immediate    [3] IMPLICIT INTEGER{ 
311                                        -- immediate execution:
312                                           failed          (1),      
313                                           service         (2),      
314                                              -- not supported for this service, 
315                                          parameters       (3)      
316                                              -- not supported for these
317                                              -- parameters.
318                                                 }},
321 accessCtrl      [1012] CHOICE{
322                           noUser       [1] IMPLICIT NULL,      
323                                              -- no user to display challenge to
324                           refused      [2] IMPLICIT NULL,      
325                                              -- access control information
326                                              -- refused by user
327                           simple       [3] IMPLICIT NULL,      
328                                              -- only simple form supported
329                                              -- (target used externally defined)
330                           oid          [4] IMPLICIT SEQUENCE OF OBJECT
331                                                      IDENTIFIER,
332                                              -- oid not supported (origin
333                                              -- supplies alternative suggested
334                                              -- oids)
335                         alternative    [5] IMPLICIT SEQUENCE OF OBJECT
336                                                      IDENTIFIER,
337                                              -- origin insists that target use
338                                              -- an alternative challenge for
339                                              -- this data (e.g. stronger       
340                                              -- authentication or stronger
341                                              -- Access control). The origin
342                                              -- supplies suggested alternative
343                                              -- oids.
344                         pwdInv         [6] IMPLICIT NULL,      
345                                              -- password invalid
346                         pwdExp         [7] IMPLICIT NULL        
347                                              -- password expired
348                               },
351 recordSyntax   [1013] IMPLICIT SEQUENCE{ 
352                    -- record cannot be transferred in requested syntax
353                           unsupportedSyntax         [1] IMPLICIT OBJECT
354                                                            IDENTIFIER, 
355                           suggestedAlternatives     [2] IMPLICIT SEQUENCE OF
356                                                         OBJECT IDENTIFIER
357                                                            OPTIONAL}
361 RecordSyntax-explain 
362 {z39-50-recordSyntax explain (100)} DEFINITIONS ::=
364 BEGIN 
365 IMPORTS AttributeSetId, Term, OtherInformation, DatabaseName, ElementSetName,
366 IntUnit, Unit, StringOrNumeric, Specification,
367 InternationalString,
368 AttributeList, AttributeElement
369 FROM Z39-50-APDU-1995;
371 Explain-Record ::= CHOICE{
372    -- Each of these may be used as search term  
373    -- when Use attribute is 'explain-category'.
374   targetInfo                 [0]   IMPLICIT TargetInfo,
375   databaseInfo               [1]   IMPLICIT DatabaseInfo,
376   schemaInfo                 [2]   IMPLICIT SchemaInfo,
377   tagSetInfo                 [3]   IMPLICIT TagSetInfo,
378   recordSyntaxInfo           [4]   IMPLICIT RecordSyntaxInfo,
379   attributeSetInfo           [5]   IMPLICIT AttributeSetInfo,
380   termListInfo               [6]   IMPLICIT TermListInfo,
381   extendedServicesInfo       [7]   IMPLICIT ExtendedServicesInfo,
382   attributeDetails           [8]   IMPLICIT AttributeDetails,
383   termListDetails            [9]   IMPLICIT TermListDetails,
384   elementSetDetails          [10]  IMPLICIT ElementSetDetails,
385   retrievalRecordDetails     [11]  IMPLICIT RetrievalRecordDetails,
386   sortDetails                [12]  IMPLICIT SortDetails,
387   processing                 [13]  IMPLICIT ProcessingInformation,
388   variants                   [14]  IMPLICIT VariantSetInfo,
389   units                      [15]  IMPLICIT UnitInfo,
390   categoryList               [100] IMPLICIT CategoryList}
392 -- Element set name 'B' (brief)  retrieves:
393 --   -  'commonInfo' (except for otherInfo within commonInfo)
394 --   -  key elements
395 --   -  other elements designated as 'non-key brief elements'
396 -- Esn 'description' retrieves brief elements as well as 'description', and
397 -- specific additional descriptive elements if designated.  
398 -- Element set name 'F' (full) retrieves all of the above, as well as those
399 -- designated as "non-brief elements". Some elements designated as OPTIONAL
400 -- may be madatory in full records, and are so identified. (Note that all 
401 -- elements that are not part of the brief element set must be designated as
402 -- OPTIONAL in the ASN.1, otherwise it would be illegal to omit them).
403 -- Other esns are defined (below) as needed.
406 -- - - - - - - - - - - - -   Info Records
407   -- Info records are mainly for software consumption
408   -- They describe individual entities within the target system:
409   --     The target itself
410   --     Individual databases
411   --     Schemas
412   --     Tag sets
413   --     Record syntaxes
414   --     Attribute sets
415   --     Term lists
416   --     Extended services
417  --   The information about each Schema, Tag Set, Record Syntax and Attribute
418  -- Set should match the universal definitions of these items. The only
419  -- exception is that a target may omit any- items it doesn't support, for
420  -- example the description of the BIB-1 attribute set may omit attributes
421  -- that the target does not support under any circumstances.
422  --   Databases that may be searched together can be listed in the
423  -- dbCominations element of the TargetInfo record.  
427 TargetInfo ::= SEQUENCE {
428   commonInfo          [0]    IMPLICIT CommonInfo OPTIONAL,
429      -- Key elements follow:
430   name                [1]    IMPLICIT InternationalString,
431      -- Non-key brief elements follow:
432   recent-news         [2]    IMPLICIT HumanString OPTIONAL,
433   icon                [3]    IMPLICIT IconObject OPTIONAL,
434   namedResultSets     [4]    IMPLICIT BOOLEAN,
435   multipleDBsearch    [5]    IMPLICIT BOOLEAN,
436   maxResultSets       [6]    IMPLICIT INTEGER OPTIONAL,
437   maxResultSize       [7]    IMPLICIT INTEGER OPTIONAL,
438   maxTerms            [8]    IMPLICIT INTEGER OPTIONAL,
439   timeoutInterval     [9]    IMPLICIT IntUnit OPTIONAL,
440   welcomeMessage      [10]   IMPLICIT HumanString OPTIONAL,
441       -- non-brief elements follow:
442       -- 'description' esn retrieves the following two (as well as brief):
443   contactInfo         [11]   IMPLICIT ContactInfo OPTIONAL,
444   description         [12]   IMPLICIT HumanString OPTIONAL,
445   nicknames           [13]   IMPLICIT SEQUENCE OF InternationalString
446                                               OPTIONAL,
447   usage-restrictions  [14]   IMPLICIT HumanString OPTIONAL,
448   paymentAddr         [15]   IMPLICIT HumanString OPTIONAL,
449   hours               [16]   IMPLICIT HumanString OPTIONAL,
450   dbCombinations      [17]   IMPLICIT SEQUENCE OF DatabaseList OPTIONAL,
451   addresses           [18]   IMPLICIT SEQUENCE OF NetworkAddress OPTIONAL,
452   languages           [101]  IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
453                   -- Languages supported for message strings.  Each is a three-character
454                   -- language code from Z39.53-1994.
455 -- characterSets      [102]  this tag reserved for "character sets supported for name and message strings".
457    -- commonAccessInfo elements list objects the target supports. All objects
458    -- listed in AccessInfo for any individual database should also be listed
459    -- here.
460   commonAccessInfo    [19]   IMPLICIT AccessInfo OPTIONAL}
464 DatabaseInfo ::= SEQUENCE {
465          -- A target may provide "virtual databases" that are combinations of
466          -- individual database. These databases are indicated by the
467          -- presence of subDbs in the combination database's
468          -- DatabaseDescription.
469   commonInfo              [0]   IMPLICIT CommonInfo OPTIONAL,
470     -- Key elements follow:
471   name                    [1]   IMPLICIT DatabaseName,
472     -- Non-key brief elements follow:
473   explainDatabase         [2]   IMPLICIT NULL OPTIONAL,
474                                    -- If present, this database is the Explain
475                                    -- database, or an Explain database
476                                    -- for a different  server,
477                                    -- possibly on a different host. The means
478                                    -- by which that server may be accessed is
479                                    -- not addressed by this standard. One
480                                    -- suggested possibility is an implementor
481                                    -- agreement whereby the database name is a
482                                    -- url which may be used to connect to the
483                                    -- server.
484   nicknames               [3]   IMPLICIT SEQUENCE OF DatabaseName OPTIONAL,
485   icon                    [4]   IMPLICIT IconObject OPTIONAL,
486   user-fee                [5]   IMPLICIT BOOLEAN,
487   available               [6]   IMPLICIT BOOLEAN,
488   titleString             [7]   IMPLICIT HumanString OPTIONAL,
489     -- Non-brief elements follow:
490   keywords                [8]   IMPLICIT SEQUENCE OF HumanString OPTIONAL,
491   description             [9]   IMPLICIT HumanString OPTIONAL,
492   associatedDbs           [10]  IMPLICIT DatabaseList OPTIONAL,
493                                    -- databases that may be searched in
494                                    -- combination with this one 
495   subDbs                  [11]  IMPLICIT DatabaseList OPTIONAL,
496                                    -- When present, this database is a
497                                    -- composite representing the combined
498                                    -- databases 'subDbs'. The individual subDbs
499                                    -- are also available.
500   disclaimers             [12]  IMPLICIT HumanString OPTIONAL,
501   news                    [13]  IMPLICIT HumanString OPTIONAL,
502   recordCount             [14]  CHOICE {
503                                    actualNumber   [0] IMPLICIT INTEGER,
504                                    approxNumber   [1] IMPLICIT INTEGER}
505                                                            OPTIONAL,
506   defaultOrder            [15]  IMPLICIT HumanString OPTIONAL,
507   avRecordSize            [16]  IMPLICIT INTEGER OPTIONAL,
508   maxRecordSize           [17]  IMPLICIT INTEGER OPTIONAL,
509   hours                   [18]  IMPLICIT HumanString OPTIONAL,
510   bestTime                [19]  IMPLICIT HumanString OPTIONAL,
511   lastUpdate              [20]  IMPLICIT GeneralizedTime OPTIONAL,
512   updateInterval          [21]  IMPLICIT IntUnit OPTIONAL,
513   coverage                [22]  IMPLICIT HumanString OPTIONAL,
514   proprietary             [23]  IMPLICIT BOOLEAN OPTIONAL, 
515                                 -- mandatory in full record
516   copyrightText           [24]  IMPLICIT HumanString OPTIONAL,
517   copyrightNotice         [25]  IMPLICIT HumanString OPTIONAL,
518   producerContactInfo     [26]  IMPLICIT ContactInfo OPTIONAL,
519   supplierContactInfo     [27]  IMPLICIT ContactInfo OPTIONAL,
520   submissionContactInfo   [28]  IMPLICIT ContactInfo OPTIONAL,
521       -- accessInfo lists items connected with the database. All listed items
522       -- should be in the target's AccessInfo.
523   accessInfo              [29]  IMPLICIT AccessInfo OPTIONAL}
527 SchemaInfo ::= SEQUENCE {
528   commonInfo       [0] IMPLICIT CommonInfo OPTIONAL,
529      -- Key elements follow:
530   schema           [1] IMPLICIT OBJECT IDENTIFIER,
531      -- Non-key brief elements follow:
532   name             [2] IMPLICIT InternationalString,
533      -- Non-brief elements follow:
534   description      [3] IMPLICIT HumanString OPTIONAL,
535   tagTypeMapping   [4] IMPLICIT SEQUENCE OF SEQUENCE {
536                           tagType         [0] IMPLICIT INTEGER,
537                           tagSet          [1] IMPLICIT OBJECT IDENTIFIER
538                                                         OPTIONAL,
539                                                 -- If tagSet is omitted, then
540                                                 -- this tagType is for a tagSet
541                                                 -- locally defined within the
542                                                 -- schema that cannot be
543                                                 -- referenced by another schema.
544                           defaultTagType  [2] IMPLICIT NULL OPTIONAL} OPTIONAL,
545   recordStructure  [5] IMPLICIT SEQUENCE OF ElementInfo OPTIONAL}
549    --  ElementInfo referenced in SchemaInfo and RecordSyntaxInfo
550       ElementInfo ::= SEQUENCE {
551          elementName      [1] IMPLICIT InternationalString,
552          elementTagPath   [2] IMPLICIT Path,
553          dataType         [3] ElementDataType OPTIONAL, 
554                                 -- If omitted, not specified. 
555           required        [4] IMPLICIT BOOLEAN,
556          repeatable       [5] IMPLICIT BOOLEAN,
557           description     [6] IMPLICIT HumanString OPTIONAL}
559    -- Path is referenced by ElementInfo as well as PerElementDetails
560        Path ::= SEQUENCE OF SEQUENCE{
561          tagType      [1] IMPLICIT INTEGER,
562          tagValue     [2] StringOrNumeric}
564       ElementDataType ::= CHOICE{
565          primitive    [0] IMPLICIT PrimitiveDataType,
566          structured   [1] IMPLICIT SEQUENCE OF ElementInfo}
567          PrimitiveDataType ::= INTEGER{
568                                 octetString     (0),
569                                 numeric         (1),
570                                 date            (2),
571                                 external        (3),
572                                 string          (4),
573                                 trueOrFalse     (5),
574                                 oid             (6),
575                                 intUnit         (7),
576                                 empty           (8),
577                                 noneOfTheAbove  (100) -- see 'description'
578                   }
581 TagSetInfo ::= SEQUENCE {
582    commonInfo      [0]    IMPLICIT CommonInfo OPTIONAL,
583      -- Key elements follow:
584    tagSet          [1]    IMPLICIT OBJECT IDENTIFIER,
585      -- non-key brief elements follow:
586    name            [2]    IMPLICIT InternationalString,
587      -- non-brief elements follow:
588    description     [3]    IMPLICIT HumanString OPTIONAL,
589    elements        [4]    IMPLICIT SEQUENCE OF SEQUENCE {
590                              elementname  [1] IMPLICIT InternationalString,
591                              nicknames    [2] IMPLICIT SEQUENCE OF
592                                              InternationalString OPTIONAL,
593                              elementTag   [3] StringOrNumeric, 
594                              description  [4] IMPLICIT HumanString OPTIONAL, 
595                              dataType     [5] PrimitiveDataType OPTIONAL,
596                                                 -- If the data type is expected
597                                                 -- to be structured, that is
598                                                 -- described in the schema info,
599                                                 -- and datatypeis omitted here.
600    otherTagInfo           OtherInformation OPTIONAL} OPTIONAL}
604 RecordSyntaxInfo ::= SEQUENCE {
605   commonInfo          [0] IMPLICIT CommonInfo OPTIONAL,
606      -- Key elements follow:
607   recordSyntax        [1] IMPLICIT OBJECT IDENTIFIER,
608      -- Non-key brief elements follow:
609   name                [2] IMPLICIT InternationalString,
610      -- non-brief elements follow:
611   transferSyntaxes    [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
612   description         [4] IMPLICIT HumanString OPTIONAL,
613   asn1Module          [5] IMPLICIT InternationalString OPTIONAL,
614   abstractStructure   [6] IMPLICIT SEQUENCE OF ElementInfo OPTIONAL
615                              -- Omitting abstractStructure only means target
616                              -- isn't using Explain to describe the structure,
617                              -- not that there is no structure.
618                     }
622 AttributeSetInfo ::= SEQUENCE {
623   commonInfo    [0] IMPLICIT CommonInfo OPTIONAL,
624      -- Key elements follow:
625   attributeSet  [1] IMPLICIT AttributeSetId,
626      -- non-key brief elements follow:
627   name          [2] IMPLICIT InternationalString,
628      -- non-brief elements follow:
629   attributes    [3] IMPLICIT SEQUENCE OF AttributeType OPTIONAL,
630                         -- mandatory in full record
631   description   [4] IMPLICIT HumanString OPTIONAL}
635 -- AttributeType referenced in AttributeSetInfo
636    AttributeType ::= SEQUENCE {
637          name             [0] IMPLICIT InternationalString OPTIONAL,
638          description      [1] IMPLICIT HumanString OPTIONAL,
639          attributeType    [2] IMPLICIT INTEGER,
640          attributeValues  [3] IMPLICIT SEQUENCE OF AttributeDescription}
642    AttributeDescription ::= SEQUENCE {
643          name                   [0] IMPLICIT InternationalString OPTIONAL,
644          description            [1] IMPLICIT HumanString OPTIONAL,
645          attributeValue         [2] StringOrNumeric,
646          equivalentAttributes   [3] IMPLICIT SEQUENCE OF StringOrNumeric
647                                                  OPTIONAL
648                                        -- each is an occurence of
649                                        -- 'attributeValue' from
650                                        --AttributeDescription for a
651                                        -- different attribute. Equivalences
652                                        -- listed here should be derived from the
653                                        -- attribute set definition, not from a
654                                        -- particular server's behavior.  
655                               }
658 TermListInfo ::= SEQUENCE{
659   commonInfo    [0]   IMPLICIT CommonInfo OPTIONAL,
660      -- Key elements follow:
661   databaseName  [1]   IMPLICIT DatabaseName,
662      -- Non-key brief elements follow:
663   termLists     [2] IMPLICIT SEQUENCE OF SEQUENCE{
664                       name         [1] IMPLICIT InternationalString,
665                       title        [2] IMPLICIT HumanString OPTIONAL,
666                                           -- Title is for users to see 
667                                           -- and can differ by language. 
668                                           -- Name, on the other hand, is 
669                                           -- typically a short string 
670                                           -- not necessarily meant to be 
671                                           -- human-readable, and not 
672                                           -- variable by language. 
673                       searchCost   [3] IMPLICIT INTEGER {
674                                           optimized    (0),      
675                                              -- The attribute (or combination)
676                                              -- associated with this list will
677                                              -- do fast searches. 
678                                           normal       (1),      
679                                              -- The attribute (combination) will
680                                              -- work expected. So there's
681                                              -- probably an index for the
682                                              -- attribute (combination) or some
683                                              -- similar mechanism.
684                                           expensive    (2),      
685                                              -- Can use the attribute
686                                              -- (combination), but it might not
687                                              -- provide satisfactory results. 
688                                              -- Probably there is no index, or
689                                              -- post-processing of records is
690                                              -- required.
691                                           filter       (3)      
692                                              -- can't search with this
693                                              -- attribute (combination) alone.
694                                                     } OPTIONAL,
695                     scanable       [4] IMPLICIT BOOLEAN, 
696                                           -- 'true' means this list can be
697                                           -- scanned. 
698                      broader       [5] IMPLICIT SEQUENCE OF InternationalString
699                                                      OPTIONAL,
700                      narrower      [6] IMPLICIT SEQUENCE OF InternationalString
701                                                      OPTIONAL
702                                           -- broader and narrower list
703                                           -- alternative term lists related to
704                                           -- this one. The term lists so listed
705                                           -- should also be in this termLists
706                                           -- structure.
707                                        }
708    -- no non-brief elements
709                   }
714 ExtendedServicesInfo ::= SEQUENCE {
715   commonInfo          [0]    IMPLICIT CommonInfo OPTIONAL,
716      -- Key elements follow:
717   type                [1]    IMPLICIT OBJECT IDENTIFIER,
718      -- Non-key brief elements follow:
719   name                [2]    IMPLICIT InternationalString OPTIONAL,
720                              -- should be supplied if privateType is 'true'
721   privateType         [3]    IMPLICIT BOOLEAN,
722   restrictionsApply   [5]    IMPLICIT BOOLEAN,  -- if 'true' see 'description'
723   feeApply            [6]    IMPLICIT BOOLEAN,  -- if 'true' see 'description'
724   available           [7]    IMPLICIT BOOLEAN,
725   retentionSupported  [8]    IMPLICIT BOOLEAN,
726   waitAction          [9]    IMPLICIT INTEGER{
727                                 waitSupported       (1),
728                                 waitAlways          (2),
729                                 waitNotSupported    (3),
730                                 depends             (4),
731                                 notSaying           (5)},
732       -- non-brief elements follow:
733       -- To get brief plus 'description' use esn 'description'
734   description         [10]   IMPLICIT HumanString OPTIONAL,
735       -- to get above elements and 'specificExplain' use esn 
736       --'specificExplain'
737   specificExplain     [11]   IMPLICIT EXTERNAL OPTIONAL,
738                                 -- Use oid of specific ES, and select choice
739                                 -- [3] 'explain'. Format to be developed in
740                                 -- conjunction with the specific ES definition.
741       -- to get all elements except 'specificExplain', use esn 'asn'
742   esASN               [12]   IMPLICIT InternationalString OPTIONAL 
743                                 -- the ASN.1 for this ES
744                         }
746 -- - - - - - - - - - - - - Detail records
747  -- The detail records describe relationships among entities supported by the
748  -- target. RetrievalRecordDetails describes the way that schema elements are
749  -- mapped into record elements. This mapping may be different for each
750  -- combination of database, schema, record syntax. The per-element details
751  -- describe the default mapping. Origin-request re-tagging can change that
752  -- mapping. When multiple databases are listed in a databaseNames element,
753  -- the record applies equally to all of the listed databases.  This is
754  -- unrelated to searching the databases together. AttributeDetails describes
755  -- how databases can be searched. Each supported attribute is listed, and
756  -- the allowable combinations can be described.
758 AttributeDetails ::= SEQUENCE {
759   commonInfo              [0] IMPLICIT CommonInfo OPTIONAL,
760      -- Key elements follow:
761   databaseName            [1] IMPLICIT DatabaseName,
762      -- Non-brief elements follow:
763   attributesBySet         [2] IMPLICIT SEQUENCE OF AttributeSetDetails
764                                     OPTIONAL, 
765                                 -- mandatory in full record
766   attributeCombinations   [3] IMPLICIT AttributeCombinations OPTIONAL}
769 -- AttributeSetDetails referenced by AttributeDetails
770    AttributeSetDetails ::= SEQUENCE {
771          attributeSet        [0] IMPLICIT AttributeSetId,
772          attributesByType    [1] IMPLICIT SEQUENCE OF AttributeTypeDetails}
775    AttributeTypeDetails ::= SEQUENCE {
776       attributeType       [0] IMPLICIT INTEGER,
777       defaultIfOmitted    [1] IMPLICIT OmittedAttributeInterpretation OPTIONAL,
778       attributeValues     [2] IMPLICIT SEQUENCE OF AttributeValue OPTIONAL }
779                                 -- If no attributeValues are supplied, all
780                                 -- values of this type are fully supported, and
781                                 -- the descriptions in AttributeSetInfo are
782                                 -- adequate.
785    OmittedAttributeInterpretation ::=
786 SEQUENCE {
787       defaultValue           [0] StringOrNumeric OPTIONAL,
788                                    -- A default value is listed if that's how
789                                    -- the server works
790       defaultDescription     [1] IMPLICIT HumanString OPTIONAL }
791                                    -- The human-readable description should
792                                    -- generally be provided. It is legal for
793                                    -- both default elements to be missing,
794                                    -- which means that the target will allow
795                                    -- the attribute type to be omitted, but
796                                    -- isn't saying what it will do.
798 AttributeValue ::= SEQUENCE {
799   value            [0] StringOrNumeric,
800   description      [1] IMPLICIT HumanString OPTIONAL,
801   subAttributes    [2] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL,
802   superAttributes  [3] IMPLICIT SEQUENCE OF StringOrNumeric OPTIONAL,
803   partialSupport   [4] IMPLICIT NULL OPTIONAL 
804                           -- partialSupport indicates that an attributeValue is
805                           -- accepted, but may not be processed in the
806                           -- "expected" way. One important reason for this is
807                           -- composite databases: in this case partialSupport
808                           -- may indicate that only some of the subDbs support
809                           -- the attribute, and others ignore it.
810                       }
813 TermListDetails ::= SEQUENCE{  -- one for each termList in TermListInfo
814   commonInfo       [0] IMPLICIT CommonInfo OPTIONAL,
815      -- Key elements follow:
816   termListName     [1] IMPLICIT InternationalString,
817      -- Non-key elements (all non-brief) follow:
818   description      [2] IMPLICIT HumanString OPTIONAL,
819   attributes       [3] IMPLICIT AttributeCombinations OPTIONAL,
820                           -- Pattern for attributes that hit this list.
821                           -- Mandatory in full record
822   scanInfo         [4] IMPLICIT SEQUENCE {
823                           maxStepSize        [0] IMPLICIT INTEGER OPTIONAL,
824                           collatingSequence  [1] IMPLICIT HumanString OPTIONAL,
825                           increasing         [2] IMPLICIT BOOLEAN OPTIONAL}
826                                                         OPTIONAL,
827                             -- Occurs only if list is scanable. 
828                             -- If list is scanable and if scanInfo is omitted, 
829                             -- target doesn't consider these important.
830   estNumberTerms   [5] IMPLICIT INTEGER OPTIONAL,
831   sampleTerms      [6] IMPLICIT SEQUENCE OF Term OPTIONAL}
835 ElementSetDetails ::= SEQUENCE {
836    -- ElementSetDetails describes the way that database records are mapped to
837    -- record elements. This mapping may be different for each combination of
838    -- database name and element set. The database record description is a
839    -- schema, which may be private to the target. The schema's abstract
840    -- record structure and tag sets provide the vocabulary for discussing
841    -- record content; their presence in the Explain database does not imply
842    -- support for complex retrieval specification.
843   commonInfo          [0]   IMPLICIT CommonInfo OPTIONAL,
844      -- Key elements follow:
845   databaseName        [1] IMPLICIT DatabaseName,
846   elementSetName      [2] IMPLICIT ElementSetName,
847   recordSyntax        [3] IMPLICIT OBJECT IDENTIFIER,
848      -- Non-key Brief elements follow:
849   schema              [4] IMPLICIT OBJECT IDENTIFIER,
850      -- Non-brief elements follow:
851   description         [5] IMPLICIT HumanString OPTIONAL,
852   detailsPerElement   [6] IMPLICIT SEQUENCE OF PerElementDetails OPTIONAL 
853                              -- mandatory in full record
854                      }
858 RetrievalRecordDetails ::= SEQUENCE {
859   commonInfo          [0] IMPLICIT CommonInfo OPTIONAL,
860      -- Key elements follow:
861   databaseName        [1] IMPLICIT DatabaseName,
862   schema              [2] IMPLICIT OBJECT IDENTIFIER,
863   recordSyntax        [3] IMPLICIT OBJECT IDENTIFIER,
864      -- Non-brief elements follow:
865   description         [4] IMPLICIT HumanString OPTIONAL,
866   detailsPerElement   [5] IMPLICIT SEQUENCE OF PerElementDetails OPTIONAL
867                              -- mandatory in full record
868                   }
872 -- PerElementDetails is referenced in RetreivalRecordDetails and
873 -- ElementSetDetails.
874     PerElementDetails ::= SEQUENCE {
875         name              [0]   IMPLICIT InternationalString OPTIONAL,
876                                    -- If the name is omitted, the record
877                                    -- syntax's name for this element is
878                                    -- appropriate.
879         recordTag         [1]   IMPLICIT RecordTag OPTIONAL,
880                                    -- The record tag may be omitted if tags are
881                                    -- inappropriate for the syntax, or if the
882                                    -- origin can be expected to know it for
883                                    -- some other reason.
884         schemaTags        [2]   IMPLICIT SEQUENCE OF Path OPTIONAL,
885                                    -- The information from the listed schema
886                                    -- elements is in some way to produce the
887                                    -- data sent in the listed record tag. The
888                                    -- 'contents' element below may describe the
889                                    -- the logic used.
890         maxSize           [3]   IMPLICIT INTEGER OPTIONAL,
891         minSize           [4]   IMPLICIT INTEGER OPTIONAL,
892         avgSize           [5]   IMPLICIT INTEGER OPTIONAL,
893         fixedSize         [6]   IMPLICIT INTEGER OPTIONAL,
894         repeatable        [8]   IMPLICIT BOOLEAN,
895         required          [9]   IMPLICIT BOOLEAN, 
896                                    -- 'required' really means that target will
897                                    -- always supply the element.
898         description       [12]  IMPLICIT HumanString OPTIONAL,
899         contents          [13]  IMPLICIT HumanString OPTIONAL,
900         billingInfo       [14]  IMPLICIT HumanString OPTIONAL,
901         restrictions      [15]  IMPLICIT HumanString OPTIONAL,
902         alternateNames    [16]  IMPLICIT SEQUENCE OF InternationalString
903                                     OPTIONAL,
904         genericNames      [17]  IMPLICIT SEQUENCE OF InternationalString
905                                     OPTIONAL,
906         searchAccess      [18]  IMPLICIT AttributeCombinations OPTIONAL}
908          -- RecordTag referenced in PerElementDetails above
909             RecordTag ::= SEQUENCE {
910                    qualifier    [0] StringOrNumeric OPTIONAL,
911                                        -- E.g. tag set for GRS-1
912                    tagValue     [1] StringOrNumeric}
917 SortDetails ::= SEQUENCE {
918   commonInfo       [0] IMPLICIT CommonInfo OPTIONAL,
919    -- Key elements follow:
920   databaseName     [1] IMPLICIT DatabaseName,
921      -- No non-key brief elements
922      -- Non-brief elements follow:
923   sortKeys         [2] IMPLICIT SEQUENCE OF SortKeyDetails OPTIONAL
924                            -- mandatory in full record
925                }
927    SortKeyDetails ::= SEQUENCE {
928         description                [0] IMPLICIT HumanString OPTIONAL,
929         elementSpecifications      [1] IMPLICIT SEQUENCE OF Specification
930                                                  OPTIONAL,
931                                           -- each specification is a way of
932                                           -- specifying this same sort key
933         attributeSpecifications    [2] IMPLICIT AttributeCombinations OPTIONAL,
934                                           -- each combination is a way of
935                                           -- specifying this same sort key
936         sortType                   [3] CHOICE {
937                                           character    [0]   IMPLICIT NULL,
938                                           numeric      [1]   IMPLICIT NULL,
939                                           structured   [2]   IMPLICIT
940                                                            HumanString} OPTIONAL,
941         caseSensitivity            [4] IMPLICIT INTEGER {
942                                           always       (0),   
943                                              -- always case-sensitive
944                                           never        (1),   
945                                              -- never case-sensitive
946                                           default-yes  (2),   
947                                              -- case-sensitivity is as specified
948                                              -- on request, and if not
949                                              -- specified, case-sensitive.
950                                           default-no   (3)
951                                              -- case-sensitivity is as specified
952                                              -- on request, and if not
953                                              -- specified, not case-sensitive.
954                                                           }
955                                           OPTIONAL}
959 ProcessingInformation ::= SEQUENCE{
960   commonInfo          [0]   IMPLICIT CommonInfo OPTIONAL,
961      -- Key elements follow:
962   databaseName        [1] IMPLICIT DatabaseName,
963   processingContext   [2] IMPLICIT INTEGER {
964                                 access                 (0),    
965                                    -- e.g. choosing databases
966                                 search                 (1),      
967                                    -- e.g. "search strategies" or search forms 
968                                 retrieval              (2),    
969                                    -- e.g. recommended element combinations 
970                                 record-presentation    (3),   
971                                    -- display of retrieved records
972                                 record-handling        (4)          
973                                    -- handling (e.g. saving) of retrieved
974                                    -- records
975                                                 },
976   name                [3] IMPLICIT InternationalString,
977   oid                 [4] IMPLICIT OBJECT IDENTIFIER,
978                              -- So origin can retreive brief record and
979                              -- determine if it can handle 'instructions' when
980                              -- retrieving the full record.
981      -- No non-key brief elements
982      -- Non-brief elements follow:
983   description         [5] IMPLICIT HumanString OPTIONAL,
984                             -- use element set name 'description' 
985                             -- to retrieve all except instructions.
986   instructions        [6] IMPLICIT EXTERNAL OPTIONAL -- mandatory in full record
987                             }
992 VariantSetInfo ::= SEQUENCE {
993       -- A record in this category describes a variant set definition, i.e.,
994       -- classes, types, and values, for a specific variant set definition
995       -- supported by the target. Support by the target of a particular
996       -- variant set definition does not imply that the definition is
997       -- supported for any specific database or element. 
998   commonInfo    [0] IMPLICIT CommonInfo OPTIONAL,
999    -- Key elements follow:
1000   variantSet    [1] IMPLICIT OBJECT IDENTIFIER,
1001    -- Non-key brief elements follow:
1002   name          [2] IMPLICIT InternationalString,
1003    -- Non-brief elements follow:
1004   variants      [3] IMPLICIT SEQUENCE OF VariantClass OPTIONAL
1005                       -- mandatory in full record
1006                 }
1008    -- Subsidiary structures for VariantSetInfo
1009       VariantClass ::= SEQUENCE {
1010              name            [0] IMPLICIT InternationalString OPTIONAL,
1011              description     [1] IMPLICIT HumanString OPTIONAL,
1012              variantClass    [2] IMPLICIT INTEGER,
1013              variantTypes    [3] IMPLICIT SEQUENCE OF VariantType}
1015       VariantType ::= SEQUENCE {
1016              name            [0] IMPLICIT InternationalString OPTIONAL,
1017              description     [1] IMPLICIT HumanString OPTIONAL,
1018              variantType     [2] IMPLICIT INTEGER,
1019              variantValue    [3] IMPLICIT VariantValue OPTIONAL}
1021       VariantValue ::= SEQUENCE {
1022              dataType        [0] PrimitiveDataType,
1023              values          [1] ValueSet OPTIONAL }
1025       ValueSet ::= CHOICE {
1026              range           [0] IMPLICIT ValueRange,
1027              enumerated      [1] IMPLICIT SEQUENCE OF ValueDescription }
1029       ValueRange ::= SEQUENCE {
1030                           -- At last one the following must be supplied, both
1031                           -- may be supplied.
1032              lower           [0] ValueDescription OPTIONAL,
1033              upper           [1] ValueDescription OPTIONAL }
1035       ValueDescription ::= CHOICE{
1036              integer               INTEGER,
1037              string                InternationalString,
1038              octets                OCTET STRING,
1039              oid                   OBJECT IDENTIFIER,
1040              unit            [1]   IMPLICIT Unit,
1041              valueAndUnit    [2]   IMPLICIT IntUnit 
1042                 -- oid and unit can't be used in a ValueRange
1043                   }
1047 UnitInfo ::= SEQUENCE {
1048   commonInfo    [0] IMPLICIT CommonInfo OPTIONAL,
1049    -- Key elements follow:
1050   unitSystem    [1] IMPLICIT InternationalString,
1051     -- No non-key brief elements
1052     -- Non-brief elements follow:
1053   description   [2] IMPLICIT HumanString OPTIONAL,
1054   units         [3] IMPLICIT SEQUENCE OF UnitType OPTIONAL }
1055                             -- mandatory in full record
1057    -- Subsidiary structures for UnitInfo
1058       UnitType ::= SEQUENCE {
1059          name         [0] IMPLICIT InternationalString OPTIONAL,
1060          description  [1] IMPLICIT HumanString OPTIONAL,
1061          unitType     [2] StringOrNumeric,
1062          units        [3] IMPLICIT SEQUENCE OF Units}
1064       Units ::= SEQUENCE {
1065          name         [0] IMPLICIT InternationalString OPTIONAL,
1066          description  [1] IMPLICIT HumanString OPTIONAL,
1067          unit         [2] StringOrNumeric}
1071 CategoryList ::= SEQUENCE {
1072   commonInfo    [0] IMPLICIT CommonInfo OPTIONAL,
1073          -- Only one record expected per Explain database. All elements
1074          -- appear in brief presentation.
1075   categories    [1] IMPLICIT SEQUENCE OF CategoryInfo }
1077       CategoryInfo ::= SEQUENCE {
1078          category            [1] IMPLICIT InternationalString,
1079          originalCategory    [2] IMPLICIT InternationalString OPTIONAL,
1080              description     [3] IMPLICIT HumanString OPTIONAL,
1081            asn1Module        [4] IMPLICIT InternationalString OPTIONAL}
1086 -- - - - - - - - - - - - - - Subsidiary definitions
1088 CommonInfo ::= SEQUENCE {
1089   dateAdded               [0]   IMPLICIT GeneralizedTime OPTIONAL,
1090   dateChanged             [1]   IMPLICIT GeneralizedTime OPTIONAL,
1091   expiry                  [2]   IMPLICIT GeneralizedTime OPTIONAL,
1092   humanString-Language    [3]   IMPLICIT LanguageCode OPTIONAL,
1093    -- following not to occur for brief:
1094   otherInfo                     OtherInformation OPTIONAL}
1096 HumanString ::= SEQUENCE OF SEQUENCE {
1097              language     [0] IMPLICIT LanguageCode OPTIONAL,
1098              text         [1] IMPLICIT InternationalString}
1100 IconObject ::= SEQUENCE OF SEQUENCE{
1101          -- Note that the "SEQUENCE OF" is to allow alternative
1102          -- representations of the same Icon; it is not intended to allow
1103          -- multiple icons.
1104    bodyType  [1] CHOICE{
1105                    ianaType     [1] IMPLICIT InternationalString,
1106                    z3950type    [2] IMPLICIT InternationalString,
1107                    otherType    [3] IMPLICIT InternationalString},
1108    content   [2] IMPLICIT OCTET STRING}
1111 LanguageCode ::=InternationalString  
1112                            -- from ANSI/NISO Z39.53-1994
1114 ContactInfo ::= SEQUENCE {
1115   name          [0] IMPLICIT InternationalString OPTIONAL,
1116   description   [1] IMPLICIT HumanString OPTIONAL,
1117   address       [2] IMPLICIT HumanString OPTIONAL,
1118   email         [3] IMPLICIT InternationalString OPTIONAL,
1119   phone         [4] IMPLICIT InternationalString OPTIONAL}
1121 NetworkAddress ::= CHOICE {
1122   internetAddress            [0] IMPLICIT SEQUENCE {
1123                                    hostAddress  [0] IMPLICIT
1124                                                     InternationalString,
1125                                    port         [1] IMPLICIT INTEGER},
1126   osiPresentationAddress     [1] IMPLICIT SEQUENCE { 
1127                                    pSel      [0] IMPLICIT InternationalString, 
1128                                    sSel      [1] IMPLICIT InternationalString
1129                                                         OPTIONAL,  
1130                                    tSel      [2] IMPLICIT InternationalString
1131                                                         OPTIONAL,  
1132                                    nSap      [3] IMPLICIT InternationalString},
1133   other                      [2] IMPLICIT SEQUENCE {  
1134                                    type      [0] IMPLICIT InternationalString,
1135                                    address   [1] IMPLICIT InternationalString}}
1138 AccessInfo ::= SEQUENCE {
1139       -- AccessInfo contains the fundmental information about what facilites
1140       -- are required to use this target or server. For example, if an origin
1141       -- can handle none of the record syntaxes a database can provide, 
1142       -- it might choose not to access the database.
1143   queryTypesSupported     [0] IMPLICIT SEQUENCE OF QueryTypeDetails OPTIONAL,
1144   diagnosticsSets         [1] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1145   attributeSetIds         [2] IMPLICIT SEQUENCE OF AttributeSetId OPTIONAL,
1146   schemas                 [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1147   recordSyntaxes          [4] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1148   resourceChallenges      [5] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1149   restrictedAccess        [6] IMPLICIT AccessRestrictions OPTIONAL,
1150   costInfo                [8] IMPLICIT Costs OPTIONAL,
1151   variantSets             [9] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL,
1152   elementSetNames         [10] IMPLICIT SEQUENCE OF ElementSetName OPTIONAL,
1153   unitSystems             [11] IMPLICIT SEQUENCE OF InternationalString}
1156 -- begin auxiliary definitions for AccessInfo
1157 -- Begin Query Details
1158 QueryTypeDetails ::= CHOICE {
1159   private       [0]     IMPLICIT PrivateCapabilities,
1160   rpn           [1]     IMPLICIT RpnCapabilities,
1161   iso8777       [2]     IMPLICIT Iso8777Capabilities,
1162   z39-58        [100]   IMPLICIT HumanString,
1163   erpn          [101]   IMPLICIT RpnCapabilities,
1164   rankedList    [102]   IMPLICIT HumanString}
1167 PrivateCapabilities ::= SEQUENCE {
1168   operators     [0] IMPLICIT SEQUENCE OF SEQUENCE {
1169                       operator     [0] IMPLICIT InternationalString,
1170                       description  [1] IMPLICIT HumanString OPTIONAL } OPTIONAL,
1171   searchKeys    [1] IMPLICIT SEQUENCE OF SearchKey OPTIONAL,  
1172                           -- field names that can be searched
1173   description   [2] IMPLICIT SEQUENCE OF HumanString OPTIONAL }
1176 RpnCapabilities ::= SEQUENCE {
1177   operators                     [0] IMPLICIT SEQUENCE OF INTEGER OPTIONAL,
1178                                 -- Omitted means all operators are supported.
1179   resultSetAsOperandSupported   [1] IMPLICIT BOOLEAN,
1180   restrictionOperandSupported   [2] IMPLICIT BOOLEAN,
1181   proximity                     [3] IMPLICIT ProximitySupport OPTIONAL}
1183 Iso8777Capabilities ::= SEQUENCE {
1184   searchKeys    [0] IMPLICIT SEQUENCE OF SearchKey,  
1185                       -- field names that may be searched
1186   restrictions  [1] IMPLICIT HumanString OPTIONAL 
1187                       -- Omitted means supported, not specifying units.
1188                      }
1190 ProximitySupport ::= SEQUENCE {
1191   anySupport       [0] IMPLICIT BOOLEAN,
1192                           -- 'false' means no proximity support, in which case
1193                           -- unitsSupported not supplied.
1194   unitsSupported   [1] IMPLICIT SEQUENCE OF CHOICE{  
1195                           known    [1] IMPLICIT INTEGER, 
1196                                 -- values from KnownProximityUnit
1197                           private  [2] IMPLICIT SEQUENCE{  
1198                                           unit         [0] IMPLICIT INTEGER,  
1199                                           description  [1] HumanString OPTIONAL}}
1200                                               OPTIONAL}
1202 SearchKey ::= SEQUENCE {
1203   searchKey     [0] IMPLICIT InternationalString,
1204   description   [1] IMPLICIT HumanString OPTIONAL }
1205 -- End Query details
1209 AccessRestrictions ::= SEQUENCE OF SEQUENCE {
1210   accessType          [0] INTEGER {
1211                           any                (0),
1212                           search             (1),
1213                           present            (2),
1214                           specific-elements  (3),
1215                           extended-services  (4),
1216                           by-database        (5)},
1217   accessText          [1]  IMPLICIT HumanString OPTIONAL,
1218   accessChallenges    [2]  IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL}
1221 Costs ::= SEQUENCE {
1222   connectCharge    [0] IMPLICIT Charge OPTIONAL,     -- Per-connection charge
1223   connectTime      [1] IMPLICIT Charge OPTIONAL,     -- Time-based charge
1224   displayCharge    [2] IMPLICIT Charge OPTIONAL,     -- Per-record charge
1225   searchCharge     [3] IMPLICIT Charge OPTIONAL,     -- Per-search charge
1226   subscriptCharge  [4]   IMPLICIT Charge OPTIONAL,   -- Subscription charges
1227   otherCharges     [5] IMPLICIT SEQUENCE OF SEQUENCE{   -- Other charges
1228                           forWhat  [1] IMPLICIT HumanString,
1229                           charge   [2] IMPLICIT Charge} OPTIONAL} 
1231       Charge ::= SEQUENCE{
1232            cost       [1] IMPLICIT IntUnit,
1233            perWhat    [2] IMPLICIT Unit OPTIONAL,
1234                              -- e.g. "second," "minute," "line," "record"...
1235            text       [3] IMPLICIT HumanString OPTIONAL} 
1236 -- End Auxiliary definitions for AccessInfo
1239 DatabaseList ::= SEQUENCE OF DatabaseName
1241 AttributeCombinations ::= SEQUENCE {
1242   defaultAttributeSet     [0] IMPLICIT AttributeSetId,
1243                                 -- Default for the combinations. Also probably
1244                                 -- a good choice for the default
1245                                 -- in searches, but that isn't required.
1246   legalCombinations       [1] IMPLICIT SEQUENCE OF AttributeCombination }
1249 AttributeCombination ::= SEQUENCE OF AttributeOccurrence
1250   -- An AttributeCombination is a pattern for legal combination of attributes
1253 AttributeOccurrence ::= SEQUENCE {   
1254                 -- An AttributeOccurrence lists the legal values for a
1255                 -- specific attribute type in a combination.
1256    attributeSet       [0] IMPLICIT AttributeSetId OPTIONAL,
1257    attributeType      [1] IMPLICIT INTEGER,
1258    mustBeSupplied     [2] IMPLICIT NULL OPTIONAL,
1259    attributeValues    CHOICE {
1260                           any-or-none   [3] IMPLICIT NULL, 
1261                              -- All supported values are OK 
1262                           specific      [4] IMPLICIT SEQUENCE OF
1263                                               StringOrNumeric}}
1264                             -- Only these values allowed
1273 RecordSyntax-summary
1275 {z39-50-recordSyntax summary (103)} DEFINITIONS ::=
1276 BEGIN 
1277 IMPORTS OtherInformation, InternationalString  FROM Z39-50-APDU-1995;
1279 BriefBib ::= SEQUENCE {
1280    title                  [1]   IMPLICIT InternationalString,
1281    author                 [2]   IMPLICIT InternationalString OPTIONAL,
1282    callNumber             [3]   IMPLICIT InternationalString OPTIONAL,
1283    recordType             [4]   IMPLICIT InternationalString OPTIONAL,
1284    bibliographicLevel     [5]   IMPLICIT InternationalString OPTIONAL,
1285    format                 [6]   IMPLICIT SEQUENCE OF FormatSpec OPTIONAL,
1286    publicationPlace       [7]   IMPLICIT InternationalString OPTIONAL,
1287    publicationDate        [8]   IMPLICIT InternationalString OPTIONAL,
1288    targetSystemKey        [9]   IMPLICIT InternationalString OPTIONAL,
1289    satisfyingElement      [10]  IMPLICIT InternationalString OPTIONAL,
1290    rank                   [11]  IMPLICIT INTEGER OPTIONAL,
1291    documentId             [12]  IMPLICIT InternationalString OPTIONAL,
1292    abstract               [13]  IMPLICIT InternationalString OPTIONAL,
1293    otherInfo                    OtherInformation OPTIONAL}
1295          FormatSpec  ::=  SEQUENCE {
1296              type     [1] IMPLICIT InternationalString,
1297              size     [2] IMPLICIT INTEGER OPTIONAL,
1298              bestPosn [3] IMPLICIT INTEGER OPTIONAL}
1305 RecordSyntax-generic  -- For detailed semantics, see Appendix RET.
1306 {z39-50-recordSyntax grs-1 (105)} DEFINITIONS ::=
1307 BEGIN 
1308 EXPORTS Variant;
1309 IMPORTS IntUnit, Unit, InternationalString, StringOrNumeric, Term 
1310 FROM Z39-50-APDU-1995;
1312 GenericRecord ::= SEQUENCE OF TaggedElement  
1313 TaggedElement ::= SEQUENCE {
1314    tagType         [1] IMPLICIT INTEGER OPTIONAL,
1315                           -- If omitted, default should be supplied dynamically
1316                           -- by tagSet-M; otherwise it should be statically
1317                           -- specified by the schema.
1318    tagValue        [2] StringOrNumeric,
1319    tagOccurrence   [3] IMPLICIT INTEGER OPTIONAL,
1320                           -- Occurrence within the database record, and
1321                           -- relative to the parent. No default; if omitted,
1322                           -- target not telling or it is irrelevant.
1323    content         [4] ElementData,
1324    metaData        [5] IMPLICIT ElementMetaData OPTIONAL,
1325    appliedVariant  [6] IMPLICIT Variant OPTIONAL}
1327 ElementData ::= CHOICE{
1328    octets                    OCTET STRING,
1329    numeric                   INTEGER,
1330    date                      GeneralizedTime,
1331    ext                       EXTERNAL,
1332    string                    InternationalString,
1333    trueOrFalse               BOOLEAN,
1334    oid                       OBJECT IDENTIFIER,
1335    intUnit            [1]    IMPLICIT IntUnit,
1336     elementNotThere   [2]    IMPLICIT NULL,  -- element requested but not there
1337    elementEmpty       [3]    IMPLICIT NULL,  -- element there, but empty
1338    noDataRequested    [4]    IMPLICIT NULL,  -- variant request said 'no data'
1339    diagnostic         [5]    IMPLICIT EXTERNAL,
1340    subtree            [6]    SEQUENCE OF TaggedElement 
1341                                 -- recursive, for nested tags
1342                      }
1344 ElementMetaData ::= SEQUENCE{
1345    seriesOrder        [1]    IMPLICIT Order OPTIONAL, 
1346                                 -- only for a non-leaf node
1347    usageRight         [2]    IMPLICIT Usage OPTIONAL,
1348    hits               [3]    IMPLICIT SEQUENCE OF HitVector OPTIONAL,
1349    displayName        [4]    IMPLICIT InternationalString OPTIONAL, 
1350                                 -- name for element that origin can use for
1351                                 -- display
1352    supportedVariants  [5]    IMPLICIT SEQUENCE OF Variant OPTIONAL,
1353    message            [6]    IMPLICIT InternationalString OPTIONAL,
1354    elementDescriptor  [7]    IMPLICIT OCTET STRING OPTIONAL,
1355    surrogateFor       [8]    IMPLICIT TagPath OPTIONAL,  
1356                                 -- the retrieved element is a surrogate for the
1357                                 -- element given by this path
1358    surrogateElement   [9]    IMPLICIT TagPath OPTIONAL,
1359                                 -- the element given by this path is a
1360                                 -- surrogate for the retrieved element
1361      other            [99]   IMPLICIT EXTERNAL OPTIONAL}
1363             TagPath ::= SEQUENCE  OF SEQUENCE{
1364                 tagType         [1] IMPLICIT INTEGER OPTIONAL,
1365                 tagValue        [2] StringOrNumeric,
1366                 tagOccurrence   [3] IMPLICIT INTEGER OPTIONAL}
1369 Order ::= SEQUENCE{
1370    ascending      [1] IMPLICIT BOOLEAN,
1371                           -- "true" means monotonically increasing (i.e. non-
1372                           --  decreasing); "false" means monotonically
1373                           -- decreasing (i.e. non-increasing).
1374    order         [2] IMPLICIT INTEGER
1375                           -- Same as defined by 'elementOrdering' in tagSet-M,
1376                           -- though this may be overidden by schema.
1377                }
1379 Usage ::= SEQUENCE   {
1380    type            [1] IMPLICIT INTEGER{
1381                           redistributable    (1),    
1382                              -- Element is freely redistributable.
1383                           restricted         (2),    
1384                              -- Restriction contains statement.
1385                           licensePointer     (3)    
1386                              -- Restriction contains license pointer.
1387                           },
1388    restriction     [2] IMPLICIT InternationalString OPTIONAL}
1390 HitVector ::= SEQUENCE{ 
1391                       -- Each hit vector points to a fragment within the
1392                       -- element, via location and/or token.
1393    satisfier                 Term OPTIONAL, -- sourceword, etc.
1394    offsetIntoElement  [1]    IMPLICIT IntUnit OPTIONAL,
1395    length             [2]    IMPLICIT IntUnit OPTIONAL,
1396    hitRank            [3]    IMPLICIT INTEGER OPTIONAL,
1397    targetToken        [4]    IMPLICIT OCTET STRING OPTIONAL
1398                                 -- Origin may use token subsequently within a
1399                                 -- variantRequest (in an elementRequest) to
1400                                 -- retrieve (or to refer to) the fragment.  
1401                      }
1404 Variant ::= SEQUENCE{
1405      globalVariantSetId   [1] IMPLICIT OBJECT IDENTIFIER OPTIONAL,
1406                                 -- Applies to the triples below, when
1407                                 -- variantSetId omitted. If
1408                                 -- globalVariantSetId omitted, default applies.
1409                                 -- Default may be provided by the tagSet-M
1410                                 -- element defaultVariantSetId.
1411    triples                [2] IMPLICIT SEQUENCE OF SEQUENCE{
1412                                 variantSetId    [0]   IMPLICIT OBJECT IDENTIFIER
1413                                                         OPTIONAL,
1414                                                        -- If omitted,
1415                                                        -- globalVariantSetId
1416                                                        -- (above) applies, unless
1417                                                        -- that too is omitted, in
1418                                                        -- which case, default
1419                                                        -- used.
1420                                 class           [1]    IMPLICIT INTEGER,
1421                                 type            [2]    IMPLICIT INTEGER,
1422                                 value           [3]    CHOICE{
1423                                                           integer INTEGER,
1424                                                           string InternationalString,
1425                                                           octetString OCTET STRING,
1426                                                           oid OBJECT IDENTIFIER,
1427                                                           boolean BOOLEAN,
1428                                                           null NULL,
1429                                        -- Following need context tags:
1430                                           unit                [1] IMPLICIT Unit, 
1431                                           valueAndUnit        [2] IMPLICIT
1432                                                                      IntUnit}}}
1436 RecordSyntax-ESTaskPackage
1437 {z39-50-recordSyntax esTaskPackage (106)} DEFINITIONS ::=
1438 BEGIN 
1439 IMPORTS Permissions, InternationalString, IntUnit, DiagRec 
1440 FROM Z39-50-APDU-1995;
1442 TaskPackage ::= SEQUENCE{
1443    packageType               [1]   IMPLICIT OBJECT IDENTIFIER,
1444                                         -- oid of specific ES definition
1445    packageName               [2]   IMPLICIT InternationalString OPTIONAL,
1446    userId                    [3]   IMPLICIT InternationalString OPTIONAL,
1447    retentionTime             [4]   IMPLICIT IntUnit OPTIONAL,
1448    permissions               [5]   IMPLICIT Permissions OPTIONAL,
1449    description               [6]   IMPLICIT InternationalString OPTIONAL,
1450    targetReference           [7]   IMPLICIT OCTET STRING OPTIONAL,
1451    creationDateTime          [8]   IMPLICIT GeneralizedTime OPTIONAL,
1452    taskStatus                [9]   IMPLICIT INTEGER{
1453                                        pending  (0),
1454                                        active   (1),
1455                                        complete (2),
1456                                        aborted  (3)},
1457    packageDiagnostics        [10]  IMPLICIT SEQUENCE OF DiagRec OPTIONAL,
1458    taskSpecificParameters    [11]  IMPLICIT EXTERNAL
1459                                        -- Use oid for specific ES definition
1460                                        -- (same oid as packageType above)
1461                                        -- and select [2] "taskPackage."
1462       } 
1465 AccessControlFormat-Prompt-1
1466 {z39-50-accessControl prompt-1 (1)} DEFINITIONS ::=
1467 BEGIN
1468 IMPORTS InternationalString, DiagRec FROM Z39-50-APDU-1995;
1470 PromptObject ::= CHOICE{
1471    challenge    [1] IMPLICIT Challenge,
1472    response     [2] IMPLICIT Response}
1474   Challenge ::= SEQUENCE OF SEQUENCE {
1475       promptId         [1] PromptId,
1476                              -- Target supplies a number (for an enumerated
1477                              -- prompt) or string (for a non-enumerated
1478                              -- prompt), for each prompt, and the origin
1479                              -- returns it in response, for this prompt, so
1480                              -- target may correlate the prompt response with
1481                              -- the prompt.
1482    defaultResponse    [2] IMPLICIT InternationalString OPTIONAL,
1483    promptInfo         [3] CHOICE{ 
1484                               character   [1] IMPLICIT InternationalString,
1485                               encrypted   [2] IMPLICIT Encryption} OPTIONAL,
1486                                    -- Information corresponding to an
1487                                    -- emumerated prompt. For example if 'type',
1488                                    -- within PromptId, is 'copyright', then
1489                                    -- promptInfo may contain a copyright
1490                                    -- statement.  
1491    regExpr            [4] IMPLICIT InternationalString OPTIONAL,
1492                              -- A regular expression that promptResponse should
1493                              -- match. See IEEE 1003.2 Volume 1, Section 2.8
1494                              -- "Regular Expression Notation." For example if
1495                              -- promptId is "Year of publication," regExpr
1496                              -- might be "19[89][0-9]|20[0-9][0-9]".
1497    responseRequired   [5] IMPLICIT NULL OPTIONAL,
1498    allowedValues      [6] IMPLICIT SEQUENCE OF InternationalString OPTIONAL,
1499                              -- e.g. promptId="Desired color"; allowed = 'red',
1500                              -- 'blue','Green'.
1501    shouldSave         [7] IMPLICIT NULL OPTIONAL,
1502                              -- Target recommends that origin save the data
1503                              -- that it prompts from the user corresponding to
1504                              -- this prompt, because it is likely to be
1505                              -- requested again (so origin might not have to
1506                              -- prompt the user next time).
1507    dataType           [8] IMPLICIT INTEGER{
1508                                 integer         (1),
1509                                 date            (2),
1510                                 float           (3),
1511                                 alphaNumeric    (4),
1512                                 url-urn         (5),
1513                                 boolean         (6)} OPTIONAL,
1514                                    -- Target telling origin type of data it
1515                                    -- wants. E.g., if "date" is specified,
1516                                    -- presumably the origin will try to prompt
1517                                    -- something "date-like" from the user.
1518    diagnostic      [9] IMPLICIT EXTERNAL OPTIONAL
1519                           -- Intended for repeat requests when there is an
1520                           -- error the origin should report to the user from
1521                           -- previous attempt.
1522                         }
1525   Response ::= SEQUENCE OF SEQUENCE {
1526         promptId      [1] PromptId,
1527                              -- Corresponds to a prompt in the challenge, or
1528                              -- may be unprompted, for example "newPassword."
1529                              -- If unprompted, should be "enumerated." 
1530                              -- If this responds to a non-enumerated prompt,
1531                              -- then nonEnumeratedPrompt should contain the
1532                              -- prompt string from the challenge.
1533       promptResponse  [2] CHOICE{
1534                              string       [1] IMPLICIT InternationalString,
1535                              accept       [2] IMPLICIT BOOLEAN,
1536                              acknowledge  [3] IMPLICIT NULL,
1537                              diagnostic   [4] DiagRec,
1538                              encrypted    [5] IMPLICIT Encryption}}
1541  PromptId ::= CHOICE{
1542    enummeratedPrompt      [1] IMPLICIT SEQUENCE{
1543                                  type                  [1] IMPLICIT INTEGER{
1544                                                                  groupId      (0),
1545                                                                  userId       (1),
1546                                                                  password     (2),
1547                                                                  newPassword  (3),
1548                                                                  copyright    (4),
1549                                           -- When type on Challenge is
1550                                           -- 'copyright', promptInfo has text of
1551                                           -- copyright message to be displayed
1552                                           -- verbatim to the user. If
1553                                           -- promptResponse indicates
1554                                           -- 'acceptance', this indicates the
1555                                           -- user has been shown, and accepted,
1556                                           -- the terms of the copyright. This is
1557                                           -- not intended to be legally binding,
1558                                           -- but provides a good-faith attempt
1559                                           -- on the part of the target to inform
1560                                           -- the user of the copyright.
1561                                                                  sessionId    (5)},
1562                                  suggestedString       [2] IMPLICIT
1563                                              InternationalString OPTIONAL},
1564     nonEnumeratedPrompt   [2] IMPLICIT InternationalString}
1567  Encryption ::= SEQUENCE{
1568    cryptType    [1] IMPLICIT OCTET STRING OPTIONAL, 
1569    credential   [2] IMPLICIT OCTET STRING OPTIONAL,
1570                       --random number, SALT, or other factor
1571    data         [3] IMPLICIT OCTET STRING}
1579 AccessControlFormat-des-1
1580 {z39-50-accessControlFormat  des-1 (2)} DEFINITIONS ::=
1581 BEGIN
1582       DES-RN-Object ::= CHOICE {
1583          challenge        [1] IMPLICIT DRNType,
1584          response         [2] IMPLICIT DRNType}
1586       DRNType ::= SEQUENCE{
1587          userId           [1] IMPLICIT OCTET STRING OPTIONAL,
1588          salt             [2] IMPLICIT OCTET STRING OPTIONAL,
1589          randomNumber     [3] IMPLICIT OCTET STRING}
1596 AccessControlFormat-krb-1
1597 {z39-50-accessControlFormat  krb-1 (3)} DEFINITIONS ::=
1598 BEGIN
1599 IMPORTS InternationalString FROM Z39-50-APDU-1995;
1601    KRBObject ::= CHOICE {
1602       challenge    [1] IMPLICIT KRBRequest,
1603       response     [2] IMPLICIT KRBResponse}
1605    KRBRequest ::= SEQUENCE{
1606       service      [1] IMPLICIT InternationalString,      
1607       instance     [2] IMPLICIT InternationalString OPTIONAL,
1608       realm        [3] IMPLICIT InternationalString OPTIONAL
1609                           -- target requests a ticket for the given service,
1610                           -- instance, and realm
1611                       }
1613    KRBResponse ::= SEQUENCE{
1614       userid       [1] IMPLICIT InternationalString OPTIONAL,
1615       ticket       [2] IMPLICIT OCTET STRING
1616                           -- origin responds with a ticket for the requested
1617                           -- service
1618                       }
1621 UserInfoFormat-searchResult-1
1622 {z39-50-userInfoFormat searchResult-1 (1)} DEFINITIONS ::=
1623 BEGIN
1624 IMPORTS DatabaseName, Term, Query, IntUnit, InternationalString 
1625 FROM Z39-50-APDU-1995;
1627 SearchInfoReport ::= SEQUENCE OF SEQUENCE{
1628    subqueryId                [1] IMPLICIT InternationalString OPTIONAL, 
1629                                    -- shorthand identifier of subquery
1630    fullQuery                 [2] IMPLICIT BOOLEAN,       
1631                                    -- 'true' means this is the full query;
1632                                    -- 'false', a sub-query 
1633    subqueryExpression        [3] QueryExpression OPTIONAL,  
1635                                    -- A subquery of the query as submitted. May
1636                                    -- be whole query; if so, "fullQuery" should
1637                                    -- be 'true'.
1638    subqueryInterpretation    [4] QueryExpression OPTIONAL,  
1640                                    -- how target interpreted subquery
1641    subqueryRecommendation    [5] QueryExpression OPTIONAL,   
1642                                    -- target-recommended alternative
1643    subqueryCount             [6] IMPLICIT INTEGER OPTIONAL,   
1644                                    -- Number of records for this subQuery,
1645                                    -- across all of the specified databases.
1646                                    -- (If during search, via resource control,
1647                                    -- number of records so far).
1648    subqueryWeight            [7] IMPLICIT IntUnit OPTIONAL,   
1649                                    -- relative weight of this subquery
1650    resultsByDB               [8] IMPLICIT ResultsByDB OPTIONAL}
1652 ResultsByDB ::= SEQUENCE OF SEQUENCE{
1653    databases       [1] CHOICE{
1654                           all   [1] IMPLICIT NULL,
1655                                        -- applies across all of the databases in
1656                                        -- Search PDU
1657                           list  [2] IMPLICIT SEQUENCE OF DatabaseName
1658                                        -- applies across all databases in this
1659                                        -- list
1660                              },
1661    count           [2] IMPLICIT INTEGER OPTIONAL,
1662                           -- Number of records for query component (and, as
1663                           -- above, if during search, via resource control,
1664                           -- number of records so far).
1665    resultSetName   [3] IMPLICIT InternationalString OPTIONAL
1666                           -- Target-assigned result set by which subQuery is
1667                           -- available. Should not be provided unless
1668                           -- processing for this query component is concluded
1669                           -- (i.e., when this report comes during search, via
1670                           -- resource control, as opposed to after search, via
1671                           -- additionalSearchInfo).
1672                      }
1674 QueryExpression ::=  CHOICE {
1675       term   [1] IMPLICIT SEQUENCE{
1676                    queryTerm    [1] Term,
1677                    termComment  [2] IMPLICIT InternationalString OPTIONAL},
1678       query  [2] Query}