Looping Through Enum

Sometimes you may need to loop through Enum. To do this, you can use List Data Type.

local procedure EnumLoop()
    MyEnum: Enum "My Enum";
    EnumIndex: List of [Integer];
    iMax, iLoop : Integer;
    EnumIndex := ScanSource.Ordinals();
    iMax := EnumIndex.Count();

    If iMax <= 0 then
    iLoop := 1;
    repeat //loop here
      MyEnum := EnumIndex.Get(iLoop);
      iLoop += 1;
    until iLoop > iMax;

Edit: A few people asking why I use repeat until in here. The snippet code above is the result after multiple experiments of trying to find a way to loop through enum. The repeat until was just a “remnant” from previous attempt. It was not designed to be the best code, it was just to share one way to loop through enum. Unfortunately, not many people see it that way.

Anyway, to simplify the code, use code below.

local procedure EnumLoop()
    currEnum: Enum "My Enum";
    currOrdinal : Integer;
    foreach currOrdinal in Enum::"My Enum".Ordinals() do begin
       currEnum := Enum::"My Enum".FromInteger(currOrdinal);
       //do something here

One thought on “Looping Through Enum

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s