HELP NEXTLOOP R. Barrett et al, 1984, A.Sloman 1986
nextloop(<optional integer>)
In a looping construct, NEXTLOOP causes control to jump to just before
the syntax word closing the loop, for example ENDWHILE in a WHILE loop,
and ENDFOR in a FOR loop. This causes the enclosing loop to be
restarted.
If an integer N is given, the N'th enclosing loop is 'continued'. The
integer defaults to 1 if not supplied.
For example, given a vector of ordered lists of integers, find the
list with the smallest even integer.
define is_even(n);
isinteger(n) and n rem 2 == 0
enddefine;
define search_smallest_even(vector_of_lists)->smallest;
;;; return the smallest even integer
lvars vector_of_lists, smallest=999999999999999999999,
index,list,item;
for index from 1 to datalength(vector_of_lists) do
subscrv(index,vector_of_lists) -> list;
for item in list do
if is_even(item) and item < smallest then
item -> smallest;
[found ^item - start next list] =>
nextloop(2) ;;;CONTINUE 2nd enclosing loop
endif;
endfor
endfor
enddefine;
search_smallest_even({[ 1 3 7 88 502] [3 7 40 73] [5 8 20 99]}) =>
** [found 88 - start next list]
** [found 40 - start next list]
** [found 8 - start next list]
** 8
If NEXTLOOP is followed by an integer, N, the Nth enclosing loop is
re-started.
N.B: NEXTLOOP is not a procedure and cannot be called by a procedure
inside the loop: it must be used in the loop body itself. Moreover,
the integer cannot be represented by a variable or an expression evaluating
to an integer. (This effect can be achieved using * GO_ON.)
See also HELP
*QUITLOOP - to jump out of one or more enclosing loops
*QUITIF - to jump out of a loop if a condition becomes true
*QUITUNLESS - to jump out of a loop if a condition becomes false
*NEXTIF - to restart a loop if a condition becomes true
*NEXTUNLESS - to restart a loop if a condition becomes false
*LOOPS - for types of iteration available in POP-11
*CONTROL - for control structures available in POP-11
REF * SYNTAX - for more on syntactic constructs in POP-11
-----<Copyright University of Sussex 1986. All rights reserved.>-------Author: R. Barrett et al, 1984, A.Sloman 1986