このヘルプでは、COBOL、C#、VB.NET で使用できるさまざまな反復子について説明します。
      $set  sourceformat(free)
class-id sillyCount.
    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 main.
    *> 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 verb
        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 means the next goback will
                *> stop the iterator
                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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SillyStuff
{
    class  SillyCount
    {
        static int c = 1;
        static void Main(string[] args)
        {
            // Use foreach to loop through an iterator
            foreach(int i in doCount())
            {
                System.Console.WriteLine(i);
            }
        }
        // C# lacks specific syntax to mark a method as an iterator
        // you have to create a method with the correct concrete form
        // of the IEnumerable interface and then use the yield return
        // syntax inside the method.
        static IEnumerable<int> doCount()
        {
            while (true)
            {
                c++;
                // C# uses an implicit retun 'variable' rather than
                // the named one in COBOL. Yield return returns
                // the value as the current value of the iterator
                yield return  c;
                // then starts immediately after the
                // yield return on the next invocation of
                                // the iterator
                if (c < 50)
                {
                    yield return c * 50;
                }
                else
                {
                    // yield break marks the end of the iterator
                    yield break;
                }
            }
        }
    }
}