例
000001 IDENTIFICATION DIVISION. 000002 CLASS-ID. C3486A. 000003 ENVIRONMENT DIVISION. 000004 CONFIGURATION SECTION. 000005* 000006 OBJECT. 000007 DATA DIVISION. 000008 WORKING-STORAGE SECTION. 000009 01 DATA1 PIC S9(8) COMP-5. 000010 01 DATA2 PIC X(50). 000011 PROCEDURE DIVISION. 000012* 000013 METHOD-ID. NEW. 000014 DATA DIVISION. 000015 WORKING-STORAGE SECTION. 000016 LINKAGE SECTION. 000017 01 PRM1 PIC S9(8) COMP-5. 000018 01 PRM2 PIC X(50). 000019 PROCEDURE DIVISION USING PRM1 PRM2. 000020 MOVE PRM1 TO DATA1. 000021 MOVE PRM2 TO DATA2. 000022 END METHOD NEW. 000023* 000024 END OBJECT. 000025 END CLASS C3486A.
000001 IDENTIFICATION DIVISION. 000002 CLASS-ID. C3486 INHERITS C3486A. 000003 ENVIRONMENT DIVISION. 000004 CONFIGURATION SECTION. 000005 REPOSITORY. 000006 CLASS C3486A. 000007 OBJECT. 000008 DATA DIVISION. 000009 WORKING-STORAGE SECTION. 000010 01 OBJCOUNT PIC S9(8) COMP-5 VALUE 1. 000011 PROCEDURE DIVISION. 000012* 000013 END OBJECT. 000014 END CLASS C3486. 000015*
C3486.cob (0) : JMN3486I-S INHERITS句に指定されたクラスが,パラメタのないコンストラクタを持たない場合,コンストラクタメソッドを明に定義しなければなりません.かつそのコンストラクタメソッドの手続きの宣言節部分を除く先頭には,親クラスのコンストラクタを呼び出すINVOKE文を記述しなければなりません.
詳細な説明
INHERITS句に指定したクラス(親クラス)にパラメタを持たないコンストラクタが存在する場合,コンパイラは現在翻訳中のクラスのコンストラクタ(NEWメソッドとして明に書かれたもの,またはコンパイラが暗黙に生成したもの)の手続きの先頭に,親クラスのコンストラクタの呼び出しを自動生成します.しかし親クラスにパラメタを持つコンストラクタしか存在しない場合,コンパイラは渡すパラメタ値を判断できませんので,このときには,コンストラクタ(NEWメソッド)を明に定義して頂くと共に,その手続きの先頭に親クラスのコンストラクタを呼び出すINVOKE文を明に記述して頂く必要があります.