class-id MyType. operator-id + procedure division using by value o as type MyType, I as binary-long returning ret as type MyType. ... end operator. end class.
演算子のオーバーロードのサンプルも参照してください。このサンプルは、Start > All Programs > Micro Focus Visual COBOL > Samples、COBOL for .NET の場合の場合 。 の下にあります。
変換演算子はオーバーロードできるため、適切な変換演算子が呼び出しコードのパラメーター タイプに従って使用されます。シグネチャ (手続き部の USING 句) が一致する演算子が実行されます。たとえば、タイプ Timer のデータ項目を binary-long に変換する必要がある場合、使用される演算子は、入力パラメーターのタイプが Timer で 出力パラメーターのタイプが binary-long の演算子になります。
変換演算子を定義して使用するには、次のようにします。
演算子をオーバーロードして、代替動作やさまざまな作用対象タイプに対する動作を提供できます。たとえば、Timer タイプを時間と分で表現する場合、2 つの Timer を追加する 1 つの + (プラス) 演算子と、分を Timer タイプに追加するもう 1 つの + (プラス) 演算子を定義できます。
オーバーロードする演算子を宣言するには、次のようにします。
オーバーロードできる演算子 | operator-id シグネチャのオーバーロード | 注 |
---|---|---|
次のような比較演算子: t1 = t2, t1 equals t2 |
value t1 t2 returning condition-value |
比較演算子はペアで指定する必要があります。ペアは、等号演算子 (=) と不等号演算子 (<>)、大なり演算子 (>) と小なり演算子 (<)、および以上演算子 (>=) と以下演算子 (<=) です。 returning 項目は condition-value タイプにする必要があります。 |
次のようなその他の 2 項演算子: t1 + t2 |
value t1 t2 returning t3 |
2 項演算子では 2 つの引数が使用されます。2 つの引数のタイプが異なる場合、演算子のペアを指定して、2 つの作用対象がいずれかの順序で渡されるようにする必要があります。 |
次のような単項演算子: -t1 |
value t1 returning t3 |
単項演算子で使用される引数は 1 つのみです。 |
加減乗除の算術演算子はすべてオーバーロードできますが、それらに相当する動詞はオーバーロードできません。たとえば、次の文の ADD はオーバーロードできません。
add a to b giving c