Fix bug #17100.
authorBen Pfaff <blp@gnu.org>
Thu, 26 Jul 2007 01:52:04 +0000 (01:52 +0000)
committerBen Pfaff <blp@gnu.org>
Thu, 26 Jul 2007 01:52:04 +0000 (01:52 +0000)
* command/data-list.sh: Add tests for multi-record DATA LIST with
and without empty trailing record.

* data-list.c (read_from_data_list_fixed): Handle multi-record
DATA LIST correctly.

src/language/data-io/ChangeLog
src/language/data-io/data-list.c
tests/ChangeLog
tests/command/data-list.sh

index ef3235121892c74fe1f4256478620d7aebf924c5..c1b9aaf1a1a37e7bc4b9b4a2197f7b07da60e5ff 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #17100.
+       * data-list.c (read_from_data_list_fixed): Handle multi-record
+       DATA LIST correctly.
+
 2007-07-11  Ben Pfaff  <blp@gnu.org>
 
        * get.c (map_case): Create destination case instead of leaving it
index 76adb00c1415639253b6831d267d4caf1de67f05..9f77ed8d9a135b7751ba408662779e70d1b7b70a 100644 (file)
@@ -683,9 +683,15 @@ read_from_data_list_fixed (const struct data_list_pgm *dls, struct ccase *c)
       line = dfm_get_record (dls->reader);
 
       ll_for_each_continue (spec, struct dls_var_spec, ll, &dls->specs)
-        data_in (ss_substr (line, spec->first_column - 1, spec->input.w),
-                 spec->input.type, spec->input.d, spec->first_column,
-                 case_data_rw_idx (c, spec->fv), fmt_var_width (&spec->input));
+        {
+          if (row < spec->record)
+            break;
+
+          data_in (ss_substr (line, spec->first_column - 1, spec->input.w),
+                   spec->input.type, spec->input.d, spec->first_column,
+                   case_data_rw_idx (c, spec->fv),
+                   fmt_var_width (&spec->input));
+        }
 
       dfm_forward_record (dls->reader);
     }
index 795da07ec61f07b9ca1c93cf1be8a41d9271ea79..2b9cf8087cef99e789bc65ca516ef9cd39a0ff50 100644 (file)
@@ -1,7 +1,13 @@
+2007-07-25  Ben Pfaff  <blp@gnu.org>
+
+       Fix bug #17100.
+       * command/data-list.sh: Add tests for multi-record DATA LIST with
+       and without empty trailing record.
+
 2007-07-24  Ben Pfaff  <blp@gnu.org>
 
-       * tests/command/flip.sh: Add tests to avoid regression on bugs
-       #20493, #20494.
+       * command/flip.sh: Add tests to avoid regression on bugs #20493,
+       #20494.
 
 2007-07-22  Ben Pfaff  <blp@gnu.org>
 
index d16521a102168e9cfc4516b83042e6812dacf0ee..01a682c1e969175a317f012bbeb89af3c4a28791 100755 (executable)
@@ -102,6 +102,40 @@ begin data.
                3       
                        4
                        
+end data.
+list.
+
+* Test DATA LIST FIXED with multiple records.
+data list fixed notable
+       /1 start 1-20 (adate)
+       /2 end 1-20 (adate)
+       /3 count 1-3.
+begin data.
+07-22-2007
+10-06-2007
+321
+07-14-1789
+08-26-1789
+4
+01-01-1972
+12-31-1999
+682
+end data.
+list.
+
+* Test that DATA LIST FIXED works with an empty trailing record.
+data list fixed notable records=2/x 1 y 2.
+begin data.
+12
+
+34
+
+56
+
+78
+
+90
+
 end data.
 list.
 EOF
@@ -155,6 +189,18 @@ diff -b  $TEMPDIR/pspp.list - << EOF
      .        .       3.00      .   
      .        .        .       4.00 
      .        .        .        .   
+               start                  end count
+-------------------- -------------------- -----
+          07/22/2007           10/06/2007   321
+          07/14/1789           08/26/1789     4
+          01/01/1972           12/31/1999   682
+x y
+- -
+1 2
+3 4
+5 6
+7 8
+9 0
 EOF
 if [ $? -ne 0 ] ; then fail ; fi