NETJVM 

列挙と列挙型

列挙は、曜日の値などの定数値のリストを表す。その値やシンボリック名を定義する列挙型を宣言できる。その後、値を名前別に参照できる。

たとえば、曜日の列挙型は次のように宣言する。

enum-id DaysOfWeek as "DaysOfWeek".
       01 binary-long. 
          78 Sunday value 0. *> optional, as 0 is the default 
          78 Monday.         *> by default, this is value 1
          78 Tuesday.        *> by default, this is value 2 and so on
          78 Wednesday.      
          78 Thursday.       
          78 Friday. 
          78 Saturday. 
       end enum.

これで、コード内でこの列挙型を次のように参照できるようになる。

set today to type DaysOfWeek::Monday

DaysOfWeek::Monday は binary-long の値 1 を表す。

コンパイラーは、列挙の値を含む配列を返す「values」という静的メソッドを追加する。このメソッドと PERFORM THROUGH コンストラクトを一緒に使用して、列挙型の値を反復できる。

ENUM-ID 段落を使用して列挙を宣言できる。この後には、次の内容で構成される作業場所節が続く。

.NET では、属性 System.FlagsAttribute を設定する必要がある。JVM では不要。列挙にこの属性が適用されると、ビット設定として各値は別個と見なされるため、値の組み合わせが可能になる。次に例を示す。

enum-id DaysOfWeek attribute System.FlagsAttribute.
注:

COBOL for JVM では、Java と同様に、列挙宣言で列挙クラスが定義される。このクラスは、java.lang.Enum から派生するクラスである。Java では、この列挙クラスはメソッドおよびその他のフィールドをユーザーが明示的に宣言できるが、COBOL では許容されない。