X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fapply-dict.c;h=9f6867cc4ea3da247a04a677dbd9b8733126edab;hb=205ac3afa4c2b19c85819d8695abf3975bb11807;hp=76820b7f9c41d2f0e717d7658ef65a48fa3d30f1;hpb=2bfc3a138f308ffb38634a92b23bdc7b62592324;p=pspp-builds.git diff --git a/src/apply-dict.c b/src/apply-dict.c index 76820b7f..9f6867cc 100644 --- a/src/apply-dict.c +++ b/src/apply-dict.c @@ -42,9 +42,6 @@ cmd_apply_dictionary (void) int i; - lex_match_id ("APPLY"); - lex_match_id ("DICTIONARY"); - lex_match_id ("FROM"); lex_match ('='); handle = fh_parse_file_handle (); @@ -55,10 +52,10 @@ cmd_apply_dictionary (void) if (dict == NULL) return CMD_FAILURE; - for (i = 0; i < dict->nvar; i++) + for (i = 0; i < dict_get_var_cnt (dict); i++) { - struct variable *s = dict->var[i]; - struct variable *t = find_variable (s->name); + struct variable *s = dict_get_var (dict, i); + struct variable *t = dict_lookup_var (default_dict, s->name); if (t == NULL) continue; @@ -150,6 +147,7 @@ cmd_apply_dictionary (void) t->miss_type = s->miss_type; memcpy (t->missing, s->missing, sizeof s->missing); } + skip_missing_values: ; if (s->type == NUMERIC) { @@ -163,29 +161,14 @@ cmd_apply_dictionary (void) "and target files.")); /* Weighting. */ - { - const int tfw = find_variable (default_dict.weight_var) != 0; - const int sfw = dict->weight_var[0] != 0; - struct variable *w; - - switch (10 * tfw + sfw) - { - case 10: - /* The working file retains its weighting variable. */ - break; - - case 00: - case 01: - /* Fall through to case 11. */ - - case 11: - w = find_variable (dict->weight_var); - if (w) - strcpy (default_dict.weight_var, dict->weight_var); - break; - } - } - skip_missing_values: ; + if (dict_get_weight (dict) != NULL) + { + struct variable *new_weight + = dict_lookup_var (default_dict, dict_get_weight (dict)->name); + + if (new_weight != NULL) + dict_set_weight (default_dict, new_weight); + } sfm_maybe_close (handle);