
The Operator-ID paragraph indicates that this Identification
Division introduces an operator definition and specifies the symbol or keyword
that identifies the operator.
General Format

Syntax Rules
- The Operator-ID paragraph may be specified only within a factory
definition.
- An implicit conversion should only be used when the target type
is able to represent all possible values of the source type.
- An explicit conversion, which is specified using casting syntax
(object-name AS type-name), can be used when there is a possibility of
failure.
- If a comparison operator is specified, a boolean data item must
be specified in the RETURNING phrase of the Procedure Division header.
- Except for unary +, unary 窶・ IMPLICIT and EXPLICIT, there must be
two formal parameters specified in the USING phrase of the Procedure Division
header, at least one of which must be of the class in which this operator is
defined.
- If IMPLICIT or EXPLICIT is specified, there must be one formal
parameter specified in the USING phrase of the Procedure Division header and
one data item specified in the RETURNING phrase of that header. Either the
formal parameter or the return value must be of the class in which this
operator is defined.
General Rules
- The new meaning for the operator can be anything, but it is a
good idea if it is consistent with the normal understanding of the
operator.
- Overloaded arithmetic expressions can be specified anywhere that
a normal arithmetic expression can be specified.
- Implicit and explicit conversions give a way of assigning an item
of one type to another type, even when neither type inherits, directly or
indirectly, from the other.
- You can tell if an operator is overloaded by using a class
browser such as Reflector, look for factory (static) methods whose names begin
with the prefix op_.