Added ill decoders to CVS.
authorAdam Dickmeiss <adam@indexdata.dk>
Wed, 1 Mar 2000 13:46:23 +0000 (13:46 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Wed, 1 Mar 2000 13:46:23 +0000 (13:46 +0000)
ill/ill-core.c [new file with mode: 0644]
ill/item-req.c [new file with mode: 0644]
include/yaz/ill-core.h
include/yaz/item-req.h

diff --git a/ill/ill-core.c b/ill/ill-core.c
new file mode 100644 (file)
index 0000000..215874b
--- /dev/null
@@ -0,0 +1,1754 @@
+/* YC 0.2 Wed Mar 01 14:46:59 CET 2000 */
+/* Module-C: ISO-10161-ILL-1 */
+
+#include <yaz/ill-core.h>
+
+int ill_APDU (ODR o, ILL_APDU **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {-1, -1, -1, ILL_APDU_ILL_Request,
+                (Odr_fun) ill_Request, "ILL_Request"},
+               {-1, -1, -1, ILL_APDU_Forward_Notification,
+                (Odr_fun) ill_Forward_Notification, "Forward_Notification"},
+               {-1, -1, -1, ILL_APDU_Shipped,
+                (Odr_fun) ill_Shipped, "Shipped"},
+               {-1, -1, -1, ILL_APDU_ILL_Answer,
+                (Odr_fun) ill_Answer, "ILL_Answer"},
+               {-1, -1, -1, ILL_APDU_Conditional_Reply,
+                (Odr_fun) ill_Conditional_Reply, "Conditional_Reply"},
+               {-1, -1, -1, ILL_APDU_Cancel,
+                (Odr_fun) ill_Cancel, "Cancel"},
+               {-1, -1, -1, ILL_APDU_Cancel_Reply,
+                (Odr_fun) ill_Cancel_Reply, "Cancel_Reply"},
+               {-1, -1, -1, ILL_APDU_Received,
+                (Odr_fun) ill_Received, "Received"},
+               {-1, -1, -1, ILL_APDU_Recall,
+                (Odr_fun) ill_Recall, "Recall"},
+               {-1, -1, -1, ILL_APDU_Returned,
+                (Odr_fun) ill_Returned, "Returned"},
+               {-1, -1, -1, ILL_APDU_Checked_In,
+                (Odr_fun) ill_Checked_In, "Checked_In"},
+               {-1, -1, -1, ILL_APDU_Overdue,
+                (Odr_fun) ill_Overdue, "Overdue"},
+               {-1, -1, -1, ILL_APDU_Renew,
+                (Odr_fun) ill_Renew, "Renew"},
+               {-1, -1, -1, ILL_APDU_Renew_Answer,
+                (Odr_fun) ill_Renew_Answer, "Renew_Answer"},
+               {-1, -1, -1, ILL_APDU_Lost,
+                (Odr_fun) ill_Lost, "Lost"},
+               {-1, -1, -1, ILL_APDU_Damaged,
+                (Odr_fun) ill_Damaged, "Damaged"},
+               {-1, -1, -1, ILL_APDU_Message,
+                (Odr_fun) ill_Message, "Message"},
+               {-1, -1, -1, ILL_APDU_Status_Query,
+                (Odr_fun) ill_Status_Query, "Status_Query"},
+               {-1, -1, -1, ILL_APDU_Status_Or_Error_Report,
+                (Odr_fun) ill_Status_Or_Error_Report, "Status_Or_Error_Report"},
+               {-1, -1, -1, ILL_APDU_Expired,
+                (Odr_fun) ill_Expired, "Expired"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Request (ODR o, ILL_Request **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 1, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Transaction_Type,
+                       &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
+               odr_implicit_tag (o, ill_Delivery_Address,
+                       &(*p)->delivery_address, ODR_CONTEXT, 6, 1, "delivery_address") &&
+               ill_Delivery_Service(o, &(*p)->delivery_service, 1, "delivery_service") &&
+               odr_implicit_tag (o, ill_Delivery_Address,
+                       &(*p)->billing_address, ODR_CONTEXT, 8, 1, "billing_address") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 9) &&
+               odr_sequence_of(o, (Odr_fun) ill_Service_Type, &(*p)->iLL_service_type,
+                 &(*p)->num_iLL_service_type, "iLL_service_type") &&
+               odr_explicit_tag (o, odr_external,
+                       &(*p)->responder_specific_service, ODR_CONTEXT, 10, 1, "responder_specific_service") &&
+               odr_implicit_tag (o, ill_Requester_Optional_Messages_Type,
+                       &(*p)->requester_optional_messages, ODR_CONTEXT, 11, 0, "requester_optional_messages") &&
+               odr_implicit_tag (o, ill_Search_Type,
+                       &(*p)->search_type, ODR_CONTEXT, 12, 1, "search_type") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 13) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Supply_Medium_Info_Type, &(*p)->supply_medium_info_type,
+                 &(*p)->num_supply_medium_info_type, "supply_medium_info_type") || odr_ok(o)) &&
+               odr_implicit_tag (o, ill_Place_On_Hold_Type,
+                       &(*p)->place_on_hold, ODR_CONTEXT, 14, 0, "place_on_hold") &&
+               odr_implicit_tag (o, ill_Client_Id,
+                       &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
+               odr_implicit_tag (o, ill_Item_Id,
+                       &(*p)->item_id, ODR_CONTEXT, 16, 0, "item_id") &&
+               odr_implicit_tag (o, ill_Supplemental_Item_Description,
+                       &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
+               odr_implicit_tag (o, ill_Cost_Info_Type,
+                       &(*p)->cost_info_type, ODR_CONTEXT, 18, 1, "cost_info_type") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->copyright_compliance, ODR_CONTEXT, 19, 1, "copyright_compliance") &&
+               odr_implicit_tag (o, ill_Third_Party_Info_Type,
+                       &(*p)->third_party_info_type, ODR_CONTEXT, 20, 1, "third_party_info_type") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->retry_flag, ODR_CONTEXT, 21, 0, "retry_flag") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->forward_flag, ODR_CONTEXT, 22, 0, "forward_flag") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->forward_note, ODR_CONTEXT, 47, 1, "forward_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->iLL_request_extensions,
+                 &(*p)->num_iLL_request_extensions, "iLL_request_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Forward_Notification (ODR o, ILL_Forward_Notification **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 2, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 0, "responder_id") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->intermediary_id, ODR_CONTEXT, 25, 0, "intermediary_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->notification_note, ODR_CONTEXT, 48, 1, "notification_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->forward_notification_extensions,
+                 &(*p)->num_forward_notification_extensions, "forward_notification_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Shipped (ODR o, ILL_Shipped **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 3, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->responder_address, ODR_CONTEXT, 24, 1, "responder_address") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->intermediary_id, ODR_CONTEXT, 25, 1, "intermediary_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") &&
+               odr_implicit_tag (o, ill_Client_Id,
+                       &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
+               odr_implicit_tag (o, ill_Transaction_Type,
+                       &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
+               odr_implicit_tag (o, ill_Supplemental_Item_Description,
+                       &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
+               odr_implicit_tag (o, ill_Shipped_Service_Type,
+                       &(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") &&
+               odr_implicit_tag (o, ill_Responder_Optional_Messages_Type,
+                       &(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") &&
+               odr_implicit_tag (o, ill_Supply_Details,
+                       &(*p)->supply_details, ODR_CONTEXT, 29, 0, "supply_details") &&
+               odr_implicit_tag (o, ill_Postal_Address,
+                       &(*p)->return_to_address, ODR_CONTEXT, 30, 1, "return_to_address") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->shipped_extensions,
+                 &(*p)->num_shipped_extensions, "shipped_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Answer (ODR o, ILL_Answer **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Answer_conditional_results,
+               (Odr_fun) ill_Conditional_Results, "conditional_results"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_Answer_retry_results,
+               (Odr_fun) ill_Retry_Results, "retry_results"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 3, ILL_Answer_unfilled_results,
+               (Odr_fun) ill_Unfilled_Results, "unfilled_results"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 4, ILL_Answer_locations_results,
+               (Odr_fun) ill_Locations_Results, "locations_results"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Answer_will_supply_results,
+               (Odr_fun) ill_Will_Supply_Results, "will_supply_results"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 6, ILL_Answer_hold_placed_results,
+               (Odr_fun) ill_Hold_Placed_Results, "hold_placed_results"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Answer_estimate_results,
+               (Odr_fun) ill_Estimate_Results, "estimate_results"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 4, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Transaction_Results,
+                       &(*p)->transaction_results, ODR_CONTEXT, 31, 0, "transaction_results") &&
+               ((odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 32, "results_explanation") &&
+               odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
+               odr_constructed_end (o)) || odr_ok(o)) &&
+               odr_explicit_tag (o, odr_external,
+                       &(*p)->responder_specific_results, ODR_CONTEXT, 33, 1, "responder_specific_results") &&
+               odr_implicit_tag (o, ill_Supplemental_Item_Description,
+                       &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
+               odr_implicit_tag (o, ill_Send_To_List_Type,
+                       &(*p)->send_to_list, ODR_CONTEXT, 23, 1, "send_to_list") &&
+               odr_implicit_tag (o, ill_Already_Tried_List_Type,
+                       &(*p)->already_tried_list, ODR_CONTEXT, 34, 1, "already_tried_list") &&
+               odr_implicit_tag (o, ill_Responder_Optional_Messages_Type,
+                       &(*p)->responder_optional_messages, ODR_CONTEXT, 28, 1, "responder_optional_messages") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->ill_answer_extensions,
+                 &(*p)->num_ill_answer_extensions, "ill_answer_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Conditional_Reply (ODR o, ILL_Conditional_Reply **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 5, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->conditional_reply_extensions,
+                 &(*p)->num_conditional_reply_extensions, "conditional_reply_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Cancel (ODR o, ILL_Cancel **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 6, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_extensions,
+                 &(*p)->num_cancel_extensions, "cancel_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Cancel_Reply (ODR o, ILL_Cancel_Reply **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 7, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->cancel_reply_extensions,
+                 &(*p)->num_cancel_reply_extensions, "cancel_reply_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Received (ODR o, ILL_Received **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 8, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->supplier_id, ODR_CONTEXT, 26, 1, "supplier_id") &&
+               odr_implicit_tag (o, ill_Supplemental_Item_Description,
+                       &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_received, ODR_CONTEXT, 36, 0, "date_received") &&
+               odr_implicit_tag (o, ill_Shipped_Service_Type,
+                       &(*p)->shipped_service_type, ODR_CONTEXT, 27, 0, "shipped_service_type") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->received_extensions,
+                 &(*p)->num_received_extensions, "received_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Recall (ODR o, ILL_Recall **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 9, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->recall_extensions,
+                 &(*p)->num_recall_extensions, "recall_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Returned (ODR o, ILL_Returned **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 10, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Supplemental_Item_Description,
+                       &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_returned, ODR_CONTEXT, 37, 0, "date_returned") &&
+               odr_explicit_tag (o, ill_Transportation_Mode,
+                       &(*p)->returned_via, ODR_CONTEXT, 38, 1, "returned_via") &&
+               odr_implicit_tag (o, ill_Amount,
+                       &(*p)->insured_for, ODR_CONTEXT, 39, 1, "insured_for") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->returned_extensions,
+                 &(*p)->num_returned_extensions, "returned_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Checked_In (ODR o, ILL_Checked_In **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 11, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_checked_in, ODR_CONTEXT, 40, 0, "date_checked_in") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->checked_in_extensions,
+                 &(*p)->num_checked_in_extensions, "checked_in_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Overdue_Extension (ODR o, ILL_Overdue_Extension **p, int opt, const char *name)
+{
+       if (!odr_initmember (o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_sequence_of (o, (Odr_fun) ill_Extension, &(*p)->elements,
+               &(*p)->num, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Overdue (ODR o, ILL_Overdue **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 12, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Date_Due,
+                       &(*p)->date_due, ODR_CONTEXT, 41, 0, "date_due") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_explicit_tag (o, ill_Overdue_Extension,
+                       &(*p)->overdue_extensions, ODR_CONTEXT, 49, 1, "overdue_extensions") &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Renew (ODR o, ILL_Renew **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 13, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->desired_due_date, ODR_CONTEXT, 42, 1, "desired_due_date") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_extensions,
+                 &(*p)->num_renew_extensions, "renew_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Renew_Answer (ODR o, ILL_Renew_Answer **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 14, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->answer, ODR_CONTEXT, 35, 0, "answer") &&
+               odr_implicit_tag (o, ill_Date_Due,
+                       &(*p)->date_due, ODR_CONTEXT, 41, 1, "date_due") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->responder_note, ODR_CONTEXT, 46, 1, "responder_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->renew_answer_extensions,
+                 &(*p)->num_renew_answer_extensions, "renew_answer_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Lost (ODR o, ILL_Lost **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 15, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->lost_extensions,
+                 &(*p)->num_lost_extensions, "lost_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Damaged (ODR o, ILL_Damaged **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 16, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Damaged_Details,
+                       &(*p)->damaged_details, ODR_CONTEXT, 5, 1, "damaged_details") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->damaged_extensions,
+                 &(*p)->num_damaged_extensions, "damaged_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Message (ODR o, ILL_Message **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 17, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->note, ODR_CONTEXT, 46, 0, "note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->message_extensions,
+                 &(*p)->num_message_extensions, "message_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Status_Query (ODR o, ILL_Status_Query **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 18, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_query_extensions,
+                 &(*p)->num_status_query_extensions, "status_query_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Status_Or_Error_Report (ODR o, ILL_Status_Or_Error_Report **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 19, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Reason_No_Report,
+                       &(*p)->reason_no_report, ODR_CONTEXT, 43, 1, "reason_no_report") &&
+               odr_implicit_tag (o, ill_Status_Report,
+                       &(*p)->status_report, ODR_CONTEXT, 44, 1, "status_report") &&
+               odr_implicit_tag (o, ill_Error_Report,
+                       &(*p)->error_report, ODR_CONTEXT, 45, 1, "error_report") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->note, ODR_CONTEXT, 46, 1, "note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->status_or_error_report_extensions,
+                 &(*p)->num_status_or_error_report_extensions, "status_or_error_report_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Expired (ODR o, ILL_Expired **p, int opt, const char *name)
+{
+       if (!odr_constructed_begin (o, p, ODR_APPLICATION, 20, name))
+               return opt && odr_ok(o);
+       if (o->direction == ODR_DECODE)
+               *p = odr_malloc (o, sizeof(**p));
+       if (!odr_sequence_begin (o, p, sizeof(**p), 0))
+       {
+               *p = 0;
+               return 0;
+       }
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 0, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 0, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->expired_extensions,
+                 &(*p)->num_expired_extensions, "expired_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o) &&
+               odr_constructed_end (o);
+}
+
+int ill_Account_Number (ODR o, ILL_Account_Number **p, int opt, const char *name)
+{
+       return ill_String (o, p, opt, name);
+}
+
+int ill_Already_Forwarded (ODR o, ILL_Already_Forwarded **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 0, 0, "responder_id") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->responder_address, ODR_CONTEXT, 1, 1, "responder_address") &&
+               odr_sequence_end (o);
+}
+
+int ill_Already_Tried_List_Type (ODR o, ILL_Already_Tried_List_Type **p, int opt, const char *name)
+{
+       if (!odr_initmember (o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_sequence_of (o, (Odr_fun) ill_System_Id, &(*p)->elements,
+               &(*p)->num, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Amount (ODR o, ILL_Amount **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_visiblestring,
+                       &(*p)->currency_code, ODR_CONTEXT, 0, 1, "currency_code") &&
+               odr_implicit_tag (o, ill_AmountString,
+                       &(*p)->monetary_value, ODR_CONTEXT, 1, 0, "monetary_value") &&
+               odr_sequence_end (o);
+}
+
+int ill_AmountString (ODR o, ILL_AmountString **p, int opt, const char *name)
+{
+       return odr_visiblestring (o, p, opt, name);
+}
+
+int ill_Client_Id (ODR o, ILL_Client_Id **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->client_name, ODR_CONTEXT, 0, 1, "client_name") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->client_status, ODR_CONTEXT, 1, 1, "client_status") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->client_identifier, ODR_CONTEXT, 2, 1, "client_identifier") &&
+               odr_sequence_end (o);
+}
+
+int ill_Conditional_Results (ODR o, ILL_Conditional_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->conditions, ODR_CONTEXT, 0, 0, "conditions") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_for_reply, ODR_CONTEXT, 1, 1, "date_for_reply") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 2) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") || odr_ok(o)) &&
+               ill_Delivery_Service(o, &(*p)->proposed_delivery_service, 1, "proposed_delivery_service") &&
+               odr_sequence_end (o);
+}
+
+int ill_Cost_Info_Type (ODR o, ILL_Cost_Info_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_Account_Number,
+                       &(*p)->account_number, ODR_CONTEXT, 0, 1, "account_number") &&
+               odr_implicit_tag (o, ill_Amount,
+                       &(*p)->maximum_cost, ODR_CONTEXT, 1, 1, "maximum_cost") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->reciprocal_agreement, ODR_CONTEXT, 2, 0, "reciprocal_agreement") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->will_pay_fee, ODR_CONTEXT, 3, 0, "will_pay_fee") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->payment_provided, ODR_CONTEXT, 4, 0, "payment_provided") &&
+               odr_sequence_end (o);
+}
+
+int ill_Current_State (ODR o, ILL_Current_State **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Damaged_DetailsSpecific_units (ODR o, ILL_Damaged_DetailsSpecific_units **p, int opt, const char *name)
+{
+       if (!odr_initmember (o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_sequence_of (o, (Odr_fun) odr_integer, &(*p)->elements,
+               &(*p)->num, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Damaged_Details (ODR o, ILL_Damaged_Details **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Damaged_Details_complete_document,
+               (Odr_fun) odr_null, "complete_document"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Damaged_Details_specific_units,
+               (Odr_fun) ill_Damaged_DetailsSpecific_units, "specific_units"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_oid,
+                       &(*p)->document_type_id, ODR_CONTEXT, 0, 1, "document_type_id") &&
+               odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
+               odr_sequence_end (o);
+}
+
+int ill_Date_Due (ODR o, ILL_Date_Due **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_due_field, ODR_CONTEXT, 0, 0, "date_due_field") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->renewable, ODR_CONTEXT, 1, 0, "renewable") &&
+               odr_sequence_end (o);
+}
+
+int ill_Delivery_Address (ODR o, ILL_Delivery_Address **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_Postal_Address,
+                       &(*p)->postal_address, ODR_CONTEXT, 0, 1, "postal_address") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->electronic_address, ODR_CONTEXT, 1, 1, "electronic_address") &&
+               odr_sequence_end (o);
+}
+
+int ill_Delivery_ServiceElectronic_delivery (ODR o, ILL_Delivery_ServiceElectronic_delivery **p, int opt, const char *name)
+{
+       if (!odr_initmember (o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_sequence_of (o, (Odr_fun) ill_Electronic_Delivery_Service, &(*p)->elements,
+               &(*p)->num, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Delivery_Service (ODR o, ILL_Delivery_Service **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_EXPLICIT, ODR_CONTEXT, 7, ILL_Delivery_Service_physical_delivery,
+               (Odr_fun) ill_Transportation_Mode, "physical_delivery"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Delivery_Service_electronic_delivery,
+               (Odr_fun) ill_Delivery_ServiceElectronic_delivery, "electronic_delivery"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Electronic_Delivery_Service_0 (ODR o, ILL_Electronic_Delivery_Service_0 **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_oid,
+                       &(*p)->e_delivery_mode, ODR_CONTEXT, 0, 0, "e_delivery_mode") &&
+               odr_explicit_tag (o, odr_any,
+                       &(*p)->e_delivery_parameters, ODR_CONTEXT, 1, 0, "e_delivery_parameters") &&
+               odr_sequence_end (o);
+}
+
+int ill_Electronic_Delivery_Service_1 (ODR o, ILL_Electronic_Delivery_Service_1 **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_oid,
+                       &(*p)->document_type_id, ODR_CONTEXT, 2, 0, "document_type_id") &&
+               odr_explicit_tag (o, odr_any,
+                       &(*p)->document_type_parameters, ODR_CONTEXT, 3, 0, "document_type_parameters") &&
+               odr_sequence_end (o);
+}
+
+int ill_Electronic_Delivery_Service (ODR o, ILL_Electronic_Delivery_Service **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Electronic_Delivery_Service_e_delivery_address,
+               (Odr_fun) ill_System_Address, "e_delivery_address"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Electronic_Delivery_Service_e_delivery_id,
+               (Odr_fun) ill_System_Id, "e_delivery_id"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_Electronic_Delivery_Service_0,
+                       &(*p)->e_delivery_service, ODR_CONTEXT, 0, 1, "e_delivery_service") &&
+               odr_implicit_tag (o, ill_Electronic_Delivery_Service_1,
+                       &(*p)->document_type, ODR_CONTEXT, 1, 1, "document_type") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->e_delivery_description, ODR_CONTEXT, 4, 1, "e_delivery_description") &&
+               odr_constructed_begin (o, &(*p)->u, ODR_CONTEXT, 5, "e_delivery_details") &&
+               odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) &&
+               odr_constructed_end (o) &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->name_or_code, ODR_CONTEXT, 6, 1, "name_or_code") &&
+               odr_implicit_tag (o, ill_ISO_Time,
+                       &(*p)->delivery_time, ODR_CONTEXT, 7, 1, "delivery_time") &&
+               odr_sequence_end (o);
+}
+
+int ill_Error_Report (ODR o, ILL_Error_Report **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->correlation_information, ODR_CONTEXT, 0, 0, "correlation_information") &&
+               odr_implicit_tag (o, ill_Report_Source,
+                       &(*p)->report_source, ODR_CONTEXT, 1, 0, "report_source") &&
+               odr_explicit_tag (o, ill_User_Error_Report,
+                       &(*p)->user_error_report, ODR_CONTEXT, 2, 1, "user_error_report") &&
+               odr_explicit_tag (o, ill_Provider_Error_Report,
+                       &(*p)->provider_error_report, ODR_CONTEXT, 3, 1, "provider_error_report") &&
+               odr_sequence_end (o);
+}
+
+int ill_Estimate_Results (ODR o, ILL_Estimate_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->cost_estimate, ODR_CONTEXT, 0, 0, "cost_estimate") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 1) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") || odr_ok(o)) &&
+               odr_sequence_end (o);
+}
+
+int ill_Extension (ODR o, ILL_Extension **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->identifier, ODR_CONTEXT, 0, 0, "identifier") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->critical, ODR_CONTEXT, 1, 0, "critical") &&
+               odr_explicit_tag (o, odr_any,
+                       &(*p)->item, ODR_CONTEXT, 2, 0, "item") &&
+               odr_sequence_end (o);
+}
+
+int ill_General_Problem (ODR o, ILL_General_Problem **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_History_Report (ODR o, ILL_History_Report **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_requested, ODR_CONTEXT, 0, 1, "date_requested") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->author, ODR_CONTEXT, 1, 1, "author") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->title, ODR_CONTEXT, 2, 1, "title") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->author_of_article, ODR_CONTEXT, 3, 1, "author_of_article") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->title_of_article, ODR_CONTEXT, 4, 1, "title_of_article") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_of_last_transition, ODR_CONTEXT, 5, 0, "date_of_last_transition") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->most_recent_service, ODR_CONTEXT, 6, 0, "most_recent_service") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_of_most_recent_service, ODR_CONTEXT, 7, 0, "date_of_most_recent_service") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->initiator_of_most_recent_service, ODR_CONTEXT, 8, 0, "initiator_of_most_recent_service") &&
+               odr_implicit_tag (o, ill_Shipped_Service_Type,
+                       &(*p)->shipped_service_type, ODR_CONTEXT, 9, 1, "shipped_service_type") &&
+               odr_implicit_tag (o, ill_Transaction_Results,
+                       &(*p)->transaction_results, ODR_CONTEXT, 10, 1, "transaction_results") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->most_recent_service_note, ODR_CONTEXT, 11, 1, "most_recent_service_note") &&
+               odr_sequence_end (o);
+}
+
+int ill_Hold_Placed_Results (ODR o, ILL_Hold_Placed_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->estimated_date_available, ODR_CONTEXT, 0, 0, "estimated_date_available") &&
+               odr_implicit_tag (o, ill_Medium_Type,
+                       &(*p)->hold_placed_medium_type, ODR_CONTEXT, 1, 1, "hold_placed_medium_type") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 2) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") || odr_ok(o)) &&
+               odr_sequence_end (o);
+}
+
+int ill_APDU_Type (ODR o, ILL_APDU_Type **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Service_Type (ODR o, ILL_Service_Type **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_String (ODR o, ILL_String **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {-1, -1, -1, ILL_String_GeneralString,
+                (Odr_fun) odr_generalstring, "GeneralString"},
+               {-1, -1, -1, ILL_String_EDIFACTString,
+                (Odr_fun) ill_EDIFACTString, "EDIFACTString"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Intermediary_Problem (ODR o, ILL_Intermediary_Problem **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_ISO_Date (ODR o, ILL_ISO_Date **p, int opt, const char *name)
+{
+       return odr_visiblestring (o, p, opt, name);
+}
+
+int ill_ISO_Time (ODR o, ILL_ISO_Time **p, int opt, const char *name)
+{
+       return odr_visiblestring (o, p, opt, name);
+}
+
+int ill_Item_Id (ODR o, ILL_Item_Id **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->item_type, ODR_CONTEXT, 0, 1, "item_type") &&
+               odr_implicit_tag (o, ill_Medium_Type,
+                       &(*p)->held_medium_type, ODR_CONTEXT, 1, 1, "held_medium_type") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->call_number, ODR_CONTEXT, 2, 1, "call_number") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->author, ODR_CONTEXT, 3, 1, "author") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->title, ODR_CONTEXT, 4, 1, "title") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->sub_title, ODR_CONTEXT, 5, 1, "sub_title") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->sponsoring_body, ODR_CONTEXT, 6, 1, "sponsoring_body") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->place_of_publication, ODR_CONTEXT, 7, 1, "place_of_publication") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->publisher, ODR_CONTEXT, 8, 1, "publisher") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->series_title_number, ODR_CONTEXT, 9, 1, "series_title_number") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->volume_issue, ODR_CONTEXT, 10, 1, "volume_issue") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->edition, ODR_CONTEXT, 11, 1, "edition") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->publication_date, ODR_CONTEXT, 12, 1, "publication_date") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->publication_date_of_component, ODR_CONTEXT, 13, 1, "publication_date_of_component") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->author_of_article, ODR_CONTEXT, 14, 1, "author_of_article") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->title_of_article, ODR_CONTEXT, 15, 1, "title_of_article") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->pagination, ODR_CONTEXT, 16, 1, "pagination") &&
+               odr_explicit_tag (o, odr_external,
+                       &(*p)->national_bibliography_no, ODR_CONTEXT, 17, 1, "national_bibliography_no") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->iSBN, ODR_CONTEXT, 18, 1, "iSBN") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->iSSN, ODR_CONTEXT, 19, 1, "iSSN") &&
+               odr_explicit_tag (o, odr_external,
+                       &(*p)->system_no, ODR_CONTEXT, 20, 1, "system_no") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->additional_no_letters, ODR_CONTEXT, 21, 1, "additional_no_letters") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->verification_reference_source, ODR_CONTEXT, 22, 1, "verification_reference_source") &&
+               odr_sequence_end (o);
+}
+
+int ill_Location_Info (ODR o, ILL_Location_Info **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->location_id, ODR_CONTEXT, 0, 0, "location_id") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->location_address, ODR_CONTEXT, 1, 1, "location_address") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->location_note, ODR_CONTEXT, 2, 1, "location_note") &&
+               odr_sequence_end (o);
+}
+
+int ill_Locations_Results (ODR o, ILL_Locations_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_Reason_Locs_Provided,
+                       &(*p)->reason_locs_provided, ODR_CONTEXT, 0, 1, "reason_locs_provided") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 1) &&
+               odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") &&
+               odr_sequence_end (o);
+}
+
+int ill_Medium_Type (ODR o, ILL_Medium_Type **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Name_Of_Person_Or_Institution (ODR o, ILL_Name_Of_Person_Or_Institution **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Name_Of_Person_Or_Institution_name_of_person,
+               (Odr_fun) ill_String, "name_of_person"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Name_Of_Person_Or_Institution_name_of_institution,
+               (Odr_fun) ill_String, "name_of_institution"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Person_Or_Institution_Symbol (ODR o, ILL_Person_Or_Institution_Symbol **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_EXPLICIT, ODR_CONTEXT, 0, ILL_Person_Or_Institution_Symbol_person_symbol,
+               (Odr_fun) ill_String, "person_symbol"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 1, ILL_Person_Or_Institution_Symbol_institution_symbol,
+               (Odr_fun) ill_String, "institution_symbol"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Place_On_Hold_Type (ODR o, ILL_Place_On_Hold_Type **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Postal_Address (ODR o, ILL_Postal_Address **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution,
+                       &(*p)->name_of_person_or_institution, ODR_CONTEXT, 0, 1, "name_of_person_or_institution") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->extended_postal_delivery_address, ODR_CONTEXT, 1, 1, "extended_postal_delivery_address") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->street_and_number, ODR_CONTEXT, 2, 1, "street_and_number") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->post_office_box, ODR_CONTEXT, 3, 1, "post_office_box") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->city, ODR_CONTEXT, 4, 1, "city") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->region, ODR_CONTEXT, 5, 1, "region") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->country, ODR_CONTEXT, 6, 1, "country") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->postal_code, ODR_CONTEXT, 7, 1, "postal_code") &&
+               odr_sequence_end (o);
+}
+
+int ill_Provider_Error_Report (ODR o, ILL_Provider_Error_Report **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_Provider_Error_Report_general_problem,
+               (Odr_fun) ill_General_Problem, "general_problem"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_Provider_Error_Report_transaction_id_problem,
+               (Odr_fun) ill_Transaction_Id_Problem, "transaction_id_problem"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 2, ILL_Provider_Error_Report_state_transition_prohibited,
+               (Odr_fun) ill_State_Transition_Prohibited, "state_transition_prohibited"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Reason_Locs_Provided (ODR o, ILL_Reason_Locs_Provided **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Reason_No_Report (ODR o, ILL_Reason_No_Report **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Reason_Unfilled (ODR o, ILL_Reason_Unfilled **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Report_Source (ODR o, ILL_Report_Source **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Requester_Optional_Messages_Type (ODR o, ILL_Requester_Optional_Messages_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->can_send_RECEIVED, ODR_CONTEXT, 0, 0, "can_send_RECEIVED") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->can_send_RETURNED, ODR_CONTEXT, 1, 0, "can_send_RETURNED") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->requester_SHIPPED, ODR_CONTEXT, 2, 0, "requester_SHIPPED") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->requester_CHECKED_IN, ODR_CONTEXT, 3, 0, "requester_CHECKED_IN") &&
+               odr_sequence_end (o);
+}
+
+int ill_Responder_Optional_Messages_Type (ODR o, ILL_Responder_Optional_Messages_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->can_send_SHIPPED, ODR_CONTEXT, 0, 0, "can_send_SHIPPED") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->can_send_CHECKED_IN, ODR_CONTEXT, 1, 0, "can_send_CHECKED_IN") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->responder_RECEIVED, ODR_CONTEXT, 2, 0, "responder_RECEIVED") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->responder_RETURNED, ODR_CONTEXT, 3, 0, "responder_RETURNED") &&
+               odr_sequence_end (o);
+}
+
+int ill_Retry_Results (ODR o, ILL_Retry_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->reason_not_available, ODR_CONTEXT, 0, 1, "reason_not_available") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->retry_date, ODR_CONTEXT, 1, 1, "retry_date") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 2) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") || odr_ok(o)) &&
+               odr_sequence_end (o);
+}
+
+int ill_Search_Type (ODR o, ILL_Search_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->level_of_service, ODR_CONTEXT, 0, 1, "level_of_service") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->need_before_date, ODR_CONTEXT, 1, 1, "need_before_date") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->expiry_flag, ODR_CONTEXT, 2, 0, "expiry_flag") &&
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->expiry_date, ODR_CONTEXT, 3, 1, "expiry_date") &&
+               odr_sequence_end (o);
+}
+
+int ill_Security_Problem (ODR o, ILL_Security_Problem **p, int opt, const char *name)
+{
+       return ill_String (o, p, opt, name);
+}
+
+int ill_Send_To_List_Type_s (ODR o, ILL_Send_To_List_Type_s **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->system_id, ODR_CONTEXT, 0, 0, "system_id") &&
+               odr_explicit_tag (o, ill_Account_Number,
+                       &(*p)->account_number, ODR_CONTEXT, 1, 1, "account_number") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->system_address, ODR_CONTEXT, 2, 1, "system_address") &&
+               odr_sequence_end (o);
+}
+
+int ill_Send_To_List_Type (ODR o, ILL_Send_To_List_Type **p, int opt, const char *name)
+{
+       if (!odr_initmember (o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_sequence_of (o, (Odr_fun) ill_Send_To_List_Type_s, &(*p)->elements,
+               &(*p)->num, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Service_Date_this (ODR o, ILL_Service_Date_this **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date, ODR_CONTEXT, 0, 0, "date") &&
+               odr_implicit_tag (o, ill_ISO_Time,
+                       &(*p)->time, ODR_CONTEXT, 1, 1, "time") &&
+               odr_sequence_end (o);
+}
+
+int ill_Service_Date_original (ODR o, ILL_Service_Date_original **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date, ODR_CONTEXT, 0, 0, "date") &&
+               odr_implicit_tag (o, ill_ISO_Time,
+                       &(*p)->time, ODR_CONTEXT, 1, 1, "time") &&
+               odr_sequence_end (o);
+}
+
+int ill_Service_Date_Time (ODR o, ILL_Service_Date_Time **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_Service_Date_this,
+                       &(*p)->date_time_of_this_service, ODR_CONTEXT, 0, 0, "date_time_of_this_service") &&
+               odr_implicit_tag (o, ill_Service_Date_original,
+                       &(*p)->date_time_of_original_service, ODR_CONTEXT, 1, 1, "date_time_of_original_service") &&
+               odr_sequence_end (o);
+}
+
+int ill_Shipped_Service_Type (ODR o, ILL_Shipped_Service_Type **p, int opt, const char *name)
+{
+       return ill_Service_Type (o, p, opt, name);
+}
+
+int ill_State_Transition_Prohibited (ODR o, ILL_State_Transition_Prohibited **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_APDU_Type,
+                       &(*p)->aPDU_type, ODR_CONTEXT, 0, 0, "aPDU_type") &&
+               odr_implicit_tag (o, ill_Current_State,
+                       &(*p)->current_state, ODR_CONTEXT, 1, 0, "current_state") &&
+               odr_sequence_end (o);
+}
+
+int ill_Status_Report (ODR o, ILL_Status_Report **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_History_Report,
+                       &(*p)->user_status_report, ODR_CONTEXT, 0, 0, "user_status_report") &&
+               odr_implicit_tag (o, ill_Current_State,
+                       &(*p)->provider_status_report, ODR_CONTEXT, 1, 0, "provider_status_report") &&
+               odr_sequence_end (o);
+}
+
+int ill_Supplemental_Item_Description (ODR o, ILL_Supplemental_Item_Description **p, int opt, const char *name)
+{
+       if (!odr_initmember (o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_sequence_of (o, (Odr_fun) odr_external, &(*p)->elements,
+               &(*p)->num, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Supply_Details (ODR o, ILL_Supply_Details **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_EXPLICIT, ODR_CONTEXT, 5, ILL_Supply_Details_physical_delivery,
+               (Odr_fun) ill_Transportation_Mode, "physical_delivery"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 50, ILL_Supply_Details_electronic_delivery,
+               (Odr_fun) ill_Electronic_Delivery_Service, "electronic_delivery"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_ISO_Date,
+                       &(*p)->date_shipped, ODR_CONTEXT, 0, 1, "date_shipped") &&
+               odr_implicit_tag (o, ill_Date_Due,
+                       &(*p)->date_due, ODR_CONTEXT, 1, 1, "date_due") &&
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->chargeable_units, ODR_CONTEXT, 2, 1, "chargeable_units") &&
+               odr_implicit_tag (o, ill_Amount,
+                       &(*p)->cost, ODR_CONTEXT, 3, 1, "cost") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->shipped_conditions, ODR_CONTEXT, 4, 1, "shipped_conditions") &&
+               (odr_choice (o, arm, &(*p)->u, &(*p)->which, 0) || odr_ok(o)) &&
+               odr_implicit_tag (o, ill_Amount,
+                       &(*p)->insured_for, ODR_CONTEXT, 6, 1, "insured_for") &&
+               odr_implicit_tag (o, ill_Amount,
+                       &(*p)->return_insurance_require, ODR_CONTEXT, 7, 1, "return_insurance_require") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 8) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Units_Per_Medium_Type, &(*p)->no_of_units_per_medium,
+                 &(*p)->num_no_of_units_per_medium, "no_of_units_per_medium") || odr_ok(o)) &&
+               odr_sequence_end (o);
+}
+
+int ill_Supply_Medium_Info_Type (ODR o, ILL_Supply_Medium_Info_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_Supply_Medium_Type,
+                       &(*p)->supply_medium_type, ODR_CONTEXT, 0, 0, "supply_medium_type") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->medium_characteristics, ODR_CONTEXT, 1, 1, "medium_characteristics") &&
+               odr_sequence_end (o);
+}
+
+int ill_Supply_Medium_Type (ODR o, ILL_Supply_Medium_Type **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_System_Address (ODR o, ILL_System_Address **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->telecom_service_identifier, ODR_CONTEXT, 0, 1, "telecom_service_identifier") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->telecom_service_address, ODR_CONTEXT, 1, 1, "telecom_service_address") &&
+               odr_sequence_end (o);
+}
+
+int ill_System_Id (ODR o, ILL_System_Id **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_Person_Or_Institution_Symbol,
+                       &(*p)->person_or_institution_symbol, ODR_CONTEXT, 0, 1, "person_or_institution_symbol") &&
+               odr_explicit_tag (o, ill_Name_Of_Person_Or_Institution,
+                       &(*p)->name_of_person_or_institution, ODR_CONTEXT, 1, 1, "name_of_person_or_institution") &&
+               odr_sequence_end (o);
+}
+
+int ill_Third_Party_Info_Type (ODR o, ILL_Third_Party_Info_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->permission_to_forward, ODR_CONTEXT, 0, 0, "permission_to_forward") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->permission_to_chain, ODR_CONTEXT, 1, 0, "permission_to_chain") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->permission_to_partition, ODR_CONTEXT, 2, 0, "permission_to_partition") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->permission_to_change_send_to_list, ODR_CONTEXT, 3, 0, "permission_to_change_send_to_list") &&
+               odr_implicit_tag (o, ill_System_Address,
+                       &(*p)->initial_requester_address, ODR_CONTEXT, 4, 1, "initial_requester_address") &&
+               odr_implicit_tag (o, odr_enum,
+                       &(*p)->preference, ODR_CONTEXT, 5, 0, "preference") &&
+               odr_implicit_tag (o, ill_Send_To_List_Type,
+                       &(*p)->send_to_list, ODR_CONTEXT, 6, 1, "send_to_list") &&
+               odr_implicit_tag (o, ill_Already_Tried_List_Type,
+                       &(*p)->already_tried_list, ODR_CONTEXT, 7, 1, "already_tried_list") &&
+               odr_sequence_end (o);
+}
+
+int ill_Transaction_Id (ODR o, ILL_Transaction_Id **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->initial_requester_id, ODR_CONTEXT, 0, 1, "initial_requester_id") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->transaction_group_qualifier, ODR_CONTEXT, 1, 0, "transaction_group_qualifier") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->transaction_qualifier, ODR_CONTEXT, 2, 0, "transaction_qualifier") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->sub_transaction_qualifier, ODR_CONTEXT, 3, 1, "sub_transaction_qualifier") &&
+               odr_sequence_end (o);
+}
+
+int ill_Transaction_Id_Problem (ODR o, ILL_Transaction_Id_Problem **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Transaction_Results (ODR o, ILL_Transaction_Results **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Transaction_Type (ODR o, ILL_Transaction_Type **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Transportation_Mode (ODR o, ILL_Transportation_Mode **p, int opt, const char *name)
+{
+       return ill_String (o, p, opt, name);
+}
+
+int ill_Unable_To_Perform (ODR o, ILL_Unable_To_Perform **p, int opt, const char *name)
+{
+       return odr_enum (o, p, opt, name);
+}
+
+int ill_Unfilled_Results (ODR o, ILL_Unfilled_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, ill_Reason_Unfilled,
+                       &(*p)->reason_unfilled, ODR_CONTEXT, 0, 0, "reason_unfilled") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 1) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") || odr_ok(o)) &&
+               odr_sequence_end (o);
+}
+
+int ill_Units_Per_Medium_Type (ODR o, ILL_Units_Per_Medium_Type **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, ill_Supply_Medium_Type,
+                       &(*p)->medium, ODR_CONTEXT, 0, 0, "medium") &&
+               odr_explicit_tag (o, odr_integer,
+                       &(*p)->no_of_units, ODR_CONTEXT, 1, 0, "no_of_units") &&
+               odr_sequence_end (o);
+}
+
+int ill_User_Error_Report (ODR o, ILL_User_Error_Report **p, int opt, const char *name)
+{
+       static Odr_arm arm[] = {
+               {ODR_IMPLICIT, ODR_CONTEXT, 0, ILL_User_Error_Report_already_forwarded,
+               (Odr_fun) ill_Already_Forwarded, "already_forwarded"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 1, ILL_User_Error_Report_intermediary_problem,
+               (Odr_fun) ill_Intermediary_Problem, "intermediary_problem"},
+               {ODR_EXPLICIT, ODR_CONTEXT, 2, ILL_User_Error_Report_security_problem,
+               (Odr_fun) ill_Security_Problem, "security_problem"},
+               {ODR_IMPLICIT, ODR_CONTEXT, 3, ILL_User_Error_Report_unable_to_perform,
+               (Odr_fun) ill_Unable_To_Perform, "unable_to_perform"},
+               {-1, -1, -1, -1, (Odr_fun) 0, 0}
+       };
+       if (!odr_initmember(o, p, sizeof(**p)))
+               return opt && odr_ok(o);
+       if (odr_choice(o, arm, &(*p)->u, &(*p)->which, name))
+               return 1;
+       *p = 0;
+       return opt && odr_ok(o);
+}
+
+int ill_Will_Supply_Results (ODR o, ILL_Will_Supply_Results **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_explicit_tag (o, odr_enum,
+                       &(*p)->reason_will_supply, ODR_CONTEXT, 0, 0, "reason_will_supply") &&
+               odr_explicit_tag (o, ill_ISO_Date,
+                       &(*p)->supply_date, ODR_CONTEXT, 1, 1, "supply_date") &&
+               odr_explicit_tag (o, ill_Postal_Address,
+                       &(*p)->return_to_address, ODR_CONTEXT, 2, 1, "return_to_address") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 3) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Location_Info, &(*p)->locations,
+                 &(*p)->num_locations, "locations") || odr_ok(o)) &&
+               odr_explicit_tag (o, ill_Electronic_Delivery_Service,
+                       &(*p)->electronic_delivery_service, ODR_CONTEXT, 4, 1, "electronic_delivery_service") &&
+               odr_sequence_end (o);
+}
+
+int ill_EDIFACTString (ODR o, ILL_EDIFACTString **p, int opt, const char *name)
+{
+       return odr_visiblestring (o, p, opt, name);
+}
+
+
diff --git a/ill/item-req.c b/ill/item-req.c
new file mode 100644 (file)
index 0000000..56f62ec
--- /dev/null
@@ -0,0 +1,66 @@
+/* YC 0.2 Wed Mar 01 14:47:01 CET 2000 */
+/* Module-C: Z39.50-extendedService-ItemOrder-ItemRequest-1 */
+
+#include <yaz/item-req.h>
+
+int ill_ItemRequest (ODR o, ILL_ItemRequest **p, int opt, const char *name)
+{
+       if (!odr_sequence_begin (o, p, sizeof(**p), name))
+               return opt && odr_ok (o);
+       return
+               odr_implicit_tag (o, odr_integer,
+                       &(*p)->protocol_version_num, ODR_CONTEXT, 0, 0, "protocol_version_num") &&
+               odr_implicit_tag (o, ill_Transaction_Id,
+                       &(*p)->transaction_id, ODR_CONTEXT, 1, 1, "transaction_id") &&
+               odr_implicit_tag (o, ill_Service_Date_Time,
+                       &(*p)->service_date_time, ODR_CONTEXT, 2, 1, "service_date_time") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->requester_id, ODR_CONTEXT, 3, 1, "requester_id") &&
+               odr_implicit_tag (o, ill_System_Id,
+                       &(*p)->responder_id, ODR_CONTEXT, 4, 1, "responder_id") &&
+               odr_implicit_tag (o, ill_Transaction_Type,
+                       &(*p)->transaction_type, ODR_CONTEXT, 5, 0, "transaction_type") &&
+               odr_implicit_tag (o, ill_Delivery_Address,
+                       &(*p)->delivery_address, ODR_CONTEXT, 6, 1, "delivery_address") &&
+               ill_Delivery_Service(o, &(*p)->delivery_service, 1, "delivery_service") &&
+               odr_implicit_tag (o, ill_Delivery_Address,
+                       &(*p)->billing_address, ODR_CONTEXT, 8, 1, "billing_address") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 9) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Service_Type, &(*p)->iLL_service_type,
+                 &(*p)->num_iLL_service_type, "iLL_service_type") || odr_ok(o)) &&
+               odr_explicit_tag (o, odr_external,
+                       &(*p)->responder_specific_service, ODR_CONTEXT, 10, 1, "responder_specific_service") &&
+               odr_implicit_tag (o, ill_Requester_Optional_Messages_Type,
+                       &(*p)->requester_optional_messages, ODR_CONTEXT, 11, 1, "requester_optional_messages") &&
+               odr_implicit_tag (o, ill_Search_Type,
+                       &(*p)->search_type, ODR_CONTEXT, 12, 1, "search_type") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 13) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Supply_Medium_Info_Type, &(*p)->supply_medium_info_type,
+                 &(*p)->num_supply_medium_info_type, "supply_medium_info_type") || odr_ok(o)) &&
+               odr_implicit_tag (o, ill_Place_On_Hold_Type,
+                       &(*p)->place_on_hold, ODR_CONTEXT, 14, 0, "place_on_hold") &&
+               odr_implicit_tag (o, ill_Client_Id,
+                       &(*p)->client_id, ODR_CONTEXT, 15, 1, "client_id") &&
+               odr_implicit_tag (o, ill_Item_Id,
+                       &(*p)->item_id, ODR_CONTEXT, 16, 1, "item_id") &&
+               odr_implicit_tag (o, ill_Supplemental_Item_Description,
+                       &(*p)->supplemental_item_description, ODR_CONTEXT, 17, 1, "supplemental_item_description") &&
+               odr_implicit_tag (o, ill_Cost_Info_Type,
+                       &(*p)->cost_info_type, ODR_CONTEXT, 18, 1, "cost_info_type") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->copyright_compliance, ODR_CONTEXT, 19, 1, "copyright_compliance") &&
+               odr_implicit_tag (o, ill_Third_Party_Info_Type,
+                       &(*p)->third_party_info_type, ODR_CONTEXT, 20, 1, "third_party_info_type") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->retry_flag, ODR_CONTEXT, 21, 0, "retry_flag") &&
+               odr_implicit_tag (o, odr_bool,
+                       &(*p)->forward_flag, ODR_CONTEXT, 22, 0, "forward_flag") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->requester_note, ODR_CONTEXT, 46, 1, "requester_note") &&
+               odr_explicit_tag (o, ill_String,
+                       &(*p)->forward_note, ODR_CONTEXT, 47, 1, "forward_note") &&
+               odr_implicit_settag (o, ODR_CONTEXT, 49) &&
+               (odr_sequence_of(o, (Odr_fun) ill_Extension, &(*p)->iLL_request_extensions,
+                 &(*p)->num_iLL_request_extensions, "iLL_request_extensions") || odr_ok(o)) &&
+               odr_sequence_end (o);
+}
index a42c586..7431532 100644 (file)
@@ -1,4 +1,4 @@
-/* YC 0.2: Wed Mar 01 10:28:16 CET 2000 */
+/* YC 0.2: Wed Mar 01 14:46:59 CET 2000 */
 /* Module-H ISO-10161-ILL-1 */
 
 #ifndef ill_core_H
index 683e81b..7e5d702 100644 (file)
@@ -1,4 +1,4 @@
-/* YC 0.2: Wed Mar 01 10:28:17 CET 2000 */
+/* YC 0.2: Wed Mar 01 14:47:01 CET 2000 */
 /* Module-H Z39.50-extendedService-ItemOrder-ItemRequest-1 */
 
 #ifndef item_req_H