#include <config.h>
-#include "roc.h"
#include <data/procedure.h>
#include <language/lexer/variable-parser.h>
#include <language/lexer/value-parser.h>
+#include <language/command.h>
#include <language/lexer/lexer.h>
#include <data/casegrouper.h>
const struct variable **vars;
const struct dictionary *dict;
- struct variable *state_var ;
+ const struct variable *state_var ;
union value state_value;
/* Plot the roc curve */
if (!parse_variables_const (lexer, dict, &roc.vars, &roc.n_vars,
PV_APPEND | PV_NO_DUPLICATE | PV_NUMERIC))
- return 2;
+ goto error;;
if ( ! lex_force_match (lexer, T_BY))
{
- return 2;
+ goto error;;
}
roc.state_var = parse_variable (lexer, dict);
if ( !lex_force_match (lexer, '('))
{
- return 2;
+ goto error;;
}
parse_value (lexer, &roc.state_value, var_get_width (roc.state_var));
if ( !lex_force_match (lexer, ')'))
{
- return 2;
+ goto error;;
}
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
}
}
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
}
else if (lex_match_id (lexer, "PRINT"))
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
}
}
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
lex_force_match (lexer, ')');
}
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
lex_force_match (lexer, ')');
}
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
lex_force_match (lexer, ')');
}
else
{
lex_error (lexer, NULL);
- return 2;
+ goto error;;
}
}
}
}
}
- run_roc (ds, &roc);
+ if ( ! run_roc (ds, &roc))
+ goto error;;
- return 1;
+ return CMD_SUCCESS;
+
+ error:
+ free (roc.vars);
+ return CMD_FAILURE;
}
struct subcase up_ordering;
struct subcase down_ordering;
+ struct casewriter *neg_wtr = NULL;
+
struct casereader *input = casereader_create_filter_missing (reader,
roc->vars, roc->n_vars,
roc->exclude,
NULL,
NULL);
+ input = casereader_create_filter_missing (input,
+ &roc->state_var, 1,
+ roc->exclude,
+ NULL,
+ NULL);
- struct casewriter *neg_wtr = autopaging_writer_create (casereader_get_proto (input));
+ neg_wtr = autopaging_writer_create (casereader_get_proto (input));
prepare_cutpoints (roc, rs, input);