*^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;
static struct metrics *totals=0;
/* Parse the clause specifying the factors */
-static int examine_parse_independent_vars(struct cmd_examine *cmd);
+static int examine_parse_independent_vars (const struct dictionary *dict, struct cmd_examine *cmd);
/* Per Split function */
-static bool run_examine(const struct ccase *,
- const struct casefile *cf, void *cmd_);
+static bool run_examine (const struct ccase *,
+ const struct casefile *cf, void *cmd_, const struct dataset *);
static void output_examine(void);
int
-cmd_examine(void)
+cmd_examine (struct dataset *ds)
{
bool ok;
subc_list_double_create(&percentile_list);
percentile_algorithm = PC_HAVERAGE;
- if ( !parse_examine(&cmd) )
+ if ( !parse_examine (ds, &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 (ds, run_examine, &cmd);
if ( totals )
{
if ( cmd.sbc_plot)
{
int v;
+ if ( cmd.a_plot[XMN_PLT_STEMLEAF] )
+ msg (SW, _("%s is not currently supported."), "STEMLEAF");
+
+ if ( cmd.a_plot[XMN_PLT_SPREADLEVEL] )
+ msg (SW, _("%s is not currently supported."), "SPREADLEVEL");
+
if ( cmd.a_plot[XMN_PLT_NPPLOT] )
{
for ( v = 0 ; v < n_dependent_vars; ++v )
/* Parse the PERCENTILES subcommand */
static int
-xmn_custom_percentiles(struct cmd_examine *p UNUSED)
+xmn_custom_percentiles(struct dataset *ds UNUSED,
+ struct cmd_examine *p UNUSED, void *aux UNUSED)
{
sbc_percentile = 1;
while ( lex_is_number() )
{
- subc_list_double_push(&percentile_list,lex_number());
+ subc_list_double_push (&percentile_list, lex_number());
lex_get();
if ( 0 == subc_list_double_count(&percentile_list))
{
- subc_list_double_push(&percentile_list, 5);
- subc_list_double_push(&percentile_list, 10);
- subc_list_double_push(&percentile_list, 25);
- subc_list_double_push(&percentile_list, 50);
- subc_list_double_push(&percentile_list, 75);
- subc_list_double_push(&percentile_list, 90);
- subc_list_double_push(&percentile_list, 95);
+ subc_list_double_push (&percentile_list, 5);
+ subc_list_double_push (&percentile_list, 10);
+ subc_list_double_push (&percentile_list, 25);
+ subc_list_double_push (&percentile_list, 50);
+ subc_list_double_push (&percentile_list, 75);
+ subc_list_double_push (&percentile_list, 90);
+ subc_list_double_push (&percentile_list, 95);
}
return 1;
/* TOTAL and NOTOTAL are simple, mutually exclusive flags */
static int
-xmn_custom_total(struct cmd_examine *p)
+xmn_custom_total (struct dataset *ds UNUSED, struct cmd_examine *p, void *aux UNUSED)
{
if ( p->sbc_nototal )
{
}
static int
-xmn_custom_nototal(struct cmd_examine *p)
+xmn_custom_nototal (struct dataset *ds UNUSED,
+ 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 dataset *ds, struct cmd_examine *cmd, void *aux UNUSED)
{
+ const struct dictionary *dict = dataset_dict (ds);
lex_match('=');
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dict, tokid) == NULL)
&& token != T_ALL)
{
return 2;
}
- if (!parse_variables (default_dict, &dependent_vars, &n_dependent_vars,
+ if (!parse_variables (dict, &dependent_vars, &n_dependent_vars,
PV_NO_DUPLICATE | PV_NUMERIC | PV_NO_SCRATCH) )
{
free (dependent_vars);
if ( lex_match(T_BY))
{
int success ;
- success = examine_parse_independent_vars(cmd);
+ success = examine_parse_independent_vars (dict, cmd);
if ( success != 1 ) {
free (dependent_vars);
free (totals) ;
/* Parse the clause specifying the factors */
static int
-examine_parse_independent_vars(struct cmd_examine *cmd)
+examine_parse_independent_vars (const struct dictionary *dict, struct cmd_examine *cmd)
{
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 (dict, tokid) == NULL)
&& token != T_ALL)
{
free ( sf ) ;
}
- sf->indep_var[0] = parse_variable();
+ sf->indep_var[0] = parse_variable (dict);
sf->indep_var[1] = 0;
if ( token == T_BY )
lex_match(T_BY);
- if ((token != T_ID || dict_lookup_var (default_dict, tokid) == NULL)
+ if ((token != T_ID || dict_lookup_var (dict, tokid) == NULL)
&& token != T_ALL)
{
free ( sf ) ;
return 2;
}
- sf->indep_var[1] = parse_variable();
+ sf->indep_var[1] = parse_variable (dict);
}
if ( token == '.' || token == '/' )
return 1;
- success = examine_parse_independent_vars(cmd);
+ success = examine_parse_independent_vars (dict, cmd);
if ( success != 1 )
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 ccase *first, const struct casefile *cf, void *cmd_ )
+run_examine(const struct ccase *first, const struct casefile *cf,
+ void *cmd_, const struct dataset *ds)
{
+ struct dictionary *dict = dataset_dict (ds);
struct casereader *r;
struct ccase c;
int v;
struct factor *fctr;
- output_split_file_values (first);
+ output_split_file_values (ds, first);
/* Make sure we haven't got rubbish left over from a
previous split */
fctr = next;
}
-
-
for ( v = 0 ; v < n_dependent_vars ; ++v )
metrics_precalc(&totals[v]);
- for(r = casefile_get_reader (cf);
+ for(r = casefile_get_reader (cf, NULL);
casereader_read (r, &c) ;
case_destroy (&c) )
{
const int case_no = casereader_cnum(r);
const double weight =
- dict_get_case_weight(default_dict, &c, &bad_weight_warn);
+ dict_get_case_weight(dict, &c, &bad_weight_warn);
if ( cmd->miss == XMN_LISTWISE )
{