/* PSPP - a program for statistical analysis.
- Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc
+ Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2016 Free Software Foundation, Inc
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
}
/* Returns a variable name for storing ranks of a variable named SRC_NAME
- accoring to the rank function F. The name chosen will not be one already in
+ according to the rank function F. The name chosen will not be one already in
DICT or NEW_NAMES.
If successful, adds the new name to NEW_NAMES and returns the name added.
cmd->rs = pool_realloc (cmd->pool, cmd->rs, sizeof (*cmd->rs) * (cmd->n_rs + 1));
rs = &cmd->rs[cmd->n_rs];
-
+
if (lex_match_id (lexer, "RANK"))
{
rs->rfunc = RANK;
{
if ( !lex_force_match (lexer, T_LPAREN))
return false;
-
+
if (! lex_force_int (lexer) )
return false;
-
+
cmd->k_ntiles = lex_integer (lexer);
lex_get (lexer);
-
+
if ( !lex_force_match (lexer, T_RPAREN))
return false;
}
else
{
+ lex_error (lexer, NULL);
return false;
}
const char *name = lex_tokcstr (lexer);
if ( var_count >= subcase_get_n_fields (&cmd->sc) )
- msg (SE, _("Too many variables in INTO clause."));
+ msg (SE, _("Too many variables in %s clause."), "INTO");
else if ( dict_lookup_var (cmd->dict, name) != NULL )
msg (SE, _("Variable %s already exists."), name);
else if (string_set_contains (new_names, name))
function_name[f], var_get_name (src_var));
pool_label = pool_strdup (cmd->pool, ds_cstr (&label));
-
+
ds_destroy (&label);
return pool_label;
string_set_init (&new_names);
if (lex_match_id (lexer, "VARIABLES"))
- lex_force_match (lexer, T_EQUALS);
+ if (! lex_force_match (lexer, T_EQUALS))
+ goto error;
if (!parse_sort_criteria (lexer, rank.dict,
&rank.sc,
while (lex_token (lexer) != T_ENDCMD )
{
- lex_force_match (lexer, T_SLASH);
+ if (! lex_force_match (lexer, T_SLASH))
+ goto error;
if (lex_match_id (lexer, "TIES"))
{
- lex_force_match (lexer, T_EQUALS);
+ if (! lex_force_match (lexer, T_EQUALS))
+ goto error;
if (lex_match_id (lexer, "MEAN"))
{
rank.ties = TIES_MEAN;
}
else if (lex_match_id (lexer, "FRACTION"))
{
- lex_force_match (lexer, T_EQUALS);
+ if (! lex_force_match (lexer, T_EQUALS))
+ goto error;
if (lex_match_id (lexer, "BLOM"))
{
rank.fraction = FRAC_BLOM;
}
else if (lex_match_id (lexer, "PRINT"))
{
- lex_force_match (lexer, T_EQUALS);
+ if (! lex_force_match (lexer, T_EQUALS))
+ goto error;
if (lex_match_id (lexer, "YES"))
{
rank.print = true;
}
else if (lex_match_id (lexer, "MISSING"))
{
- lex_force_match (lexer, T_EQUALS);
+ if (! lex_force_match (lexer, T_EQUALS))
+ goto error;
if (lex_match_id (lexer, "INCLUDE"))
{
rank.exclude = MV_SYSTEM;
{
int v;
- tab_output_text (0, _("Variables Created By RANK"));
+ tab_output_text_format (0, _("Variables Created By %s"), "RANK");
tab_output_text (0, "");
for (i = 0 ; i < rank.n_rs ; ++i )
var = dict_create_var_assert (d, rs->dest_names[i], 0);
var_set_both_formats (var, &dest_format[rs->rfunc]);
- var_set_label (var, rs->dest_labels[i], false);
+ var_set_label (var, rs->dest_labels[i]);
iv->output_vars[j] = var;
}