X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdictionary%2Fvariable-display.c;h=657e317a4c56e89afe52b0788ffa0caf4650de00;hb=b1fc57ddc57637e5c8bb87b478cbe585b6b4cf84;hp=1ff5f465200a549c678c4c6eb17133079a7dc9ce;hpb=2be9bee9da6a2ce27715e58128569594319abfa2;p=pspp diff --git a/src/language/dictionary/variable-display.c b/src/language/dictionary/variable-display.c index 1ff5f46520..657e317a4c 100644 --- a/src/language/dictionary/variable-display.c +++ b/src/language/dictionary/variable-display.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2010, 2011 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2010, 2011, 2013 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 @@ -65,7 +65,8 @@ cmd_variable_alignment (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - lex_force_match (lexer, T_RPAREN); + if (!lex_force_match (lexer, T_RPAREN)) + return CMD_FAILURE; } else { @@ -163,7 +164,8 @@ cmd_variable_level (struct lexer *lexer, struct dataset *ds) return CMD_FAILURE; } - lex_force_match (lexer, T_RPAREN); + if (!lex_force_match (lexer, T_RPAREN)) + return CMD_FAILURE; } else { @@ -183,3 +185,43 @@ cmd_variable_level (struct lexer *lexer, struct dataset *ds) while (lex_token (lexer) != T_ENDCMD); return CMD_SUCCESS; } + +/* Set variables' role */ +int +cmd_variable_role (struct lexer *lexer, struct dataset *ds) +{ + while (lex_match (lexer, T_SLASH)) + { + struct variable **v; + size_t nv; + enum var_role role; + size_t i; + + if ( lex_match_id (lexer, "INPUT")) + role = ROLE_INPUT; + else if ( lex_match_id (lexer, "TARGET")) + role = ROLE_TARGET; + else if ( lex_match_id (lexer, "BOTH")) + role = ROLE_BOTH; + else if ( lex_match_id (lexer, "NONE")) + role = ROLE_NONE; + else if ( lex_match_id (lexer, "PARTITION")) + role = ROLE_PARTITION; + else if ( lex_match_id (lexer, "SPLIT")) + role = ROLE_SPLIT; + else + { + lex_error (lexer, NULL); + return CMD_FAILURE; + } + + if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) + return CMD_FAILURE; + + for (i = 0; i < nv; i++) + var_set_role (v[i], role); + free (v); + } + + return CMD_SUCCESS; +}