Provisional new image is added for univariate analysis.
[pspp] / src / language / data-io / data-list.c
index 17c6032d252b97181864f43e4158900b071316fe..834a2f8d7f7a1fe72b9970ba99c470c1b64a443b 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006, 2007, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2007, 2009, 2010, 2011, 2012, 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
@@ -297,7 +297,7 @@ cmd_data_list (struct lexer *lexer, struct dataset *ds)
   fh_unref (fh);
   free (encoding);
 
-  return CMD_SUCCESS;
+  return CMD_DATA_LIST;
 
  error:
   data_parser_destroy (parser);
@@ -429,9 +429,28 @@ parse_free (struct lexer *lexer, struct dictionary *dict,
 
       if (lex_match (lexer, T_LPAREN))
        {
-         if (!parse_format_specifier (lexer, &input)
-              || !fmt_check_input (&input)
-              || !lex_force_match (lexer, T_RPAREN))
+          char type[FMT_TYPE_LEN_MAX + 1];
+
+         if (!parse_abstract_format_specifier (lexer, type, &input.w,
+                                                &input.d))
+            return NULL;
+          if (!fmt_from_name (type, &input.type))
+            {
+              msg (SE, _("Unknown format type `%s'."), type);
+              return NULL;
+            }
+
+          /* If no width was included, use the minimum width for the type.
+             This isn't quite right, because DATETIME by itself seems to become
+             DATETIME20 (see bug #30690), whereas this will become
+             DATETIME17.  The correct behavior is not documented. */
+          if (input.w == 0)
+            {
+              input.w = fmt_min_input_width (input.type);
+              input.d = 0;
+            }
+
+          if (!fmt_check_input (&input) || !lex_force_match (lexer, T_RPAREN))
             return NULL;
 
           /* As a special case, N format is treated as F format