COBOL2002 ユーザーズガイド

[目次][用語][索引][前へ][次へ]

36.4.1 外部リポジトリに関連したコンパイルエラー発生時の対処方法

この項では,外部リポジトリを使用したCOBOLプログラムをコンパイルしたときに出力されるコンパイルエラーの対処方法について,次のような場合に分けて説明します。

<この項の構成>
(1) 外部リポジトリに翻訳単位が見つからない場合
(2) メソッドまたは利用者定義関数の定義情報が適合しない場合
(3) インタフェースを実装,またはメソッドの上書きができない場合

(1) 外部リポジトリに翻訳単位が見つからない場合

リポジトリ段落に記述した参照先の翻訳単位の定義情報が外部リポジトリに見つからない場合,コンパイルエラーが出力されます。コンパイルリストを使った対処方法を次に説明します。

注意
外部リポジトリの検索手順は,「36.2.4 リポジトリファイルの参照方法」の「(2) リポジトリファイルの検索」を参照してください。コンパイルリストについては,「付録D コンパイルリスト」を参照してください。

図36-4 参照元の翻訳単位を含むCOBOLプログラムのコンパイルリスト(外部リポジトリに翻訳単位が見つからない場合)

[図データ]
  1. コンパイルリストで,?が付いた個所(上記の図の1.)の記述を参照し,翻訳単位の名称(CLS1),CLASS,INTERFACE,FUNCTION,およびPROPERTYの指定が正しいかを確認してください。
  2. 記述が誤っている場合は,COBOLプログラムの誤りを修正してください。
  3. 記述が正しい場合は,記述した翻訳単位を定義したCOBOLプログラムを先にコンパイルし,「36.2.4 リポジトリファイルの参照方法」の「(2) リポジトリファイルの検索」に記載している検索対象のフォルダにリポジトリファイルを作成してください。

(2) メソッドまたは利用者定義関数の定義情報が適合しない場合

INVOKE文や関数一意名で,呼び起こし対象のメソッドまたは利用者定義関数の定義情報が適合しない場合,コンパイルエラーが出力されます。コンパイルリストを使った対処方法を次に説明します。

呼び起こすメソッドを定義したクラス,または利用者定義関数が定義されたCOBOLプログラムを特定できる場合は,「(a) COBOLプログラムを使った対処方法」に記載している手順でコンパイルエラーの要因を修正してください。COBOLプログラムが特定できない場合は,「(b) リポジトリファイルを使った対処方法」に記載している手順でコンパイルエラーの要因を修正してください。

注意
適合チェックの詳細は,マニュアル「COBOL2002 言語 標準仕様編 10.7 引数と返却項目の適合」を参照してください。コンパイルリストについては,「付録D コンパイルリスト」を参照してください。
(a) COBOLプログラムを使った対処方法

図36-5 参照元の翻訳単位を含むCOBOLプログラムのコンパイルリスト(メソッドまたは利用者定義関数の定義情報が適合しない場合:その1)

[図データ]

  1. コンパイルリストで,?が付いた個所(上記の図の1.)の記述を参照し,呼び起こすメソッドを定義したクラス,または利用者定義関数の名称(CLS1)を確認してください。
  2. 手順1.のクラスまたは利用者定義関数が定義されたCOBOLプログラムを参照し,定義情報を確認してください。
  3. 確認した定義情報を使ってCOBOLプログラムの誤りを修正してください。
(b) リポジトリファイルを使った対処方法

図36-6 参照元の翻訳単位を含むCOBOLプログラムのコンパイルリスト(メソッドまたは利用者定義関数の定義情報が適合しない場合:その2)

