X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fdictionary%2Fvariable-display.c;h=63bc6d472c6f4c8b01ac221b339ab6e5d518a3e9;hb=cfc68512bf002c16d4a0f2c0acff764f96a2af3e;hp=1ff5f465200a549c678c4c6eb17133079a7dc9ce;hpb=2be9bee9da6a2ce27715e58128569594319abfa2;p=pspp diff --git a/src/language/dictionary/variable-display.c b/src/language/dictionary/variable-display.c index 1ff5f46520..63bc6d472c 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 @@ -183,3 +183,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_OUTPUT; + 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; +}