#include <data/value-labels.h>
#include <data/variable.h>
#include <language/command.h>
+#include <language/dictionary/split-file.h>
#include <language/lexer/lexer.h>
#include <libpspp/alloc.h>
#include <libpspp/compiler.h>
*^variables=custom;
+total=custom;
+nototal=custom;
- +missing=miss:pairwise/!listwise,
- rep:report/!noreport,
- incl:include/!exclude;
+ missing=miss:pairwise/!listwise,
+ rep:report/!noreport,
+ incl:include/!exclude;
+compare=cmp:variables/!groups;
+percentiles=custom;
+id=var;
/* Per Split function */
-static bool run_examine(const struct casefile *cf, void *cmd_);
+static bool run_examine(const struct ccase *,
+ const struct casefile *cf, void *cmd_);
static void output_examine(void);
subc_list_double_create(&percentile_list);
percentile_algorithm = PC_HAVERAGE;
- if ( !parse_examine(&cmd) )
+ if ( !parse_examine(&cmd, NULL) )
return CMD_FAILURE;
/* If /MISSING=INCLUDE is set, then user missing values are ignored */
subc_list_double_push(&percentile_list, 75);
}
- ok = multipass_procedure_with_splits (run_examine, &cmd);
+ ok = multipass_procedure_with_splits (current_dataset, run_examine, &cmd);
if ( totals )
{
/* Parse the PERCENTILES subcommand */
static int
-xmn_custom_percentiles(struct cmd_examine *p UNUSED)
+xmn_custom_percentiles(struct cmd_examine *p UNUSED, void *aux UNUSED)
{
sbc_percentile = 1;
/* TOTAL and NOTOTAL are simple, mutually exclusive flags */
static int
-xmn_custom_total(struct cmd_examine *p)
+xmn_custom_total(struct cmd_examine *p, void *aux UNUSED)
{
if ( p->sbc_nototal )
{
}
static int
-xmn_custom_nototal(struct cmd_examine *p)
+xmn_custom_nototal(struct cmd_examine *p, void *aux UNUSED)
{
if ( p->sbc_total )
{
/* Parser for the variables sub command
Returns 1 on success */
static int
-xmn_custom_variables(struct cmd_examine *cmd )
+xmn_custom_variables(struct cmd_examine *cmd, void *aux UNUSED)
{
lex_match('=');
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
{
return 2;
}
- if (!parse_variables (default_dict, &dependent_vars, &n_dependent_vars,
+ if (!parse_variables (dataset_dict (current_dataset), &dependent_vars, &n_dependent_vars,
PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) )
{
free (dependent_vars);
int success;
struct factor *sf = xmalloc (sizeof *sf);
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
{
free ( sf ) ;
lex_match(T_BY);
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dataset_dict (current_dataset), tokid) == NULL)
&& token != T_ALL)
{
free ( sf ) ;
-static int bad_weight_warn = 1;
+static bool bad_weight_warn = true;
/* Perform calculations for the sub factors */
}
static bool
-run_examine(const struct casefile *cf, void *cmd_ )
+run_examine(const struct ccase *first, const struct casefile *cf, void *cmd_ )
{
struct casereader *r;
struct ccase c;
const struct cmd_examine *cmd = (struct cmd_examine *) cmd_;
+ struct factor *fctr;
+
+ output_split_file_values (first);
+
/* Make sure we haven't got rubbish left over from a
previous split */
- struct factor *fctr = factors;
+ fctr = factors;
while (fctr)
{
struct factor *next = fctr->next;
const int case_no = casereader_cnum(r);
const double weight =
- dict_get_case_weight(default_dict, &c, &bad_weight_warn);
+ dict_get_case_weight(dataset_dict (current_dataset), &c, &bad_weight_warn);
if ( cmd->miss == XMN_LISTWISE )
{