NETJVM 

演算子名段落

演算子名段落は、この見出し部で演算子の定義を導入することを示し、その演算子を識別する名前を指定する。

一般形式

Operator-ID

構文規則

  1. 演算子名段落は、ファクトリ定義の中でのみ定義できる。
  2. 暗黙変換は、変換前の型がとりうるすべての値を変換後の型で表現できる場合にのみ使用する。
  3. キャスト構文 (object-name AS type-name) を使用して指定する明示変換は、失敗の可能性がある場合に使用できる。
  4. 比較演算子が指定された場合、手続き部ヘッダーの RETURNING ではブール値データ項目が指定されていなければならない。
  5. 単項演算子の +、単項演算子の –、IMPLICIT、および EXPLICIT 以外は、手続きヘッダーの USING で正式なパラメーターが 2 つ指定されていなければならず、そのうち少なくとも 1 つはこの演算子が定義されているクラスでなければならない。
  6. IMPLICIT または EXPLICIT が指定された場合、手続き部ヘッダーの USING で正式なパラメーターが 1 つ、このヘッダーの RETURNING でデータ項目が 1 つ指定されていなければならない。正式なパラメーターまたは戻り値のどちらかが、この演算子が定義されているクラスでなければならない。
  7. 演算子を拡張するには、extension キーワードを使用する。
  8. 拡張する演算子は静的クラスで宣言されていなければならない。

一般規則

  1. 演算子は新たにどのような意味にすることもできるが、その演算子に対する通常の理解と一貫性を持たせることが推奨される。
  2. オーバーロードされた算術式は、通常の算術式を指定できる場所であれば、どこでも指定できる。
  3. 暗黙変換および明示変換によって、ある型の項目を別の型に割り当てることができる。それぞれの型がもう一方の型から直接的または間接的に継承されていなくても可能。
  4. 演算子がオーバーロードされているかどうかを確認するには、Reflector などのクラス ブラウザーを使用し、名前がプレフィックス op_ で始まるファクトリ (静的) メソッドを探す。

マネージ COBOL で型を拡張するには、次のコンストラクトを使用する。

       class-id MyOperatorExtension static.

       operator-id + extension.
       procedure division using by value c1 as type MyClass,
                                         c2 as type MyClass,
                      returning ret as type MyClass.
           set ret to null *> or something more complex
           goback
       end operator.

       end class.