+/* -------------------- Resource 2 ------------------------- */
+
+int z_StringOrNumeric(ODR, Z_StringOrNumeric **, int);
+int z_IntUnit(ODR, Z_IntUnit **, int);
+
+int z_Estimate2(ODR o, Z_Estimate2 **p, int opt)
+{
+ if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+ return
+ odr_explicit(o, z_StringOrNumeric, &(*p)->type, ODR_CONTEXT, 1, 0) &&
+ odr_implicit(o, z_IntUnit, &(*p)->value, ODR_CONTEXT, 2, 0) &&
+ odr_sequence_end(o);
+}
+
+int z_ResourceReport2(ODR o, Z_ResourceReport2 **p, int opt)
+{
+if (!odr_sequence_begin(o, p, sizeof(**p)))
+ return opt && odr_ok(o);
+return
+ odr_implicit_settag(o, ODR_CONTEXT, 1) &&
+ (odr_sequence_of(o, (Odr_fun)z_Estimate2, &(*p)->estimates,
+ &(*p)->num_estimates) || odr_ok(o)) &&
+ odr_implicit(o, odr_visiblestring, &(*p)->message, ODR_CONTEXT, 2, 1) &&
+ odr_sequence_end(o);
+}
+