215874b139c8718bbc72c62d9f3deaf5e7745488
[yaz-moved-to-github.git] / ill / ill-core.c
1 /* YC 0.2 Wed Mar 01 14:46:59 CET 2000 */
2 /* Module-C: ISO-10161-ILL-1 */
3
4 #include <yaz/ill-core.h>
5
6 int ill_APDU (ODR o, ILL_APDU **p, int opt, const char *name)
7 {
8         static Odr_arm arm[] = {
9                 {-1, -1, -1, ILL_APDU_ILL_Request,
10                  (Odr_fun) ill_Request, "ILL_Request"},
11                 {-1, -1, -1, ILL_APDU_Forward_Notification,
12                  (Odr_fun) ill_Forward_Notification, "Forward_Notification"},
13                 {-1, -1, -1, ILL_APDU_Shipped,
14                  (Odr_fun) ill_Shipped, "Shipped"},
15                 {-1, -1, -1, ILL_APDU_ILL_Answer,
16                  (Odr_fun) ill_Answer, "ILL_Answer"},
17                 {-1, -1, -1, ILL_APDU_Conditional_Reply,
18                  (Odr_fun) ill_Conditional_Reply, "Conditional_Reply"},
19                 {-1, -1, -1, ILL_APDU_Cancel,
20                  (Odr_fun) ill_Cancel, "Cancel"},
21                 {-1, -1, -1, ILL_APDU_Cancel_Reply,
22                  (Odr_fun) ill_Cancel_Reply, "Cancel_Reply"},
23                 {-1, -1, -1, ILL_APDU_Received,
24                  (Odr_fun) ill_Received, "Received"},
25                 {-1, -1, -1, ILL_APDU_Recall,
26                  (Odr_fun) ill_Recall, "Recall"},
27                 {-1, -1, -1, ILL_APDU_Returned,
28                  (Odr_fun) ill_Returned, "Returned"},
29                 {-1, -1, -1, ILL_APDU_Checked_In,
30                  (Odr_fun) ill_Checked_In, "Checked_In"},
31                 {-1, -1, -1, ILL_APDU_Overdue,
32                  (Odr_fun) ill_Overdue, "Overdue"},
33                 {-1, -1, -1, ILL_APDU_Renew,
34                  (Odr_fun) ill_Renew, "Renew"},
35                 {-1, -1, -1, ILL_APDU_Renew_Answer,
36                  (Odr_fun) ill_Renew_Answer, "Renew_Answer"},
37                 {-1, -1, -1, ILL_APDU_Lost,
38                  (Odr_fun) ill_Lost, "Lost"},
39                 {-1, -1, -1, ILL_APDU_Damaged,
40                  (Odr_fun) ill_Damaged, "Damaged"},
41                 {-1, -1, -1, ILL_APDU_Message,
42                  (Odr_fun) ill_Message, "Message"},
43                 {-1, -1, -1, ILL_APDU_Status_Query,
44                  (Odr_fun) ill_Status_Query, "Status_Query"},
45                 {-1, -1, -1, ILL_APDU_Status_Or_Error_Report,
46                  (Odr_fun) ill_Status_Or_Error_Report, "Status_Or_Error_Report"},
47                 {-1, -1, -1, ILL_APDU_Expired,
48                  (Odr_fun) ill_Expired, "Expired"},
49                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
50         };
51         if (!odr_initmember(o, p, sizeof(**p)))
52                 return opt && odr_ok(o);
53         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
54                 return 1;
55         *p = 0;
56         return opt && odr_ok(o);
57 }
58
59 int ill_Request (ODR o, ILL_Request **p, int opt, const char *name)
60 {
61         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 1, name))
62                 return opt && odr_ok(o);
63         if (o->direction == ODR_DECODE)
64                 *p = odr_malloc (o, sizeof(**p));
65         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
66         {
67                 *p = 0;
68                 return 0;
69         }
70         return
71                 odr_implicit_tag (o, odr_integer,
72                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
73                 odr_implicit_tag (o, ill_Transaction_Id,
74                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
75                 odr_implicit_tag (o, ill_Service_Date_Time,
76                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
77                 odr_implicit_tag (o, ill_System_Id,
78                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
79                 odr_implicit_tag (o, ill_System_Id,
80                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
81                 odr_implicit_tag (o, ill_Transaction_Type,
82                         &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
83                 odr_implicit_tag (o, ill_Delivery_Address,
84                         &(*p)->delivery_address, ODR_CONTEXT, 6, 1, "delivery_address") &&
85                 ill_Delivery_Service(o, &(*p)->delivery_service, 1, "delivery_service") &&
86                 odr_implicit_tag (o, ill_Delivery_Address,
87                         &(*p)->billing_address, ODR_CONTEXT, 8, 1, "billing_address") &&
88                 odr_implicit_settag (o, ODR_CONTEXT, 9) &&
89                 odr_sequence_of(o, (Odr_fun) ill_Service_Type, &(*p)->iLL_service_type,
90                   &(*p)->num_iLL_service_type, "iLL_service_type") &&
91                 odr_explicit_tag (o, odr_external,
92                         &(*p)->responder_specific_service, ODR_CONTEXT, 10, 1, "responder_specific_service") &&
93                 odr_implicit_tag (o, ill_Requester_Optional_Messages_Type,
94                         &(*p)->requester_optional_messages, ODR_CONTEXT, 11, 0, "requester_optional_messages") &&
95                 odr_implicit_tag (o, ill_Search_Type,
96                         &(*p)->search_type, ODR_CONTEXT, 12, 1, "search_type") &&
97                 odr_implicit_settag (o, ODR_CONTEXT, 13) &&
98                 (odr_sequence_of(o, (Odr_fun) ill_Supply_Medium_Info_Type, &(*p)->supply_medium_info_type,
99                   &(*p)->num_supply_medium_info_type, "supply_medium_info_type") || odr_ok(o)) &&
100                 odr_implicit_tag (o, ill_Place_On_Hold_Type,
101                         &(*p)->place_on_hold, ODR_CONTEXT, 14, 0, "place_on_hold") &&
102                 odr_implicit_tag (o, ill_Client_Id,
103                         &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
104                 odr_implicit_tag (o, ill_Item_Id,
105                         &(*p)->item_id, ODR_CONTEXT, 16, 0, "item_id") &&
106                 odr_implicit_tag (o, ill_Supplemental_Item_Description,
107                         &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
108                 odr_implicit_tag (o, ill_Cost_Info_Type,
109                         &(*p)->cost_info_type, ODR_CONTEXT, 18, 1, "cost_info_type") &&
110                 odr_explicit_tag (o, ill_String,
111                         &(*p)->copyright_compliance, ODR_CONTEXT, 19, 1, "copyright_compliance") &&
112                 odr_implicit_tag (o, ill_Third_Party_Info_Type,
113                         &(*p)->third_party_info_type, ODR_CONTEXT, 20, 1, "third_party_info_type") &&
114                 odr_implicit_tag (o, odr_bool,
115                         &(*p)->retry_flag, ODR_CONTEXT, 21, 0, "retry_flag") &&
116                 odr_implicit_tag (o, odr_bool,
117                         &(*p)->forward_flag, ODR_CONTEXT, 22, 0, "forward_flag") &&
118                 odr_explicit_tag (o, ill_String,
119                         &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
120                 odr_explicit_tag (o, ill_String,
121                         &(*p)->forward_note, ODR_CONTEXT, 47, 1, "forward_note") &&
122                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
123                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->iLL_request_extensions,
124                   &(*p)->num_iLL_request_extensions, "iLL_request_extensions") || odr_ok(o)) &&
125                 odr_sequence_end (o) &&
126                 odr_constructed_end (o);
127 }
128
129 int ill_Forward_Notification (ODR o, ILL_Forward_Notification **p, int opt, const char *name)
130 {
131         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 2, name))
132                 return opt && odr_ok(o);
133         if (o->direction == ODR_DECODE)
134                 *p = odr_malloc (o, sizeof(**p));
135         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
136         {
137                 *p = 0;
138                 return 0;
139         }
140         return
141                 odr_implicit_tag (o, odr_integer,
142                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
143                 odr_implicit_tag (o, ill_Transaction_Id,
144                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
145                 odr_implicit_tag (o, ill_Service_Date_Time,
146                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
147                 odr_implicit_tag (o, ill_System_Id,
148                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
149                 odr_implicit_tag (o, ill_System_Id,
150                         &(*p)->responder_id, ODR_CONTEXT, 4, 0, "responder_id") &&
151                 odr_implicit_tag (o, ill_System_Address,
152                         &(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") &&
153                 odr_implicit_tag (o, ill_System_Id,
154                         &(*p)->intermediary_id, ODR_CONTEXT, 25, 0, "intermediary_id") &&
155                 odr_explicit_tag (o, ill_String,
156                         &(*p)->notification_note, ODR_CONTEXT, 48, 1, "notification_note") &&
157                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
158                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->forward_notification_extensions,
159                   &(*p)->num_forward_notification_extensions, "forward_notification_extensions") || odr_ok(o)) &&
160                 odr_sequence_end (o) &&
161                 odr_constructed_end (o);
162 }
163
164 int ill_Shipped (ODR o, ILL_Shipped **p, int opt, const char *name)
165 {
166         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 3, name))
167                 return opt && odr_ok(o);
168         if (o->direction == ODR_DECODE)
169                 *p = odr_malloc (o, sizeof(**p));
170         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
171         {
172                 *p = 0;
173                 return 0;
174         }
175         return
176                 odr_implicit_tag (o, odr_integer,
177                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
178                 odr_implicit_tag (o, ill_Transaction_Id,
179                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
180                 odr_implicit_tag (o, ill_Service_Date_Time,
181                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
182                 odr_implicit_tag (o, ill_System_Id,
183                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
184                 odr_implicit_tag (o, ill_System_Id,
185                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
186                 odr_implicit_tag (o, ill_System_Address,
187                         &(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") &&
188                 odr_implicit_tag (o, ill_System_Id,
189                         &(*p)->intermediary_id, ODR_CONTEXT, 25, 1, "intermediary_id") &&
190                 odr_implicit_tag (o, ill_System_Id,
191                         &(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") &&
192                 odr_implicit_tag (o, ill_Client_Id,
193                         &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
194                 odr_implicit_tag (o, ill_Transaction_Type,
195                         &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
196                 odr_implicit_tag (o, ill_Supplemental_Item_Description,
197                         &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
198                 odr_implicit_tag (o, ill_Shipped_Service_Type,
199                         &(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") &&
200                 odr_implicit_tag (o, ill_Responder_Optional_Messages_Type,
201                         &(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") &&
202                 odr_implicit_tag (o, ill_Supply_Details,
203                         &(*p)->supply_details, ODR_CONTEXT, 29, 0, "supply_details") &&
204                 odr_implicit_tag (o, ill_Postal_Address,
205                         &(*p)->return_to_address, ODR_CONTEXT, 30, 1, "return_to_address") &&
206                 odr_explicit_tag (o, ill_String,
207                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
208                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
209                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->shipped_extensions,
210                   &(*p)->num_shipped_extensions, "shipped_extensions") || odr_ok(o)) &&
211                 odr_sequence_end (o) &&
212                 odr_constructed_end (o);
213 }
214
215 int ill_Answer (ODR o, ILL_Answer **p, int opt, const char *name)
216 {
217         static Odr_arm arm[] = {
218                 {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Answer_conditional_results,
219                 (Odr_fun) ill_Conditional_Results, "conditional_results"},
220                 {ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_Answer_retry_results,
221                 (Odr_fun) ill_Retry_Results, "retry_results"},
222                 {ODR_EXPLICIT, ODR_CONTEXT, 3, ILL_Answer_unfilled_results,
223                 (Odr_fun) ill_Unfilled_Results, "unfilled_results"},
224                 {ODR_EXPLICIT, ODR_CONTEXT, 4, ILL_Answer_locations_results,
225                 (Odr_fun) ill_Locations_Results, "locations_results"},
226                 {ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Answer_will_supply_results,
227                 (Odr_fun) ill_Will_Supply_Results, "will_supply_results"},
228                 {ODR_EXPLICIT, ODR_CONTEXT, 6, ILL_Answer_hold_placed_results,
229                 (Odr_fun) ill_Hold_Placed_Results, "hold_placed_results"},
230                 {ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Answer_estimate_results,
231                 (Odr_fun) ill_Estimate_Results, "estimate_results"},
232                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
233         };
234         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 4, name))
235                 return opt && odr_ok(o);
236         if (o->direction == ODR_DECODE)
237                 *p = odr_malloc (o, sizeof(**p));
238         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
239         {
240                 *p = 0;
241                 return 0;
242         }
243         return
244                 odr_implicit_tag (o, odr_integer,
245                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
246                 odr_implicit_tag (o, ill_Transaction_Id,
247                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
248                 odr_implicit_tag (o, ill_Service_Date_Time,
249                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
250                 odr_implicit_tag (o, ill_System_Id,
251                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
252                 odr_implicit_tag (o, ill_System_Id,
253                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
254                 odr_implicit_tag (o, ill_Transaction_Results,
255                         &(*p)->transaction_results, ODR_CONTEXT, 31, 0, "transaction_results") &&
256                 ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 32, "results_explanation") &&
257                 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
258                 odr_constructed_end (o)) || odr_ok(o)) &&
259                 odr_explicit_tag (o, odr_external,
260                         &(*p)->responder_specific_results, ODR_CONTEXT, 33, 1, "responder_specific_results") &&
261                 odr_implicit_tag (o, ill_Supplemental_Item_Description,
262                         &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
263                 odr_implicit_tag (o, ill_Send_To_List_Type,
264                         &(*p)->send_to_list, ODR_CONTEXT, 23, 1, "send_to_list") &&
265                 odr_implicit_tag (o, ill_Already_Tried_List_Type,
266                         &(*p)->already_tried_list, ODR_CONTEXT, 34, 1, "already_tried_list") &&
267                 odr_implicit_tag (o, ill_Responder_Optional_Messages_Type,
268                         &(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") &&
269                 odr_explicit_tag (o, ill_String,
270                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
271                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
272                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->ill_answer_extensions,
273                   &(*p)->num_ill_answer_extensions, "ill_answer_extensions") || odr_ok(o)) &&
274                 odr_sequence_end (o) &&
275                 odr_constructed_end (o);
276 }
277
278 int ill_Conditional_Reply (ODR o, ILL_Conditional_Reply **p, int opt, const char *name)
279 {
280         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 5, name))
281                 return opt && odr_ok(o);
282         if (o->direction == ODR_DECODE)
283                 *p = odr_malloc (o, sizeof(**p));
284         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
285         {
286                 *p = 0;
287                 return 0;
288         }
289         return
290                 odr_implicit_tag (o, odr_integer,
291                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
292                 odr_implicit_tag (o, ill_Transaction_Id,
293                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
294                 odr_implicit_tag (o, ill_Service_Date_Time,
295                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
296                 odr_implicit_tag (o, ill_System_Id,
297                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
298                 odr_implicit_tag (o, ill_System_Id,
299                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
300                 odr_implicit_tag (o, odr_bool,
301                         &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
302                 odr_explicit_tag (o, ill_String,
303                         &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
304                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
305                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->conditional_reply_extensions,
306                   &(*p)->num_conditional_reply_extensions, "conditional_reply_extensions") || odr_ok(o)) &&
307                 odr_sequence_end (o) &&
308                 odr_constructed_end (o);
309 }
310
311 int ill_Cancel (ODR o, ILL_Cancel **p, int opt, const char *name)
312 {
313         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 6, name))
314                 return opt && odr_ok(o);
315         if (o->direction == ODR_DECODE)
316                 *p = odr_malloc (o, sizeof(**p));
317         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
318         {
319                 *p = 0;
320                 return 0;
321         }
322         return
323                 odr_implicit_tag (o, odr_integer,
324                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
325                 odr_implicit_tag (o, ill_Transaction_Id,
326                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
327                 odr_implicit_tag (o, ill_Service_Date_Time,
328                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
329                 odr_implicit_tag (o, ill_System_Id,
330                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
331                 odr_implicit_tag (o, ill_System_Id,
332                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
333                 odr_explicit_tag (o, ill_String,
334                         &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
335                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
336                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_extensions,
337                   &(*p)->num_cancel_extensions, "cancel_extensions") || odr_ok(o)) &&
338                 odr_sequence_end (o) &&
339                 odr_constructed_end (o);
340 }
341
342 int ill_Cancel_Reply (ODR o, ILL_Cancel_Reply **p, int opt, const char *name)
343 {
344         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 7, name))
345                 return opt && odr_ok(o);
346         if (o->direction == ODR_DECODE)
347                 *p = odr_malloc (o, sizeof(**p));
348         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
349         {
350                 *p = 0;
351                 return 0;
352         }
353         return
354                 odr_implicit_tag (o, odr_integer,
355                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
356                 odr_implicit_tag (o, ill_Transaction_Id,
357                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
358                 odr_implicit_tag (o, ill_Service_Date_Time,
359                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
360                 odr_implicit_tag (o, ill_System_Id,
361                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
362                 odr_implicit_tag (o, ill_System_Id,
363                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
364                 odr_implicit_tag (o, odr_bool,
365                         &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
366                 odr_explicit_tag (o, ill_String,
367                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
368                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
369                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_reply_extensions,
370                   &(*p)->num_cancel_reply_extensions, "cancel_reply_extensions") || odr_ok(o)) &&
371                 odr_sequence_end (o) &&
372                 odr_constructed_end (o);
373 }
374
375 int ill_Received (ODR o, ILL_Received **p, int opt, const char *name)
376 {
377         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 8, name))
378                 return opt && odr_ok(o);
379         if (o->direction == ODR_DECODE)
380                 *p = odr_malloc (o, sizeof(**p));
381         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
382         {
383                 *p = 0;
384                 return 0;
385         }
386         return
387                 odr_implicit_tag (o, odr_integer,
388                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
389                 odr_implicit_tag (o, ill_Transaction_Id,
390                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
391                 odr_implicit_tag (o, ill_Service_Date_Time,
392                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
393                 odr_implicit_tag (o, ill_System_Id,
394                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
395                 odr_implicit_tag (o, ill_System_Id,
396                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
397                 odr_implicit_tag (o, ill_System_Id,
398                         &(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") &&
399                 odr_implicit_tag (o, ill_Supplemental_Item_Description,
400                         &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
401                 odr_implicit_tag (o, ill_ISO_Date,
402                         &(*p)->date_received, ODR_CONTEXT, 36, 0, "date_received") &&
403                 odr_implicit_tag (o, ill_Shipped_Service_Type,
404                         &(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") &&
405                 odr_explicit_tag (o, ill_String,
406                         &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
407                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
408                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->received_extensions,
409                   &(*p)->num_received_extensions, "received_extensions") || odr_ok(o)) &&
410                 odr_sequence_end (o) &&
411                 odr_constructed_end (o);
412 }
413
414 int ill_Recall (ODR o, ILL_Recall **p, int opt, const char *name)
415 {
416         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 9, name))
417                 return opt && odr_ok(o);
418         if (o->direction == ODR_DECODE)
419                 *p = odr_malloc (o, sizeof(**p));
420         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
421         {
422                 *p = 0;
423                 return 0;
424         }
425         return
426                 odr_implicit_tag (o, odr_integer,
427                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
428                 odr_implicit_tag (o, ill_Transaction_Id,
429                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
430                 odr_implicit_tag (o, ill_Service_Date_Time,
431                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
432                 odr_implicit_tag (o, ill_System_Id,
433                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
434                 odr_implicit_tag (o, ill_System_Id,
435                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
436                 odr_explicit_tag (o, ill_String,
437                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
438                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
439                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->recall_extensions,
440                   &(*p)->num_recall_extensions, "recall_extensions") || odr_ok(o)) &&
441                 odr_sequence_end (o) &&
442                 odr_constructed_end (o);
443 }
444
445 int ill_Returned (ODR o, ILL_Returned **p, int opt, const char *name)
446 {
447         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 10, name))
448                 return opt && odr_ok(o);
449         if (o->direction == ODR_DECODE)
450                 *p = odr_malloc (o, sizeof(**p));
451         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
452         {
453                 *p = 0;
454                 return 0;
455         }
456         return
457                 odr_implicit_tag (o, odr_integer,
458                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
459                 odr_implicit_tag (o, ill_Transaction_Id,
460                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
461                 odr_implicit_tag (o, ill_Service_Date_Time,
462                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
463                 odr_implicit_tag (o, ill_System_Id,
464                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
465                 odr_implicit_tag (o, ill_System_Id,
466                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
467                 odr_implicit_tag (o, ill_Supplemental_Item_Description,
468                         &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
469                 odr_implicit_tag (o, ill_ISO_Date,
470                         &(*p)->date_returned, ODR_CONTEXT, 37, 0, "date_returned") &&
471                 odr_explicit_tag (o, ill_Transportation_Mode,
472                         &(*p)->returned_via, ODR_CONTEXT, 38, 1, "returned_via") &&
473                 odr_implicit_tag (o, ill_Amount,
474                         &(*p)->insured_for, ODR_CONTEXT, 39, 1, "insured_for") &&
475                 odr_explicit_tag (o, ill_String,
476                         &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
477                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
478                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->returned_extensions,
479                   &(*p)->num_returned_extensions, "returned_extensions") || odr_ok(o)) &&
480                 odr_sequence_end (o) &&
481                 odr_constructed_end (o);
482 }
483
484 int ill_Checked_In (ODR o, ILL_Checked_In **p, int opt, const char *name)
485 {
486         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 11, name))
487                 return opt && odr_ok(o);
488         if (o->direction == ODR_DECODE)
489                 *p = odr_malloc (o, sizeof(**p));
490         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
491         {
492                 *p = 0;
493                 return 0;
494         }
495         return
496                 odr_implicit_tag (o, odr_integer,
497                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
498                 odr_implicit_tag (o, ill_Transaction_Id,
499                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
500                 odr_implicit_tag (o, ill_Service_Date_Time,
501                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
502                 odr_implicit_tag (o, ill_System_Id,
503                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
504                 odr_implicit_tag (o, ill_System_Id,
505                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
506                 odr_implicit_tag (o, ill_ISO_Date,
507                         &(*p)->date_checked_in, ODR_CONTEXT, 40, 0, "date_checked_in") &&
508                 odr_explicit_tag (o, ill_String,
509                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
510                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
511                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->checked_in_extensions,
512                   &(*p)->num_checked_in_extensions, "checked_in_extensions") || odr_ok(o)) &&
513                 odr_sequence_end (o) &&
514                 odr_constructed_end (o);
515 }
516
517 int ill_Overdue_Extension (ODR o, ILL_Overdue_Extension **p, int opt, const char *name)
518 {
519         if (!odr_initmember (o, p, sizeof(**p)))
520                 return opt && odr_ok(o);
521         if (odr_sequence_of (o, (Odr_fun) ill_Extension, &(*p)->elements,
522                 &(*p)->num, name))
523                 return 1;
524         *p = 0;
525         return opt && odr_ok(o);
526 }
527
528 int ill_Overdue (ODR o, ILL_Overdue **p, int opt, const char *name)
529 {
530         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 12, name))
531                 return opt && odr_ok(o);
532         if (o->direction == ODR_DECODE)
533                 *p = odr_malloc (o, sizeof(**p));
534         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
535         {
536                 *p = 0;
537                 return 0;
538         }
539         return
540                 odr_implicit_tag (o, odr_integer,
541                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
542                 odr_implicit_tag (o, ill_Transaction_Id,
543                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
544                 odr_implicit_tag (o, ill_Service_Date_Time,
545                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
546                 odr_implicit_tag (o, ill_System_Id,
547                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
548                 odr_implicit_tag (o, ill_System_Id,
549                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
550                 odr_implicit_tag (o, ill_Date_Due,
551                         &(*p)->date_due, ODR_CONTEXT, 41, 0, "date_due") &&
552                 odr_explicit_tag (o, ill_String,
553                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
554                 odr_explicit_tag (o, ill_Overdue_Extension,
555                         &(*p)->overdue_extensions, ODR_CONTEXT, 49, 1, "overdue_extensions") &&
556                 odr_sequence_end (o) &&
557                 odr_constructed_end (o);
558 }
559
560 int ill_Renew (ODR o, ILL_Renew **p, int opt, const char *name)
561 {
562         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 13, name))
563                 return opt && odr_ok(o);
564         if (o->direction == ODR_DECODE)
565                 *p = odr_malloc (o, sizeof(**p));
566         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
567         {
568                 *p = 0;
569                 return 0;
570         }
571         return
572                 odr_implicit_tag (o, odr_integer,
573                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
574                 odr_implicit_tag (o, ill_Transaction_Id,
575                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
576                 odr_implicit_tag (o, ill_Service_Date_Time,
577                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
578                 odr_implicit_tag (o, ill_System_Id,
579                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
580                 odr_implicit_tag (o, ill_System_Id,
581                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
582                 odr_implicit_tag (o, ill_ISO_Date,
583                         &(*p)->desired_due_date, ODR_CONTEXT, 42, 1, "desired_due_date") &&
584                 odr_explicit_tag (o, ill_String,
585                         &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
586                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
587                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_extensions,
588                   &(*p)->num_renew_extensions, "renew_extensions") || odr_ok(o)) &&
589                 odr_sequence_end (o) &&
590                 odr_constructed_end (o);
591 }
592
593 int ill_Renew_Answer (ODR o, ILL_Renew_Answer **p, int opt, const char *name)
594 {
595         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 14, name))
596                 return opt && odr_ok(o);
597         if (o->direction == ODR_DECODE)
598                 *p = odr_malloc (o, sizeof(**p));
599         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
600         {
601                 *p = 0;
602                 return 0;
603         }
604         return
605                 odr_implicit_tag (o, odr_integer,
606                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
607                 odr_implicit_tag (o, ill_Transaction_Id,
608                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
609                 odr_implicit_tag (o, ill_Service_Date_Time,
610                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
611                 odr_implicit_tag (o, ill_System_Id,
612                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
613                 odr_implicit_tag (o, ill_System_Id,
614                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
615                 odr_implicit_tag (o, odr_bool,
616                         &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
617                 odr_implicit_tag (o, ill_Date_Due,
618                         &(*p)->date_due, ODR_CONTEXT, 41, 1, "date_due") &&
619                 odr_explicit_tag (o, ill_String,
620                         &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
621                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
622                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_answer_extensions,
623                   &(*p)->num_renew_answer_extensions, "renew_answer_extensions") || odr_ok(o)) &&
624                 odr_sequence_end (o) &&
625                 odr_constructed_end (o);
626 }
627
628 int ill_Lost (ODR o, ILL_Lost **p, int opt, const char *name)
629 {
630         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 15, name))
631                 return opt && odr_ok(o);
632         if (o->direction == ODR_DECODE)
633                 *p = odr_malloc (o, sizeof(**p));
634         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
635         {
636                 *p = 0;
637                 return 0;
638         }
639         return
640                 odr_implicit_tag (o, odr_integer,
641                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
642                 odr_implicit_tag (o, ill_Transaction_Id,
643                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
644                 odr_implicit_tag (o, ill_Service_Date_Time,
645                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
646                 odr_implicit_tag (o, ill_System_Id,
647                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
648                 odr_implicit_tag (o, ill_System_Id,
649                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
650                 odr_explicit_tag (o, ill_String,
651                         &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
652                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
653                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->lost_extensions,
654                   &(*p)->num_lost_extensions, "lost_extensions") || odr_ok(o)) &&
655                 odr_sequence_end (o) &&
656                 odr_constructed_end (o);
657 }
658
659 int ill_Damaged (ODR o, ILL_Damaged **p, int opt, const char *name)
660 {
661         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 16, name))
662                 return opt && odr_ok(o);
663         if (o->direction == ODR_DECODE)
664                 *p = odr_malloc (o, sizeof(**p));
665         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
666         {
667                 *p = 0;
668                 return 0;
669         }
670         return
671                 odr_implicit_tag (o, odr_integer,
672                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
673                 odr_implicit_tag (o, ill_Transaction_Id,
674                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
675                 odr_implicit_tag (o, ill_Service_Date_Time,
676                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
677                 odr_implicit_tag (o, ill_System_Id,
678                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
679                 odr_implicit_tag (o, ill_System_Id,
680                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
681                 odr_implicit_tag (o, ill_Damaged_Details,
682                         &(*p)->damaged_details, ODR_CONTEXT, 5, 1, "damaged_details") &&
683                 odr_explicit_tag (o, ill_String,
684                         &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
685                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
686                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->damaged_extensions,
687                   &(*p)->num_damaged_extensions, "damaged_extensions") || odr_ok(o)) &&
688                 odr_sequence_end (o) &&
689                 odr_constructed_end (o);
690 }
691
692 int ill_Message (ODR o, ILL_Message **p, int opt, const char *name)
693 {
694         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 17, name))
695                 return opt && odr_ok(o);
696         if (o->direction == ODR_DECODE)
697                 *p = odr_malloc (o, sizeof(**p));
698         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
699         {
700                 *p = 0;
701                 return 0;
702         }
703         return
704                 odr_implicit_tag (o, odr_integer,
705                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
706                 odr_implicit_tag (o, ill_Transaction_Id,
707                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
708                 odr_implicit_tag (o, ill_Service_Date_Time,
709                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
710                 odr_implicit_tag (o, ill_System_Id,
711                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
712                 odr_implicit_tag (o, ill_System_Id,
713                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
714                 odr_explicit_tag (o, ill_String,
715                         &(*p)->note, ODR_CONTEXT, 46, 0, "note") &&
716                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
717                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->message_extensions,
718                   &(*p)->num_message_extensions, "message_extensions") || odr_ok(o)) &&
719                 odr_sequence_end (o) &&
720                 odr_constructed_end (o);
721 }
722
723 int ill_Status_Query (ODR o, ILL_Status_Query **p, int opt, const char *name)
724 {
725         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 18, name))
726                 return opt && odr_ok(o);
727         if (o->direction == ODR_DECODE)
728                 *p = odr_malloc (o, sizeof(**p));
729         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
730         {
731                 *p = 0;
732                 return 0;
733         }
734         return
735                 odr_implicit_tag (o, odr_integer,
736                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
737                 odr_implicit_tag (o, ill_Transaction_Id,
738                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
739                 odr_implicit_tag (o, ill_Service_Date_Time,
740                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
741                 odr_implicit_tag (o, ill_System_Id,
742                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
743                 odr_implicit_tag (o, ill_System_Id,
744                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
745                 odr_explicit_tag (o, ill_String,
746                         &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
747                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
748                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_query_extensions,
749                   &(*p)->num_status_query_extensions, "status_query_extensions") || odr_ok(o)) &&
750                 odr_sequence_end (o) &&
751                 odr_constructed_end (o);
752 }
753
754 int ill_Status_Or_Error_Report (ODR o, ILL_Status_Or_Error_Report **p, int opt, const char *name)
755 {
756         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 19, name))
757                 return opt && odr_ok(o);
758         if (o->direction == ODR_DECODE)
759                 *p = odr_malloc (o, sizeof(**p));
760         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
761         {
762                 *p = 0;
763                 return 0;
764         }
765         return
766                 odr_implicit_tag (o, odr_integer,
767                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
768                 odr_implicit_tag (o, ill_Transaction_Id,
769                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
770                 odr_implicit_tag (o, ill_Service_Date_Time,
771                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
772                 odr_implicit_tag (o, ill_System_Id,
773                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
774                 odr_implicit_tag (o, ill_System_Id,
775                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
776                 odr_implicit_tag (o, ill_Reason_No_Report,
777                         &(*p)->reason_no_report, ODR_CONTEXT, 43, 1, "reason_no_report") &&
778                 odr_implicit_tag (o, ill_Status_Report,
779                         &(*p)->status_report, ODR_CONTEXT, 44, 1, "status_report") &&
780                 odr_implicit_tag (o, ill_Error_Report,
781                         &(*p)->error_report, ODR_CONTEXT, 45, 1, "error_report") &&
782                 odr_explicit_tag (o, ill_String,
783                         &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
784                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
785                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_or_error_report_extensions,
786                   &(*p)->num_status_or_error_report_extensions, "status_or_error_report_extensions") || odr_ok(o)) &&
787                 odr_sequence_end (o) &&
788                 odr_constructed_end (o);
789 }
790
791 int ill_Expired (ODR o, ILL_Expired **p, int opt, const char *name)
792 {
793         if (!odr_constructed_begin (o, p, ODR_APPLICATION, 20, name))
794                 return opt && odr_ok(o);
795         if (o->direction == ODR_DECODE)
796                 *p = odr_malloc (o, sizeof(**p));
797         if (!odr_sequence_begin (o, p, sizeof(**p), 0))
798         {
799                 *p = 0;
800                 return 0;
801         }
802         return
803                 odr_implicit_tag (o, odr_integer,
804                         &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
805                 odr_implicit_tag (o, ill_Transaction_Id,
806                         &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
807                 odr_implicit_tag (o, ill_Service_Date_Time,
808                         &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
809                 odr_implicit_tag (o, ill_System_Id,
810                         &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
811                 odr_implicit_tag (o, ill_System_Id,
812                         &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
813                 odr_implicit_settag (o, ODR_CONTEXT, 49) &&
814                 (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->expired_extensions,
815                   &(*p)->num_expired_extensions, "expired_extensions") || odr_ok(o)) &&
816                 odr_sequence_end (o) &&
817                 odr_constructed_end (o);
818 }
819
820 int ill_Account_Number (ODR o, ILL_Account_Number **p, int opt, const char *name)
821 {
822         return ill_String (o, p, opt, name);
823 }
824
825 int ill_Already_Forwarded (ODR o, ILL_Already_Forwarded **p, int opt, const char *name)
826 {
827         if (!odr_sequence_begin (o, p, sizeof(**p), name))
828                 return opt && odr_ok (o);
829         return
830                 odr_implicit_tag (o, ill_System_Id,
831                         &(*p)->responder_id, ODR_CONTEXT, 0, 0, "responder_id") &&
832                 odr_implicit_tag (o, ill_System_Address,
833                         &(*p)->responder_address, ODR_CONTEXT, 1, 1, "responder_address") &&
834                 odr_sequence_end (o);
835 }
836
837 int ill_Already_Tried_List_Type (ODR o, ILL_Already_Tried_List_Type **p, int opt, const char *name)
838 {
839         if (!odr_initmember (o, p, sizeof(**p)))
840                 return opt && odr_ok(o);
841         if (odr_sequence_of (o, (Odr_fun) ill_System_Id, &(*p)->elements,
842                 &(*p)->num, name))
843                 return 1;
844         *p = 0;
845         return opt && odr_ok(o);
846 }
847
848 int ill_Amount (ODR o, ILL_Amount **p, int opt, const char *name)
849 {
850         if (!odr_sequence_begin (o, p, sizeof(**p), name))
851                 return opt && odr_ok (o);
852         return
853                 odr_implicit_tag (o, odr_visiblestring,
854                         &(*p)->currency_code, ODR_CONTEXT, 0, 1, "currency_code") &&
855                 odr_implicit_tag (o, ill_AmountString,
856                         &(*p)->monetary_value, ODR_CONTEXT, 1, 0, "monetary_value") &&
857                 odr_sequence_end (o);
858 }
859
860 int ill_AmountString (ODR o, ILL_AmountString **p, int opt, const char *name)
861 {
862         return odr_visiblestring (o, p, opt, name);
863 }
864
865 int ill_Client_Id (ODR o, ILL_Client_Id **p, int opt, const char *name)
866 {
867         if (!odr_sequence_begin (o, p, sizeof(**p), name))
868                 return opt && odr_ok (o);
869         return
870                 odr_explicit_tag (o, ill_String,
871                         &(*p)->client_name, ODR_CONTEXT, 0, 1, "client_name") &&
872                 odr_explicit_tag (o, ill_String,
873                         &(*p)->client_status, ODR_CONTEXT, 1, 1, "client_status") &&
874                 odr_explicit_tag (o, ill_String,
875                         &(*p)->client_identifier, ODR_CONTEXT, 2, 1, "client_identifier") &&
876                 odr_sequence_end (o);
877 }
878
879 int ill_Conditional_Results (ODR o, ILL_Conditional_Results **p, int opt, const char *name)
880 {
881         if (!odr_sequence_begin (o, p, sizeof(**p), name))
882                 return opt && odr_ok (o);
883         return
884                 odr_implicit_tag (o, odr_enum,
885                         &(*p)->conditions, ODR_CONTEXT, 0, 0, "conditions") &&
886                 odr_implicit_tag (o, ill_ISO_Date,
887                         &(*p)->date_for_reply, ODR_CONTEXT, 1, 1, "date_for_reply") &&
888                 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
889                 (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
890                   &(*p)->num_locations, "locations") || odr_ok(o)) &&
891                 ill_Delivery_Service(o, &(*p)->proposed_delivery_service, 1, "proposed_delivery_service") &&
892                 odr_sequence_end (o);
893 }
894
895 int ill_Cost_Info_Type (ODR o, ILL_Cost_Info_Type **p, int opt, const char *name)
896 {
897         if (!odr_sequence_begin (o, p, sizeof(**p), name))
898                 return opt && odr_ok (o);
899         return
900                 odr_explicit_tag (o, ill_Account_Number,
901                         &(*p)->account_number, ODR_CONTEXT, 0, 1, "account_number") &&
902                 odr_implicit_tag (o, ill_Amount,
903                         &(*p)->maximum_cost, ODR_CONTEXT, 1, 1, "maximum_cost") &&
904                 odr_implicit_tag (o, odr_bool,
905                         &(*p)->reciprocal_agreement, ODR_CONTEXT, 2, 0, "reciprocal_agreement") &&
906                 odr_implicit_tag (o, odr_bool,
907                         &(*p)->will_pay_fee, ODR_CONTEXT, 3, 0, "will_pay_fee") &&
908                 odr_implicit_tag (o, odr_bool,
909                         &(*p)->payment_provided, ODR_CONTEXT, 4, 0, "payment_provided") &&
910                 odr_sequence_end (o);
911 }
912
913 int ill_Current_State (ODR o, ILL_Current_State **p, int opt, const char *name)
914 {
915         return odr_enum (o, p, opt, name);
916 }
917
918 int ill_Damaged_DetailsSpecific_units (ODR o, ILL_Damaged_DetailsSpecific_units **p, int opt, const char *name)
919 {
920         if (!odr_initmember (o, p, sizeof(**p)))
921                 return opt && odr_ok(o);
922         if (odr_sequence_of (o, (Odr_fun) odr_integer, &(*p)->elements,
923                 &(*p)->num, name))
924                 return 1;
925         *p = 0;
926         return opt && odr_ok(o);
927 }
928
929 int ill_Damaged_Details (ODR o, ILL_Damaged_Details **p, int opt, const char *name)
930 {
931         static Odr_arm arm[] = {
932                 {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Damaged_Details_complete_document,
933                 (Odr_fun) odr_null, "complete_document"},
934                 {ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Damaged_Details_specific_units,
935                 (Odr_fun) ill_Damaged_DetailsSpecific_units, "specific_units"},
936                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
937         };
938         if (!odr_sequence_begin (o, p, sizeof(**p), name))
939                 return opt && odr_ok (o);
940         return
941                 odr_implicit_tag (o, odr_oid,
942                         &(*p)->document_type_id, ODR_CONTEXT, 0, 1, "document_type_id") &&
943                 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
944                 odr_sequence_end (o);
945 }
946
947 int ill_Date_Due (ODR o, ILL_Date_Due **p, int opt, const char *name)
948 {
949         if (!odr_sequence_begin (o, p, sizeof(**p), name))
950                 return opt && odr_ok (o);
951         return
952                 odr_implicit_tag (o, ill_ISO_Date,
953                         &(*p)->date_due_field, ODR_CONTEXT, 0, 0, "date_due_field") &&
954                 odr_implicit_tag (o, odr_bool,
955                         &(*p)->renewable, ODR_CONTEXT, 1, 0, "renewable") &&
956                 odr_sequence_end (o);
957 }
958
959 int ill_Delivery_Address (ODR o, ILL_Delivery_Address **p, int opt, const char *name)
960 {
961         if (!odr_sequence_begin (o, p, sizeof(**p), name))
962                 return opt && odr_ok (o);
963         return
964                 odr_implicit_tag (o, ill_Postal_Address,
965                         &(*p)->postal_address, ODR_CONTEXT, 0, 1, "postal_address") &&
966                 odr_implicit_tag (o, ill_System_Address,
967                         &(*p)->electronic_address, ODR_CONTEXT, 1, 1, "electronic_address") &&
968                 odr_sequence_end (o);
969 }
970
971 int ill_Delivery_ServiceElectronic_delivery (ODR o, ILL_Delivery_ServiceElectronic_delivery **p, int opt, const char *name)
972 {
973         if (!odr_initmember (o, p, sizeof(**p)))
974                 return opt && odr_ok(o);
975         if (odr_sequence_of (o, (Odr_fun) ill_Electronic_Delivery_Service, &(*p)->elements,
976                 &(*p)->num, name))
977                 return 1;
978         *p = 0;
979         return opt && odr_ok(o);
980 }
981
982 int ill_Delivery_Service (ODR o, ILL_Delivery_Service **p, int opt, const char *name)
983 {
984         static Odr_arm arm[] = {
985                 {ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Delivery_Service_physical_delivery,
986                 (Odr_fun) ill_Transportation_Mode, "physical_delivery"},
987                 {ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Delivery_Service_electronic_delivery,
988                 (Odr_fun) ill_Delivery_ServiceElectronic_delivery, "electronic_delivery"},
989                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
990         };
991         if (!odr_initmember(o, p, sizeof(**p)))
992                 return opt && odr_ok(o);
993         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
994                 return 1;
995         *p = 0;
996         return opt && odr_ok(o);
997 }
998
999 int ill_Electronic_Delivery_Service_0 (ODR o, ILL_Electronic_Delivery_Service_0 **p, int opt, const char *name)
1000 {
1001         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1002                 return opt && odr_ok (o);
1003         return
1004                 odr_implicit_tag (o, odr_oid,
1005                         &(*p)->e_delivery_mode, ODR_CONTEXT, 0, 0, "e_delivery_mode") &&
1006                 odr_explicit_tag (o, odr_any,
1007                         &(*p)->e_delivery_parameters, ODR_CONTEXT, 1, 0, "e_delivery_parameters") &&
1008                 odr_sequence_end (o);
1009 }
1010
1011 int ill_Electronic_Delivery_Service_1 (ODR o, ILL_Electronic_Delivery_Service_1 **p, int opt, const char *name)
1012 {
1013         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1014                 return opt && odr_ok (o);
1015         return
1016                 odr_implicit_tag (o, odr_oid,
1017                         &(*p)->document_type_id, ODR_CONTEXT, 2, 0, "document_type_id") &&
1018                 odr_explicit_tag (o, odr_any,
1019                         &(*p)->document_type_parameters, ODR_CONTEXT, 3, 0, "document_type_parameters") &&
1020                 odr_sequence_end (o);
1021 }
1022
1023 int ill_Electronic_Delivery_Service (ODR o, ILL_Electronic_Delivery_Service **p, int opt, const char *name)
1024 {
1025         static Odr_arm arm[] = {
1026                 {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Electronic_Delivery_Service_e_delivery_address,
1027                 (Odr_fun) ill_System_Address, "e_delivery_address"},
1028                 {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Electronic_Delivery_Service_e_delivery_id,
1029                 (Odr_fun) ill_System_Id, "e_delivery_id"},
1030                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1031         };
1032         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1033                 return opt && odr_ok (o);
1034         return
1035                 odr_implicit_tag (o, ill_Electronic_Delivery_Service_0,
1036                         &(*p)->e_delivery_service, ODR_CONTEXT, 0, 1, "e_delivery_service") &&
1037                 odr_implicit_tag (o, ill_Electronic_Delivery_Service_1,
1038                         &(*p)->document_type, ODR_CONTEXT, 1, 1, "document_type") &&
1039                 odr_explicit_tag (o, ill_String,
1040                         &(*p)->e_delivery_description, ODR_CONTEXT, 4, 1, "e_delivery_description") &&
1041                 odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 5, "e_delivery_details") &&
1042                 odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
1043                 odr_constructed_end (o) &&
1044                 odr_explicit_tag (o, ill_String,
1045                         &(*p)->name_or_code, ODR_CONTEXT, 6, 1, "name_or_code") &&
1046                 odr_implicit_tag (o, ill_ISO_Time,
1047                         &(*p)->delivery_time, ODR_CONTEXT, 7, 1, "delivery_time") &&
1048                 odr_sequence_end (o);
1049 }
1050
1051 int ill_Error_Report (ODR o, ILL_Error_Report **p, int opt, const char *name)
1052 {
1053         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1054                 return opt && odr_ok (o);
1055         return
1056                 odr_explicit_tag (o, ill_String,
1057                         &(*p)->correlation_information, ODR_CONTEXT, 0, 0, "correlation_information") &&
1058                 odr_implicit_tag (o, ill_Report_Source,
1059                         &(*p)->report_source, ODR_CONTEXT, 1, 0, "report_source") &&
1060                 odr_explicit_tag (o, ill_User_Error_Report,
1061                         &(*p)->user_error_report, ODR_CONTEXT, 2, 1, "user_error_report") &&
1062                 odr_explicit_tag (o, ill_Provider_Error_Report,
1063                         &(*p)->provider_error_report, ODR_CONTEXT, 3, 1, "provider_error_report") &&
1064                 odr_sequence_end (o);
1065 }
1066
1067 int ill_Estimate_Results (ODR o, ILL_Estimate_Results **p, int opt, const char *name)
1068 {
1069         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1070                 return opt && odr_ok (o);
1071         return
1072                 odr_explicit_tag (o, ill_String,
1073                         &(*p)->cost_estimate, ODR_CONTEXT, 0, 0, "cost_estimate") &&
1074                 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1075                 (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
1076                   &(*p)->num_locations, "locations") || odr_ok(o)) &&
1077                 odr_sequence_end (o);
1078 }
1079
1080 int ill_Extension (ODR o, ILL_Extension **p, int opt, const char *name)
1081 {
1082         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1083                 return opt && odr_ok (o);
1084         return
1085                 odr_implicit_tag (o, odr_integer,
1086                         &(*p)->identifier, ODR_CONTEXT, 0, 0, "identifier") &&
1087                 odr_implicit_tag (o, odr_bool,
1088                         &(*p)->critical, ODR_CONTEXT, 1, 0, "critical") &&
1089                 odr_explicit_tag (o, odr_any,
1090                         &(*p)->item, ODR_CONTEXT, 2, 0, "item") &&
1091                 odr_sequence_end (o);
1092 }
1093
1094 int ill_General_Problem (ODR o, ILL_General_Problem **p, int opt, const char *name)
1095 {
1096         return odr_enum (o, p, opt, name);
1097 }
1098
1099 int ill_History_Report (ODR o, ILL_History_Report **p, int opt, const char *name)
1100 {
1101         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1102                 return opt && odr_ok (o);
1103         return
1104                 odr_implicit_tag (o, ill_ISO_Date,
1105                         &(*p)->date_requested, ODR_CONTEXT, 0, 1, "date_requested") &&
1106                 odr_explicit_tag (o, ill_String,
1107                         &(*p)->author, ODR_CONTEXT, 1, 1, "author") &&
1108                 odr_explicit_tag (o, ill_String,
1109                         &(*p)->title, ODR_CONTEXT, 2, 1, "title") &&
1110                 odr_explicit_tag (o, ill_String,
1111                         &(*p)->author_of_article, ODR_CONTEXT, 3, 1, "author_of_article") &&
1112                 odr_explicit_tag (o, ill_String,
1113                         &(*p)->title_of_article, ODR_CONTEXT, 4, 1, "title_of_article") &&
1114                 odr_implicit_tag (o, ill_ISO_Date,
1115                         &(*p)->date_of_last_transition, ODR_CONTEXT, 5, 0, "date_of_last_transition") &&
1116                 odr_implicit_tag (o, odr_enum,
1117                         &(*p)->most_recent_service, ODR_CONTEXT, 6, 0, "most_recent_service") &&
1118                 odr_implicit_tag (o, ill_ISO_Date,
1119                         &(*p)->date_of_most_recent_service, ODR_CONTEXT, 7, 0, "date_of_most_recent_service") &&
1120                 odr_implicit_tag (o, ill_System_Id,
1121                         &(*p)->initiator_of_most_recent_service, ODR_CONTEXT, 8, 0, "initiator_of_most_recent_service") &&
1122                 odr_implicit_tag (o, ill_Shipped_Service_Type,
1123                         &(*p)->shipped_service_type, ODR_CONTEXT, 9, 1, "shipped_service_type") &&
1124                 odr_implicit_tag (o, ill_Transaction_Results,
1125                         &(*p)->transaction_results, ODR_CONTEXT, 10, 1, "transaction_results") &&
1126                 odr_explicit_tag (o, ill_String,
1127                         &(*p)->most_recent_service_note, ODR_CONTEXT, 11, 1, "most_recent_service_note") &&
1128                 odr_sequence_end (o);
1129 }
1130
1131 int ill_Hold_Placed_Results (ODR o, ILL_Hold_Placed_Results **p, int opt, const char *name)
1132 {
1133         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1134                 return opt && odr_ok (o);
1135         return
1136                 odr_implicit_tag (o, ill_ISO_Date,
1137                         &(*p)->estimated_date_available, ODR_CONTEXT, 0, 0, "estimated_date_available") &&
1138                 odr_implicit_tag (o, ill_Medium_Type,
1139                         &(*p)->hold_placed_medium_type, ODR_CONTEXT, 1, 1, "hold_placed_medium_type") &&
1140                 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
1141                 (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
1142                   &(*p)->num_locations, "locations") || odr_ok(o)) &&
1143                 odr_sequence_end (o);
1144 }
1145
1146 int ill_APDU_Type (ODR o, ILL_APDU_Type **p, int opt, const char *name)
1147 {
1148         return odr_enum (o, p, opt, name);
1149 }
1150
1151 int ill_Service_Type (ODR o, ILL_Service_Type **p, int opt, const char *name)
1152 {
1153         return odr_enum (o, p, opt, name);
1154 }
1155
1156 int ill_String (ODR o, ILL_String **p, int opt, const char *name)
1157 {
1158         static Odr_arm arm[] = {
1159                 {-1, -1, -1, ILL_String_GeneralString,
1160                  (Odr_fun) odr_generalstring, "GeneralString"},
1161                 {-1, -1, -1, ILL_String_EDIFACTString,
1162                  (Odr_fun) ill_EDIFACTString, "EDIFACTString"},
1163                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1164         };
1165         if (!odr_initmember(o, p, sizeof(**p)))
1166                 return opt && odr_ok(o);
1167         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
1168                 return 1;
1169         *p = 0;
1170         return opt && odr_ok(o);
1171 }
1172
1173 int ill_Intermediary_Problem (ODR o, ILL_Intermediary_Problem **p, int opt, const char *name)
1174 {
1175         return odr_enum (o, p, opt, name);
1176 }
1177
1178 int ill_ISO_Date (ODR o, ILL_ISO_Date **p, int opt, const char *name)
1179 {
1180         return odr_visiblestring (o, p, opt, name);
1181 }
1182
1183 int ill_ISO_Time (ODR o, ILL_ISO_Time **p, int opt, const char *name)
1184 {
1185         return odr_visiblestring (o, p, opt, name);
1186 }
1187
1188 int ill_Item_Id (ODR o, ILL_Item_Id **p, int opt, const char *name)
1189 {
1190         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1191                 return opt && odr_ok (o);
1192         return
1193                 odr_implicit_tag (o, odr_enum,
1194                         &(*p)->item_type, ODR_CONTEXT, 0, 1, "item_type") &&
1195                 odr_implicit_tag (o, ill_Medium_Type,
1196                         &(*p)->held_medium_type, ODR_CONTEXT, 1, 1, "held_medium_type") &&
1197                 odr_explicit_tag (o, ill_String,
1198                         &(*p)->call_number, ODR_CONTEXT, 2, 1, "call_number") &&
1199                 odr_explicit_tag (o, ill_String,
1200                         &(*p)->author, ODR_CONTEXT, 3, 1, "author") &&
1201                 odr_explicit_tag (o, ill_String,
1202                         &(*p)->title, ODR_CONTEXT, 4, 1, "title") &&
1203                 odr_explicit_tag (o, ill_String,
1204                         &(*p)->sub_title, ODR_CONTEXT, 5, 1, "sub_title") &&
1205                 odr_explicit_tag (o, ill_String,
1206                         &(*p)->sponsoring_body, ODR_CONTEXT, 6, 1, "sponsoring_body") &&
1207                 odr_explicit_tag (o, ill_String,
1208                         &(*p)->place_of_publication, ODR_CONTEXT, 7, 1, "place_of_publication") &&
1209                 odr_explicit_tag (o, ill_String,
1210                         &(*p)->publisher, ODR_CONTEXT, 8, 1, "publisher") &&
1211                 odr_explicit_tag (o, ill_String,
1212                         &(*p)->series_title_number, ODR_CONTEXT, 9, 1, "series_title_number") &&
1213                 odr_explicit_tag (o, ill_String,
1214                         &(*p)->volume_issue, ODR_CONTEXT, 10, 1, "volume_issue") &&
1215                 odr_explicit_tag (o, ill_String,
1216                         &(*p)->edition, ODR_CONTEXT, 11, 1, "edition") &&
1217                 odr_explicit_tag (o, ill_String,
1218                         &(*p)->publication_date, ODR_CONTEXT, 12, 1, "publication_date") &&
1219                 odr_explicit_tag (o, ill_String,
1220                         &(*p)->publication_date_of_component, ODR_CONTEXT, 13, 1, "publication_date_of_component") &&
1221                 odr_explicit_tag (o, ill_String,
1222                         &(*p)->author_of_article, ODR_CONTEXT, 14, 1, "author_of_article") &&
1223                 odr_explicit_tag (o, ill_String,
1224                         &(*p)->title_of_article, ODR_CONTEXT, 15, 1, "title_of_article") &&
1225                 odr_explicit_tag (o, ill_String,
1226                         &(*p)->pagination, ODR_CONTEXT, 16, 1, "pagination") &&
1227                 odr_explicit_tag (o, odr_external,
1228                         &(*p)->national_bibliography_no, ODR_CONTEXT, 17, 1, "national_bibliography_no") &&
1229                 odr_explicit_tag (o, ill_String,
1230                         &(*p)->iSBN, ODR_CONTEXT, 18, 1, "iSBN") &&
1231                 odr_explicit_tag (o, ill_String,
1232                         &(*p)->iSSN, ODR_CONTEXT, 19, 1, "iSSN") &&
1233                 odr_explicit_tag (o, odr_external,
1234                         &(*p)->system_no, ODR_CONTEXT, 20, 1, "system_no") &&
1235                 odr_explicit_tag (o, ill_String,
1236                         &(*p)->additional_no_letters, ODR_CONTEXT, 21, 1, "additional_no_letters") &&
1237                 odr_explicit_tag (o, ill_String,
1238                         &(*p)->verification_reference_source, ODR_CONTEXT, 22, 1, "verification_reference_source") &&
1239                 odr_sequence_end (o);
1240 }
1241
1242 int ill_Location_Info (ODR o, ILL_Location_Info **p, int opt, const char *name)
1243 {
1244         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1245                 return opt && odr_ok (o);
1246         return
1247                 odr_implicit_tag (o, ill_System_Id,
1248                         &(*p)->location_id, ODR_CONTEXT, 0, 0, "location_id") &&
1249                 odr_implicit_tag (o, ill_System_Address,
1250                         &(*p)->location_address, ODR_CONTEXT, 1, 1, "location_address") &&
1251                 odr_explicit_tag (o, ill_String,
1252                         &(*p)->location_note, ODR_CONTEXT, 2, 1, "location_note") &&
1253                 odr_sequence_end (o);
1254 }
1255
1256 int ill_Locations_Results (ODR o, ILL_Locations_Results **p, int opt, const char *name)
1257 {
1258         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1259                 return opt && odr_ok (o);
1260         return
1261                 odr_implicit_tag (o, ill_Reason_Locs_Provided,
1262                         &(*p)->reason_locs_provided, ODR_CONTEXT, 0, 1, "reason_locs_provided") &&
1263                 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1264                 odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
1265                   &(*p)->num_locations, "locations") &&
1266                 odr_sequence_end (o);
1267 }
1268
1269 int ill_Medium_Type (ODR o, ILL_Medium_Type **p, int opt, const char *name)
1270 {
1271         return odr_enum (o, p, opt, name);
1272 }
1273
1274 int ill_Name_Of_Person_Or_Institution (ODR o, ILL_Name_Of_Person_Or_Institution **p, int opt, const char *name)
1275 {
1276         static Odr_arm arm[] = {
1277                 {ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Name_Of_Person_Or_Institution_name_of_person,
1278                 (Odr_fun) ill_String, "name_of_person"},
1279                 {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Name_Of_Person_Or_Institution_name_of_institution,
1280                 (Odr_fun) ill_String, "name_of_institution"},
1281                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1282         };
1283         if (!odr_initmember(o, p, sizeof(**p)))
1284                 return opt && odr_ok(o);
1285         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
1286                 return 1;
1287         *p = 0;
1288         return opt && odr_ok(o);
1289 }
1290
1291 int ill_Person_Or_Institution_Symbol (ODR o, ILL_Person_Or_Institution_Symbol **p, int opt, const char *name)
1292 {
1293         static Odr_arm arm[] = {
1294                 {ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Person_Or_Institution_Symbol_person_symbol,
1295                 (Odr_fun) ill_String, "person_symbol"},
1296                 {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Person_Or_Institution_Symbol_institution_symbol,
1297                 (Odr_fun) ill_String, "institution_symbol"},
1298                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1299         };
1300         if (!odr_initmember(o, p, sizeof(**p)))
1301                 return opt && odr_ok(o);
1302         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
1303                 return 1;
1304         *p = 0;
1305         return opt && odr_ok(o);
1306 }
1307
1308 int ill_Place_On_Hold_Type (ODR o, ILL_Place_On_Hold_Type **p, int opt, const char *name)
1309 {
1310         return odr_enum (o, p, opt, name);
1311 }
1312
1313 int ill_Postal_Address (ODR o, ILL_Postal_Address **p, int opt, const char *name)
1314 {
1315         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1316                 return opt && odr_ok (o);
1317         return
1318                 odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution,
1319                         &(*p)->name_of_person_or_institution, ODR_CONTEXT, 0, 1, "name_of_person_or_institution") &&
1320                 odr_explicit_tag (o, ill_String,
1321                         &(*p)->extended_postal_delivery_address, ODR_CONTEXT, 1, 1, "extended_postal_delivery_address") &&
1322                 odr_explicit_tag (o, ill_String,
1323                         &(*p)->street_and_number, ODR_CONTEXT, 2, 1, "street_and_number") &&
1324                 odr_explicit_tag (o, ill_String,
1325                         &(*p)->post_office_box, ODR_CONTEXT, 3, 1, "post_office_box") &&
1326                 odr_explicit_tag (o, ill_String,
1327                         &(*p)->city, ODR_CONTEXT, 4, 1, "city") &&
1328                 odr_explicit_tag (o, ill_String,
1329                         &(*p)->region, ODR_CONTEXT, 5, 1, "region") &&
1330                 odr_explicit_tag (o, ill_String,
1331                         &(*p)->country, ODR_CONTEXT, 6, 1, "country") &&
1332                 odr_explicit_tag (o, ill_String,
1333                         &(*p)->postal_code, ODR_CONTEXT, 7, 1, "postal_code") &&
1334                 odr_sequence_end (o);
1335 }
1336
1337 int ill_Provider_Error_Report (ODR o, ILL_Provider_Error_Report **p, int opt, const char *name)
1338 {
1339         static Odr_arm arm[] = {
1340                 {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Provider_Error_Report_general_problem,
1341                 (Odr_fun) ill_General_Problem, "general_problem"},
1342                 {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Provider_Error_Report_transaction_id_problem,
1343                 (Odr_fun) ill_Transaction_Id_Problem, "transaction_id_problem"},
1344                 {ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Provider_Error_Report_state_transition_prohibited,
1345                 (Odr_fun) ill_State_Transition_Prohibited, "state_transition_prohibited"},
1346                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1347         };
1348         if (!odr_initmember(o, p, sizeof(**p)))
1349                 return opt && odr_ok(o);
1350         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
1351                 return 1;
1352         *p = 0;
1353         return opt && odr_ok(o);
1354 }
1355
1356 int ill_Reason_Locs_Provided (ODR o, ILL_Reason_Locs_Provided **p, int opt, const char *name)
1357 {
1358         return odr_enum (o, p, opt, name);
1359 }
1360
1361 int ill_Reason_No_Report (ODR o, ILL_Reason_No_Report **p, int opt, const char *name)
1362 {
1363         return odr_enum (o, p, opt, name);
1364 }
1365
1366 int ill_Reason_Unfilled (ODR o, ILL_Reason_Unfilled **p, int opt, const char *name)
1367 {
1368         return odr_enum (o, p, opt, name);
1369 }
1370
1371 int ill_Report_Source (ODR o, ILL_Report_Source **p, int opt, const char *name)
1372 {
1373         return odr_enum (o, p, opt, name);
1374 }
1375
1376 int ill_Requester_Optional_Messages_Type (ODR o, ILL_Requester_Optional_Messages_Type **p, int opt, const char *name)
1377 {
1378         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1379                 return opt && odr_ok (o);
1380         return
1381                 odr_implicit_tag (o, odr_bool,
1382                         &(*p)->can_send_RECEIVED, ODR_CONTEXT, 0, 0, "can_send_RECEIVED") &&
1383                 odr_implicit_tag (o, odr_bool,
1384                         &(*p)->can_send_RETURNED, ODR_CONTEXT, 1, 0, "can_send_RETURNED") &&
1385                 odr_implicit_tag (o, odr_enum,
1386                         &(*p)->requester_SHIPPED, ODR_CONTEXT, 2, 0, "requester_SHIPPED") &&
1387                 odr_implicit_tag (o, odr_enum,
1388                         &(*p)->requester_CHECKED_IN, ODR_CONTEXT, 3, 0, "requester_CHECKED_IN") &&
1389                 odr_sequence_end (o);
1390 }
1391
1392 int ill_Responder_Optional_Messages_Type (ODR o, ILL_Responder_Optional_Messages_Type **p, int opt, const char *name)
1393 {
1394         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1395                 return opt && odr_ok (o);
1396         return
1397                 odr_implicit_tag (o, odr_bool,
1398                         &(*p)->can_send_SHIPPED, ODR_CONTEXT, 0, 0, "can_send_SHIPPED") &&
1399                 odr_implicit_tag (o, odr_bool,
1400                         &(*p)->can_send_CHECKED_IN, ODR_CONTEXT, 1, 0, "can_send_CHECKED_IN") &&
1401                 odr_implicit_tag (o, odr_enum,
1402                         &(*p)->responder_RECEIVED, ODR_CONTEXT, 2, 0, "responder_RECEIVED") &&
1403                 odr_implicit_tag (o, odr_enum,
1404                         &(*p)->responder_RETURNED, ODR_CONTEXT, 3, 0, "responder_RETURNED") &&
1405                 odr_sequence_end (o);
1406 }
1407
1408 int ill_Retry_Results (ODR o, ILL_Retry_Results **p, int opt, const char *name)
1409 {
1410         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1411                 return opt && odr_ok (o);
1412         return
1413                 odr_implicit_tag (o, odr_enum,
1414                         &(*p)->reason_not_available, ODR_CONTEXT, 0, 1, "reason_not_available") &&
1415                 odr_implicit_tag (o, ill_ISO_Date,
1416                         &(*p)->retry_date, ODR_CONTEXT, 1, 1, "retry_date") &&
1417                 odr_implicit_settag (o, ODR_CONTEXT, 2) &&
1418                 (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
1419                   &(*p)->num_locations, "locations") || odr_ok(o)) &&
1420                 odr_sequence_end (o);
1421 }
1422
1423 int ill_Search_Type (ODR o, ILL_Search_Type **p, int opt, const char *name)
1424 {
1425         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1426                 return opt && odr_ok (o);
1427         return
1428                 odr_explicit_tag (o, ill_String,
1429                         &(*p)->level_of_service, ODR_CONTEXT, 0, 1, "level_of_service") &&
1430                 odr_implicit_tag (o, ill_ISO_Date,
1431                         &(*p)->need_before_date, ODR_CONTEXT, 1, 1, "need_before_date") &&
1432                 odr_implicit_tag (o, odr_enum,
1433                         &(*p)->expiry_flag, ODR_CONTEXT, 2, 0, "expiry_flag") &&
1434                 odr_implicit_tag (o, ill_ISO_Date,
1435                         &(*p)->expiry_date, ODR_CONTEXT, 3, 1, "expiry_date") &&
1436                 odr_sequence_end (o);
1437 }
1438
1439 int ill_Security_Problem (ODR o, ILL_Security_Problem **p, int opt, const char *name)
1440 {
1441         return ill_String (o, p, opt, name);
1442 }
1443
1444 int ill_Send_To_List_Type_s (ODR o, ILL_Send_To_List_Type_s **p, int opt, const char *name)
1445 {
1446         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1447                 return opt && odr_ok (o);
1448         return
1449                 odr_implicit_tag (o, ill_System_Id,
1450                         &(*p)->system_id, ODR_CONTEXT, 0, 0, "system_id") &&
1451                 odr_explicit_tag (o, ill_Account_Number,
1452                         &(*p)->account_number, ODR_CONTEXT, 1, 1, "account_number") &&
1453                 odr_implicit_tag (o, ill_System_Address,
1454                         &(*p)->system_address, ODR_CONTEXT, 2, 1, "system_address") &&
1455                 odr_sequence_end (o);
1456 }
1457
1458 int ill_Send_To_List_Type (ODR o, ILL_Send_To_List_Type **p, int opt, const char *name)
1459 {
1460         if (!odr_initmember (o, p, sizeof(**p)))
1461                 return opt && odr_ok(o);
1462         if (odr_sequence_of (o, (Odr_fun) ill_Send_To_List_Type_s, &(*p)->elements,
1463                 &(*p)->num, name))
1464                 return 1;
1465         *p = 0;
1466         return opt && odr_ok(o);
1467 }
1468
1469 int ill_Service_Date_this (ODR o, ILL_Service_Date_this **p, int opt, const char *name)
1470 {
1471         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1472                 return opt && odr_ok (o);
1473         return
1474                 odr_implicit_tag (o, ill_ISO_Date,
1475                         &(*p)->date, ODR_CONTEXT, 0, 0, "date") &&
1476                 odr_implicit_tag (o, ill_ISO_Time,
1477                         &(*p)->time, ODR_CONTEXT, 1, 1, "time") &&
1478                 odr_sequence_end (o);
1479 }
1480
1481 int ill_Service_Date_original (ODR o, ILL_Service_Date_original **p, int opt, const char *name)
1482 {
1483         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1484                 return opt && odr_ok (o);
1485         return
1486                 odr_implicit_tag (o, ill_ISO_Date,
1487                         &(*p)->date, ODR_CONTEXT, 0, 0, "date") &&
1488                 odr_implicit_tag (o, ill_ISO_Time,
1489                         &(*p)->time, ODR_CONTEXT, 1, 1, "time") &&
1490                 odr_sequence_end (o);
1491 }
1492
1493 int ill_Service_Date_Time (ODR o, ILL_Service_Date_Time **p, int opt, const char *name)
1494 {
1495         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1496                 return opt && odr_ok (o);
1497         return
1498                 odr_implicit_tag (o, ill_Service_Date_this,
1499                         &(*p)->date_time_of_this_service, ODR_CONTEXT, 0, 0, "date_time_of_this_service") &&
1500                 odr_implicit_tag (o, ill_Service_Date_original,
1501                         &(*p)->date_time_of_original_service, ODR_CONTEXT, 1, 1, "date_time_of_original_service") &&
1502                 odr_sequence_end (o);
1503 }
1504
1505 int ill_Shipped_Service_Type (ODR o, ILL_Shipped_Service_Type **p, int opt, const char *name)
1506 {
1507         return ill_Service_Type (o, p, opt, name);
1508 }
1509
1510 int ill_State_Transition_Prohibited (ODR o, ILL_State_Transition_Prohibited **p, int opt, const char *name)
1511 {
1512         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1513                 return opt && odr_ok (o);
1514         return
1515                 odr_implicit_tag (o, ill_APDU_Type,
1516                         &(*p)->aPDU_type, ODR_CONTEXT, 0, 0, "aPDU_type") &&
1517                 odr_implicit_tag (o, ill_Current_State,
1518                         &(*p)->current_state, ODR_CONTEXT, 1, 0, "current_state") &&
1519                 odr_sequence_end (o);
1520 }
1521
1522 int ill_Status_Report (ODR o, ILL_Status_Report **p, int opt, const char *name)
1523 {
1524         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1525                 return opt && odr_ok (o);
1526         return
1527                 odr_implicit_tag (o, ill_History_Report,
1528                         &(*p)->user_status_report, ODR_CONTEXT, 0, 0, "user_status_report") &&
1529                 odr_implicit_tag (o, ill_Current_State,
1530                         &(*p)->provider_status_report, ODR_CONTEXT, 1, 0, "provider_status_report") &&
1531                 odr_sequence_end (o);
1532 }
1533
1534 int ill_Supplemental_Item_Description (ODR o, ILL_Supplemental_Item_Description **p, int opt, const char *name)
1535 {
1536         if (!odr_initmember (o, p, sizeof(**p)))
1537                 return opt && odr_ok(o);
1538         if (odr_sequence_of (o, (Odr_fun) odr_external, &(*p)->elements,
1539                 &(*p)->num, name))
1540                 return 1;
1541         *p = 0;
1542         return opt && odr_ok(o);
1543 }
1544
1545 int ill_Supply_Details (ODR o, ILL_Supply_Details **p, int opt, const char *name)
1546 {
1547         static Odr_arm arm[] = {
1548                 {ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Supply_Details_physical_delivery,
1549                 (Odr_fun) ill_Transportation_Mode, "physical_delivery"},
1550                 {ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Supply_Details_electronic_delivery,
1551                 (Odr_fun) ill_Electronic_Delivery_Service, "electronic_delivery"},
1552                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1553         };
1554         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1555                 return opt && odr_ok (o);
1556         return
1557                 odr_implicit_tag (o, ill_ISO_Date,
1558                         &(*p)->date_shipped, ODR_CONTEXT, 0, 1, "date_shipped") &&
1559                 odr_implicit_tag (o, ill_Date_Due,
1560                         &(*p)->date_due, ODR_CONTEXT, 1, 1, "date_due") &&
1561                 odr_implicit_tag (o, odr_integer,
1562                         &(*p)->chargeable_units, ODR_CONTEXT, 2, 1, "chargeable_units") &&
1563                 odr_implicit_tag (o, ill_Amount,
1564                         &(*p)->cost, ODR_CONTEXT, 3, 1, "cost") &&
1565                 odr_implicit_tag (o, odr_enum,
1566                         &(*p)->shipped_conditions, ODR_CONTEXT, 4, 1, "shipped_conditions") &&
1567                 (odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) || odr_ok(o)) &&
1568                 odr_implicit_tag (o, ill_Amount,
1569                         &(*p)->insured_for, ODR_CONTEXT, 6, 1, "insured_for") &&
1570                 odr_implicit_tag (o, ill_Amount,
1571                         &(*p)->return_insurance_require, ODR_CONTEXT, 7, 1, "return_insurance_require") &&
1572                 odr_implicit_settag (o, ODR_CONTEXT, 8) &&
1573                 (odr_sequence_of(o, (Odr_fun) ill_Units_Per_Medium_Type, &(*p)->no_of_units_per_medium,
1574                   &(*p)->num_no_of_units_per_medium, "no_of_units_per_medium") || odr_ok(o)) &&
1575                 odr_sequence_end (o);
1576 }
1577
1578 int ill_Supply_Medium_Info_Type (ODR o, ILL_Supply_Medium_Info_Type **p, int opt, const char *name)
1579 {
1580         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1581                 return opt && odr_ok (o);
1582         return
1583                 odr_implicit_tag (o, ill_Supply_Medium_Type,
1584                         &(*p)->supply_medium_type, ODR_CONTEXT, 0, 0, "supply_medium_type") &&
1585                 odr_explicit_tag (o, ill_String,
1586                         &(*p)->medium_characteristics, ODR_CONTEXT, 1, 1, "medium_characteristics") &&
1587                 odr_sequence_end (o);
1588 }
1589
1590 int ill_Supply_Medium_Type (ODR o, ILL_Supply_Medium_Type **p, int opt, const char *name)
1591 {
1592         return odr_enum (o, p, opt, name);
1593 }
1594
1595 int ill_System_Address (ODR o, ILL_System_Address **p, int opt, const char *name)
1596 {
1597         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1598                 return opt && odr_ok (o);
1599         return
1600                 odr_explicit_tag (o, ill_String,
1601                         &(*p)->telecom_service_identifier, ODR_CONTEXT, 0, 1, "telecom_service_identifier") &&
1602                 odr_explicit_tag (o, ill_String,
1603                         &(*p)->telecom_service_address, ODR_CONTEXT, 1, 1, "telecom_service_address") &&
1604                 odr_sequence_end (o);
1605 }
1606
1607 int ill_System_Id (ODR o, ILL_System_Id **p, int opt, const char *name)
1608 {
1609         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1610                 return opt && odr_ok (o);
1611         return
1612                 odr_explicit_tag (o, ill_Person_Or_Institution_Symbol,
1613                         &(*p)->person_or_institution_symbol, ODR_CONTEXT, 0, 1, "person_or_institution_symbol") &&
1614                 odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution,
1615                         &(*p)->name_of_person_or_institution, ODR_CONTEXT, 1, 1, "name_of_person_or_institution") &&
1616                 odr_sequence_end (o);
1617 }
1618
1619 int ill_Third_Party_Info_Type (ODR o, ILL_Third_Party_Info_Type **p, int opt, const char *name)
1620 {
1621         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1622                 return opt && odr_ok (o);
1623         return
1624                 odr_implicit_tag (o, odr_bool,
1625                         &(*p)->permission_to_forward, ODR_CONTEXT, 0, 0, "permission_to_forward") &&
1626                 odr_implicit_tag (o, odr_bool,
1627                         &(*p)->permission_to_chain, ODR_CONTEXT, 1, 0, "permission_to_chain") &&
1628                 odr_implicit_tag (o, odr_bool,
1629                         &(*p)->permission_to_partition, ODR_CONTEXT, 2, 0, "permission_to_partition") &&
1630                 odr_implicit_tag (o, odr_bool,
1631                         &(*p)->permission_to_change_send_to_list, ODR_CONTEXT, 3, 0, "permission_to_change_send_to_list") &&
1632                 odr_implicit_tag (o, ill_System_Address,
1633                         &(*p)->initial_requester_address, ODR_CONTEXT, 4, 1, "initial_requester_address") &&
1634                 odr_implicit_tag (o, odr_enum,
1635                         &(*p)->preference, ODR_CONTEXT, 5, 0, "preference") &&
1636                 odr_implicit_tag (o, ill_Send_To_List_Type,
1637                         &(*p)->send_to_list, ODR_CONTEXT, 6, 1, "send_to_list") &&
1638                 odr_implicit_tag (o, ill_Already_Tried_List_Type,
1639                         &(*p)->already_tried_list, ODR_CONTEXT, 7, 1, "already_tried_list") &&
1640                 odr_sequence_end (o);
1641 }
1642
1643 int ill_Transaction_Id (ODR o, ILL_Transaction_Id **p, int opt, const char *name)
1644 {
1645         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1646                 return opt && odr_ok (o);
1647         return
1648                 odr_implicit_tag (o, ill_System_Id,
1649                         &(*p)->initial_requester_id, ODR_CONTEXT, 0, 1, "initial_requester_id") &&
1650                 odr_explicit_tag (o, ill_String,
1651                         &(*p)->transaction_group_qualifier, ODR_CONTEXT, 1, 0, "transaction_group_qualifier") &&
1652                 odr_explicit_tag (o, ill_String,
1653                         &(*p)->transaction_qualifier, ODR_CONTEXT, 2, 0, "transaction_qualifier") &&
1654                 odr_explicit_tag (o, ill_String,
1655                         &(*p)->sub_transaction_qualifier, ODR_CONTEXT, 3, 1, "sub_transaction_qualifier") &&
1656                 odr_sequence_end (o);
1657 }
1658
1659 int ill_Transaction_Id_Problem (ODR o, ILL_Transaction_Id_Problem **p, int opt, const char *name)
1660 {
1661         return odr_enum (o, p, opt, name);
1662 }
1663
1664 int ill_Transaction_Results (ODR o, ILL_Transaction_Results **p, int opt, const char *name)
1665 {
1666         return odr_enum (o, p, opt, name);
1667 }
1668
1669 int ill_Transaction_Type (ODR o, ILL_Transaction_Type **p, int opt, const char *name)
1670 {
1671         return odr_enum (o, p, opt, name);
1672 }
1673
1674 int ill_Transportation_Mode (ODR o, ILL_Transportation_Mode **p, int opt, const char *name)
1675 {
1676         return ill_String (o, p, opt, name);
1677 }
1678
1679 int ill_Unable_To_Perform (ODR o, ILL_Unable_To_Perform **p, int opt, const char *name)
1680 {
1681         return odr_enum (o, p, opt, name);
1682 }
1683
1684 int ill_Unfilled_Results (ODR o, ILL_Unfilled_Results **p, int opt, const char *name)
1685 {
1686         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1687                 return opt && odr_ok (o);
1688         return
1689                 odr_implicit_tag (o, ill_Reason_Unfilled,
1690                         &(*p)->reason_unfilled, ODR_CONTEXT, 0, 0, "reason_unfilled") &&
1691                 odr_implicit_settag (o, ODR_CONTEXT, 1) &&
1692                 (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
1693                   &(*p)->num_locations, "locations") || odr_ok(o)) &&
1694                 odr_sequence_end (o);
1695 }
1696
1697 int ill_Units_Per_Medium_Type (ODR o, ILL_Units_Per_Medium_Type **p, int opt, const char *name)
1698 {
1699         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1700                 return opt && odr_ok (o);
1701         return
1702                 odr_explicit_tag (o, ill_Supply_Medium_Type,
1703                         &(*p)->medium, ODR_CONTEXT, 0, 0, "medium") &&
1704                 odr_explicit_tag (o, odr_integer,
1705                         &(*p)->no_of_units, ODR_CONTEXT, 1, 0, "no_of_units") &&
1706                 odr_sequence_end (o);
1707 }
1708
1709 int ill_User_Error_Report (ODR o, ILL_User_Error_Report **p, int opt, const char *name)
1710 {
1711         static Odr_arm arm[] = {
1712                 {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_User_Error_Report_already_forwarded,
1713                 (Odr_fun) ill_Already_Forwarded, "already_forwarded"},
1714                 {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_User_Error_Report_intermediary_problem,
1715                 (Odr_fun) ill_Intermediary_Problem, "intermediary_problem"},
1716                 {ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_User_Error_Report_security_problem,
1717                 (Odr_fun) ill_Security_Problem, "security_problem"},
1718                 {ODR_IMPLICIT, ODR_CONTEXT, 3, ILL_User_Error_Report_unable_to_perform,
1719                 (Odr_fun) ill_Unable_To_Perform, "unable_to_perform"},
1720                 {-1, -1, -1, -1, (Odr_fun) 0, 0}
1721         };
1722         if (!odr_initmember(o, p, sizeof(**p)))
1723                 return opt && odr_ok(o);
1724         if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
1725                 return 1;
1726         *p = 0;
1727         return opt && odr_ok(o);
1728 }
1729
1730 int ill_Will_Supply_Results (ODR o, ILL_Will_Supply_Results **p, int opt, const char *name)
1731 {
1732         if (!odr_sequence_begin (o, p, sizeof(**p), name))
1733                 return opt && odr_ok (o);
1734         return
1735                 odr_explicit_tag (o, odr_enum,
1736                         &(*p)->reason_will_supply, ODR_CONTEXT, 0, 0, "reason_will_supply") &&
1737                 odr_explicit_tag (o, ill_ISO_Date,
1738                         &(*p)->supply_date, ODR_CONTEXT, 1, 1, "supply_date") &&
1739                 odr_explicit_tag (o, ill_Postal_Address,
1740                         &(*p)->return_to_address, ODR_CONTEXT, 2, 1, "return_to_address") &&
1741                 odr_implicit_settag (o, ODR_CONTEXT, 3) &&
1742                 (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
1743                   &(*p)->num_locations, "locations") || odr_ok(o)) &&
1744                 odr_explicit_tag (o, ill_Electronic_Delivery_Service,
1745                         &(*p)->electronic_delivery_service, ODR_CONTEXT, 4, 1, "electronic_delivery_service") &&
1746                 odr_sequence_end (o);
1747 }
1748
1749 int ill_EDIFACTString (ODR o, ILL_EDIFACTString **p, int opt, const char *name)
1750 {
1751         return odr_visiblestring (o, p, opt, name);
1752 }
1753
1754