+ else if (lex_match_id (lexer, "MATRIX"))
+ {
+ if (! lex_force_match_id (lexer, "IN"))
+ goto error;
+ if (!lex_force_match (lexer, T_LPAREN))
+ {
+ goto error;
+ }
+ if (lex_match_id (lexer, "CORR"))
+ {
+ }
+ else if (lex_match_id (lexer, "COV"))
+ {
+ }
+ else
+ {
+ lex_error (lexer, _("Matrix input for %s must be either COV or CORR"), "FACTOR");
+ goto error;
+ }
+ if (! lex_force_match (lexer, T_EQUALS))
+ goto error;
+ if (lex_match (lexer, T_ASTERISK))
+ {
+ dict = dataset_dict (ds);
+ matrix_reader = casereader_clone (dataset_source (ds));
+ }
+ else
+ {
+ struct file_handle *fh = fh_parse (lexer, FH_REF_FILE, NULL);
+ if (fh == NULL)
+ goto error;
+
+ matrix_reader
+ = any_reader_open_and_decode (fh, NULL, &dict, NULL);