+ 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
+ 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);
+ }
+