1 <!-- $Id: asn.xml,v 1.18 2006-10-05 08:26:58 adam Exp $ -->
2 <chapter id="asn"><title>The Z39.50 ASN.1 Module</title>
3 <sect1 id="asn.introduction"><title>Introduction</title>
5 The &asn; module provides you with a set of C struct definitions for the
6 various PDUs of the Z39.50 protocol, as well as for the complex types
7 appearing within the PDUs. For the primitive data types, the C
8 representation often takes the form of an ordinary C language type,
9 such as <literal>int</literal>. For ASN.1 constructs that have no direct
10 representation in C, such as general octet strings and bit strings,
11 the &odr; module (see section <link linkend="odr">The ODR Module</link>)
12 provides auxiliary definitions.
15 The &asn; module is located in sub directory <filename>z39.50</filename>.
16 There you'll find C files that implements encoders and decoders for the
17 Z39.50 types. You'll also find the protocol definitions:
18 <filename>z3950v3.asn</filename>, <filename>esupdate.asn</filename>,
22 <sect1 id="asn.preparing"><title>Preparing PDUs</title>
25 A structure representing a complex ASN.1 type doesn't in itself contain the
26 members of that type. Instead, the structure contains
27 <emphasis>pointers</emphasis> to the members of the type.
28 This is necessary, in part, to allow a mechanism for specifying which
29 of the optional structure (SEQUENCE) members are present, and which
30 are not. It follows that you will need to somehow provide space for
31 the individual members of the structure, and set the pointers to
35 The conversion routines don't care how you allocate and maintain your
36 C structures - they just follow the pointers that you provide.
37 Depending on the complexity of your application, and your personal
38 taste, there are at least three different approaches that you may take
39 when you allocate the structures.
43 You can use static or automatic local variables in the function that
44 prepares the PDU. This is a simple approach, and it provides the most
45 efficient form of memory management. While it works well for flat
46 PDUs like the InitReqest, it will generally not be sufficient for say,
47 the generation of an arbitrarily complex RPN query structure.
50 You can individually create the structure and its members using the
51 <function>malloc(2)</function> function. If you want to ensure that
52 the data is freed when it is no longer needed, you will have to
53 define a function that individually releases each member of a
54 structure before freeing the structure itself.
57 You can use the <function>odr_malloc()</function> function (see
58 <xref linkend="odr.use"/> for details). When you use
59 <function>odr_malloc()</function>, you can release all of the
60 allocated data in a single operation, independent of any pointers and
61 relations between the data. <function>odr_malloc()</function> is based on a
62 "nibble-memory"
63 scheme, in which large portions of memory are allocated, and then
64 gradually handed out with each call to <function>odr_malloc()</function>.
65 The next time you call <function>odr_reset()</function>, all of the
66 memory allocated since the last call is recycled for future use (actually,
67 it is placed on a free-list).
70 You can combine all of the methods described here. This will often be
71 the most practical approach. For instance, you might use
72 <function>odr_malloc()</function> to allocate an entire structure and
73 some of its elements, while you leave other elements pointing to global
74 or per-session default variables.
78 The &asn; module provides an important aid in creating new PDUs. For
79 each of the PDU types (say, <function>Z_InitRequest</function>), a
80 function is provided that allocates and initializes an instance of
81 that PDU type for you. In the case of the InitRequest, the function is
82 simply named <function>zget_InitRequest()</function>, and it sets up
83 reasonable default value for all of the mandatory members. The optional
84 members are generally initialized to null pointers. This last aspect
85 is very important: it ensures that if the PDU definitions are
86 extended after you finish your implementation (to accommodate
87 new versions of the protocol, say), you won't get into trouble with
88 uninitialized pointers in your structures. The functions use
89 <function>odr_malloc()</function> to
90 allocate the PDUs and its members, so you can free everything again with a
91 single call to <function>odr_reset()</function>. We strongly recommend
92 that you use the <literal>zget_*</literal>
93 functions whenever you are preparing a PDU (in a C++ API, the
94 <literal>zget_</literal>
95 functions would probably be promoted to constructors for the
99 The prototype for the individual PDU types generally look like this:
102 Z_<type> *zget_<type>(ODR o);
110 Z_InitRequest *zget_InitRequest(ODR o);
114 The &odr; handle should generally be your encoding stream, but it
118 As well as the individual PDU functions, a function
119 <function>zget_APDU()</function> is provided, which allocates
120 a top-level Z-APDU of the type requested:
124 Z_APDU *zget_APDU(ODR o, int which);
128 The <varname>which</varname> parameter is (of course) the discriminator
129 belonging to the <varname>Z_APDU</varname> <literal>CHOICE</literal> type.
130 All of the interface described here is provided by the &asn; module, and
131 you access it through the <filename>proto.h</filename> header file.
135 <sect1 id="asn.oid"><title>Object Identifiers</title>
137 When you refer to object identifiers in your application, you need to
138 be aware that SR and Z39.50 use two different set of OIDs to refer to
139 the same objects. To handle this easily, &yaz; provides a utility module
140 to &asn; which provides an internal representation of the OIDs used in
141 both protocols. Each oid is described by a structure:
145 typedef struct oident
147 enum oid_proto proto;
148 enum oid_class class;
149 enum oid_value value;
150 int oidsuffix[OID_SIZE];
156 The <literal>proto</literal> field can be set to either
157 <literal>PROTO_SR</literal> or <literal>PROTO_Z3950</literal>.
158 The <literal>class</literal> might be, say,
159 <literal>CLASS_RECSYN</literal>, and the <literal>value</literal> might be
160 <literal>VAL_USMARC</literal> for the USMARC record format. Functions
164 int *oid_ent_to_oid(struct oident *ent, int *dst);
165 struct oident *oid_getentbyoid(int *o);
169 are provided to map between object identifiers and database entries.
170 If you store a member of the <literal>oid_proto</literal> type in
171 your association state information, it's a simple matter, at runtime,
172 to generate the correct OID when you need it. For decoding, you can
173 simply ignore the proto field, or if you're strict, you can verify
174 that your peer is using the OID family from the correct protocol.
175 The <literal>desc</literal> field is a short, human-readable name
176 for the PDU, useful mainly for diagnostic output.
181 The old function <function>oid_getoidbyent</function> still exists but
182 is not thread safe. Use <function>oid_ent_to_oid</function> instead
183 and pass an array of size <literal>OID_SIZE</literal>.
189 Plans are underway to merge the two protocols into a single
190 definition, with one set of object identifiers. When this happens, the
191 oid module will no longer be required to support protocol
192 independence, but it should still be useful as a simple OID database.
197 <sect1 id="asn.external"><title>EXTERNAL Data</title>
200 In order to achieve extensibility and adaptability to different
201 application domains, the new version of the protocol defines many
202 structures outside of the main ASN.1 specification, referencing them
203 through ASN.1 EXTERNAL constructs. To simplify the construction and
204 access to the externally referenced data, the &asn; module defines a
205 specialized version of the EXTERNAL construct, called
206 <literal>Z_External</literal>.It is defined thus:
210 typedef struct Z_External
212 Odr_oid *direct_reference;
213 int *indirect_reference;
218 Z_External_single = 0,
220 Z_External_arbitrary,
224 Z_External_explainRecord,
225 Z_External_resourceReport1,
226 Z_External_resourceReport2
234 Odr_any *single_ASN1_type;
235 Odr_oct *octet_aligned;
236 Odr_bitmask *arbitrary;
240 Z_ExplainRecord *explainRecord;
241 Z_ResourceReport1 *resourceReport1;
242 Z_ResourceReport2 *resourceReport2;
251 When decoding, the &asn; module will attempt to determine which
252 syntax describes the data by looking at the reference fields
253 (currently only the direct-reference). For ASN.1 structured data, you
254 need only consult the <literal>which</literal> field to determine the
255 type of data. You can the access the data directly through the union.
256 When constructing data for encoding, you set the union pointer to point
257 to the data, and set the <literal>which</literal> field accordingly.
258 Remember also to set the direct (or indirect) reference to the correct
259 OID for the data type.
260 For non-ASN.1 data such as MARC records, use the
261 <literal>octet_aligned</literal> arm of the union.
265 Some servers return ASN.1 structured data values (eg. database
266 records) as BER-encoded records placed in the
267 <literal>octet-aligned</literal> branch of the EXTERNAL CHOICE.
268 The ASN-module will <emphasis>not</emphasis> automatically decode
269 these records. To help you decode the records in the application, the
274 Z_ext_typeent *z_ext_gettypebyref(oid_value ref);
278 Can be used to retrieve information about the known, external data
279 types. The function return a pointer to a static area, or NULL, if no
280 match for the given direct reference is found. The
281 <literal>Z_ext_typeent</literal>
286 typedef struct Z_ext_typeent
288 oid_value dref; /* the direct-reference OID value. */
289 int what; /* discriminator value for the external CHOICE */
290 Odr_fun fun; /* decoder function */
295 The <literal>what</literal> member contains the
296 <literal>Z_External</literal> union discriminator value for the
297 given type: For the SUTRS record syntax, the value would be
298 <literal>Z_External_sutrs</literal>.
299 The <literal>fun</literal> member contains a pointer to the
300 function which encodes/decodes the given type. Again, for the SUTRS
301 record syntax, the value of <literal>fun</literal> would be
302 <literal>z_SUTRS</literal> (a function pointer).
306 If you receive an EXTERNAL which contains an octet-string value that
307 you suspect of being an ASN.1-structured data value, you can use
308 <literal>z_ext_gettypebyref</literal> to look for the provided
310 If the return value is different from NULL, you can use the provided
311 function to decode the BER string (see <xref linkend="odr.use"/>
316 If you want to <emphasis>send</emphasis> EXTERNALs containing
317 ASN.1-structured values in the occtet-aligned branch of the CHOICE, this
318 is possible too. However, on the encoding phase, it requires a somewhat
319 involved juggling around of the various buffers involved.
322 If you need to add new, externally defined data types, you must update
323 the struct above, in the source file <filename>prt-ext.h</filename>, as
324 well as the encoder/decoder in the file <filename>prt-ext.c</filename>.
325 When changing the latter, remember to update both the
326 <literal>arm</literal> arrary and the list
327 <literal>type_table</literal>, which drives the CHOICE biasing that
328 is necessary to tell the different, structured types apart
334 Eventually, the EXTERNAL processing will most likely
335 automatically insert the correct OIDs or indirect-refs. First,
336 however, we need to determine how application-context management
337 (specifically the presentation-context-list) should fit into the
343 <sect1 id="asn.pdu"><title>PDU Contents Table</title>
346 We include, for reference, a listing of the fields of each top-level
347 PDU, as well as their default settings.
350 <table frame="top" id="asn.default.initialize.request">
351 <title>Default settings for PDU Initialize Request</title>
353 <colspec colwidth="7*" colname="field"></colspec>
354 <colspec colwidth="5*" colname="type"></colspec>
355 <colspec colwidth="7*" colname="value"></colspec>
360 <entry>Default Value</entry>
365 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
368 protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
371 options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
374 preferredMessageSize</entry><entry>int</entry><entry>30*1024
377 maximumRecordSize</entry><entry>int</entry><entry>30*1024
380 idAuthentication</entry><entry>Z_IdAuthentication</entry><entry>NULL
383 implementationId</entry><entry>char*</entry><entry>"81"
386 implementationName</entry><entry>char*</entry><entry>"YAZ"
389 implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
392 userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
395 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
401 <table frame="top" id="asn.default.initialize.response">
402 <title>Default settings for PDU Initialize
405 <colspec colwidth="7*" colname="field"></colspec>
406 <colspec colwidth="5*" colname="type"></colspec>
407 <colspec colwidth="7*" colname="value"></colspec>
412 <entry>Default Value</entry>
417 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
420 protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
423 options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
426 preferredMessageSize</entry><entry>int</entry><entry>30*1024
429 maximumRecordSize</entry><entry>int</entry><entry>30*1024
432 result</entry><entry>bool_t</entry><entry>TRUE
435 implementationId</entry><entry>char*</entry><entry>"id)"
438 implementationName</entry><entry>char*</entry><entry>"YAZ"
441 implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
444 userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
447 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
453 <table frame="top" id="asn.default.search.request">
454 <title>Default settings for PDU Search Request</title>
456 <colspec colwidth="7*" colname="field"></colspec>
457 <colspec colwidth="5*" colname="type"></colspec>
458 <colspec colwidth="7*" colname="value"></colspec>
463 <entry>Default Value</entry>
468 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
471 smallSetUpperBound</entry><entry>int</entry><entry>0
474 largeSetLowerBound</entry><entry>int</entry><entry>1
477 mediumSetPresentNumber</entry><entry>int</entry><entry>0
480 replaceIndicator</entry><entry>bool_t</entry><entry>TRUE
483 resultSetName</entry><entry>char *</entry><entry>"default"
486 num_databaseNames</entry><entry>int</entry><entry>0
489 databaseNames</entry><entry>char **</entry><entry>NULL
492 smallSetElementSetNames</entry><entry>Z_ElementSetNames
496 mediumSetElementSetNames</entry><entry>Z_ElementSetNames
500 preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
503 query</entry><entry>Z_Query</entry><entry>NULL
506 additionalSearchInfo</entry><entry>Z_OtherInformation
510 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
516 <table frame="top" id="asn.default.search.response">
517 <title>Default settings for PDU Search Response</title>
519 <colspec colwidth="7*" colname="field"></colspec>
520 <colspec colwidth="5*" colname="type"></colspec>
521 <colspec colwidth="7*" colname="value"></colspec>
526 <entry>Default Value</entry>
532 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
535 resultCount</entry><entry>int</entry><entry>0
538 numberOfRecordsReturned</entry><entry>int</entry><entry>0
541 nextResultSetPosition</entry><entry>int</entry><entry>0
544 searchStatus</entry><entry>bool_t</entry><entry>TRUE
547 resultSetStatus</entry><entry>int</entry><entry>NULL
550 presentStatus</entry><entry>int</entry><entry>NULL
553 records</entry><entry>Z_Records</entry><entry>NULL
556 additionalSearchInfo</entry>
557 <entry>Z_OtherInformation</entry><entry>NULL
560 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
566 <table frame="top" id="asn.default.present.request">
567 <title>Default settings for PDU Present Request</title>
569 <colspec colwidth="7*" colname="field"></colspec>
570 <colspec colwidth="5*" colname="type"></colspec>
571 <colspec colwidth="7*" colname="value"></colspec>
576 <entry>Default Value</entry>
581 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
584 resultSetId</entry><entry>char*</entry><entry>"default"
587 resultSetStartPoint</entry><entry>int</entry><entry>1
590 numberOfRecordsRequested</entry><entry>int</entry><entry>10
593 num_ranges</entry><entry>int</entry><entry>0
596 additionalRanges</entry><entry>Z_Range</entry><entry>NULL
599 recordComposition</entry><entry>Z_RecordComposition</entry><entry>NULL
602 preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
605 maxSegmentCount</entry><entry>int</entry><entry>NULL
608 maxRecordSize</entry><entry>int</entry><entry>NULL
611 maxSegmentSize</entry><entry>int</entry><entry>NULL
614 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
620 <table frame="top" id="asn.default.present.response">
621 <title>Default settings for PDU Present Response</title>
623 <colspec colwidth="7*" colname="field"></colspec>
624 <colspec colwidth="5*" colname="type"></colspec>
625 <colspec colwidth="7*" colname="value"></colspec>
630 <entry>Default Value</entry>
635 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
638 numberOfRecordsReturned</entry><entry>int</entry><entry>0
641 nextResultSetPosition</entry><entry>int</entry><entry>0
644 presentStatus</entry><entry>int</entry><entry>Z_PresentStatus_success
647 records</entry><entry>Z_Records</entry><entry>NULL
650 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
656 <table frame="top" id="asn.default.delete.result.set.request">
657 <title>Default settings for Delete Result Set Request
660 <colspec colwidth="7*" colname="field"></colspec>
661 <colspec colwidth="5*" colname="type"></colspec>
662 <colspec colwidth="7*" colname="value"></colspec>
667 <entry>Default Value</entry>
671 <row><entry>referenceId
672 </entry><entry>Z_ReferenceId</entry><entry>NULL
675 deleteFunction</entry><entry>int</entry><entry>Z_DeleteResultSetRequest_list
678 num_ids</entry><entry>int</entry><entry>0
681 resultSetList</entry><entry>char**</entry><entry>NULL
684 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
690 <table frame="top" id="asn.default.delete.result.set.response">
691 <title>Default settings for Delete Result Set Response
694 <colspec colwidth="7*" colname="field"></colspec>
695 <colspec colwidth="5*" colname="type"></colspec>
696 <colspec colwidth="7*" colname="value"></colspec>
701 <entry>Default Value</entry>
706 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
709 deleteOperationStatus</entry><entry>int</entry>
710 <entry>Z_DeleteStatus_success</entry></row>
712 num_statuses</entry><entry>int</entry><entry>0
715 deleteListStatuses</entry><entry>Z_ListStatus**</entry><entry>NULL
718 numberNotDeleted</entry><entry>int</entry><entry>NULL
721 num_bulkStatuses</entry><entry>int</entry><entry>0
724 bulkStatuses</entry><entry>Z_ListStatus</entry><entry>NUL
727 deleteMessage</entry><entry>char*</entry><entry>NULL
730 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
736 <table frame="top" id="asn.default.scan.request">
737 <title>Default settings for Scan Request
740 <colspec colwidth="7*" colname="field"></colspec>
741 <colspec colwidth="5*" colname="type"></colspec>
742 <colspec colwidth="7*" colname="value"></colspec>
747 <entry>Default Value</entry>
752 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
755 num_databaseNames</entry><entry>int</entry><entry>0
758 databaseNames</entry><entry>char**</entry><entry>NULL
761 attributeSet</entry><entry>Odr_oid</entry><entry>NULL
764 termListAndStartPoint</entry><entry>Z_AttributesPlus...
765 </entry><entry>NULL</entry></row>
767 stepSize</entry><entry>int</entry><entry>NULL
770 numberOfTermsRequested</entry><entry>int</entry><entry>20
773 preferredPositionInResponse</entry><entry>int</entry><entry>NULL
776 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
782 <table frame="top" id="asn.default.scan.response">
783 <title>Default settings for Scan Response
786 <colspec colwidth="7*" colname="field"></colspec>
787 <colspec colwidth="5*" colname="type"></colspec>
788 <colspec colwidth="7*" colname="value"></colspec>
793 <entry>Default Value</entry>
799 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
802 stepSize</entry><entry>int</entry><entry>NULL
805 scanStatus</entry><entry>int</entry><entry>Z_Scan_success
808 numberOfEntriesReturned</entry><entry>int</entry><entry>0
811 positionOfTerm</entry><entry>int</entry><entry>NULL
814 entries</entry><entry>Z_ListEntris</entry><entry>NULL
817 attributeSet</entry><entry>Odr_oid</entry><entry>NULL
820 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
826 <table frame="top" id="asn.default.trigger.resource.control.request">
827 <title>Default settings for Trigger Resource Control Request </title>
829 <colspec colwidth="7*" colname="field"></colspec>
830 <colspec colwidth="5*" colname="type"></colspec>
831 <colspec colwidth="7*" colname="value"></colspec>
836 <entry>Default Value</entry>
842 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
845 requestedAction</entry><entry>int</entry><entry>
846 Z_TriggerResourceCtrl_resou..
849 prefResourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
852 resultSetWanted</entry><entry>bool_t</entry><entry>NULL
855 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
862 <table frame="top" id="asn.default.resource.control.request">
863 <title>Default settings for Resource Control Request</title>
865 <colspec colwidth="7*" colname="field"></colspec>
866 <colspec colwidth="5*" colname="type"></colspec>
867 <colspec colwidth="7*" colname="value"></colspec>
872 <entry>Default Value</entry>
878 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
881 suspendedFlag</entry><entry>bool_t</entry><entry>NULL
884 resourceReport</entry><entry>Z_External</entry><entry>NULL
887 partialResultsAvailable</entry><entry>int</entry><entry>NULL
890 responseRequired</entry><entry>bool_t</entry><entry>FALSE
893 triggeredRequestFlag</entry><entry>bool_t</entry><entry>NULL
896 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
902 <table frame="top" id="asn.default.resource.control.response">
903 <title>Default settings for Resource Control Response</title>
905 <colspec colwidth="7*" colname="field"></colspec>
906 <colspec colwidth="5*" colname="type"></colspec>
907 <colspec colwidth="7*" colname="value"></colspec>
912 <entry>Default Value</entry>
918 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
921 continueFlag</entry><entry>bool_t</entry><entry>TRUE
924 resultSetWanted</entry><entry>bool_t</entry><entry>NULL
927 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
933 <table frame="top" id="asn.default.access.control.request">
934 <title>Default settings for Access Control Request</title>
936 <colspec colwidth="7*" colname="field"></colspec>
937 <colspec colwidth="5*" colname="type"></colspec>
938 <colspec colwidth="7*" colname="value"></colspec>
943 <entry>Default Value</entry>
949 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
952 which</entry><entry>enum</entry><entry>Z_AccessRequest_simpleForm;
955 u</entry><entry>union</entry><entry>NULL
958 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
964 <table frame="top" id="asn.default.access.control.response">
965 <title>Default settings for Access Control Response</title>
967 <colspec colwidth="7*" colname="field"></colspec>
968 <colspec colwidth="5*" colname="type"></colspec>
969 <colspec colwidth="7*" colname="value"></colspec>
974 <entry>Default Value</entry>
980 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
983 which</entry><entry>enum</entry><entry>Z_AccessResponse_simpleForm
986 u</entry><entry>union</entry><entry>NULL
989 diagnostic</entry><entry>Z_DiagRec</entry><entry>NULL
992 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
998 <table frame="top" id="asn.default.segment">
999 <title>Default settings for Segment</title>
1001 <colspec colwidth="7*" colname="field"></colspec>
1002 <colspec colwidth="5*" colname="type"></colspec>
1003 <colspec colwidth="7*" colname="value"></colspec>
1006 <entry>Field</entry>
1008 <entry>Default Value</entry>
1014 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1017 numberOfRecordsReturned</entry><entry>int</entry><entry>value=0
1020 num_segmentRecords</entry><entry>int</entry><entry>0
1023 segmentRecords</entry><entry>Z_NamePlusRecord</entry><entry>NULL
1025 <row><entry>otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1031 <table frame="top" id="asn.default.close">
1032 <title>Default settings for Close</title>
1034 <colspec colwidth="7*" colname="field"></colspec>
1035 <colspec colwidth="5*" colname="type"></colspec>
1036 <colspec colwidth="7*" colname="value"></colspec>
1039 <entry>Field</entry>
1041 <entry>Default Value</entry>
1047 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1050 closeReason</entry><entry>int</entry><entry>Z_Close_finished
1053 diagnosticInformation</entry><entry>char*</entry><entry>NULL
1056 resourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
1059 resourceFormat</entry><entry>Z_External</entry><entry>NULL
1062 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1072 <!-- Keep this comment at the end of the file
1077 sgml-minimize-attributes:nil
1078 sgml-always-quote-attributes:t
1081 sgml-parent-document: "yaz.xml"
1082 sgml-local-catalogs: nil
1083 sgml-namecase-general:t