Iterators in Managed COBOL
class-id sillyCount.
working-storage section.
01 c binary-long value 1 static.
method-id main static.
01 i binary-long.
procedure division using by value cmds as string occurs any.
*> Use perform to loop over an iterator
perform varying i through self::doCount()
display i
end-perform
end method.
*> Create an iterator by defining a member as an iterator
*> Using iterator-id instead of method-id
iterator-id doCount static.
*> The return value if the iterator is defined using the
*> yielding keyword
procedure division yielding j as binary-long.
perform until false
add 1 to c
move c to j
*> Until the iterator is stopped, it will yield on
*> a goback verb
goback
*> then start again directly after the goback
*> on the next invocation of the iterator
multiply c by 10 giving j
if c less then 50
goback
else
*> Stop iterator - as it says
*> Control goes back to the calling routine.
stop iterator
goback
end-if
end-perform
*> COBOL will implicitly stop iterator at the
*> end of the iterator definition.
*> In this example – the code never gets here.
end iterator.
end class.
Iterators in Java
In Java there is no YIELD feature, so the iterator
implementation has to take care of state.
Portions of these examples were produced by Dr. Frank McCown, Harding University Computer Science Dept, and are licensed under a Creative Commons License.