例
000001 IDENTIFICATION DIVISION.
000002 DELEGATE-ID. D5730.
000003 ENVIRONMENT DIVISION.
000004 DATA DIVISION.
000005 LINKAGE SECTION.
000006 01 LK1 PIC S9(9) COMP-5.
000007 01 LK2 PIC S9(9) COMP-5.
000008 01 LK3 PIC S9(9) COMP-5.
000009 PROCEDURE DIVISION USING BY VALUE LK1
000010 BY VALUE LK2
000011 RETURNING LK3.
000012 END DELEGATE D5730.
000001 IDENTIFICATION DIVISION.
000002 PROGRAM-ID. P5730.
000003 ENVIRONMENT DIVISION.
000004 CONFIGURATION SECTION.
000005 REPOSITORY.
000006 CLASS MATH AS "System.Math"
000007 DELEGATE D5730.
000008 DATA DIVISION.
000009 WORKING-STORAGE SECTION.
000010 01 WOBRDT OBJECT REFERENCE D5730.
000011 PROCEDURE DIVISION.
000012 INVOKE D5730 "NEW" USING BY REFERENCE MATH
000013 "Max"
000014 RETURNING WOBRDT
000015 END PROGRAM P5730.
P5730.cob (12) : JMN5730I-S デリゲートの"NEW"を呼び出すINVOKE文では,USING指定は'BY VALUE'でなければなりません.INVOKE文を無効とします.
詳細な説明
デリゲートのNEWメソッド(コンストラクタ)の呼出しは通常と異なるINVOKE文を使用します.
このINVOKE文は,通常のINVOKE文と異なり,次の規則があります.
BY指定はBY VALUEしか指定できない.また,BY指定を省略した場合,BY VALUEが指定されたと見なす.
USING指定に記述するパラメタの数は2つでなければならない.
USING指定に記述した1つ目のパラメタは,クラス名,オブジェクト参照項目または,定義済みオブジェクト一意名SELFでなければならない.
USING指定に記述した2つ目のパラメタは,文字定数または日本語定数でなければならない.
このINVOKE文の詳細については,COBOL文法書の“11.8.3.9 INVOKE文”を参照してください.