(57)【要約】【課題】実行プログラムのソースコードあるいはソースコードに関連する情報を、実行プログラムの実行時に連動して表示し、実行プログラムの意味等の学習を支援すること。【解決手段】ソースコード表示対象のプログラムの実行状態で、当該プログラム内に表示制御コマンドが記述されているか否かを判定し、記述されていたならば、当該プログラムの実行を一時停止し、停止状態において、記述された表示制御コマンドを識別し、識別した表示制御コマンドに応じて、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得する情報取得手段と、取得したソースコードまたは関連情報を表示する表示手段とを備えることを特徴とする。【選択図】　　　　図１
2004139313.tif 000002
【特許請求の範囲】
【請求項１】
実行プログラムのソースコードを表示するソースコード表示システムであって、
ソースコード表示対象の実行プログラムの実行状態で、当該実行プログラム内に表示制御コマンドが記述されているか否かを判定し、当該コマンドが記述されていたならば、当該実行プログラムの実行を一時停止し、停止状態において、記述された表示制御コマンドを識別し、識別した表示制御コマンドに応じて、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得する情報取得手段と、
取得したソースコードまたは関連情報の一部または全部を表示する表示手段とを備えることを特徴とするソースコード表示システム。
【請求項２】
前記情報取得手段は、実行プログラム内でソースコードまたは関連情報を表示したい箇所に記述された１行の表示制御コマンドを識別し、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得することを特徴とする請求項１に記載のソースコード表示システム。
【請求項３】
前記情報取得手段は、実行プログラム内でソースコードまたは関連情報を表示したい範囲の開始位置と終了位置に記述された表示制御コマンドを識別し、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルおよび関連情報ファイルから取得することを特徴とする請求項１に記載のソースコード表示システム。
【請求項４】
前記情報取得手段は、実行プログラムのソースコードに記述している変数の値をさらに取得し、前記表示手段に表示させることを特徴とする請求項１または２に記載のソースコード表示システム。
【請求項５】
実行プログラムのソースコードを表示するソースコード表示プログラムであって、
ソースコード表示対象の実行プログラムの実行状態で、当該実行プログラム内に表示制御コマンドが記述されているか否かを判定し、記述されていたならば、当該実行プログラムの実行を一時停止し、停止状態において、記述された表示制御コマンドを識別し、識別した表示制御コマンドに応じて、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得するステップと、
取得したソースコードまたは関連情報の一部または全部を表示するステップとを備えることを特徴とするコンピュータが実行可能なソースコード表示プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムのソースコード表示システムに関し、特にプログラムを実行しながらソースコードまたは関連情報を表示するソースコード表示システムに関するものである。
【０００２】
【従来の技術】
コンピュータのプログラミングの学習時などにおいては、プログラムのサンプルコードを表示し、実際にそれを動かしてみて理解を深める、というのが一般的である。また、コンパイルや実行の指示をコマンドラインから行うのではなくて、グラフィカル・ユーザー・インタフェースで行うことができ、学習者の手助けとなるツールは存在する。
【０００３】
一方、プログラムを実行させながら、その実行状態を表示する機能を持つシステムとしては、デバッガが一般的に使われている。これは、開発者が作成したプログラムコードにバグがないかを検証するために使われるツールである（例えば、特許文献１参照）。その使用形態としては、ソースコードを表示した上で、操作者がそのコード中のどのポイントでどのような情報を表示するのか指定することによって、そのソースコードを実行しながらその動的な情報（変数の値の変化など）を表示して、プログラムコードの健全性をチェックしている（例えば、特許文献２参照）。
【０００４】
【特許文献１】
特開平１０−２０７７４０号
【０００５】
【特許文献２】
特開２００２−１９６９５０号
【０００６】
【発明が解決しようとする課題】
実行中のプログラムの記述を理解する場合、そのソースコードを解読し、ある処理とそれに対応するソースコードを自ら適切に把握し、ソースコードをたどっていく作業の必要が生じる。また、その処理が複数のプログラムからなる処理の場合は、複数のソースコード間で的確に処理手順を追っていくことになる。
そこで、プログラミングの学習時において、サンプルプログラム提供者がソースコードに関連するさまざまな情報をプログラムの実行に連動して伝達することが可能な手段またはツールが存在すれば、サンプルプログラムの学習者はそのソースコードの意味や関連情報を容易に理解することが可能となる。
これに対し、上記特許文献１，２で開示されたデバッガを用いることが考えられるが、デバッガによりブレークポイントを指定して実行状態の情報を取得する場合には、前提条件として、操作者がブレークポイントの適切な指定位置の情報を予め把握している必要がある。
すなわち、あるプログラムの詳細を理解するためには、プログラムの実行を実現しているソースコードおよびその記述箇所を正確に把握しておく必要があり、初心者等においては利用できないという問題がある。
【０００７】
本発明は、実行プログラムのソースコードあるいはソースコードに関連する情報を、実行プログラムの実行時に連動して表示し、実行プログラムの意味等の学習を支援することができるソースコード表示システム及びプログラムを提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記目的を達成するために、本発明は、ソースコード表示対象の実行プログラムの実行状態で、当該実行プログラム内に表示制御コマンドが記述されているか否かを判定し、記述されていたならば、当該実行プログラムの実行を一時停止し、停止状態において、記述された表示制御コマンドを識別し、識別した表示制御コマンドに応じて、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得する情報取得手段と、取得したソースコードまたは関連情報の一部または全部を表示する表示手段とを備えることを特徴とする。
そして、前記情報取得手段は、実行プログラム内でソースコードまたは関連情報を表示したい箇所に記述された１行の表示制御コマンドを識別し、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得することを特徴とする。
また、前記情報取得手段は、実行プログラム内でソースコードまたは関連情報を表示したい範囲の開始位置と終了位置に記述された表示制御コマンドを識別し、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルおよび関連情報ファイルから取得することを特徴とする。
また、前記情報取得手段は、実行プログラムのソースコードに記述している変数の値をさらに取得し、前記表示手段に表示させることを特徴とする。
【０００９】
本発明に係るソースコード表示プログラムは、ソースコード表示対象の実行プログラムの実行状態で、当該実行プログラム内に表示制御コマンドが記述されているか否かを判定し、記述されていたならば、当該実行プログラムの実行を一時停止し、停止状態において、記述された表示制御コマンドを識別し、識別した表示制御コマンドに応じて、対応する当該実行プログラムのソースコードまたは関連情報をソースコードファイルまたは関連情報ファイルから取得するステップと、取得したソースコードまたは関連情報の一部または全部を表示するステップとを備えることを特徴とする。
このような構成によって、プログラムを実行しながら、それを実行するために必要とされるソースコードまたはソースコードの一部、ソースコードに関連する情報、ソースコードで利用されている変数の値の表示が可能となる。
また、それら各情報の表示によって、プログラムの実行に関する情報を容易に取得することが可能となる。
【００１０】
【発明の実施の形態】
以下、図面と共に本発明の実施の形態を詳細に説明する。
図１は、本発明に係るソースコード表示システムの実施に形態を示すシステム構成図である。
図１において、１０１は本システムを稼動する際に、ソースコードおよびそれに関連する情報を表示する対象となる実行プログラムのファイルである。
１０２は実行プログラムファイル１０１中の実行プログラムを作成するために使用したソースコードのファイルであり、本システムから参照できる場所に存在する。
１０３はソースコードファイル１０２中のソースコードの説明文等、ソースコードに関連する表示情報を記述した表示情報リソースファイルである。
１０４は実行プログラムファイル１０１中の実行プログラムに埋め込まれた本システム用コマンドの処理を行う機能情報を保持している情報表示制御用コマンドライブラリである。
１０５はソースコードファイル１０２中のソースコードで使用されている変数の値を時系列に格納しておく変数値格納用テーブルである。
１０６は本システムの演算処理部であり、プログラム実行部１０７と表示情報制御部１０８とからなる。
【００１１】
プログラム実行部１０７は、実行プログラムファイル１０１中の実行プログラムを実行するプログラム実行機能、実行過程において本システム用コマンド（後述する）が出現した場合は情報表示制御用コマンドライブラリ１０４からそのコマンドを呼び出す情報表示制御用コマンド呼び出し機能、実行プログラムファイル１０１中の実行プログラムの実行状態の表示を表示情報制御部１０８に依頼する機能、情報表示制御用コマンドライブラリ１０４から返ってきた処理内容を表示情報制御部１０８に転送する表示情報生成処理依頼機能を備えている。
【００１２】
表示情報制御部１０８は、プログラム実行部１０７から送信された処理命令をもとに、ソースコードファイル１０２の内容（ソースコード）または表示情報リソースファイル１０３内のメッセージリソースまたは変数値格納用テーブル１０５にある変数の情報から表示情報を生成する機能、生成した情報の表示を出力機器（ディスプレイなど）に指示する機能、実行プログラムファイル１０１の実行プログラムの実行状態の表示を出力機器（ディスプレイなど）に指示する機能を備えている。
【００１３】
１０９は表示情報制御部１０８から送信された表示情報を表示する機能を持つディスプレイ装置である。
１１０は実行プログラムファイル１０１中の実行プログラム実行においてデータベースが必要な場合に使用する実行プログラム用データベースであり、データベースが必要でない場合には不要である。
【００１４】
図２（ａ）は、変数値格納用テーブル１０５に保存されるデータの構造例を示す図である。
図２（ａ）において、２０１の行はステップ位置を表わす数値を表わしている。ここで、ステップ位置とは、実行プログラムの実行を一時停止させる位置のことである。ステップ位置を表わす数値は、実行プログラムを始動してからカウントが開始され、実行プログラムの実行を一時停止するごとに、１ずつ増加される数値である。また、実行プログラムが一時停止される箇所は、ソースコード内で本システム制御用コマンドが記述された箇所である。
２０２の変数名とは、実行プログラムのソースコード内で使用されている変数のうち、変数値の監視を指示された変数の名前であり、２０２が示す箇所より下のセルにその変数名（ｉｎｄｅｘ，ａｍｏｕｎｔ，ｄａｙなど）が格納される。格納される順序は、ソースコード内でその変数の初出箇所が早い順である。
２０３はステップ位置の順に変数の値が格納されるエリアであり、あるステップ位置で存在しない変数の場合、例えばステップ１の変数ｄａｙの場合は符合２０４で示すようにＮＵＬＬになる。
【００１５】
図２（ｂ）は、ソースコードの説明文などメッセージ表示エリア３０５（図３）に表示する文字列を格納する表示情報リソースファイルの構造例を示す図である。
図２（ｂ）において、２０６はソースコードの説明文などを識別するためのキーである。
２０７は実際にメッセージ表示エリア３０５（図３）に表示される文字列である。
説明文のキー２０６とそれに対応する説明文の文字列２０７とで、「キー＝表示文字列」という形式で記述しておく。
【００１６】
図２（ｃ）は、本システムの制御用コマンドを実行プログラムのソースコードに記述した例を示す図である。
図２（ｃ）において、２０８は変数値の表示を行いたい変数を指定するコマンドである。本コマンドによるシステム動作例は図７で詳しく述べる。
２０９は本システムの制御用コマンドのラインコマンドの例である。本コマンドによるシステム動作例は図５で詳しく述べる。
２１０および２１１は本システムの制御用コマンドのブロックコマンドの例である。ソースコードのある部分を、対になる開始コマンド２１０と終了コマンド２１１で囲むことによって使用する。本コマンドによるシステム動作例は図６で詳しく述べる。
【００１７】
図３はディスプレイ装置１０９の画面例を示す図である。
図３において、３０１は本システムの表示画面の枠である。
３０２は実行中のプログラムに関連する情報を表示する枠である。
３０３は実行中のプログラムのソースコードのファイル名である。
３０４はソースコードのファイル名３０３に表示したソースコードの内容を表示するソースコード表示エリアであり、そのデータは、ソースコードファイル１０２の内容である。
【００１８】
３０５はソースコード表示エリア３０４に表示されたソースコードに対応する説明文等のソースコードに関連する情報を表示するメッセージ表示エリアであり、そのデータは表示情報リソースファイル１０３に記述されている内容である。３０６はソースコードで使用されている変数値のうち、ソースコード内で指定のあった変数の値を時系列に表示する変数値表示エリアであり、そのデータは変数値格納用テーブル１０５に格納されている情報である。
３０７は一時停止していた実行プログラムの処理を再開し、次のステップ位置で処理を一時停止する命令を行うユーザー・インタフェースであり、このボタンを押すことによって情報の表示枠３０２またはメッセージ表示エリア３０５または変数値表示エリア３０６に表示される情報が次のステップ位置までの情報に更新される。
３０８は処理を終了させるためのボタンである。
【００１９】
図４は、本実施形態の処理の概要を示すフローチャートである。
以下、本フローチャートに従い、本実施形態の概要について説明する。
まず、プログラム実行部１０７は、ステップ４０１において、ソースコードを表示したい対象となるプログラム（実行プログラムファイル１０１中の実行プログラム）の実行を開始する。
次に、ステップ４０２において、ソースコード中に情報表示制御用コマンドが記述されている限り、以下に示すステップ４０３からステップ４０７までの処理を繰り返し実行する。
【００２０】
まず、ステップ４０３において、次の情報表示制御用コマンドまでプログラムの処理を実行する。
次に、プログラム実行部１０７は、ステップ４０４において情報表示制御用コマンドの識別を行い、次にステップ４０５において情報表示制御用コマンドライブラリ１０４から識別した情報表示制御用コマンドの呼び出しを行い、コマンドに対応する適切な処理内容の情報を取得し、それを表示情報制御部１０８へ転送する。
ここで、転送される情報には、生成する表示情報の種別とともに表示するリソースを指示する情報等が含まれている。また、プログラム実行部１０７は、ここで実行中のプログラムを一時停止する。
【００２１】
ステップ４０６において、表示情報制御部１０８は転送された情報をもとに表示する情報の種別、表示するリソースを判別して、表示情報の生成を行う。表示情報の生成についての詳細は、図５、図６、図７に後述する。
次に、ステップ４０７において、ステップ４０６において生成された表示情報をディスプレイ装置１０９に表示する。表示の後、次のステップ位置へ処理を進めるボタン３０７が、本システムの利用者によって押されると、次の処理へ進む。
最後に、ステップ４０８において、対象プログラムが終了するまで実行する。
【００２２】
図５は、図４のステップ４０６の表示情報の生成に対し、ソースコード中のある１行に対する説明文を表示するラインコマンド２０９に対する処理の流れを示すフローチャートである。
以下、本フローチャートに従い、ラインコマンドに対する処理の詳細を説明する。
まず、ステップ５０１において、プログラム実行部１０７は実行中のプログラムのプログラム名および実行中の行番号およびコマンドの引数情報を表示情報制御用コマンドとともに表示情報制御部１０８に転送する。ここで、コマンドの引数情報とは、表示する説明文を表示情報リソースファイル１０３から検索するキー等を含むものである。
表示情報制御部１０８はソースコードファイル１０２より、送られた実行中のファイル名と同名のファイルを取得する。
【００２３】
次に、ステップ５０２において、表示情報制御部１０８はステップ５０１にて取得したソースコードファイルから、プログラム実行部１０７から送信された行番号の前後数行（例えば１０行）のソースコードを文字列として取得する。
次に、ステップ５０３において、表示情報制御部１０８はステップ５０１にて取得した本コマンドの引数情報をもとに表示情報リソースファイル１０３から該当するソースコード説明文を取得する。
次に、ステップ５０４において、表示情報制御部１０８はステップ５０１にて取得したソースコードのファイル名を図３の３０３のようにディスプレイ装置１０９に表示する。
次に、ステップ５０５において、表示情報制御部１０８はステップ５０２にて取得したソースコードの一部またはソースコード全てを、ソースコード表示エリア３０４に表示する。
最後に、ステップ５０６において、表示情報制御部１０８はステップ５０３にて取得したソースコード説明文を、メッセージ表示エリア３０５に表示する。
【００２４】
図６は、図４のステップ４０６の表示情報の生成に対し、実行プログラムの実行中にデータベース１１０へアクセスするデータベース処理の前後をブロックコマンド２１０および２１１で囲むことによって、そのデータベース処理の前後におけるデータベース情報を取得するブロックコマンドに対する処理の流れを示すフローチャートである。
以下、本フローチャートに従い、ブロックコマンドに対する処理の詳細を説明する。
まず、ステップ６０１において、ブロックコマンドの開始用コマンド２１０の箇所を処理する時点で、プログラム実行部１０７はデータベース処理前の情報をデータベース１１０から取得する。
次に、ステップ６０２において、ブロックコマンドの開始用コマンド２１０と終了用コマンド２１１で囲まれた箇所に記述されているデータベース処理等を実行する。
【００２５】
次に、ステップ６０３において、ステップ６０２によるデータベース処理後の情報をデータベース１１０から取得する。
次に、ステップ６０４において、ステップ６０１とステップ６０３で取得したデータベース処理前後の情報を、ソースコードに関連する情報としてメッセージエリア３０５に表示するために、表示情報制御部１０８にこれら情報の表示処理をするように指示する。また、同時にステップ５０１と同様の手順にて、ソースコードの情報を取得する。
最後に、ステップ６０５において、ステップ５０４およびステップ５０５における手順と同様にして、ソースコードのファイル名およびソースコードを、ソースコードファイル名欄３０３およびソースコード表示エリア３０４にそれぞれ表示する。
【００２６】
図７は、実行プログラムの一時中断時に、変数値表示エリア３０６に指定された変数の値を時系列に表示する処理の流れを示すフローチャートである。
以下、本フローチャートに従い、変数値表示処理の詳細を説明する。
まず、ステップ７０１において、変数宣言時に変数指定コマンド２０８によって、変数の監視を指定しているかどうかチェックする。もし、変数の監視の指定が行われていれば、ステップ７０２を実行する。
ステップ７０２において、プログラム実行部１０７は表示情報制御部１０８に変数を変数値格納用テーブル１０５に格納するように指示する。表示情報制御部１０８は渡された変数を変数値格納用テーブル１０５に格納する。
ステップ７０３において、実行プログラムが本システムの他の制御用コマンドによって一時中断するたびに、ステップ７０４からステップ７０６の処理を実行する。
ステップ７０４において、プログラム実行部１０７は変数が変数値格納用テーブル１０５に登録されているかどうかチェックする。登録されている場合は、ステップ７０５を実行する。
【００２７】
ステップ７０５において、変数の値を変数値格納用テーブル１０５に格納することを、プログラム実行部１０７が表示情報制御部１０８に指示し、それを表示情報制御部１０８が実行する。
ステップ７０６において、表示情報制御部１０８は変数値格納用テーブル１０５の内容を変数値表示エリア３０６に表示する。
ステップ７０７において、プログラム実行時に変数が消滅される。
ステップ７０８において、消滅された変数を変数値格納用テーブル１０５から削除するように、プログラム実行部１０７が表示情報制御部１０８に指示し、それを表示情報制御部１０８が実行する。
【００２８】
以上のように本実施形態によれば、学習対象となる実行プログラムを実行した際に、その動作を実現するために利用されているプログラムのソースコードおよびその一部、またはそのソースコードに関連する情報を、実行手順に沿って容易に閲覧することが可能となる。
従って、例えば、本機能を実現するプログラム（プログラム実行部１０７と表示情報制御部１０８）および関連するテーブル１０５やライブラリ１０４と、サンプルプログラム（ソースコードを学習するプログラム）をＣＤ−ＲＯＭ等の媒体に格納して配布、またはネットワーク経由で有償で配布し、ユーザが所有するコンピュータ上で両プログラムを実行することにより、サンプルプログラムの機能を動かしながら、その実装方法の修得、理解を容易、かつ効率的に支援することが可能になる。
【００２９】
なお、本機能を実現するプログラム（プログラム実行部１０７と表示情報制御部１０８）および関連するテーブル１０５やライブラリ１０４が既に存在する環境であれば、実行プログラムファイル１０１およびそのソースコードファイル１０２、表示情報リソースファイル１０３のみをＣＤ−ＲＯＭ等でユーザに提供し、実行プログラムの学習を支援することができる。
【００３０】
【発明の効果】
以上の説明から明らかなように、本発明によれば、ソースコードあるいはソースコードに関連する情報をプログラムの実行時に連動して表示し、実行プログラムの意味等の学習を支援することができる。
【図面の簡単な説明】
【図１】本発明に係るソースコード表示システムの実施の形態を示すシステム構成図である。
【図２】変数値格納用テーブルのデータ構造、表示情報リソースファイルのデータ例、ソースコードの実装例を示す図である。
【図３】ソースコードおよび関連情報の表示画面の例を示す図である。
【図４】実施形態における処理の概要を示すフローチャートである。
【図５】ラインコマンドに対する処理の詳細を示すフローチャートである。
【図６】ブロックコマンドに対する処理の詳細を示すフローチャートである。
【図７】変数値を表示する処理のフローチャートである。
【符号の説明】
１０１…実行プログラムファイル、１０２…ソースコードファイル、１０３…表示情報リソースファイル、１０４…情報表示制御用コマンドライブラリ、１０５…変数値格納用テーブル、１０６…演算制御部、１０７…プログラム実行部、１０８…表示情報制御部、１０９…ディスプレイ装置、２０８…変数指定コマンド、２０９…ラインコマンド、２１０…ブロック開始コマンド、２１１…ブロック終了コマンド。
【図１】
2004139313.tif 000003
【図２】
2004139313.tif 000004
【図３】
2004139313.tif 000005
【図４】
2004139313.tif 000006
【図５】
2004139313.tif 000007
【図６】
2004139313.tif 000008
【図７】
2004139313.tif 000009