X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Faggregate.c;h=5979204d08c0c407a078f2ca1ad367665ff0ed67;hb=c9e2bf6cb988f8c00d89ccf191a28388cccbd868;hp=fb955330a4102e0aea3f13156573f4d9414a2438;hpb=2feb80cc7e27079c77255ee8ab6a9aa373980abb;p=pspp-builds.git diff --git a/src/aggregate.c b/src/aggregate.c index fb955330..5979204d 100644 --- a/src/aggregate.c +++ b/src/aggregate.c @@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. */ + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA + 02110-1301, USA. */ #include #include "error.h" @@ -33,12 +33,16 @@ #include "pool.h" #include "settings.h" #include "sfm-write.h" +#include "sort-prs.h" #include "sort.h" #include "str.h" #include "var.h" #include "vfm.h" #include "vfmP.h" +#include "gettext.h" +#define _(msgid) gettext (msgid) + /* Specifies how to make an aggregate variable. */ struct agr_var { @@ -208,18 +212,13 @@ cmd_aggregate (void) lex_match ('='); agr.sort = sort_parse_criteria (default_dict, &agr.break_vars, &agr.break_var_cnt, - &saw_direction); + &saw_direction, NULL); if (agr.sort == NULL) goto error; for (i = 0; i < agr.break_var_cnt; i++) - { - struct variable *v = dict_clone_var (agr.dict, agr.break_vars[i], - agr.break_vars[i]->name, - agr.break_vars[i]->longname - ); - assert (v != NULL); - } + dict_clone_var_assert (agr.dict, agr.break_vars[i], + agr.break_vars[i]->name); /* BREAK must follow the options. */ break; @@ -279,7 +278,8 @@ cmd_aggregate (void) } else { - agr.writer = sfm_open_writer (out_file, agr.dict, get_scompression (), 0); + agr.writer = sfm_open_writer (out_file, agr.dict, + sfm_writer_default_options ()); if (agr.writer == NULL) goto error; @@ -455,7 +455,8 @@ parse_aggregate_functions (struct agr_proc *agr) arg[i].f = tokval; type = NUMERIC; } else { - msg (SE, _("Missing argument %d to %s."), i + 1, function->name); + msg (SE, _("Missing argument %d to %s."), i + 1, + function->name); goto error; } @@ -495,8 +496,7 @@ parse_aggregate_functions (struct agr_proc *agr) || func_index == FIN || func_index == FOUT) && ((src[0]->type == NUMERIC && arg[0].f > arg[1].f) || (src[0]->type == ALPHA - && st_compare_pad (arg[0].c, strlen (arg[0].c), - arg[1].c, strlen (arg[1].c)) > 0))) + && str_compare_rpad (arg[0].c, arg[1].c) > 0))) { union value t = arg[0]; arg[0] = arg[1]; @@ -527,7 +527,6 @@ parse_aggregate_functions (struct agr_proc *agr) /* Create the target variable in the aggregate dictionary. */ { - static const struct fmt_spec f8_2 = {FMT_F, 8, 2}; struct variable *destvar; v->function = func_index; @@ -543,10 +542,11 @@ parse_aggregate_functions (struct agr_proc *agr) } if (function->alpha_type == ALPHA) - destvar = dict_clone_var (agr->dict, v->src, 0, dest[i] ); - else if (v->src->type == NUMERIC - || function->alpha_type == NUMERIC) + destvar = dict_clone_var (agr->dict, v->src, dest[i]); + else { + assert (v->src->type == NUMERIC + || function->alpha_type == NUMERIC); destvar = dict_create_var (agr->dict, dest[i], 0); if (destvar != NULL) { @@ -727,7 +727,8 @@ accumulate_aggregate_info (struct agr_proc *agr, { const union value *v = case_data (input, iter->src->fv); - if ((!iter->include_missing && is_missing (v, iter->src)) + if ((!iter->include_missing + && mv_is_value_missing (&iter->src->miss, v)) || (iter->include_missing && iter->src->type == NUMERIC && v->f == SYSMIS)) {