COBOL | Java |
---|---|
$set sourceformat(free) class-id sillyCount. working-storage section. 01 c binary-long value 1 static. method-id main (cmds as string occurs any) static. *> Use perform to loop over an iterator perform varying i as binary-long through self::doCount() display i end-perform display space declare o = new self perform varying i as binary-long through o display i end-perform end method. *> Create an iterator by using iterator-id instead of method-id iterator-id doCount static. *> The return value of 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, equivalent to exit iterator goback *> ...and then start again directly after the goback *> on the next invocation of the iterator multiply c by 10 giving j if c less then 5 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. *> Create an iterator directly for an instance of this class *> Note use of 'self' keyword instead of giving the iterator a name iterator-id self yielding j as binary-long. perform varying j from 23 by -5 until j < 0 exit iterator end-perform end iterator. end class. |
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.