列挙

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

コンテキスト:

プログラム構造 

enum-specification

列挙の仕様 enum-header type-specifier enum-field

enum-header

列挙見出しの構文 access-modifier attribute-clause

enum-field

列挙フィールドの構文 type-specifier type-specifier

enum-id Action.
   78 #Start.   *> Start is a reserved word so use '#' symbol
   78 #Stop.
   78 #Rewind.
   78 #Forward.
end enum.

enum-id Status.
   78 Flunk value 50.
   78 Pass  value 70.
   78 Excel value 90.
end enum.

class-id MainClass.
method-id main static.
   declare a = type Action::Stop
   if a not = type Action::Start
       display a & " is " & a as binary-long   *> Prints "Stop is 1"
    end-if
   display type Status::Pass as binary-long    *> prints 70
   display type Status::Pass *> prints "Pass"
end method.
end class.

01 レベルの記述項の例:

       enum-id Permission.
       01 #Execute value 1 b-left 0.
       01 #Write value 1 b-left 1.
       01 #Read value 1 b-left 2.
       end enum.

列挙のサンプルも参照。このサンプルは、[スタート > すべてのプログラム > Micro Focus Visual COBOL > Samples]COBOL for .NET の場合の場合 に用意されている。

その他の情報

enum-header の後には、次の規則に従う 1 つ以上のフィールド定義が続く。

  • 列挙の基本となるデフォルトの型は binary-long (符号付き 32 ビット整数など) である。
  • 最初の列挙フィールドが 01 レベルの記述項である場合は、type-specifier を使用して、列挙の基本となる型を明示的に定義できる。さらに、名前がある場合は、列挙の最初の定数フィールドにもなる。
  • 後続の定数フィールドは、レベル 78 の記述項またはレベル 01 の記述項のいずれかを使用して定義できる。01 レベルの記述項の場合、語 CONSTANT が想定されるため省略できる。
  • 最初の定数フィールドに明示的な VALUE 句がない場合、値は 0 であると見なされる。
  • 後続のすべての定数記述項は、明示的な値を持つか、前の記述項の値より 1 大きいデフォルト値を想定する。
  • レベル 78 の記述項に関連付けられた定数式は、レベル 78 の記述項の通常の規則に従って評価される。つまり、算術演算は、演算子の優先順位に関係なく、左から右に評価される。
  • レベル 01 の記述項に関連付けられた定数式は、レベル 01 の定数記述項の通常の規則に従って評価される。これらの定数記述項の VALUE 式は外部定数を参照でき、それらが定義する算術演算は通常の算術式の優先順位規則に従って評価される。
注: COBOL for .NET では、属性 System.FlagsAttribute を設定できる。列挙にこの属性を適用すると、ビット設定として各値は別個と見なされるため、値の組み合わせが可能になる。次に例を示す。
enum-id MyFlags attribute System.FlagsAttribute.