Function
The CLASS-ID paragraph indicates that this Identification Division introduces a class definition and specifies the name of the class and its attributes.
Format
CLASS-ID. class-name-1 [IS FINAL]
[INHERITS FROM {class-name-2}...]
[USING {parameter-name-1}...].
Syntax rules
class-name-1 must not be BASE.
class-name-2 is the name of a class, which must be specified in the REPOSITORY paragraph.
class-name-2 must not be the same as class-name-1.
class-name-2 may not inherit directly or indirectly from a class which is an expansion of class-name-1.
class-name-2 may not be defined with the FINAL clause.
If two or more different methods with the same name are inherited, none of them may be specified with the FINAL clause. If the same method is inherited from one superclass through two or more intermediate superclasses, it may be specified with the FINAL clause.
A given class-name-2 may not appear more than once in an INHERITS clause.
If a method of the same name is inherited from more than one inherited class, and if these methods have different interfaces, then a method with the same name of this method must be declared in this class, and its interface must satisfy syntax rule 5 listed under the METHOD-ID paragraph.
parameter-name-1 is the name of a class or interface which must be defined in the REPOSITORY paragraph.
The same parameter-name-1 may not occur more than once in a USING clause.
parameter-name-1 must be different from class-name-1.
General rules
class-name-1 names the class declared by this class definition.
The INHERITS clause specifies the names of classes that are inherited by class-name-1.
If the FINAL clause is specified, the class cannot be the superclass for any other class.
If the same class is inherited more than once, then only one copy of the data for that class is added to class-name-1.
The USING clause specifies this class as a parameterized class and lists the names of the parameters.