#include <config.h>
-#include <language/data-io/inpt-pgm.h>
#include <float.h>
#include <stdlib.h>
#include <language/command.h>
#include <language/data-io/data-reader.h>
#include <language/data-io/file-handle.h>
+#include <language/data-io/inpt-pgm.h>
#include <language/expressions/public.h>
#include <language/lexer/lexer.h>
#include <libpspp/assertion.h>
#include <libpspp/compiler.h>
#include <libpspp/message.h>
-#include <libpspp/message.h>
#include <libpspp/misc.h>
#include <libpspp/str.h>
casenumber case_nr; /* Incremented by END CASE transformation. */
struct caseinit *init;
- size_t value_cnt;
+ struct caseproto *proto;
};
static void destroy_input_program (struct input_program_pgm *);
inp = xmalloc (sizeof *inp);
inp->trns_chain = NULL;
inp->init = NULL;
+ inp->proto = NULL;
inside_input_program = true;
for (;;)
/* Figure out how to initialize each input case. */
inp->init = caseinit_create ();
caseinit_mark_for_init (inp->init, dataset_dict (ds));
- inp->value_cnt = dict_get_next_value_idx (dataset_dict (ds));
+ inp->proto = caseproto_ref (dict_get_proto (dataset_dict (ds)));
proc_set_active_file_data (
- ds, casereader_create_sequential (NULL, inp->value_cnt, CASENUMBER_MAX,
+ ds, casereader_create_sequential (NULL, inp->proto, CASENUMBER_MAX,
&input_program_casereader_class, inp));
return CMD_SUCCESS;
input_program_casereader_read (struct casereader *reader UNUSED, void *inp_)
{
struct input_program_pgm *inp = inp_;
- struct ccase *c = case_create (inp->value_cnt);
+ struct ccase *c = case_create (inp->proto);
do
{
{
trns_chain_destroy (pgm->trns_chain);
caseinit_destroy (pgm->init);
+ caseproto_unref (pgm->proto);
free (pgm);
}
}
if (e)
{
- msg (SE, _("COLUMN subcommand multiply specified."));
+ msg (SE, _("%s subcommand may be given at most once."), "COLUMN");
expr_free (e);
return CMD_CASCADING_FAILURE;
}