Rename procedure.[ch] to dataset.[ch].
[pspp-builds.git] / src / language / stats / rank.q
index c225370e459269cc572430f87e533f7a591662c4..2a0b5c99c9370a93aea3389425ccd304aaf913a8 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2006, 2007, 2009, 2010, 2011 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
 
 #include <config.h>
 
+#include <gsl/gsl_cdf.h>
 #include <limits.h>
 #include <math.h>
 
-#include <data/case.h>
-#include <data/casegrouper.h>
-#include <data/casereader.h>
-#include <data/casewriter.h>
-#include <data/dictionary.h>
-#include <data/format.h>
-#include <data/missing-values.h>
-#include <data/procedure.h>
-#include <data/short-names.h>
-#include <data/subcase.h>
-#include <data/variable.h>
-#include <language/command.h>
-#include <language/stats/sort-criteria.h>
-#include <libpspp/compiler.h>
-#include <libpspp/taint.h>
-#include <math/sort.h>
-#include <output/manager.h>
-#include <output/table.h>
-
-#include <gsl/gsl_cdf.h>
+#include "data/case.h"
+#include "data/casegrouper.h"
+#include "data/casereader.h"
+#include "data/casewriter.h"
+#include "data/dataset.h"
+#include "data/dictionary.h"
+#include "data/format.h"
+#include "data/missing-values.h"
+#include "data/short-names.h"
+#include "data/subcase.h"
+#include "data/variable.h"
+#include "language/command.h"
+#include "language/stats/sort-criteria.h"
+#include "libpspp/compiler.h"
+#include "libpspp/taint.h"
+#include "math/sort.h"
+#include "output/tab.h"
 
 #include "gettext.h"
 #define _(msgid) gettext (msgid)
@@ -200,7 +198,8 @@ fraction_name(void)
 /* Create a label on DEST_VAR, describing its derivation from SRC_VAR and F */
 static void
 create_var_label (struct variable *dest_var,
-                 const struct variable *src_var, enum RANK_FUNC f)
+                 const struct variable *src_var, enum RANK_FUNC f,
+                  const char *dict_encoding)
 {
   struct string label;
   ds_init_empty (&label);
@@ -226,7 +225,7 @@ create_var_label (struct variable *dest_var,
     ds_put_format (&label, _("%s of %s"),
                    function_name[f], var_get_name (src_var));
 
-  var_set_label (dest_var, ds_cstr (&label));
+  var_set_label (dest_var, ds_cstr (&label), dict_encoding, false);
 
   ds_destroy (&label);
 }
@@ -675,15 +674,18 @@ cmd_rank (struct lexer *lexer, struct dataset *ds)
       int v;
       for ( v = 0 ; v < n_src_vars ;  v ++ )
        {
+          struct dictionary *dict = dataset_dict (ds);
+
          if ( rank_specs[i].destvars[v] == NULL )
            {
              rank_specs[i].destvars[v] =
-               create_rank_variable (dataset_dict(ds), rank_specs[i].rfunc, src_vars[v], NULL);
+               create_rank_variable (dict, rank_specs[i].rfunc, src_vars[v], NULL);
            }
 
          create_var_label ( rank_specs[i].destvars[v],
                             src_vars[v],
-                            rank_specs[i].rfunc);
+                            rank_specs[i].rfunc,
+                             dict_get_encoding (dict));
        }
     }
 
@@ -692,7 +694,7 @@ cmd_rank (struct lexer *lexer, struct dataset *ds)
       int v;
 
       tab_output_text (0, _("Variables Created By RANK"));
-      tab_output_text (0, "\n");
+      tab_output_text (0, "");
 
       for (i = 0 ; i <  n_rank_specs ; ++i )
        {
@@ -797,9 +799,9 @@ cmd_rank (struct lexer *lexer, struct dataset *ds)
 static int
 rank_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_rank *cmd UNUSED, void *aux UNUSED)
 {
-  lex_match (lexer, '=');
+  lex_match (lexer, T_EQUALS);
 
-  if ((lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL)
+  if ((lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), lex_tokcstr (lexer)) == NULL)
       && lex_token (lexer) != T_ALL)
       return 2;
 
@@ -809,7 +811,7 @@ rank_custom_variables (struct lexer *lexer, struct dataset *ds, struct cmd_rank
 
   if ( lex_match (lexer, T_BY)  )
     {
-      if ((lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), lex_tokid (lexer)) == NULL))
+      if ((lex_token (lexer) != T_ID || dict_lookup_var (dataset_dict (ds), lex_tokcstr (lexer)) == NULL))
        {
          return 2;
        }
@@ -848,9 +850,9 @@ parse_rank_function (struct lexer *lexer, struct dictionary *dict, struct cmd_ra
       while( lex_token (lexer) == T_ID )
        {
 
-         if ( dict_lookup_var (dict, lex_tokid (lexer)) != NULL )
+         if ( dict_lookup_var (dict, lex_tokcstr (lexer)) != NULL )
            {
-             msg(SE, _("Variable %s already exists."), lex_tokid (lexer));
+             msg(SE, _("Variable %s already exists."), lex_tokcstr (lexer));
              return 0;
            }
          if ( var_count >= subcase_get_n_fields (&sc) )
@@ -859,7 +861,7 @@ parse_rank_function (struct lexer *lexer, struct dictionary *dict, struct cmd_ra
              return 0;
            }
 
-         destvar = create_rank_variable (dict, f, src_vars[var_count], lex_tokid (lexer));
+         destvar = create_rank_variable (dict, f, src_vars[var_count], lex_tokcstr (lexer));
          rank_specs[n_rank_specs - 1].destvars[var_count] = destvar ;
 
          lex_get (lexer);
@@ -933,13 +935,13 @@ rank_custom_ntiles (struct lexer *lexer, struct dataset *ds, struct cmd_rank *cm
 {
   struct dictionary *dict = dataset_dict (ds);
 
-  if ( lex_force_match (lexer, '(') )
+  if ( lex_force_match (lexer, T_LPAREN) )
     {
       if ( lex_force_int (lexer) )
        {
          k_ntiles = lex_integer (lexer);
          lex_get (lexer);
-         lex_force_match (lexer, ')');
+         lex_force_match (lexer, T_RPAREN);
        }
       else
        return 0;