1 /* PSPP - computes sample statistics.
2 Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
3 Written by Ben Pfaff <blp@gnu.org>.
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License as
7 published by the Free Software Foundation; either version 2 of the
8 License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
31 If the weighting variable is deleted somehow (for instance by
32 end-of-scope of TEMPORARY), weighting must be canceled.
34 Scratch vars may not be used for weighting. */
36 /* WEIGHT transformation. */
40 int src; /* `value' index of weighting variable. */
41 int dest; /* `value' index of $WEIGHT. */
47 lex_match_id ("WEIGHT");
49 if (lex_match_id ("OFF"))
50 default_dict.weight_var[0] = 0;
56 v = parse_variable ();
61 msg (SE, _("The weighting variable must be numeric."));
64 if (v->name[0] == '#')
66 msg (SE, _("The weighting variable may not be scratch."));
70 strcpy (default_dict.weight_var, v->name);
73 return lex_end_of_command ();
76 #if 0 /* FIXME: dead code. */
78 weight_trns_proc (any_trns * pt, ccase * c)
80 weight_trns *t = (weight_trns *) pt;
82 c->data[t->dest].f = c->data[t->src].f;
87 /* Global functions. */
89 /* Sets the weight_index member of dictionary D to an appropriate
90 value for the value of weight_var, and returns the weighting
91 variable if any or NULL if none. */
93 update_weighting (struct dictionary * d)
97 struct variable *v = find_dict_variable (d, d->weight_var);
98 if (v && v->type == NUMERIC)
100 d->weight_index = v->fv;
106 printf (_("bad weighting variable, canceling\n"));
108 d->weight_var[0] = 0;
112 d->weight_index = -1;
116 /* Turns off case weighting for dictionary D. */
118 stop_weighting (struct dictionary * d)
120 d->weight_var[0] = 0;