[図データ]

  1. コンパイルリストで,?が付いた個所(上記の図の1.)の記述を参照し,呼び起こすメソッドを定義したクラス,または利用者定義関数の名称(CLS1)を確認してください。
  2. 手順1.のクラスまたは利用者定義関数の名称(CLS1)を,参照元のCOBOLプログラムで最初に定義した,リポジトリ段落の行番号6を確認してください(上記の図の2.)。
  3. 手順2.の行番号6を基に,参照しているリポジトリファイル名(C:\users\cobol2002\CLASS1.rep)をコンパイルリストで確認してください(上記の図の3.)。
  4. 手順3.で確認したリポジトリファイル名(C:\users\cobol2002\CLASS1.rep)から,リポジトリ管理ツールを使用して定義情報を出力してください。リポジトリ管理ツールの仕様については,「36.4.2 リポジトリ管理ツール」を参照してください。
  5. リポジトリ管理ツールが出力した定義情報(次の図の1.)を使ってCOBOLプログラムの誤りを修正してください。リポジトリ管理ツールの出力例を次に示します。

    図36-7 リポジトリ管理ツールの出力例(メソッドまたは利用者定義関数の定義情報が適合しない場合:その3)

    [図データ]

(3) インタフェースを実装,またはメソッドの上書きができない場合

インタフェースを実装するとき,または継承したクラスのメソッドを上書きするとき,実装または上書きするメソッド原型(またはメソッド)がない,または適合しない場合は,コンパイルエラーが出力されます。

インタフェースを実装する場合を例に,コンパイルリストを使った対処方法を次に説明します。

実装するインタフェースが定義されたCOBOLプログラムを特定できる場合は,「(a) COBOLプログラムを使った対処方法」に記載している手順でコンパイルエラーの要因を修正してください。COBOLプログラムが特定できない場合は,「(b) リポジトリファイルを使った対処方法」に記載している手順でコンパイルエラーの要因を修正してください。

注意
適合チェックの詳細は,マニュアル「COBOL2002 言語 標準仕様編 5.2.7 適合とインタフェース」を参照してください。コンパイルリストについては,「付録D コンパイルリスト」を参照してください。
(a) COBOLプログラムを使った対処方法

図36-8 参照元の翻訳単位を含むCOBOLプログラムのコンパイルリスト(インタフェースを実装,またはメソッドの上書きができない場合:その1)

[図データ]

  1. コンパイルリストで,?が付いた個所(上記の図の1.)の記述を参照し,実装するインタフェース名(INT1)を確認してください。
  2. 手順1.のインタフェース(INT1)が定義されたCOBOLプログラムを参照し,定義しているメソッド原型を確認してください。
  3. 確認したメソッド原型をすべて実装するようにCOBOLプログラムを修正してください。
(b) リポジトリファイルを使った対処方法

図36-9 参照元の翻訳単位を含むCOBOLプログラムのコンパイルリスト(インタフェースを実装,またはメソッドの上書きができない場合:その2)

[図データ]

  1. コンパイルリストで,?が付いた個所(上記の図の1.)の記述を参照し,実装するインタフェースの名称(INT1)を確認してください。
  2. 手順1.のインタフェースの名称(INT1)を,参照元のCOBOLプログラムで最初に定義したリポジトリ段落の行番号6を確認してください(上記の図の1.)。
  3. 手順2.の行番号6を基に,参照しているリポジトリファイル名(C:\users\cobol2002\INTERFACE1.rep)をコンパイルリストで確認してください(上記の図の2.)。
  4. 手順3.で確認したリポジトリファイル名(C:\users\cobol2002\INTERFACE1.rep)から,リポジトリ管理ツールを使用して定義情報を出力してください。リポジトリ管理ツールの仕様については,「36.4.2 リポジトリ管理ツール」を参照してください。
  5. リポジトリ管理ツールが出力した定義情報(次の図の1.)を使って,インタフェース(INT1)で定義されたすべてのメソッド原型を実装するようにCOBOLプログラムを修正してください。リポジトリ管理ツールの出力例を次に示します。

    図36-10 リポジトリ管理ツールの出力例(インタフェースを実装,またはメソッドの上書きができない場合:その3)

    [図データ]