Add scratch file handles.
[pspp-builds.git] / src / correlations.q
index 6b708f6497fcb3863ff3d42c6fa5fcee7aa11031..f5348748d50c95365e83c69fe2bb2ef00dd44c46 100644 (file)
 
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
-   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-   02111-1307, USA. */
+   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+   02110-1301, USA. */
 
 #include <config.h>
 #include <stdlib.h>
 #include "alloc.h"
+#include "dictionary.h"
 #include "file-handle.h"
 #include "command.h"
 #include "lexer.h"
 #include "var.h"
 /* (headers) */
 
-#undef DEBUGGING
-#define DEBUGGING 1
 #include "debug-print.h"
 
 struct cor_set
   {
     struct cor_set *next;
     struct variable **v1, **v2;
-    int nv1, nv2;
+    size_t nv1, nv2;
   };
 
 struct cor_set *cor_list, *cor_last;
@@ -74,9 +73,6 @@ internal_cmd_correlations (void)
   cor_list = cor_last = NULL;
   matrix_file = NULL;
 
-  lex_match_id ("PEARSON");
-  lex_match_id ("CORRELATIONS");
-
   if (!parse_correlations (&cmd))
     return CMD_FAILURE;
   free_correlations (&cmd);
@@ -85,25 +81,26 @@ internal_cmd_correlations (void)
 }
 
 static int
-cor_custom_variables (struct cmd_correlations *cmd unused)
+cor_custom_variables (struct cmd_correlations *cmd UNUSED)
 {
   struct variable **v1, **v2;
-  int nv1, nv2;
+  size_t nv1, nv2;
   struct cor_set *cor;
 
   /* Ensure that this is a VARIABLES subcommand. */
-  if (!lex_match_id ("VARIABLES") && (token != T_ID || !is_varname (tokid))
+  if (!lex_match_id ("VARIABLES")
+      && (token != T_ID || dict_lookup_var (default_dict, tokid) != NULL)
       && token != T_ALL)
     return 2;
   lex_match ('=');
 
-  if (!parse_variables (&default_dict, &v1, &nv1,
+  if (!parse_variables (default_dict, &v1, &nv1,
                        PV_NO_DUPLICATE | PV_NUMERIC))
     return 0;
   
   if (lex_match (T_WITH))
     {
-      if (!parse_variables (&default_dict, &v2, &nv2,
+      if (!parse_variables (default_dict, &v2, &nv2,
                            PV_NO_DUPLICATE | PV_NUMERIC))
        {
          free (v1);
@@ -131,18 +128,19 @@ cor_custom_variables (struct cmd_correlations *cmd unused)
 }
 
 static int
-cor_custom_matrix (struct cmd_correlations *cmd unused)
+cor_custom_matrix (struct cmd_correlations *cmd UNUSED)
 {
   if (!lex_force_match ('('))
     return 0;
   
   if (lex_match ('*'))
-    matrix_file = inline_file;
-  else
-    matrix_file = fh_parse_file_handle ();
-
-  if (!matrix_file)
-    return 0;
+    matrix_file = NULL;
+  else 
+    {
+      matrix_file = fh_parse (FH_REF_FILE);
+      if (matrix_file == NULL)
+        return 0; 
+    }
 
   if (!lex_force_match (')'))
     return 0;
@@ -164,3 +162,9 @@ free_correlations_state (void)
       free (cor);
     }
 }
+
+/*
+  Local Variables:
+  mode: c
+  End:
+*/