(57)【要約】【課題】ソースプログラムの各文で起こる例外とどの様にハンドリングされるかに関する情報を提示し、プログラマのソースプログラム編集作業を支援する。【解決手段】例外情報生成ツールを呼び出してソースプログラム中の各文に対応する例外情報を格納した例外情報ファイルの作成または更新を行うステップと、前記例外情報を解析し、ソースプログラム中の各文の位置を示す文位置情報テーブル、各文の位置に対応する例外情報を示す例外情報テーブル、前記例外情報の例外名を示す例外名テーブルをメモリ中に展開するステップと、例外情報の表示指示が行われた文の位置を前記文位置情報テーブルにより特定するステップと、前記特定された文の位置に対応する例外情報を前記例外情報テーブルから抽出するステップと、前記抽出した例外情報に対応する例外名を前記例外名テーブルから取得するステップと、前記抽出した例外情報と前記取得した例外名を例外情報ガイドに設定して表示するステップとを有するものである。【選択図】        図１
2004355072.tif 000002
【特許請求の範囲】
【請求項１】
プログラムで実行される例外処理の情報を表示する例外情報表示方法において、
例外情報生成ツールを呼び出してソースプログラム中の各文に対応する例外情報を格納した例外情報ファイルの作成または更新を行うステップと、前記例外情報を解析し、ソースプログラム中の各文の位置を示す文位置情報テーブル、各文の位置に対応する例外情報を示す例外情報テーブル、前記例外情報の例外名を示す例外名テーブルを記憶手段中に展開するステップと、
例外情報の表示指示が行われた文の位置を前記文位置情報テーブルにより特定するステップと、前記特定された文の位置に対応する例外情報を前記例外情報テーブルから抽出するステップと、前記抽出した例外情報に対応する例外名を前記例外名テーブルから取得するステップと、前記抽出した例外情報と前記取得した例外名を例外情報ガイドに設定して表示するステップとを有することを特徴とする例外情報表示方法。
【請求項２】
前記例外情報ガイドに表示された例外が発生した場合に呼び出される例外処理の位置に移動し、その例外処理の内容を表示することを特徴とする請求項１に記載された例外情報表示方法。
【請求項３】
例外情報の表示指示が行われた際に前記例外情報ファイルが存在しないか、ソースプログラムの更新日付が例外情報ファイルの更新日付よりも新しい場合に例外情報ファイルの作成または更新を行うことを特徴とする請求項１または請求項２のいずれかに記載された例外情報表示方法。
【請求項４】
例外情報の表示指示が行われた位置と前記文位置情報テーブルに格納された文開始位置及び文終了位置とを比較し、例外情報の表示指示が行われた文の位置を特定することを特徴とする請求項１乃至請求項３のいずれか１項に記載された例外情報表示方法。
【請求項５】
プログラムで実行される例外処理の情報を表示する例外情報表示装置において、
例外情報生成ツールを呼び出してソースプログラム中の各文に対応する例外情報を格納した例外情報ファイルの作成または更新を行う例外情報生成ツール呼び出し部と、前記例外情報を解析し、ソースプログラム中の各文の位置を示す文位置情報テーブル、各文の位置に対応する例外情報を示す例外情報テーブル、前記例外情報の例外名を示す例外名テーブルを記憶手段中に展開する例外情報ファイル解析部と、
例外情報の表示指示が行われた文の位置を前記文位置情報テーブルにより特定し、前記特定された文の位置に対応する例外情報を前記例外情報テーブルから抽出し、前記抽出した例外情報に対応する例外名を前記例外名テーブルから取得し、前記抽出した例外情報と前記取得した例外名を例外情報ガイドに設定して表示する例外情報ガイド構成部とを備えることを特徴とする例外情報表示装置。
【請求項６】
プログラムで実行される例外処理の情報を表示する例外情報表示装置としてコンピュータを機能させる為のプログラムにおいて、
例外情報生成ツールを呼び出してソースプログラム中の各文に対応する例外情報を格納した例外情報ファイルの作成または更新を行う例外情報生成ツール呼び出し部と、前記例外情報を解析し、ソースプログラム中の各文の位置を示す文位置情報テーブル、各文の位置に対応する例外情報を示す例外情報テーブル、前記例外情報の例外名を示す例外名テーブルを記憶手段中に展開する例外情報ファイル解析部と、
例外情報の表示指示が行われた文の位置を前記文位置情報テーブルにより特定し、前記特定された文の位置に対応する例外情報を前記例外情報テーブルから抽出し、前記抽出した例外情報に対応する例外名を前記例外名テーブルから取得し、前記抽出した例外情報と前記取得した例外名を例外情報ガイドに設定して表示する例外情報ガイド構成部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はプログラムで実行される例外処理の情報を表示する例外情報表示装置に関するものである。
【０００２】
【従来の技術】
コンパイラの解析機能またはコンパイラの解析機能と同等の解析機能を持つツール等を利用して、プログラミングの支援を行うプログラムとしては、ブラウザと呼ばれるプログラムが存在している。ユーザはブラウザを使うことで、プログラム中の変数や関数等の定義位置や参照位置を相互に参照したり、関数等の呼び出し関係を確認したりすることができる。
【０００３】
ブラウザの機能は、ソースプログラムを解析して変数名や関数名等の名前とその出現位置のリストを作成し、そのリストを基に参照関係や呼び出し関係の表や図を作成するというものである。ブラウザの機能は変数や関数等、プログラム中で名前を使って直接参照される要素に限って使用できる機能である。
【０００４】
また、オブジェクト指向プログラミングにおいてプログラミングの支援を行う装置としては、ＣＯＢＯＬ言語で作成されている既存のプログラム資産を、オブジェクト指向プログラミングを用いて作成するプログラムから再利用することができるようにするオブジェクト定義自動生成装置が提案されている（例えば特許文献１参照）。
【０００５】
【特許文献１】
特開平８−２７８８８７号公報
【０００６】
【発明が解決しようとする課題】
言語レベルで例外処理機構を持つプログラミング言語において、ある文の実行中にどの様な例外が発生する可能性があるか、また各々の例外が発生した場合にどの様にハンドリングされるかは、ソースプログラム中の離れた箇所に書かれた複数の文からの影響を受けることがある。従って、プログラマがソースプログラムを記述する際に、自分が現在記述中の文ではどの様な例外が発生する可能性があり、発生した場合にどの様にハンドリングされることになっているかを把握することは容易ではない。
【０００７】
各文で発生する可能性のある例外や各々の例外が発生した場合にどの様にハンドリングされるかに関する情報は、ソースプログラムを解析することで抽出することができる。ソースプログラムを解析することでプログラマを支援するプログラムとしては、ブラウザと呼ばれるプログラムが従来から存在していた。しかし、例外は変数や関数と異なり名前で参照されたり呼び出されたりするとは限らず、通常は文を実行中にある特定の現象が観測されたときに処理系が自動的に発生させるものである為、ブラウザの様にソースプログラム中に出現する名前を基に必要な情報の収集を行う方法は適用できない。この為、ソースプログラム中の各文で発生する例外とそのハンドリング方法についてプログラマを支援するプログラムはこれまで存在していなかった。
【０００８】
その為、プログラマは、例外処理向けのコーディングが適切に記述されていることを確認する為に、ソースプログラムをコンパイルして実際に動作させてみて、その挙動を観察し、想定した例外が発生し、その例外が意図した通りにハンドリングされていることや、想定外の例外が発生していないこと等を確認するという作業を行っていた。
【０００９】
本発明の目的は上記問題を解決し、ソースプログラム中の各文で起こる例外とその例外が起こった場合にどの様にハンドリングされるかに関する情報を提示し、プログラマのソースプログラム編集作業を支援することが可能な技術を提供することにある。
【００１０】
【課題を解決するための手段】
本発明は、プログラムで実行される例外処理の情報を表示する例外情報表示装置において、例外情報の表示指示が行われた文の位置に対応する例外情報を例外情報テーブルから抽出して表示するものである。
【００１１】
本発明では、ユーザの要求に応じて指定された文で発生する可能性のある例外とその例外が発生した場合にどの様にハンドリングされるかを示す例外情報ガイドをエディタ等により表示することで、プログラミング作業を支援する。
【００１２】
例外情報ガイドの表示には例外情報生成ツールが出力する例外情報ファイルを利用する（例外情報生成ツールはエディタとは別プログラムとしても良いし、エディタに組み込まれていても良い）。例外情報生成ツールは指定されたソースプログラムを解析し、各々の例外がオブジェクトコードにおいてどの様にハンドリングされるかについての情報を例外情報ファイルに出力する（例外情報ファイルの展開される装置はメモリであっても良い）。例外情報生成ツールはコンパイラと同等な解析を行って各々の例外がどの様にハンドリングされるかを調査する。従って、例外情報生成ツールの生成する例外ハンドリングに関する情報はコンパイラが生成するオブジェクトコードの実行中に例外が発生した場合の動作と完全に一致する。これにより、ユーザはプログラムを実行して動作を観察しながら例外が意図した通りにハンドリングされているかを確認する必要がなくなる。
【００１３】
エディタはユーザから要求があった時点で例外情報ファイルを参照し、指定された文で発生する可能性のある例外と各々の例外がどの様にハンドリングされるかについての情報を取得し、例外情報ガイドを表示する。
【００１４】
前記の様に本発明では、上記の様な例外処理コーディング上の問題点を解決する為、ユーザの要求に応じて指定された文で発生する例外とその例外が発生した場合にどの様にハンドリングされるかを示したリスト含む例外情報ガイドを表示するエディタを提供することができる。ユーザはこのエディタを利用してソースプログラムを編集することで、任意の文に対してどの様な例外が発生し、各々の例外がどの様にハンドリングされるかを示す例外情報ガイドを表示することができ、ハンドリングが必要な例外でハンドラが未実装になっている例外が無いか、或いは自分が意図した通りにハンドリングされているかといったコーディング上の不備の有無を確認しながらコーディング作業を進めることができる様になる。
【００１５】
【発明の実施の形態】
以下にプログラムで実行される例外処理の情報をエディタにより表示する一実施形態の例外情報表示装置について説明する。
【００１６】
図１は本実施形態の例外情報表示処理を実装したエディタの画面イメージを示す図である。図１の画面イメージでは、エディタの画面１１０上にソースプログラムと例外情報ガイド１１７及び例外情報ガイドのサブメニュー１１８がどの様に表示されるかを表している。なお、エディタの画面１１０中に表示しているソースプログラムはＣＯＢＯＬ言語で書かれたソースプログラムの断片であり、以下の説明に直接関係の無い部分については省略してある。ここではソースプログラム中から例外に関する情報を抽出し、例外情報ガイド１１７を提示するまでの具体的な方法を示す為に、ＣＯＢＯＬ言語における例外処理プログラミングの例を用いるが、本発明の適用範囲はＣＯＢＯＬ言語に限定されるものではない。
【００１７】
図１ではソースプログラム中の特定の文１１４の例外情報ガイド１１７及び例外情報ガイドのサブメニュー１１８を表示させている例を示している。すなわち、ソースプログラム中の文１１４にマウスポインタ１１５をあてている状態でコンテキストメニュー１１６を呼び出し、このメニュー内の例外情報ガイドというメニュー項目１１６１を選択することで例外情報ガイド１１７の表示を指示し、更に例外情報ガイド１１７内のＥＣ−ＤＡＴＡ−ＩＮＣＯＭＰＡＴＩＢＬＥという項目を選択して例外情報ガイド１１７のサブメニュー１１８からＨａｎｄｌｅｒ１にジャンプする為のメニュー項目１１８２をマウスポインタ１１５でポイントしている状態の画面イメージを表している。
【００１８】
例外情報ガイド１１７には指定された文の文名１１７３、指定された文で発生する可能性のある例外リスト１１７１とリスト中の各々の例外がどの様にハンドリングされるかを示す記号リスト１１７２が表示される。なお、例外リスト１１７１に挙げられている例外は実際に発生する可能性のある例外の一部であり、説明上必要の無いものについては省略してある。
【００１９】
ＣＯＢＯＬ言語において例外処理機構にかかわるソースプログラム中の要素には、例外が発生する可能性のある文１１４とその文に付随する文固有の条件指定部１１４１、各々の例外について例外チェックの有効・無効を切り替える為の指示文１１３、指定した例外が発生し、その例外のチェックが有効であった場合に呼び出される手続きを記述する節１１２、発生した例外の内、そのモジュール内では処理されないものについて呼び出し元のモジュールに処理を委譲するか否かを指示する指示文１１１がある。ある例外が発生するか否か、発生した場合にどの様にハンドリングされるかは、これらの文や条件指定部の有無や記述内容から決定される。
【００２０】
例外リスト１１７１に挙げられているものを例に説明すると、文１１４の英数字項目ｂの部分参照指定が項目の領域外を指していることを意味する例外ＥＣ−ＢＯＵＮＤ−ＲＥＦ−ＭＯＤについては指示文１１３により無効化されている為、例外ＥＣ−ＢＯＵＮＤ−ＲＥＦ−ＭＯＤは発生しない（ハンドリング種別はＮ）、項目ｃの添字が有効範囲を超えたことを意味する例外ＥＣ−ＢＯＵＮＤ−ＳＵＢＳＣＲＩＰＴについては発生する可能性があるが、ハンドラの登録が行われていない為、発生するとこの例外が発生したときの既定の動作に従って異常終了する（ハンドリング種別はＡ）、参照した項目内に不正値が格納されていることを意味する例外ＥＣ−ＤＡＴＡ−ＩＮＣＯＭＰＡＴＩＢＬＥについては発生する可能性があり、発生するとＨａｎｄｌｅｒ１節１１２に制御が移る（ハンドリング種別はＤ）、項目ｃ（ｉ）の値が０であった為に０による除算が行われたことを意味する例外ＥＣ−ＳＩＺＥ−ＺＥＲＯ−ＤＩＶＩＤＥについては文１１４に付随する条件指定部１１４１がこの文における例外検出を無効化する為、０による除算が行われると条件指定部１１４１に制御が移る（ハンドリング種別はＣ）、といった動作になる。
【００２１】
この様にソースプログラム中の様々な場所に記述された文や条件指定部等の関係により各々の例外のハンドリング方法が変わってくる為、ユーザがソースプログラムを眺めて各々の例外が発生するのかしないのか、発生した場合にどの様にハンドリングされるのかを判定することは容易ではなく、例外情報ガイド１１７による支援は例外処理コーディングを行う上で有益である。なお、例外のハンドリング種別についてはここで示したＮ、Ａ、Ｄ、Ｃの他に、Ｐ、Ｉがあるが、これらの詳細については後述する。
【００２２】
例外情報ガイド１１７からＥＣ−ＤＡＴＡ−ＩＮＣＯＭＰＡＴＩＢＬＥをマウスポインタ１１５でポイントするとサブメニュー１１８が表示され、この例外を無効化する、或いはこの例外が発生した場合に制御が移るＨａｎｄｌｅｒ１節にジャンプするといったコマンドが実行できる。これらの機能により、ユーザは例外情報ガイド１１７に表示される例外リスト１１７１から発生させたくない例外を見つけた場合には、サブメニュー１１８の無効化コマンド１１８１を実行して無効化する為の指示文を挿入したり、例外が発生した場合に実行される手続きを記述する為に例外が発生した際に制御が移る節にジャンプする等の編集コマンドを直ぐに実行できる。このサブメニュー１１８中に表示されるコマンド群は一定ではなく、例外のハンドリング種別に応じて適切なコマンドが表示される。例えば例外が無効化されている為に発生しない状態になっている例外の場合は例外を有効化する為のコマンドが表示される。
【００２３】
図２は本実施形態のソフトウェア・コンポーネント群及びファイル等のリソース群、ハードウェア装置群の関連を示す図である。但し、エディタ２０２のテキスト編集機能や検索機能等の本発明とは直接関係が無く説明上必要の無い機能については省略してある。
【００２４】
図２に示す様に本実施形態のエディタ２０２は、例外情報生成ツール呼び出し部２０２１と、例外情報ファイル解析部２０２２と、例外情報ガイド構成部２０２３とを有している。
【００２５】
例外情報生成ツール呼び出し部２０２１は、例外情報生成ツール２０１を呼び出してソースファイル２０３中のソースプログラムの各文に対応する例外情報を格納した例外情報ファイル２０４の作成または更新を行う処理部である。例外情報ファイル解析部２０２２は、例外情報生成ツール２０１により作成または更新された例外情報を解析し、ソースプログラム中の各文の位置を示す文位置情報テーブル２０４１、各文の位置に対応する例外情報を示す例外情報テーブル２０４２、前記例外情報の例外名を示す例外名テーブル２０４３をメモリ等の記憶装置中に展開する処理部である。
【００２６】
例外情報ガイド構成部２０２３は、例外情報の表示指示が行われた文の位置を文位置情報テーブル２０４１により特定し、前記特定された文の位置に対応する例外情報を例外情報テーブル２０４２から抽出し、前記抽出した例外情報に対応する例外名を例外名テーブル２０４３から取得し、前記抽出した例外情報と前記取得した例外名を例外情報ガイド１１７に設定して表示する処理部である。
【００２７】
エディタ２０２を例外情報生成ツール呼び出し部２０２１、例外情報ファイル解析部２０２２及び例外情報ガイド構成部２０２３として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２８】
例外情報ガイド１１７はユーザが入力装置２０５によって指示することで表示される。例外情報生成ツール２０１は、ソースファイル２０３を読み込み、構文解析部２０１１及び意味解析部２０１２で処理した結果を基に例外情報構成部２０１３で処理し、例外情報ファイル２０４を生成する。ここでソースファイル２０３とはソースプログラムを格納したファイルのことである。例外情報生成ツール２０１の構文解析部２０１１及び意味解析部２０１２はコンパイラの構文解析部及び意味解析部と同等の解析を行う為、例外情報生成ツール２０１によるソースファイル２０３の解析結果はコンパイラが出力するオブジェクトコードの動作と完全に一致する。
【００２９】
例外情報ファイル２０４には文位置情報テーブル２０４１、例外情報テーブル２０４２、例外名テーブル２０４３が含まれる。これらのテーブルについては後述する。エディタ２０２は例外情報ファイル２０４を読み込み、例外情報ファイル解析部２０２２で解析した後、例外情報ガイド構成部２０２３によって例外情報ガイド１１７を構成し、ディスプレイ装置２０６に表示する。
【００３０】
ユーザが例外情報ガイド１１７の表示を指示した際に例外情報ファイル２０４が存在しないか古くなっていればエディタ２０２の例外情報生成ツール呼び出し部２０２１が例外情報生成ツール２０１を呼び出し例外情報ファイル２０４を作成または更新した後、例外情報ガイド１１７を表示する。なお、エディタ２０２が例外情報ファイル２０４の更新・生成の要否を判定する方法については後述する。
【００３１】
エディタ２０２は内部に編集用バッファ２０２４を持っており、ユーザが指定したソースファイル２０３の内容を読み込んでいる。ここでは説明を簡略化する為、新規にソースプログラムを作成する場合にも、内容が空のソースファイルの内容を読み込んでいるものと見倣すことにする。ユーザがエディタを介してソースプログラムの編集を行うと、この編集用バッファ２０２４の内容が書き換えられる。その後ユーザがソースプログラムの保存を指示すると編集用バッファ２０２４の内容がソースファイル２０３に書き出される。
【００３２】
また、エディタ２０２は更新フラグ２０２５を持っている。更新フラグ２０２５は初期状態（ソースファイル２０３の読み込み直後）にはクリアされており、ユーザがエディタ２０２上でソースプログラムを改変するとセットされる。また、ユーザがエディタ２０２にソースプログラムの保存を指示して編集用バッファ２０２４の内容がソースファイル２０３に書き出されると、更新フラグ２０２５はクリアされる。すなわち、更新フラグ２０２５は編集用バッファ２０２４の内容がソースファイル２０３の内容と一致している場合にクリアの状態になり、一致していない場合にセットの状態になる。
【００３３】
図３は本実施形態のＣＯＢＯＬ言語で書かれたソースプログラムの例を示す図である。但し、説明上必要の無い部分については省略してある。また、破線の矩形で囲まれたＳ０１からＳ１３までの部分には適切な文や式が記述してあるものとする。以下このプログラム例について例外情報生成ツール２０１が例外情報ファイル２０４を生成する手順を説明する。
【００３４】
図４は本実施形態の文位置情報テーブル２０４１の構成例を示す図である。図４では例外情報生成ツール２０１が図３のソースプログラムを解析した結果、生成される例外情報ファイル２０４中に格納される文位置情報テーブル２０４１の構造の例を表している。
【００３５】
例外情報生成ツール２０１はソースプログラム中の各実行文について、文の開始位置を文開始位置フィールド４０１に、文の終了位置を文終了位置フィールド４０２に、文名を文名フィールド４０３に記録する。これにより文位置情報テーブル２０４１の各レコードにはそれぞれソースプログラム中の１文が対応付けられる。なお、ＣＯＢＯＬ言語では１行に複数の文を書くこともできるので、ソースプログラム中の位置を特定する場合、実際には行番号と桁位置の２つを組み合わせて表現しなければならないが、図３のソースプログラムでは文の位置は行番号のみで特定できる様に書いてある為、図４では簡略化して行番号のみで文の開始位置・終了位置を表現してある。
【００３６】
文位置情報テーブル２０４１の各レコードは文開始位置フィールド４０１の値で昇順にソートされた状態で記録される。
【００３７】
図５は本実施形態の例外情報テーブル２０４２の構成例を示す図である。例外情報生成ツール２０１はソースプログラムを解析し、ソースプログラム中の各々の文の関係から、ある文で発生する例外と各々の例外が発生した場合のハンドリング方法を決定する。例外情報生成ツール２０１がソースプログラムを解析する方法はコンパイラがソースプログラムを解析してオブジェクトコードを生成するときの処理と同じであり、例外情報生成ツール２０１による解析結果はコンパイラによる解析結果と完全に一致する。
【００３８】
例外情報生成ツール２０１は文開始位置フィールド５０１には文の開始位置、文終了位置フィールド５０２には文の終了位置を記録する。この２つのフィールドは前述の文位置情報テーブル２０４１との関連付けの為に利用されるフィールドであり、そのレコードがソースプログラム中のどの文に対応するものかを識別する為に使用される。更に例外情報生成ツール２０１は例外番号フィールド５０３に例外の識別番号、ハンドリング種別フィールド５０４にその例外が発生した場合にハンドリング方法の種別を示す記号を格納する。例外番号フィールド５０３には各々の例外を識別する為の番号を格納する。この例外番号は後述の例外名テーブル２０４３の例外番号フィールド６０１と対応付けられており、例外名テーブル２０４３を参照することで例外名を導出することができる。ハンドリング種別フィールド５０４には、各々の例外が、文に付随する条件指定部が優先される為に例外は発生しない（Ｃ）、例外チェックが無効化されている為に例外は発生しない（Ｎ）、例外は発生するがその例外が発生したときに制御の移る例外処理ハンドラ節が存在しない為にプログラムの実行をそのまま継続する（Ｉ）、例外が発生するとユーザがソースプログラム中に指定した例外処理ハンドラ節に制御が移る（Ｄ）、例外が発生すると現在のモジュールを呼び出したモジュールに例外の処理を委譲する（Ｐ）、例外が発生するとプログラムが異常終了する（Ａ）、の６種類の内のいずれかを示す記号が設定される。また、ハンドラ名フィールド５０５にはハンドリング種別がＤである例外が発生したときに制御が移る手続きの名前が設定され、行番号フィールド５０６にはその手続きの開始行が設定される。ハンドラ名フィールド５０５の値は例外情報ガイドのサブメニュー１１８を表示する際に利用され、行番号フィールド５０６の値は、このハンドラの記述位置にジャンプするコマンドが選択されたときに使用される。
【００３９】
１つの文で複数の例外が発生することがある為、レコード５１１〜５１４の様に文開始位置フィールド５０１と文終了位置フィールド５０２の値の組が同一になるレコードが複数存在することもある。例外情報テーブル２０４２の各レコードは文開始位置フィールド５０１、文終了位置フィールド５０２、例外番号フィールド５０３の３つの値の組で一意に識別される。
【００４０】
図６は本実施形態の例外名テーブル２０４３の構成例を示す図である。例外番号フィールド６０１には各々の例外に対応するユニークな番号が格納され、例外名フィールド６０２には各々の例外の名称が格納される。
【００４１】
例外には言語仕様または処理系で予め定義されたものと、ユーザがソースプログラム中で定義するものの２種類がある。前者については予め決まった例外番号を与えておくことができるが、後者についてはソースプログラムを解析して適切な例外番号を付与する必要がある為、ソースプログラム解析中に付番して例外番号と例外名の組を作成する。
【００４２】
図７は本実施形態の文特定アルゴリズムの処理手順を示すフローチャートである。図７ではエディタ２０２の例外情報ガイド構成部２０２３が、マウスポインタ１１５の位置からどの文に対する例外情報ガイド１１７を表示するべきかを特定する為に使用するアルゴリズムを表している。
【００４３】
この手続きの目的は、文位置情報テーブル２０４１を走査して、ｓに文開始位置、ｅに文終了位置を取得することでマウスポインタ１１５の置かれた位置がどの文に属するかを特定することである。
【００４４】
ステップ７０１は初期化手続きであり、ｉは文位置情報テーブル２０４１の先頭レコードである第１レコード４１１を指す様に設定される。このフローチャートでは文位置情報テーブル２０４１中のｉ番目のレコードの文開始位置フィールド４０１をｓｔａｒｔ（ｉ）、文終了位置フィールド４０２をｅｎｄ（ｉ）、マウスポインタ１１５の位置をｐ、テーブルに含まれるレコード数をＮと記述してある。なお例外情報ガイド１１７の表示が指示された際にマウスポインタ１１５の位置ｐはソースプログラムの先頭からの相対行番号に変換されており、かつ、ソースプログラムの最大位置を超えることはないものとする。
【００４５】
まず、文位置情報テーブル２０４１の文開始位置フィールド４０１について走査を行う。文位置情報テーブル２０４１の第（ｉ＋１）レコードの文開始位置フィールドｓｔａｒｔ（ｉ＋１）の値がマウスポインタの位置ｐより小さい間（ステップ７０２）、ｉをインクリメントする（ステップ７０３）。この２つのステップで構成されるループを終了した時点で、マウスポインタ１１５が第１レコードから第ｉレコードのいずれかの文にあることが判る。
【００４６】
次に、文終了位置フィールド４０２について走査を行う。マウスポインタの位置ｐが第ｉレコードの文終了位置フィールドｅｎｄ（ｉ）の値より大きい間（ステップ７０４）、ｉをデクリメントする（ステップ７０５）。これにより、ステップ７０４とステップ７０５で構成されるループを終了した時点の第ｉレコードが現在マウスポインタが位置付けられている文の位置情報を格納したレコードとなる。従って、ｓには第ｉレコードの文開始位置フィールドｓｔａｒｔ（ｉ）の値、ｅには文終了位置フィールドｅｎｄ（ｉ）の値を設定すれば良い（ステップ７０６）。
【００４７】
図８は本実施形態の例外情報ガイド作成処理の処理手順を示すフローチャートである。ある文１１４で発生する例外に関する情報を調べたい場合、ユーザは、文１１４のどこかにマウスカーソルをおいてマウスの適切なボタンを押す等の方法でコンテキストメニュー１１６を呼び出し、そのコンテキストメニュー１１６の中に表示されている例外情報ガイドを呼び出す為のメニュー項目１１６１を選択することで例外情報ガイド１１７を呼び出すことができる。
【００４８】
エディタ２０２は例外情報ガイド１１７を表示する指示を受けると、まず、図９に示す処理（後述）を実行して例外情報ファイル２０４を更新し、例外情報ファイル解析部２０２２を呼び出して例外情報ファイル２０４を解析し、メモリ中に文位置情報テーブル２０４１、例外情報テーブル２０４２、例外名テーブル２０４３を展開する。
【００４９】
次に、マウスポインタ１１５の位置を基に、先述の図７の手順により例外情報ガイド１１７を表示すべき文を特定する（ステップ８０１）。ここで図７の手順中に得られた文名を例外情報ガイド１１７中の文名１１７３の領域にセットする（ステップ８０２）。
【００５０】
次に、図７の手順で得られた文開始位置ｓと文終了位置ｅを基に、例外情報テーブル２０４２から当該行に関するレコードを抽出する。具体的には例外情報テーブル２０４２の各レコードの文開始位置フィールド５０１と文終了位置フィールド５０２の値がそれぞれｓ及びｅと一致しているレコードを抽出すれば良い（ステップ８０３）。ここで抽出された各レコードのハンドリング種別フィールド５０４の値を例外情報ガイド１１７中の記号リスト１１７２の列にセットする（ステップ８０４）。更に、抽出された各レコードの例外番号フィールド５０３の値を基に、例外名テーブル２０４３を検索し、対応する例外名を取得して例外情報ガイド１１７中の例外リスト１１７１の列にセットする（ステップ８０５）。
以上の手順により、例外情報ガイド１１７を構成し、ディスプレイ装置２０６に表示することができる。
【００５１】
また、例外情報ガイド１１７中の適切な箇所をマウスポインタ１１５でポイントすると、その箇所に表示されている例外名とハンドリング種別の組み合わせによっては、サブメニュー１１８の表示を行う。サブメニュー１１８中には、その内容に応じて、例外が発生した場合に呼び出されるハンドラにジャンプするコマンドをメニュー項目１１８２に表示する。この様なコマンドが表示される場合には、ステップ８０３で抽出したレコードのハンドラ名フィールド５０５と行番号フィールド５０６から表示する文字列やコマンドが選択されたときにジャンプする行番号を取得することができる様になっている。
【００５２】
図９は本実施形態の例外情報ファイル更新処理の処理手順を示すフローチャートである。本実施形態において、例外情報ファイル２０４はソースファイルの拡張子だけを変えた名前になっているものとしている為、各々のソースファイルに対応する例外情報ファイル２０４はファイル名を基に探すことができる。
【００５３】
エディタ２０２は、例外情報ガイド１１７の表示が指示されると例外情報ファイル２０４の更新の要否を調べ、必要であれば、例外情報生成ツール２０１を呼び出して例外情報ファイル２０４を生成する。
【００５４】
エディタ２０２は、まずステップ９０１で、更新フラグ２０２５を調べ、更新フラグ２０２５がセットされていればソースファイル２０３を保存し（ステップ９０２）、例外情報生成ツール２０１を呼び出して例外情報ファイル２０４を生成する（ステップ９０５）。更新フラグ２０２５がクリアされていれば、そのソースファイル２０３に対応する例外情報ファイル２０４が存在するかどうかを調べる（ステップ９０３）。
【００５５】
例外情報ファイル２０４が存在しない場合は、例外情報ファイル２０４を生成する（ステップ９０５）。例外情報ファイル２０４が存在する場合は、ソースファイル２０３の更新日付が例外情報ファイル２０４の更新日付より新しいかどうかを調べ（ステップ９０４）、新しい場合には例外情報ファイル２０４を生成する（ステップ９０５）。
【００５６】
以上説明した様に本実施形態の例外情報表示装置によれば、例外情報の表示指示が行われた文の位置に対応する例外情報を例外情報テーブルから抽出して表示するので、ソースプログラム中の各文で起こる例外とその例外が起こった場合にどの様にハンドリングされるかに関する情報を提示し、プログラマのソースプログラム編集作業を支援することが可能である。
【００５７】
【発明の効果】
本発明により、プログラマが自身でソースプログラムを解析すること無く、プログラム中の各文で発生する可能性のある例外と各々の例外が発生した場合にどの様にハンドリングされるかを知ることができる様になる。
【図面の簡単な説明】
【図１】本実施形態の例外情報表示処理を実装したエディタの画面イメージを示す図である。
【図２】本実施形態のソフトウェア・コンポーネント群及びファイル等のリソース群、ハードウェア装置群の関連を示す図である。
【図３】本実施形態のＣＯＢＯＬ言語で書かれたソースプログラムの例を示す図である。
【図４】本実施形態の文位置情報テーブル２０４１の構成例を示す図である。
【図５】本実施形態の例外情報テーブル２０４２の構成例を示す図である。
【図６】本実施形態の例外名テーブル２０４３の構成例を示す図である。
【図７】本実施形態の文特定アルゴリズムの処理手順を示すフローチャートである。
【図８】本実施形態の例外情報ガイド作成処理の処理手順を示すフローチャートである。
【図９】本実施形態の例外情報ファイル更新処理の処理手順を示すフローチャートである。
【符号の説明】
１１０…エディタの画面、１１１…指示文、１１２…節、１１３…指示文、１１４…文、１１５…マウスポインタ、１１６…コンテキストメニュー、１１７…例外情報ガイド、１１８…サブメニュー、１１４１…条件指定部、１１６１…メニュー項目、１１７１…例外リスト、１１７２…記号リスト、１１７３…文名、１１８１…無効化コマンド、１１８２…メニュー項目、２０１…例外情報生成ツール、２０２…エディタ、２０３…ソースファイル、２０４…例外情報ファイル、２０５…入力装置、２０６…ディスプレイ装置、２０１１…構文解析部、２０１２…意味解析部、２０１３…例外情報構成部、２０２４…編集用バッファ、２０２５…更新フラグ、２０４１…文位置情報テーブル、２０４２…例外情報テーブル、２０４３…例外名テーブル、２０２１…例外情報生成ツール呼び出し部、２０２２…例外情報ファイル解析部、２０２３…例外情報ガイド構成部、４０１…文開始位置フィールド、４０２…文終了位置フィールド、４０３…文名フィールド、４１１…レコード、５０１…文開始位置フィールド、５０２…文終了位置フィールド、５０３…例外番号フィールド、５０４…ハンドリング種別フィールド、５０５…ハンドラ名フィールド、５０６…行番号フィールド、５１１〜５１４…レコード、６０１…例外番号フィールド、６０２…例外名フィールド。
【図１】
2004355072.tif 000003
【図２】
2004355072.tif 000004
【図３】
2004355072.tif 000005
【図４】
2004355072.tif 000006
【図５】
2004355072.tif 000007
【図６】
2004355072.tif 000008
【図７】
2004355072.tif 000009
【図８】
2004355072.tif 000010
【図９】
2004355072.tif 000011