A class extension enables you to add extra functionality to an
object COBOL class without changing the original source code.
The difference between extending a class with a class extension as
opposed to using inheritance is that the class extensions are inherited by all
existing subclasses. For example, if class A has a subclass, class B (B
INHERITS FROM A), you can add methods to class A by subclassing it to create
subclass C. However, class B does not inherit the methods of class C, because
it is a subclass of A. If you extend class A with a class extension, X, the
effect at run time is the same as if you had changed and recompiled class A:
class B inherits all the extra methods in class X.
General Format

Syntax Rules
- Extension-name-1 must not be the same as class-name-1.
- Extension-name-1 in the END CLASS header must be identical to the
extension-name-1 specified in the preceding Class-ID paragraph.
- Class-name-1 must be the name of a class specified in the
Class-Control paragraph.
- The Data Division of the class-body may contain an empty
Object-Storage Section. The only other sections that may be specified in the
Data Division of a Class Extension are the Working-Storage Section and the
Linkage Section.
- Statements in the class extension may reference data declared in
class-name-1 only when both the following cocnditions are true:
- The DATA IS PROTECTED or DATA IS RESTRICTED phrase is
specified in the Class-ID paragraph of class-name-1
- The WITH DATA phrase is specified in the Class-ID paragraph
of the class extension.
General Rules
- The EXTEND clause specifies a class extension. A class extension
adds methods to an object class. The methods specified in extension-name-1 are
inherited by all subclasses, existing and new, of class-name-1.
- During the execution of a run unit, a COBOL call statement to
extension-name-1 must be executed before any of the methods in the class
extension are invoked. This registers the methods in the class extension with
the OO runtime system.