1 <!-- $Id: asn.xml,v 1.19 2007-05-04 12:24:15 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 (YAZ 2)</title>
139 This material only applies to version 2 series of YAZ. You need not
140 read this material if you are working with YAZ 3.
141 See <xref linkend="tools.oid"/> for more information on OIDs.
146 When you refer to object identifiers in your application, you need to
147 be aware that SR and Z39.50 use two different set of OIDs to refer to
148 the same objects. To handle this easily, &yaz; provides a utility module
149 to &asn; which provides an internal representation of the OIDs used in
150 both protocols. Each oid is described by a structure:
154 typedef struct oident
156 enum oid_proto proto;
157 enum oid_class class;
158 enum oid_value value;
159 int oidsuffix[OID_SIZE];
165 The <literal>proto</literal> field can be set to either
166 <literal>PROTO_SR</literal> or <literal>PROTO_Z3950</literal>.
167 The <literal>class</literal> might be, say,
168 <literal>CLASS_RECSYN</literal>, and the <literal>value</literal> might be
169 <literal>VAL_USMARC</literal> for the USMARC record format. Functions
173 int *oid_ent_to_oid(struct oident *ent, int *dst);
174 struct oident *oid_getentbyoid(int *o);
178 are provided to map between object identifiers and database entries.
179 If you store a member of the <literal>oid_proto</literal> type in
180 your association state information, it's a simple matter, at runtime,
181 to generate the correct OID when you need it. For decoding, you can
182 simply ignore the proto field, or if you're strict, you can verify
183 that your peer is using the OID family from the correct protocol.
184 The <literal>desc</literal> field is a short, human-readable name
185 for the PDU, useful mainly for diagnostic output.
190 The old function <function>oid_getoidbyent</function> still exists but
191 is not thread safe. Use <function>oid_ent_to_oid</function> instead
192 and pass an array of size <literal>OID_SIZE</literal>.
198 Plans are underway to merge the two protocols into a single
199 definition, with one set of object identifiers. When this happens, the
200 oid module will no longer be required to support protocol
201 independence, but it should still be useful as a simple OID database.
206 <sect1 id="asn.external"><title>EXTERNAL Data</title>
209 In order to achieve extensibility and adaptability to different
210 application domains, the new version of the protocol defines many
211 structures outside of the main ASN.1 specification, referencing them
212 through ASN.1 EXTERNAL constructs. To simplify the construction and
213 access to the externally referenced data, the &asn; module defines a
214 specialized version of the EXTERNAL construct, called
215 <literal>Z_External</literal>.It is defined thus:
219 typedef struct Z_External
221 Odr_oid *direct_reference;
222 int *indirect_reference;
227 Z_External_single = 0,
229 Z_External_arbitrary,
233 Z_External_explainRecord,
234 Z_External_resourceReport1,
235 Z_External_resourceReport2
243 Odr_any *single_ASN1_type;
244 Odr_oct *octet_aligned;
245 Odr_bitmask *arbitrary;
249 Z_ExplainRecord *explainRecord;
250 Z_ResourceReport1 *resourceReport1;
251 Z_ResourceReport2 *resourceReport2;
260 When decoding, the &asn; module will attempt to determine which
261 syntax describes the data by looking at the reference fields
262 (currently only the direct-reference). For ASN.1 structured data, you
263 need only consult the <literal>which</literal> field to determine the
264 type of data. You can the access the data directly through the union.
265 When constructing data for encoding, you set the union pointer to point
266 to the data, and set the <literal>which</literal> field accordingly.
267 Remember also to set the direct (or indirect) reference to the correct
268 OID for the data type.
269 For non-ASN.1 data such as MARC records, use the
270 <literal>octet_aligned</literal> arm of the union.
274 Some servers return ASN.1 structured data values (eg. database
275 records) as BER-encoded records placed in the
276 <literal>octet-aligned</literal> branch of the EXTERNAL CHOICE.
277 The ASN-module will <emphasis>not</emphasis> automatically decode
278 these records. To help you decode the records in the application, the
283 Z_ext_typeent *z_ext_gettypebyref(const oid *oid);
287 Can be used to retrieve information about the known, external data
288 types. The function return a pointer to a static area, or NULL, if no
289 match for the given direct reference is found. The
290 <literal>Z_ext_typeent</literal>
295 typedef struct Z_ext_typeent
297 int oid[OID_SIZE]; /* the direct-reference OID. */
298 int what; /* discriminator value for the external CHOICE */
299 Odr_fun fun; /* decoder function */
304 The <literal>what</literal> member contains the
305 <literal>Z_External</literal> union discriminator value for the
306 given type: For the SUTRS record syntax, the value would be
307 <literal>Z_External_sutrs</literal>.
308 The <literal>fun</literal> member contains a pointer to the
309 function which encodes/decodes the given type. Again, for the SUTRS
310 record syntax, the value of <literal>fun</literal> would be
311 <literal>z_SUTRS</literal> (a function pointer).
315 If you receive an EXTERNAL which contains an octet-string value that
316 you suspect of being an ASN.1-structured data value, you can use
317 <literal>z_ext_gettypebyref</literal> to look for the provided
319 If the return value is different from NULL, you can use the provided
320 function to decode the BER string (see <xref linkend="odr.use"/>
325 If you want to <emphasis>send</emphasis> EXTERNALs containing
326 ASN.1-structured values in the occtet-aligned branch of the CHOICE, this
327 is possible too. However, on the encoding phase, it requires a somewhat
328 involved juggling around of the various buffers involved.
331 If you need to add new, externally defined data types, you must update
332 the struct above, in the source file <filename>prt-ext.h</filename>, as
333 well as the encoder/decoder in the file <filename>prt-ext.c</filename>.
334 When changing the latter, remember to update both the
335 <literal>arm</literal> arrary and the list
336 <literal>type_table</literal>, which drives the CHOICE biasing that
337 is necessary to tell the different, structured types apart
343 Eventually, the EXTERNAL processing will most likely
344 automatically insert the correct OIDs or indirect-refs. First,
345 however, we need to determine how application-context management
346 (specifically the presentation-context-list) should fit into the
352 <sect1 id="asn.pdu"><title>PDU Contents Table</title>
355 We include, for reference, a listing of the fields of each top-level
356 PDU, as well as their default settings.
359 <table frame="top" id="asn.default.initialize.request">
360 <title>Default settings for PDU Initialize Request</title>
362 <colspec colwidth="7*" colname="field"></colspec>
363 <colspec colwidth="5*" colname="type"></colspec>
364 <colspec colwidth="7*" colname="value"></colspec>
369 <entry>Default Value</entry>
374 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
377 protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
380 options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
383 preferredMessageSize</entry><entry>int</entry><entry>30*1024
386 maximumRecordSize</entry><entry>int</entry><entry>30*1024
389 idAuthentication</entry><entry>Z_IdAuthentication</entry><entry>NULL
392 implementationId</entry><entry>char*</entry><entry>"81"
395 implementationName</entry><entry>char*</entry><entry>"YAZ"
398 implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
401 userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
404 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
410 <table frame="top" id="asn.default.initialize.response">
411 <title>Default settings for PDU Initialize
414 <colspec colwidth="7*" colname="field"></colspec>
415 <colspec colwidth="5*" colname="type"></colspec>
416 <colspec colwidth="7*" colname="value"></colspec>
421 <entry>Default Value</entry>
426 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
429 protocolVersion</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
432 options</entry><entry>Odr_bitmask</entry><entry>Empty bitmask
435 preferredMessageSize</entry><entry>int</entry><entry>30*1024
438 maximumRecordSize</entry><entry>int</entry><entry>30*1024
441 result</entry><entry>bool_t</entry><entry>TRUE
444 implementationId</entry><entry>char*</entry><entry>"id)"
447 implementationName</entry><entry>char*</entry><entry>"YAZ"
450 implementationVersion</entry><entry>char*</entry><entry>YAZ_VERSION
453 userInformationField</entry><entry>Z_UserInformation</entry><entry>NULL
456 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
462 <table frame="top" id="asn.default.search.request">
463 <title>Default settings for PDU Search Request</title>
465 <colspec colwidth="7*" colname="field"></colspec>
466 <colspec colwidth="5*" colname="type"></colspec>
467 <colspec colwidth="7*" colname="value"></colspec>
472 <entry>Default Value</entry>
477 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
480 smallSetUpperBound</entry><entry>int</entry><entry>0
483 largeSetLowerBound</entry><entry>int</entry><entry>1
486 mediumSetPresentNumber</entry><entry>int</entry><entry>0
489 replaceIndicator</entry><entry>bool_t</entry><entry>TRUE
492 resultSetName</entry><entry>char *</entry><entry>"default"
495 num_databaseNames</entry><entry>int</entry><entry>0
498 databaseNames</entry><entry>char **</entry><entry>NULL
501 smallSetElementSetNames</entry><entry>Z_ElementSetNames
505 mediumSetElementSetNames</entry><entry>Z_ElementSetNames
509 preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
512 query</entry><entry>Z_Query</entry><entry>NULL
515 additionalSearchInfo</entry><entry>Z_OtherInformation
519 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
525 <table frame="top" id="asn.default.search.response">
526 <title>Default settings for PDU Search Response</title>
528 <colspec colwidth="7*" colname="field"></colspec>
529 <colspec colwidth="5*" colname="type"></colspec>
530 <colspec colwidth="7*" colname="value"></colspec>
535 <entry>Default Value</entry>
541 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
544 resultCount</entry><entry>int</entry><entry>0
547 numberOfRecordsReturned</entry><entry>int</entry><entry>0
550 nextResultSetPosition</entry><entry>int</entry><entry>0
553 searchStatus</entry><entry>bool_t</entry><entry>TRUE
556 resultSetStatus</entry><entry>int</entry><entry>NULL
559 presentStatus</entry><entry>int</entry><entry>NULL
562 records</entry><entry>Z_Records</entry><entry>NULL
565 additionalSearchInfo</entry>
566 <entry>Z_OtherInformation</entry><entry>NULL
569 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
575 <table frame="top" id="asn.default.present.request">
576 <title>Default settings for PDU Present Request</title>
578 <colspec colwidth="7*" colname="field"></colspec>
579 <colspec colwidth="5*" colname="type"></colspec>
580 <colspec colwidth="7*" colname="value"></colspec>
585 <entry>Default Value</entry>
590 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
593 resultSetId</entry><entry>char*</entry><entry>"default"
596 resultSetStartPoint</entry><entry>int</entry><entry>1
599 numberOfRecordsRequested</entry><entry>int</entry><entry>10
602 num_ranges</entry><entry>int</entry><entry>0
605 additionalRanges</entry><entry>Z_Range</entry><entry>NULL
608 recordComposition</entry><entry>Z_RecordComposition</entry><entry>NULL
611 preferredRecordSyntax</entry><entry>Odr_oid</entry><entry>NULL
614 maxSegmentCount</entry><entry>int</entry><entry>NULL
617 maxRecordSize</entry><entry>int</entry><entry>NULL
620 maxSegmentSize</entry><entry>int</entry><entry>NULL
623 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
629 <table frame="top" id="asn.default.present.response">
630 <title>Default settings for PDU Present Response</title>
632 <colspec colwidth="7*" colname="field"></colspec>
633 <colspec colwidth="5*" colname="type"></colspec>
634 <colspec colwidth="7*" colname="value"></colspec>
639 <entry>Default Value</entry>
644 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
647 numberOfRecordsReturned</entry><entry>int</entry><entry>0
650 nextResultSetPosition</entry><entry>int</entry><entry>0
653 presentStatus</entry><entry>int</entry><entry>Z_PresentStatus_success
656 records</entry><entry>Z_Records</entry><entry>NULL
659 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
665 <table frame="top" id="asn.default.delete.result.set.request">
666 <title>Default settings for Delete Result Set Request
669 <colspec colwidth="7*" colname="field"></colspec>
670 <colspec colwidth="5*" colname="type"></colspec>
671 <colspec colwidth="7*" colname="value"></colspec>
676 <entry>Default Value</entry>
680 <row><entry>referenceId
681 </entry><entry>Z_ReferenceId</entry><entry>NULL
684 deleteFunction</entry><entry>int</entry><entry>Z_DeleteResultSetRequest_list
687 num_ids</entry><entry>int</entry><entry>0
690 resultSetList</entry><entry>char**</entry><entry>NULL
693 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
699 <table frame="top" id="asn.default.delete.result.set.response">
700 <title>Default settings for Delete Result Set Response
703 <colspec colwidth="7*" colname="field"></colspec>
704 <colspec colwidth="5*" colname="type"></colspec>
705 <colspec colwidth="7*" colname="value"></colspec>
710 <entry>Default Value</entry>
715 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
718 deleteOperationStatus</entry><entry>int</entry>
719 <entry>Z_DeleteStatus_success</entry></row>
721 num_statuses</entry><entry>int</entry><entry>0
724 deleteListStatuses</entry><entry>Z_ListStatus**</entry><entry>NULL
727 numberNotDeleted</entry><entry>int</entry><entry>NULL
730 num_bulkStatuses</entry><entry>int</entry><entry>0
733 bulkStatuses</entry><entry>Z_ListStatus</entry><entry>NUL
736 deleteMessage</entry><entry>char*</entry><entry>NULL
739 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
745 <table frame="top" id="asn.default.scan.request">
746 <title>Default settings for Scan Request
749 <colspec colwidth="7*" colname="field"></colspec>
750 <colspec colwidth="5*" colname="type"></colspec>
751 <colspec colwidth="7*" colname="value"></colspec>
756 <entry>Default Value</entry>
761 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
764 num_databaseNames</entry><entry>int</entry><entry>0
767 databaseNames</entry><entry>char**</entry><entry>NULL
770 attributeSet</entry><entry>Odr_oid</entry><entry>NULL
773 termListAndStartPoint</entry><entry>Z_AttributesPlus...
774 </entry><entry>NULL</entry></row>
776 stepSize</entry><entry>int</entry><entry>NULL
779 numberOfTermsRequested</entry><entry>int</entry><entry>20
782 preferredPositionInResponse</entry><entry>int</entry><entry>NULL
785 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
791 <table frame="top" id="asn.default.scan.response">
792 <title>Default settings for Scan Response
795 <colspec colwidth="7*" colname="field"></colspec>
796 <colspec colwidth="5*" colname="type"></colspec>
797 <colspec colwidth="7*" colname="value"></colspec>
802 <entry>Default Value</entry>
808 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
811 stepSize</entry><entry>int</entry><entry>NULL
814 scanStatus</entry><entry>int</entry><entry>Z_Scan_success
817 numberOfEntriesReturned</entry><entry>int</entry><entry>0
820 positionOfTerm</entry><entry>int</entry><entry>NULL
823 entries</entry><entry>Z_ListEntris</entry><entry>NULL
826 attributeSet</entry><entry>Odr_oid</entry><entry>NULL
829 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
835 <table frame="top" id="asn.default.trigger.resource.control.request">
836 <title>Default settings for Trigger Resource Control Request </title>
838 <colspec colwidth="7*" colname="field"></colspec>
839 <colspec colwidth="5*" colname="type"></colspec>
840 <colspec colwidth="7*" colname="value"></colspec>
845 <entry>Default Value</entry>
851 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
854 requestedAction</entry><entry>int</entry><entry>
855 Z_TriggerResourceCtrl_resou..
858 prefResourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
861 resultSetWanted</entry><entry>bool_t</entry><entry>NULL
864 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
871 <table frame="top" id="asn.default.resource.control.request">
872 <title>Default settings for Resource Control Request</title>
874 <colspec colwidth="7*" colname="field"></colspec>
875 <colspec colwidth="5*" colname="type"></colspec>
876 <colspec colwidth="7*" colname="value"></colspec>
881 <entry>Default Value</entry>
887 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
890 suspendedFlag</entry><entry>bool_t</entry><entry>NULL
893 resourceReport</entry><entry>Z_External</entry><entry>NULL
896 partialResultsAvailable</entry><entry>int</entry><entry>NULL
899 responseRequired</entry><entry>bool_t</entry><entry>FALSE
902 triggeredRequestFlag</entry><entry>bool_t</entry><entry>NULL
905 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
911 <table frame="top" id="asn.default.resource.control.response">
912 <title>Default settings for Resource Control Response</title>
914 <colspec colwidth="7*" colname="field"></colspec>
915 <colspec colwidth="5*" colname="type"></colspec>
916 <colspec colwidth="7*" colname="value"></colspec>
921 <entry>Default Value</entry>
927 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
930 continueFlag</entry><entry>bool_t</entry><entry>TRUE
933 resultSetWanted</entry><entry>bool_t</entry><entry>NULL
936 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
942 <table frame="top" id="asn.default.access.control.request">
943 <title>Default settings for Access Control Request</title>
945 <colspec colwidth="7*" colname="field"></colspec>
946 <colspec colwidth="5*" colname="type"></colspec>
947 <colspec colwidth="7*" colname="value"></colspec>
952 <entry>Default Value</entry>
958 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
961 which</entry><entry>enum</entry><entry>Z_AccessRequest_simpleForm;
964 u</entry><entry>union</entry><entry>NULL
967 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
973 <table frame="top" id="asn.default.access.control.response">
974 <title>Default settings for Access Control Response</title>
976 <colspec colwidth="7*" colname="field"></colspec>
977 <colspec colwidth="5*" colname="type"></colspec>
978 <colspec colwidth="7*" colname="value"></colspec>
983 <entry>Default Value</entry>
989 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
992 which</entry><entry>enum</entry><entry>Z_AccessResponse_simpleForm
995 u</entry><entry>union</entry><entry>NULL
998 diagnostic</entry><entry>Z_DiagRec</entry><entry>NULL
1001 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1007 <table frame="top" id="asn.default.segment">
1008 <title>Default settings for Segment</title>
1010 <colspec colwidth="7*" colname="field"></colspec>
1011 <colspec colwidth="5*" colname="type"></colspec>
1012 <colspec colwidth="7*" colname="value"></colspec>
1015 <entry>Field</entry>
1017 <entry>Default Value</entry>
1023 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1026 numberOfRecordsReturned</entry><entry>int</entry><entry>value=0
1029 num_segmentRecords</entry><entry>int</entry><entry>0
1032 segmentRecords</entry><entry>Z_NamePlusRecord</entry><entry>NULL
1034 <row><entry>otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1040 <table frame="top" id="asn.default.close">
1041 <title>Default settings for Close</title>
1043 <colspec colwidth="7*" colname="field"></colspec>
1044 <colspec colwidth="5*" colname="type"></colspec>
1045 <colspec colwidth="7*" colname="value"></colspec>
1048 <entry>Field</entry>
1050 <entry>Default Value</entry>
1056 referenceId</entry><entry>Z_ReferenceId</entry><entry>NULL
1059 closeReason</entry><entry>int</entry><entry>Z_Close_finished
1062 diagnosticInformation</entry><entry>char*</entry><entry>NULL
1065 resourceReportFormat</entry><entry>Odr_oid</entry><entry>NULL
1068 resourceFormat</entry><entry>Z_External</entry><entry>NULL
1071 otherInfo</entry><entry>Z_OtherInformation</entry><entry>NULL
1081 <!-- Keep this comment at the end of the file
1086 sgml-minimize-attributes:nil
1087 sgml-always-quote-attributes:t
1090 sgml-parent-document: "yaz.xml"
1091 sgml-local-catalogs: nil
1092 sgml-namecase-general:t