work on making transformations use relative return values
[pspp] / src / language / control / loop.c
index 34c6a1d36307f254a986357816d2d46cc736e2d3..2505d2ef29f49ce9b343bceaf798e74270a5733b 100644 (file)
@@ -326,10 +326,10 @@ loop_trns_proc (void *loop_, struct ccase **c, casenumber case_num)
       && expr_evaluate_num (loop->loop_condition, *c, case_num) != 1.0)
     goto zero_pass;
 
-  return loop->past_LOOP_index;
+  return TRNS_CONTINUE;
 
  zero_pass:
-  return loop->past_END_LOOP_index;
+  return loop->past_END_LOOP_index - loop->past_LOOP_index + 1;
 }
 
 /* Frees LOOP. */
@@ -371,10 +371,10 @@ end_loop_trns_proc (void *loop_, struct ccase **c, casenumber case_num UNUSED)
       && expr_evaluate_num (loop->loop_condition, *c, case_num) != 1.0)
     goto break_out;
 
-  return loop->past_LOOP_index;
+  return loop->past_LOOP_index - loop->past_END_LOOP_index;
 
  break_out:
-  return loop->past_END_LOOP_index;
+  return TRNS_CONTINUE;
 }
 
 /* Executes BREAK. */