+ {
+ lex_error (lexer, _("Expecting %s or %s."),
+ "CLUSTER", "DISTANCE");
+ return false;
+ }
+ }
+ }
+ else if (lex_match_id (lexer, "CRITERIA"))
+ {
+ lex_match (lexer, T_EQUALS);
+ while (lex_token (lexer) != T_ENDCMD
+ && lex_token (lexer) != T_SLASH)
+ {
+ if (lex_match_id (lexer, "CLUSTERS"))
+ {
+ if (lex_force_match (lexer, T_LPAREN) &&
+ lex_force_int_range (lexer, "CLUSTERS", 1, INT_MAX))
+ {
+ qc->ngroups = lex_integer (lexer);
+ lex_get (lexer);
+ if (!lex_force_match (lexer, T_RPAREN))
+ return false;
+ }
+ }
+ else if (lex_match_id (lexer, "CONVERGE"))
+ {
+ if (lex_force_match (lexer, T_LPAREN) &&
+ lex_force_num_range_open (lexer, "CONVERGE", 0, DBL_MAX))
+ {
+ qc->epsilon = lex_number (lexer);
+ lex_get (lexer);
+ if (!lex_force_match (lexer, T_RPAREN))
+ return false;
+ }
+ }
+ else if (lex_match_id (lexer, "MXITER"))
+ {
+ if (lex_force_match (lexer, T_LPAREN) &&
+ lex_force_int_range (lexer, "MXITER", 1, INT_MAX))
+ {
+ qc->maxiter = lex_integer (lexer);
+ lex_get (lexer);
+ if (!lex_force_match (lexer, T_RPAREN))
+ return false;
+ }
+ }
+ else if (lex_match_id (lexer, "NOINITIAL"))
+ {
+ qc->no_initial = true;
+ }
+ else if (lex_match_id (lexer, "NOUPDATE"))
+ {
+ qc->no_update = true;
+ }
+ else
+ {
+ lex_error (lexer, NULL);
+ return false;
+ }