+ }
+
+ input = proc_open (ds);
+ for (; (c = casereader_read (input)) != NULL; case_unref (c))
+ for (i = 0; i < arc.var_cnt; i++)
+ {
+ union arc_value v, *vp, **vpp;
+
+ if (var_is_numeric (arc.src_vars[i]))
+ v.f = case_num (c, arc.src_vars[i]);
+ else
+ v.c = (char *) case_str (c, arc.src_vars[i]);
+
+ vpp = (union arc_value **) hsh_probe (arc.src_values[i], &v);
+ if (*vpp == NULL)
+ {
+ vp = pool_alloc (arc.src_values_pool, sizeof *vp);
+ if (var_is_numeric (arc.src_vars[i]))
+ vp->f = v.f;
+ else
+ vp->c = pool_clone (arc.src_values_pool,
+ v.c, var_get_width (arc.src_vars[i]));
+ *vpp = vp;
+ }
+ }
+ ok = casereader_destroy (input);
+ ok = proc_commit (ds) && ok;