(57)【要約】【課題】ソースコードの筋道の確認が注釈によって阻碍されないようにしつつも、注釈を有効に利用できるようにする。【解決手段】ソフトウエア開発用装置１０は、ソースコードデータ１２が指定されると、そのソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けて各テーブル２２〜２４に記録し、その後、注釈を除いたソースコードをソースコード表示枠４１に表示する。さらに、その表示したソースコードのうちの任意の部分がドラッグされたとき、その部分に関連付けられている注釈があれば、ソフトウエア開発用装置１０は、その注釈をアウトライン表示枠４２に表示する。【選択図】図２７
2008077613.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手段，
前記読出手段が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手段，
前記読出手段が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手段，
前記ソースコード表示手段において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手段，及び、
前記受付手段が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手段
として機能させる
ことを特徴とするソースコード表示プログラム。
【請求項２】
前記対応情報生成手段が、ソースコード内の注釈と、その注釈に関連付けられているトークンと、その注釈のソースコード内での行方向の所在位置を示す位置情報とを、対応付けた対応情報を生成し、記憶装置に記憶するとともに、
前記コンピュータを、更に、
前記ソースコードにおいて前記指定により特定される部分と同一内容の部分を抽出し、それら各部分の前記ソースコード内での位置を示す位置情報を取得し、それら位置情報に一致する位置情報を持つ注釈を前記記憶装置から読み出し、読み出した注釈を、前記第２の表示枠における対応する位置に表示する第２の表示手段
として機能させる
ことを特徴とする請求項１記載のソースコード表示プログラム。
【請求項３】
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出部，
前記読出部が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成部，
前記読出部が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示部，
前記ソースコード表示手順において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付部，及び、
前記受付部が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示部
を備えることを特徴とするソースコード表示装置。
【請求項４】
前記対応情報生成部が、ソースコード内の注釈と、その注釈に関連付けられているトークンと、その注釈のソースコード内での行方向の所在位置を示す位置情報とを、対応付けた対応情報を生成し、記憶装置に記憶するとともに、
前記ソースコードにおいて前記指定により特定される部分と同一内容の部分を抽出し、それら各部分の前記ソースコード内での位置を示す位置情報を取得し、それら位置情報に一致する位置情報を持つ注釈を前記記憶装置から読み出し、読み出した注釈を、前記第２の表示枠における対応する位置に表示する第２の表示部を、更に備える
ことを特徴とする請求項３記載のソースコード表示装置。
【請求項５】
コンピュータが、
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手順，
前記読出手順において前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手順，
前記読出手順において前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手順，
前記ソースコード表示手順において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手順，及び、
前記受付手順において受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手順
を実行する
ことを特徴とするソースコード表示方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースコードを表示する装置としてコンピュータを動作させるためのソースコード表示プログラムと、そのようなソースコード表示プログラムが動作したコンピュータと同等に機能するソースコード表示装置と、そのようなソースコード表示装置により実現されるソースコード表示方法とに、関する。
【背景技術】
【０００２】
ソフトウエアの一般的な開発手法によると、所定のプログラミング言語に従って作成されたソースコードに対し、コンパイルやリンクが施されることにより、ソフトウエアのバイナリコードが、作成される。周知のように、このような作業を開発者が行えるようにするためのソフトウエア開発ツール（ソフトウエア）が、いろいろと開発されている。
【０００３】
このようなソフトウエア開発ツール上で編集されるソースコードには、注釈を挿入することができるようになっている。注釈は、ソースコード中の全ての文（ステートメント）が表す筋道（ロジック）には全く影響しないものであり、その用途はというと、ソースコード内の前処理指令（プリプロセッサ）や文や文の一部について注意すべきことを示したり、文の把握を補助するための情報を付け加えておいたりすることにある。
【０００４】
注釈は、ソースコード内に自由に配置することができるようになっている。Ｃ言語であれば、注釈は、「/*」と「*/」というトークンによって挟み込むことにより、文の途中に挿入することができる。また、注釈は、一行内に「//」というトークンを配置して、その「//」の後ろに書き込むこともできる。なお、前者のように文の途中に挿入された注釈は、ブロックコメントと称され、後者のように一行の後側に書き込まれた注釈は、ラインコメントと称されている。
【０００５】
【特許文献１】特開平０６−０６７８７２号公報（段落００１６，図３）
【特許文献２】特開平０５−１００８３６号公報
【特許文献３】特開平０８−２７２５９６号公報
【特許文献４】特開平０７−２３４７８３号公報
【特許文献５】特開２００５−１２２４０７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、このような注釈がソースコード内に存在していると、表示された文（ステートメント）を順に把握していきながらソースコードの筋道（ロジック）を確認する際に、文が把握しにくくなるという問題があった。
【０００７】
例えば、文（ステートメント）の途中に多数のブロックコメントが挿入されていると、その文の内容が把握しにくくなって、その文がどのような処理を行うものであるのか判断付かなくなることがある。
【０００８】
また、文（ステートメント）がなくてラインコメントだけをもつ行が、文を持つ行の間に挟まれていると、文を順に把握するのに時間が掛かってしまう。
【０００９】
また、ソースコードを画面に表示した際に、画面内にラインコメントだけの行が多数あると、その画面内に表示される文の量が少なくなり、ソースコード全体の筋道が確認しにくくなる。
【００１０】
また、ソースコードの見栄えを良くするため、文（ステートメント）を行の左側に揃えて記述し、ラインコメントを行の右側に揃えて記述する方法が、採られることもある。しかし、この場合、ラインコメントだけの行が多いと、複数行に亙って左側が空白となってしまい、やはり、その画面内に表示される文の量が少なくなってしまう。
【００１１】
また、文中の変数名や引数名や変数名などについて改訂（バージョンアップ）を行った際に、その文を改訂前のものに簡単に戻せるようにするため、改訂前の文を注釈として保存しておく技術がある。この技術は、コメントアウトと称されるものであるが、このコメントアウトを使いすぎて、内容が少しずつ異なる文が注釈として多数保存されていると、どの文が最終版であるか判断しにくくなってしまう。
【００１２】
なお、ソースコードが表示される表示枠とは別の表示枠において、ソースコードに含まれる関数名，インクルードファイル名，グローバル宣言，クラス名などを、見出語として表示する方法がある。このようにソースコードとは別の表示枠に表示される見出語は、アウトラインと称されるが、このアウトラインだけでは、文を順に把握することができないため、ソースコードの筋道（ロジック）の確認が行えない。
【００１３】
本発明は、前述した従来の事情に鑑みてなされたものであり、その課題は、ソースコードの筋道の確認が注釈によって阻害されることがないようにしつつも、注釈を有効に利用できるようにすることにある。
【課題を解決するための手段】
【００１４】
上記の課題を解決するために案出されたソースコード表示プログラムは、コンピュータを、文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手段，前記読出手段が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手段，前記読出手段が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手段，前記ソースコード表示手段において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手段，及び、前記受付手段が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手段として機能させることを、特徴としている。
【００１５】
このように構成されると、注釈を除いたソースコードを第１の表示枠に表示することができるとともに、その表示したソースコードのうちの任意の部分を指定することにより、その部分に関連付けられている注釈が第２の表示枠に表示される。これにより、ソースコードの筋道の確認が注釈によって阻碍されることがなくなるとともに、注釈が有効に利用できる。
【００１６】
なお、本発明のソースコード表示プログラムは、指定した部分と同一内容の部分をソースコードから抽出し、それら各部分が所在する全ての位置にある注釈を、前記第２の表示枠に更に表示するようになっていてもよい。これにより、注釈をより有効に利用できることとなる。
【００１７】
また、上記の課題を解決するために案出されたソースコード表示装置は、文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出部，前記読出部が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成部，前記読出部が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示部，前記ソースコード表示手順において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付部，及び、前記受付部が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示部を備えることを、特徴としている。
【００１８】
従って、このソースコード表示装置は、前述した本発明のソースコード表示プログラムが動作したコンピュータと同等に機能することになる。
【００１９】
また、上記の課題を解決するために案出されたソースコード表示方法は、コンピュータが、文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手順，前記読出手順において前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手順，前記読出手順において前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手順，前記ソースコード表示手順において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手順，及び、前記受付手順において受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手順を実行することを、特徴としている。
【００２０】
従って、このソースコード表示方法を実現した装置は、前述した本発明のソースコード表示装置と同等に機能することになる。
【発明の効果】
【００２１】
以上に説明したように、本発明によれば、ソースコードの筋道の確認が注釈によって阻害されることがなくなり、然も、注釈が有効に利用できるようになる。
【発明を実施するための最良の形態】
【００２２】
次に、本発明を実施するための最良の形態について、添付図面を参照しながら、詳細に説明する。
【００２３】
先ず、本実施形態のソフトウエア開発用装置の構成について説明する。
【００２４】
図１は、本実施形態のソフトウエア開発用装置１０の構成図である。
【００２５】
図１に示すように、ソフトウエア開発用装置１０は、後述のプログラム群及びデータ群が導入された一般的なパーソナルコンピュータである。このパーソナルコンピュータは、周知のように、液晶ディスプレイ等の表示装置１０ａ，キーボードやマウス等の入力装置１０ｂ，及び、これら装置１０ａ，１０ｂが接続された本体とからなる。その本体は、ＨＤＤ［Hard Disk Drive］１０ｃ，ＣＰＵ［Central Processing Unit］１０ｄ，ＤＲＡＭ［Dynamic Random Access Memory］１０ｅ，その他のハードウエアを、内蔵している。このうち、ＨＤＤ１０ｃは、各種のプログラムやデータを記憶する記憶装置であり、ＣＰＵ１０ｄは、そのＨＤＤ１０ｃ内のプログラムに従って各種の処理を行う制御装置であり、ＤＲＡＭ１０ｅは、ＣＰＵ１０ｄがプログラムに従った処理を行う際に作業領域が展開される揮発性記憶装置である。
【００２６】
そして、このソフトウエア開発用装置１０のＨＤＤ１０ｃには、基本ソフトウエア１１，ソースコードデータ１２，及び、ソフトウエア開発ツール１３が、格納されている。基本ソフトウエア１１は、表示装置１０ａや入力装置１０ｂにおける入出力の管理や、ＨＤＤ１０ｃやＤＲＡＭ１０ｅの記憶領域の管理や、ＧＵＩ［Graphical User Interface］といった基本的な機能を多くのアプリケーションに提供するためのソフトウエアである。ソースコードデータ１２は、所定のプログラミング言語の語句をその文法に従って組み合わせてなるテキストのテキストデータである。ここで、図２に、ソースコードデータ１２に基づいて表されるソースコードの一例を示す。図２に示したソースコードは、Ｃ言語によるものとなっている。なお、図２では、例示したソースコードの各行に、先頭行からの順番を示す行番号が、示されているとともに、各マスに、先頭マスからの順番を示すマス番号が、示されている。但し、これら行番号やマス番号は、便宜的に示したもので、ソースコードを構成するものではない。ソフトウエア開発ツール１３は、ソースコードの編集機能やバイナリコードの生成機能を当該パーソナルコンピュータ上で実現するためのソフトウエアである。なお、バイナリコードの生成機能には、周知のように、ソースコードをコンパイルするためのコンパイラや、コンパイルにより生成されたオブジェクトをリンクするためのリンカーが含まれる。これらコンパイラやリンカーは、図示していないが、それら機能を発揮するためのモジュールプログラムにより実現される。
【００２７】
次に、ソフトウエア開発用装置１０において行われる処理の内容について、説明する。
【００２８】
入力装置１０ｂが操作者によって操作されることにより、ソフトウエア開発ツール１３が起動されると、ＣＰＵ１０ｄがそのソフトウエア開発ツール１３を読み込み、処理を開始する。
【００２９】
図３は、当該ソフトウエア開発ツール１３の起動後の処理の流れを示す図である。
【００３０】
処理の開始後、最初のステップＳ１０１では、ＣＰＵ１０ｄは、初期化処理を行う。この初期化処理には、これ以降に用いられる後述の各変数にゼロを代入する処理が含まれる。
【００３１】
次のステップＳ１０２では、ＣＰＵ１０ｄは、作業画面を表示装置１０ａに表示する処理を行う。作業画面には、ソースコードを表示するためのソースコード表示枠と、ソースコード内の任意の文字を見出しとして表示するためのアウトライン表示枠とが、含まれている。但し、この時点では、作業画面には、双方の表示枠のみが表示され、双方の表示枠の中には、何も表示されない。また、この作業画面内には、任意のファイルを開く指示を入力するためのボタンが、含まれている。
【００３２】
次のステップＳ１０３では、ＣＰＵ１０ｄは、イベントが発生するまで待機し、イベントが発生すると、ステップＳ１０４へ処理を進める。
【００３３】
ステップＳ１０４では、ＣＰＵ１０ｄは、そのイベントがファイルを開く指示であるか否かを、判別する。そして、そのイベントがファイルを開く指示であった場合、ＣＰＵ１０ｄは、ステップＳ１０４からステップＳ１０５へ処理を分岐させる。
【００３４】
ステップＳ１０５では、ＣＰＵ１０ｄは、ソースコード表示処理を実行する。
【００３５】
図４乃至図７は、ソースコード表示処理の流れを示す図である。
【００３６】
ソースコード表示処理の開始後、最初のステップＳ２０１では、ＣＰＵ１０ｄは、初期化処理を行う。この初期化処理には、これ以降に用いられる後述の各変数にゼロを代入する処理，及び、これ以降に用いられる後述の各テーブルを新規生成する処理が、含まれる。
【００３７】
次のステップＳ２０２では、ＣＰＵ１０ｄは、指定されたソースコードデータ１２のファイルをＨＤＤ１０ｃから読み出す処理を行う。この処理を行った後、ＣＰＵ１０ｄは、ステップＳ２０３へ処理を進める。
【００３８】
なお、ステップＳ１０２，Ｓ１０３及びＳ２０２を実行するＣＰＵ１０ｄは、前述した読出手段及び読出部に相当している。また、ステップＳ１０２，Ｓ１０３及びＳ２０２は、前述した読出手順に相当している。
【００３９】
ステップＳ２０３では、ＣＰＵ１０ｄは、読み出したソースコードデータの未処理の行のうち、先頭側の一行を、処理対象行として特定する。
【００４０】
次のステップＳ２０４では、ＣＰＵ１０ｄは、処理対象行の未処理のトークンのうち、先頭側のトークンを、処理対象トークンとして特定する。ここで、トークンとは、ソースコード内の文（ステートメント）を構成する字句を言い、具体的には、/*，*/，(，)，"，;，{，}，//，演算子，関数名，変数名，引数名，制御文などである。なお、/*と*/で挟まれる注釈そのもの，或いは、//以降に記述される注釈そのものは、文（ステートメント）とは無関係な字句であり、コンパイラが把握しない字句であるため、厳密には、トークンとは言わないが、本明細書では、便宜上、トークンとして取り扱うことにする。
【００４１】
次のステップＳ２０５では、ＣＰＵ１０ｄは、処理対象トークンが関数名であるか否かを、判別する。具体的には、ＣＰＵ１０ｄは、『階層変数の代入値がゼロであり、且つ、その処理対象トークンがint，char，floatなどの型名と開き小括弧「(」との間にある』という条件を満たすか否かを、判別する。なお、階層変数の代入値は、括弧が何重に重なっているかを示す。そして、処理対象トークンが関数名であった場合、ＣＰＵ１０ｄは、ステップＳ２０５からステップＳ２０６へ処理を分岐させる。
【００４２】
ステップＳ２０６では、ＣＰＵ１０ｄは、処理対象トークンに関する情報を関数構造体管理テーブルに登録する処理を行う。なお、関数構造体管理テーブルは、当該ソースコードに含まれる関数に関する情報を管理するために利用されるテーブルである。
【００４３】
図８は、その関数構造体管理テーブル２１のデータ構造の一例を示す図である。
【００４４】
図８に示すように、関数構造体管理テーブル２１の各レコードは、「関数名」，「関数型」，「ソースコードにおけるその関数名を含む行の番号」，「関数総行数」，「その関数名の先頭文字があるマスの番号」，「アウトラインにおけるその関数名を含む行の番号」，「引数総数」，「変数総数」，「return句総数」，「abs注釈総数」，「ver注釈総数」及び「oth注釈総数」の各フィールドを、有している。
【００４５】
「関数名」フィールドは、その関数の名称が記録されるフィールドである。「関数型」は、その関数の戻り値の型として設定されている種類の名称が記録されるフィールドである。「ソースコードにおけるその関数名を含む行の番号」フィールドは、ソースコード内の各行に定義されている行番号のうち、その関数名が存在する行の行番号が記録されるフィールドである。「関数総行数」フィールドは、その関数名がある行から、その関数の作業内容が記述される一対の中括弧のうちの閉じ括弧がある行までの行数が記録されるフィールドである。「その関数名の先頭文字があるマスの番号」フィールドは、その関数名が存在する行内の各マスに定義されているマス番号のうち、その関数名の先頭文字が存在するマスのマス番号が記録されるフィールドである。「アウトラインにおけるその関数名を含む行の番号」フィールドは、アウトライン内の各行に定義されている行番号のうち、その関数名が存在する行の行番号が記録されるフィールドである。「引数総数」フィールドは、その関数直後の一対の小括弧の間に出てくる引数の個数が記録されるフィールドである。「変数総数」フィールドは、その関数の作業内容が記述される一対の中括弧の間に存在する変数の個数が記録されるフィールドである。「return句総数」フィールドは、その関数の作業内容が記述される一対の中括弧の間に存在するreturn句の個数が記録されるフィールドである。「abs注釈総数」フィールドは、その関数名とその作業内容とを含む全ての行群の中に存在するabs注釈の個数が記録されるフィールドである。なお、abs注釈は、注釈の先頭に「Abs」の文字列が組み込まれている注釈である。この「Abs」の文字列は、ソースコードの作成者によって事前に組み込まれたものである。「ver注釈総数」フィールドは、その関数名とその作業内容とを含む全ての行群の中に存在するver注釈の個数が記録されるフィールドである。なお、ver注釈は、注釈の先頭に「Ver」の文字列が組み込まれている注釈である。この「Ver」の文字列も、ソースコードの作成者によって事前に組み込まれたものである。「oth注釈総数」フィールドは、その関数名とその作業内容とを含む全ての行群の中に存在する注釈であって、所定の文字列（「Abs」や「Ver」など）が組み込まれていないものの個数が記録されるフィールドである。
【００４６】
ＣＰＵ１０ｄは、この図８に示すような関数構造体管理テーブル２１に、処理対象トークンに関する情報を登録するが、この時点では、この情報は、「関数名」，「関数型」，「ソースコードにおけるその関数名を含む行の番号」及び「その関数名の先頭文字があるマスの番号」のフィールドの値のみを持つ。そして、この登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００４７】
一方、ステップＳ２０５において、処理対象トークンが関数名でなかった場合、ＣＰＵ１０ｄは、ステップＳ２０７へ処理を進める。
【００４８】
ステップＳ２０７では、ＣＰＵ１０ｄは、処理対象トークンが引数名であるか否かを、判別する。具体的には、ＣＰＵ１０ｄは、処理対象トークンが関数直後の一対の小括弧の間に存在するか否かを、判別する。そして、処理対象トークンが引数名であった場合、ＣＰＵ１０ｄは、ステップＳ２０７からステップＳ２０８へ処理を分岐させる。
【００４９】
ステップＳ２０８では、ＣＰＵ１０ｄは、処理対象トークンに関する情報を引数管理テーブルに登録する処理を行う。なお、引数管理テーブルは、当該ソースコードに含まれる引数（パラメータ値）に関する情報を管理するために利用されるテーブルである。
【００５０】
図９は、その引数管理テーブル２２のデータ構造の一例を示す図である。
【００５１】
図９に示すように、引数管理テーブル２２の各レコードは、「引数名」，「引数型」，「関数名のある行からその引数名のある行までの行数」，「その引数名の先頭文字があるマスの番号」，「prmで始まる注釈（prm注釈）」，「prm注釈の種別」，「関数名のある行からそのprm注釈のある行までの行数」，「そのprm注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのprm注釈を含む行の番号」の各フィールドを、有している。
【００５２】
「引数名」フィールドは、その引数の名称が記録されるフィールドである。「引数型」フィールドは、その引数で与えられる数値の型として設定されている種類の名称が記録されるフィールドである。「関数名のある行からその引数名のある行までの行数」フィールドは、その引数名のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「その引数名の先頭文字があるマスの番号」フィールドは、その引数名が存在する行内の各マスに定義されているマス番号のうち、その引数名の先頭文字が存在するマスのマス番号が記録されるフィールドである。「Prmで始まる注釈（prm注釈）」フィールドは、そのprm注釈の内容が記録されるフィールドである。なお、prm注釈は、注釈の先頭に「Prm」の文字列が組み込まれている注釈である。この「Prm」の文字列は、ソースコードの作成者によって事前に組み込まれたものである。「prm注釈の種別」フィールドは、そのprm注釈がラインコメントであることを示す「０」又はブロックコメントであることを示す「１」が記録されるフィールドである。「関数名のある行からそのprm注釈のある行までの行数」フィールドは、そのprm注釈のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「そのprm注釈の先頭文字があるマスの番号」フィールドは、そのprm注釈が存在する行内の各マスに定義されているマス番号のうち、そのprm注釈の先頭文字が存在するマスのマス番号が記録されるフィールドである。「アウトラインにおけるそのprm注釈を含む行の番号」フィールドは、アウトライン内の各行に定義されている行番号のうち、そのprm注釈が存在する行の行番号が記録されるフィールドである。
【００５３】
ＣＰＵ１０ｄは、この図９に示すような引数管理テーブル２２に、処理対象トークンに関する情報を登録するが、この時点では、この情報は、「引数名」，「引数型」，「関数名のある行からその引数名のある行までの行数」及び「その引数名の先頭文字があるマスの番号」のフィールドの値のみを持つ。そして、この登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００５４】
一方、ステップＳ２０７において、処理対象トークンがパラメータ値でなかった場合、ＣＰＵ１０ｄは、ステップＳ２０９へ処理を進める。
【００５５】
ステップＳ２０９では、ＣＰＵ１０ｄは、処理対象トークンが変数名であるか否かを、判別する。具体的には、ＣＰＵ１０ｄは、『階層変数の代入値が１以上であり、且つ、処理対象トークンが型名とセミコロン「;」との間にあり、尚且つ、型名とセミコロンとの間に開き小括弧「(」が存在しない』という条件を満たすか否かを、判別する。そして、処理対象トークンが変数名であった場合、ＣＰＵ１０ｄは、ステップＳ２０９からステップＳ２１０へ処理を分岐させる。
【００５６】
ステップＳ２１０では、ＣＰＵ１０ｄは、処理対象トークンに関する情報を変数管理テーブルに登録する処理を行う。なお、変数管理テーブルは、当該ソースコードに含まれる変数に関する情報を管理するために利用されるテーブルである。
【００５７】
図１０は、その変数管理テーブル２３のデータ構造の一例を示す図である。
【００５８】
図１０に示すように、変数管理テーブル２３の各レコードは、「変数名」，「変数型」，「関数名のある行からその変数名のある行までの行数」，「その変数名の先頭文字があるマスの番号」，「Varで始まる注釈（var注釈）」，「var注釈の種別」，「関数名のある行からそのvar注釈のある行までの行数」，「そのvar注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのvar注釈を含む行の番号」の各フィールドを、有している。
【００５９】
「変数名」フィールドは、その変数の名称が記録されるフィールドである。「変数型」フィールドは、その変数に代入される数値の型として設定されている種類の名称が記録されるフィールドである。「関数名のある行からその変数名のある行までの行数」フィールドは、その変数名のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「その変数名の先頭文字があるマスの番号」フィールドは、その変数名が存在する行内の各マスに定義されているマス番号のうち、その変数名の先頭文字が存在するマスのマス番号が記録されるフィールドである。「varで始まる注釈（var注釈）」フィールドは、そのvar注釈の内容が記録されるフィールドである。なお、var注釈は、注釈の先頭に「Var」の文字列が組み込まれている注釈である。この「Var」の文字列は、ソースコードの作成者によって事前に組み込まれたものである。「var注釈の種別」フィールドは、そのvar注釈がラインコメントであることを示す「０」又はブロックコメントであることを示す「１」が記録されるフィールドである。「関数名のある行からそのvar注釈のある行までの行数」フィールドは、そのvar注釈のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「そのvar注釈の先頭文字があるマスの番号」フィールドは、そのvar注釈が存在する行内の各マスに定義されているマス番号のうち、そのvar注釈の先頭文字が存在するマスのマス番号が記録されるフィールドである。「アウトラインにおけるそのvar注釈を含む行の番号」フィールドは、アウトライン内の各行に定義されている行番号のうち、そのvar注釈が存在する行の行番号が記録されるフィールドである。
【００６０】
ＣＰＵ１０ｄは、この図１０に示すような変数管理テーブル２３に、処理対象トークンに関する情報を登録するが、この時点では、この情報は、「変数名」，「変数型」，「関数名のある行からその変数名のある行までの行数」及び「その変数名の先頭文字があるマスの番号」のフィールドの値のみを持つ。そして、この登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００６１】
一方、ステップＳ２０９において、処理対象トークンが変数名でなかった場合、ＣＰＵ１０ｄは、ステップＳ２１１へ処理を進める。
【００６２】
ステップＳ２１１では、ＣＰＵ１０ｄは、処理対象トークンが「return」句であるか否かを、判別する。そして、処理対象トークンが「return」句であった場合、ＣＰＵ１０ｄは、ステップＳ２１１からステップＳ２１２へ処理を分岐させる。
【００６３】
ステップＳ２１２では、ＣＰＵ１０ｄは、処理対象トークンに関する情報をreturn管理テーブルに登録する処理を行う。なお、return管理テーブルは、当該ソースコードに含まれるreturnに関する情報を管理するために利用されるテーブルである。
【００６４】
図１１は、そのreturn管理テーブル２４のデータ構造の一例を示す図である。
【００６５】
図１１に示すように、return管理テーブル２４の各レコードは、「関数名のある行からそのreturn句のある行までの行数」，「そのreturn句の先頭文字があるマスの番号」，「アウトラインにおけるそのreturn句を含む行の番号」，「Retで始まる注釈（ret注釈）」，「ret注釈の種別」，「関数名がある行からそのret注釈のある行までの行数」，「そのret注釈の先頭文字のあるマスの番号」及び「アウトラインにおけるそのret注釈を含む行の番号」の各フィールドを、有している。
【００６６】
「関数名のある行からそのreturn句のある行までの行数」フィールドは、そのreturn句のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「そのreturn句の先頭文字があるマスの番号」フィールドは、そのreturn句が存在する行内の各マスに定義されているマス番号のうち、そのreturn句の先頭文字が存在するマスのマス番号が記録されるフィールドである。「アウトライン上でのreturnの行番号」フィールドは、アウトライン内の各行に定義されている行番号のうち、そのreturn句が存在する行の行番号が記録されるフィールドである。「Retで始まる注釈（ret注釈）」フィールドは、そのret注釈の内容が記録されるフィールドである。なお、ret注釈は、注釈の先頭に「Ret」の文字列が組み込まれている注釈である。この「Ret」の文字列は、ソースコードの作成者によって事前に組み込まれたものである。「ret注釈の種別」フィールドは、そのret注釈がラインコメントであることを示す「０」又はブロックコメントであることを示す「１」が記録されるフィールドである。「関数名のある行からそのret注釈のある行までの行数」フィールドは、そのret注釈のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「そのret注釈の先頭文字があるマスの番号」フィールドは、そのret注釈が存在する行内の各マスに定義されているマス番号のうち、そのret注釈の先頭文字が存在するマスのマス番号が記録されるフィールドである。「アウトラインにおけるそのret注釈を含む行の番号」フィールドは、アウトライン内の各行に定義されている行番号のうち、そのret注釈が存在する行の行番号が記録されるフィールドである。
【００６７】
ＣＰＵ１０ｄは、この図１１に示すようなreturn管理テーブル２４に、処理対象トークンに関する情報を登録するが、この時点では、この情報は、「関数名のある行からそのreturn句のある行までの行数」及び「そのreturn句の先頭文字があるマスの番号」のフィールドの値のみを持つ。そして、この登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００６８】
なお、ステップＳ２０５乃至Ｓ２１２を実行するＣＰＵ１０ｄは、前述した対応情報生成手段及び対応情報生成部に相当している。また、ステップＳ２０５乃至Ｓ２１２は、前述した対応情報生成手順に相当している。
【００６９】
一方、ステップＳ２１１において、処理対象トークンがreturn句でなかった場合、ＣＰＵ１０ｄは、ステップＳ２１３へ処理を進める。
【００７０】
ステップＳ２１３では、ＣＰＵ１０ｄは、処理対象トークンが注釈であるか否かを、判別する。なお、注釈であるか否かの判別は、ラインコメントであれば、「//」の直後の文字列であるか否か、ブロックコメントであれば、「/*」と「*/」とで挟まれた文字列であるか否かによりなされる。そして、処理対象トークンが注釈であった場合、ＣＰＵ１０ｄは、ステップＳ２１３からステップＳ２１４へ処理を分岐させる。
【００７１】
ステップＳ２１４では、ＣＰＵ１０ｄは、注釈の先頭に「Abs」の文字列が組み込まれているか否かを、判別する。そして、注釈の先頭に「Abs」の文字列が組み込まれていた場合、ＣＰＵ１０ｄは、ステップＳ２１４からステップＳ２１５へ処理を分岐させる。
【００７２】
ステップＳ２１５では、ＣＰＵ１０ｄは、先頭に「Abs」の文字列が組み込まれているabs注釈に関する情報をabs注釈管理テーブルに登録する処理を行う。なお、abs注釈管理テーブルは、当該ソースコードに含まれるabs注釈に関する情報を管理するために利用されるテーブルである。
【００７３】
図１２は、そのabs注釈管理テーブル２５のデータ構造の一例を示す図である。
【００７４】
図１２に示すように、abs注釈管理テーブル２５の各レコードは、「Absで始まる注釈（abs注釈）」，「abs注釈の種別」，「関数名がある行からそのabs注釈のある行までの行数」，「そのabs注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのabs注釈を含む行の番号」の各フィールドを、有している。
【００７５】
「Absで始まる注釈（abs注釈）」フィールドは、そのabs注釈の内容が記録されるフィールドである。なお、この「Abs」の文字列は、ソースコードの作成者によって事前に組み込まれたものである。「abs注釈の種別」フィールドは、そのabs注釈がラインコメントであることを示す「０」又はブロックコメントであることを示す「１」が記録されるフィールドである。「関数名のある行からそのabs注釈のある行までの行数」フィールドは、そのabs注釈のある行の行番号から、関数名のある行の行番号を差し引いて得られる行数が、記録されるフィールドである。「そのabs注釈の先頭文字があるマスの番号」フィールドは、そのabs注釈が存在する行内の各マスに定義されているマス番号のうち、そのabs注釈の先頭文字が存在するマスのマス番号が記録されるフィールドである。「アウトラインにおけるそのabs注釈を含む行の番号」フィールドは、アウトライン内の各行に定義されている行番号のうち、そのabs注釈が存在する行の行番号が記録されるフィールドである。
【００７６】
この図１２に示すようなabs注釈管理テーブル２５に、処理対象トークン（abs注釈）に関する情報を登録した後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００７７】
一方、ステップＳ２１４において、注釈の先頭に「Abs」の文字列が組み込まれていなかった場合、ＣＰＵ１０ｄは、ステップＳ２１６へ処理を進める。
【００７８】
ステップＳ２１６では、ＣＰＵ１０ｄは、注釈の先頭に「Prm」の文字列が組み込まれているか否かを、判別する。そして、注釈の先頭に「Prm」の文字列が組み込まれていた場合、ＣＰＵ１０ｄは、ステップＳ２１６からステップＳ２１７へ処理を分岐させる。
【００７９】
ステップＳ２１７では、ＣＰＵ１０ｄは、先頭に「Prm」の文字列が組み込まれているprm注釈に関する情報を図９の引数管理テーブル２２に登録する処理を行う。なお、当該prm注釈には、引数名が含まれている。このため、ＣＰＵ１０ｄは、その引数名に一致するとともに、「Prmで始まる注釈（prm注釈）」，「prm注釈の種別」，「関数名のある行からそのprm注釈のある行までの行数」，「そのprm注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのprm注釈を含む行の番号」の各フィールドが空欄となっているレコードを、引数管理テーブル２２から検出し、そのレコードのそれらフィールドに、対応する値を格納する。このような登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００８０】
一方、ステップＳ２１６において、注釈の先頭に「Prm」の文字列が組み込まれていなかった場合、ＣＰＵ１０ｄは、ステップＳ２１８へ処理を進める。
【００８１】
ステップＳ２１８では、ＣＰＵ１０ｄは、注釈の先頭に「Var」の文字列が組み込まれているか否かを、判別する。そして、注釈の先頭に「Var」の文字列が組み込まれていた場合、ＣＰＵ１０ｄは、ステップＳ２１８からステップＳ２１９へ処理を分岐させる。
【００８２】
ステップＳ２１９では、ＣＰＵ１０ｄは、先頭に「Var」の文字列が組み込まれているvar注釈に関する情報を図１０の変数管理テーブル２３に登録する処理を行う。なお、当該var注釈には、変数名が含まれている。このため、ＣＰＵ１０ｄは、その変数名に一致するとともに、「Varで始まる注釈（var注釈）」，「var注釈の種別」，「関数名のある行からそのvar注釈のある行までの行数」，「そのvar注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのvar注釈を含む行の番号」の各フィールドが空欄となっているレコードを、変数管理テーブル２３から検出し、そのレコードのそれらフィールドに、対応する値を格納する。このような登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００８３】
一方、ステップＳ２１８において、注釈の先頭に「Var」の文字列が組み込まれていなかった場合、ＣＰＵ１０ｄは、ステップＳ２２０へ処理を進める。
【００８４】
ステップＳ２２０では、ＣＰＵ１０ｄは、注釈の先頭に「Ret」の文字列が組み込まれているか否かを、判別する。そして、注釈の先頭に「Ret」の文字列が組み込まれていた場合、ＣＰＵ１０ｄは、ステップＳ２２０からステップＳ２２１へ処理を分岐させる。
【００８５】
ステップＳ２２１では、ＣＰＵ１０ｄは、先頭に「Ret」の文字列が組み込まれているret注釈に関する情報を図１１のreturn管理テーブル２４に登録する処理を行う。このとき、ＣＰＵ１０ｄは、当該ret注釈と同じ行にあるreturnのレコードを、return管理テーブル２４から検出し、そのレコードの「Retで始まる注釈（ret注釈）」，「ret注釈の種別」，「関数名がある行からそのret注釈のある行までの行数」及び「そのret注釈の先頭文字があるマスの番号」の各フィールドに、対応する値を格納する。このような登録処理を行った後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００８６】
一方、ステップＳ２２０において、注釈の先頭に「Ret」の文字列が組み込まれていなかった場合、ＣＰＵ１０ｄは、ステップＳ２２２へ処理を進める。
【００８７】
ステップＳ２２２では、ＣＰＵ１０ｄは、注釈の先頭に「Ver」の文字列が組み込まれているか否かを、判別する。そして、注釈の先頭に「Ver」の文字列が組み込まれていた場合、ＣＰＵ１０ｄは、ステップＳ２２２からステップＳ２２３へ処理を分岐させる。
【００８８】
ステップＳ２２３では、ＣＰＵ１０ｄは、先頭に「Ver」の文字列が組み込まれているver注釈に関する情報をver注釈管理テーブルに登録する処理を行う。なお、ver注釈管理テーブルは、当該ソースコードに含まれるver注釈に関する情報を管理するために利用されるテーブルである。
【００８９】
図１３は、そのver注釈管理テーブル２６のデータ構造の一例を示す図である。
【００９０】
図１３に示すように、ver注釈管理テーブル２６の各レコードは、「verで始まる注釈（ver注釈）」，「ver注釈の種別」，「関数名がある行からそのver注釈のある行までの行数」，「そのver注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのver注釈を含む行の番号」の各フィールドを、有している。なお、この図１３のver注釈管理テーブル２６は、意味的には、図１２のabs注釈管理テーブル２５において、absをverに置き換えただけのものであり、各フィールドの意味は、図１２のabs注釈管理テーブル２５のそれと同じである。
【００９１】
この図１３に示すようなabs注釈管理テーブル２５に、処理対象トークン（ver注釈）に関する情報を登録した後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００９２】
一方、ステップＳ２２２において、注釈の先頭に「Ver」の文字列が組み込まれていなかった場合、ＣＰＵ１０ｄは、ステップＳ２２４へ処理を進める。
【００９３】
ステップＳ２２４では、ＣＰＵ１０ｄは、当該注釈に関する情報をoth注釈管理テーブルに登録する処理を行う。なお、oth注釈管理テーブルは、当該ソースコードに含まれる注釈のうち、abs注釈，prm注釈，var注釈，ret注釈，ver注釈の何れにも該当しない注釈に関する情報を管理するために利用されるテーブルである。
【００９４】
図１４は、そのoth注釈管理テーブル２７のデータ構造の一例を示す図である。
【００９５】
図１４に示すように、oth注釈管理テーブル２７の各レコードは、「その他の注釈（oth注釈）」，「oth注釈の種別」，「関数名がある行からそのoth注釈のある行までの行数」，「そのoth注釈の先頭文字があるマスの番号」及び「アウトラインにおけるそのoth注釈を含む行の番号」の各フィールドを、有している。なお、この図１４のoth注釈管理テーブル２７は、意味的には、図１２のabs注釈管理テーブル２５において、absをothに置き換えただけのものであり、各フィールドの意味は、図１２のabs注釈管理テーブル２５のそれと同じである。
【００９６】
この図１４に示すようなoth注釈管理テーブル２７に、処理対象トークン（oth注釈）に関する情報を登録した後、ＣＰＵ１０ｄは、ステップＳ２３３へ処理を進める。
【００９７】
一方、ステップＳ２１３において、処理対象トークンが注釈でなかった場合、ＣＰＵ１０ｄは、ステップＳ２２５へ処理を進める。
【００９８】
ステップＳ２２５では、ＣＰＵ１０ｄは、処理対象トークンが中括弧であるか否かを、判別する。そして、処理対象トークンが中括弧であった場合、ＣＰＵ１０ｄは、ステップＳ２２５からステップＳ２２６へ処理を分岐させる。
【００９９】
ステップＳ２２６では、ＣＰＵ１０ｄは、処理対象トークンが閉じ括弧であるか否かを、判別する。そして、処理対象トークンが閉じ括弧でなかった場合、ＣＰＵ１０ｄは、ステップＳ２２６からステップＳ２２７へ処理を分岐させる。
【０１００】
ステップＳ２２７では、ＣＰＵ１０ｄは、階層変数の代入値を１つ増やす処理を行う。ＣＰＵ１０ｄは、このような処理を行った後、ステップＳ２３３へ処理を進める。
【０１０１】
一方、ステップＳ２２６において、処理対象トークンが閉じ括弧であった場合、ＣＰＵ１０ｄは、ステップＳ２２８へ処理を進める。
【０１０２】
ステップＳ２２８では、ＣＰＵ１０ｄは、階層変数の代入値を１つ減らす処理を行った後、ステップＳ２２９へ処理を進める。
【０１０３】
ステップＳ２２９では、ＣＰＵ１０ｄは、階層変数の代入値がゼロであるか否かを、判別する。そして、ＣＰＵ１０ｄは、階層変数の代入値がゼロでなかった場合、ステップＳ２２９からステップＳ２３３へ処理を分岐させ、階層変数の代入値がゼロであった場合、ステップＳ２３０へ処理を進める。
【０１０４】
ステップＳ２３０では、ＣＰＵ１０ｄは、図８の関数構造体管理テーブル２１における最新のレコードの「関数総行数」，「引数総数」，「変数総数」，「return総数」，「abs注釈総数」，「ver注釈総数」及び「oth注釈総数」の各フィールドに、対応する値を登録する処理を行う。なお、各値は、図９乃至図１４の各テーブル２２〜２７に記録されている情報に基づいて、算出される。
【０１０５】
次のステップＳ２３１では、ＣＰＵ１０ｄは、アウトライン管理テーブルに、対応するレコードを追加する処理を行う。なお、アウトライン管理テーブルは、アウトライン表示枠に表示される見出しを管理するためのテーブルである。
【０１０６】
図１５は、アウトライン管理テーブル２８のデータ構造の一例を示す図である。
【０１０７】
図１５に示すように、アウトライン管理テーブル２８の各レコードは、「オブジェクト種別」，「オブジェクト名」，「ソースコード上の行番号」及び「アウトライン上の行番号」の各フィールドを、有している。
【０１０８】
「オブジェクト種別」フィールドは、その見出語の種別が記録されるフィールドである。「オブジェクト名」フィールドは、その見出語が記録されるフィールドである。「ソースコード上の行番号」フィールドは、ソースコード内においてその見出語のある行の行番号が記録されるフィールドである。「アウトライン上の行番号」フィールドは、アウトライン内においてその見出語のある行の行番号が記録されるフィールドである。
【０１０９】
なお、ＣＰＵ１０ｄは、このステップＳ２３１において、直近の処理対象となっていた関数名に関する情報をアウトライン管理テーブル２８に登録するが、関数名以外の見出語である#includeについては、図示せぬ処理を行って登録する。また、このステップＳ２３１では、アウトライン管理テーブル２８に登録されるレコードの「アウトライン上の行番号」フィールド以外のフィールドに値が格納され、「アウトライン上の行番号」フィールドは空欄とされる。ＣＰＵ１０ｄは、アウトライン管理テーブル２８に関数名を登録した後、ステップＳ２３２へ処理を進める。
【０１１０】
ステップＳ２３２では、ＣＰＵ１０ｄは、関数総数変数の代入値を一つ増やす処理を行い、図４のステップＳ２３３へ処理を進める。
【０１１１】
一方、ステップＳ２２５において、処理対象トークンが中括弧でなかった場合、ＣＰＵ１０ｄは、ステップＳ２２５からステップＳ２３３へ処理を進める。
【０１１２】
ステップＳ２３３では、ＣＰＵ１０ｄは、処理対象行内に未処理のトークンが存在するか否かを、判別する。そして、処理対象行内に未処理のトークンが存在していた場合、ＣＰＵ１０ｄは、ステップＳ２３３から処理を分岐させ、ステップＳ２０４へ処理を戻す。一方、処理対象行内の全てのトークンについて処理を終えた場合、ＣＰＵ１０ｄは、ステップＳ２３４へ処理を進める。
【０１１３】
ステップＳ２３４では、ＣＰＵ１０ｄは、ソースコードデータ内に未処理の行が存在するか否かを、判別する。そして、ソースコードデータ内に未処理の行が存在していた場合、ＣＰＵ１０ｄは、ステップＳ２３４から処理を分岐させ、ステップＳ２０３へ処理を戻す。一方、ソースコード内の全ての行について処理を終えていた場合、ＣＰＵ１０ｄは、ステップＳ２３５へ処理を進める。
【０１１４】
ステップＳ２３５では、ＣＰＵ１０ｄは、ステップＳ２０２で読み出したソースコードデータに基づいて、ソースコード表示枠内にソースコードを表示する処理を行う。なお、この処理では、ＣＰＵ１０ｄは、ソースコードデータ内の注釈（ラインコメントもブロックコメントも）を除去して、ソースコード表示枠に表示する。このような処理を行った後、ＣＰＵ１０ｄは、図４乃至図７に係るソースコード表示処理を終了する。
【０１１５】
なお、ステップＳ２３５を実行するＣＰＵ１０ｄは、前述したソースコード表示手段及びソースコード表示部に相当している。また、ステップＳ２３５は、前述したソースコード表示手順に相当している。
【０１１６】
ＣＰＵ１０ｄは、この図４乃至図７に係るソースコード表示処理を終えた後、図３のステップＳ１０５からステップＳ１０３へ処理を戻す。
【０１１７】
一方、ステップＳ１０４において、ステップＳ１０３で検出されたイベントがファイルを開く指示でなかった場合、ＣＰＵ１０ｄは、ステップＳ１０４からステップＳ１０６へ処理を進める。
【０１１８】
ステップＳ１０６では、ＣＰＵ１０ｄは、イベントがアウトライン表示指示であるか否かを、判別する。そして、イベントがアウトライン表示指示であった場合、ＣＰＵ１０ｄは、ステップＳ１０６からステップＳ１０７へ処理を分岐させる。但し、ソースコード表示枠にソースコードが表示されていないときには、アウトライン表示指示が不能となっているため、この場合、ＣＰＵ１０ｄは、ステップＳ１０６を行うことなく、ステップＳ１０８へ処理を進める。
【０１１９】
ステップＳ１０７では、ＣＰＵ１０ｄは、アウトライン表示処理を実行する。
【０１２０】
図１６乃至図１９は、アウトライン表示処理の流れを示す図である。
【０１２１】
アウトライン表示処理の開始後、最初のステップＳ３０１では、ＣＰＵ１０ｄは、初期化処理を行う。この初期化処理には、これ以降に用いられる後述の各変数にゼロを代入する処理が、含まれる。この初期化処理を行った後、ＣＰＵ１０ｄは、第１の処理ループＬ１を実行する。
【０１２２】
第１の処理ループＬ１では、ＣＰＵ１０ｄは、以下に説明するステップＳ３０２乃至Ｓ３０６，及び、第２乃至第５の処理ループＬ２〜Ｌ５の処理を、図１５のアウトライン管理テーブル２８内の全てのオブジェクトに対し、一つずつ個別に実行する。
【０１２３】
まず、ステップＳ３０２では、ＣＰＵ１０ｄは、処理対象オブジェクトが関数であるか否かを、判別する。そして、処理対象オブジェクトが関数でなかった場合、ＣＰＵ１０ｄは、ステップＳ３０２からステップＳ３０３へ処理を分岐させる。
【０１２４】
ステップＳ３０３では、ＣＰＵ１０ｄは、処理対象オブジェクトに応じた図示せぬ処理を実行し、その処理対象オブジェクトに対する処理を終了する。
【０１２５】
一方、ステップＳ３０２において、処理対象オブジェクトが関数であった場合、ＣＰＵ１０ｄは、ステップＳ３０２からステップＳ３０４へ処理を進める。
【０１２６】
ステップＳ３０４では、ＣＰＵ１０ｄは、図１５のアウトライン管理テーブル２８における処理対象の関数名のレコードの「アウトライン上での行番号」フィールドに、行番号変数の代入値を格納する。
【０１２７】
次のステップＳ３０５では、ＣＰＵ１０ｄは、アウトラインデータファイルに処理対象の関数名を出力する処理を行う。なお、アウトラインデータは、アウトライン表示枠にアウトラインを表示するためのデータである。図２０は、アウトラインデータ３１のデータ構造の一例を示す図である。図２０に示すように、アウトラインデータ３１の各行には、文字列が記述されている。ＣＰＵ１０ｄは、処理対象の関数名をアウトラインデータ３１の末尾の行に出力する。
【０１２８】
次のステップＳ３０６では、ＣＰＵ１０ｄは、行番号変数を一つ増やす処理を行い、その後、第２の処理ループＬ２を実行する。
【０１２９】
第２の処理ループＬ２では、ＣＰＵ１０ｄは、以下に説明するステップＳ３０７乃至Ｓ３０９の処理を、図１２のabs注釈管理テーブル２５内の全てのabs注釈に対し、一つずつ個別に実行する。
【０１３０】
まず、ステップＳ３０７では、ＣＰＵ１０ｄは、図１２のabs注釈管理テーブル２５における処理対象のabs注釈のレコードの「アウトラインにおけるそのabs注釈を含む行の番号」フィールドに、行番号変数の代入値を格納する処理も行う。
【０１３１】
次のステップＳ３０８では、ＣＰＵ１０ｄは、図２０のアウトラインデータファイルに処理対象のabs注釈を出力する処理を行う。具体的には、ＣＰＵ１０ｄは、処理対象のabs注釈をアウトラインデータ３１の末尾の行に出力する。
【０１３２】
次のステップＳ３０９では、ＣＰＵ１０ｄは、行番号変数の代入値を一つ増やす処理を行い、その処理対象abs注釈に対する処理を終了する。
【０１３３】
以上のステップＳ３０７乃至Ｓ３０９を全てのabs注釈について実行し終えると、ＣＰＵ１０ｄは、第２の処理ループＬ２を離脱して、第３の処理ループＬ３の実行を開始する。
【０１３４】
第３の処理ループＬ３では、ＣＰＵ１０ｄは、以下に説明するステップＳ３１０乃至Ｓ３１２の処理を、図９の引数管理テーブル２２内の全ての引数名に対し、一つずつ個別に実行する。
【０１３５】
まず、ステップＳ３１０では、ＣＰＵ１０ｄは、図９の引数管理テーブル２２における処理対象の引数名のレコードの「アウトラインにおけるそのprm注釈を含む行の番号」フィールドに、行番号変数の代入値を格納する処理を行う。
【０１３６】
次のステップＳ３１１では、ＣＰＵ１０ｄは、アウトラインデータファイルに処理対象のprm注釈を出力する処理を行う。具体的には、ＣＰＵ１０ｄは、処理対象のprm注釈を図２０のアウトラインデータ３１の末尾の行に出力する。
【０１３７】
次のステップＳ３１２では、ＣＰＵ１０ｄは、行番号変数の代入値を一つ増やす処理を行い、その処理対象引数名に対する処理を終了する。
【０１３８】
以上のステップＳ３１０乃至Ｓ３１２を全てのprm注釈について実行し終えると、ＣＰＵ１０ｄは、第３の処理ループＬ３を離脱して、第４の処理ループＬ４の実行を開始する。
【０１３９】
第４の処理ループＬ４では、ＣＰＵ１０ｄは、以下に説明するステップＳ３１３乃至Ｓ３１５の処理を、図１０の変数管理テーブル２３内の全ての変数名に対し、一つずつ個別に実行する。
【０１４０】
まず、ステップＳ３１３では、ＣＰＵ１０ｄは、図１０の変数管理テーブル２３における処理対象の変数名のレコードの「アウトラインにおけるそのvar注釈を含む行の番号」フィールドに、行番号変数の代入値を格納する処理を行う。
【０１４１】
次のステップＳ３１４では、ＣＰＵ１０ｄは、アウトラインデータファイルに処理対象のvar注釈を出力する処理を行う。具体的には、ＣＰＵ１０ｄは、処理対象のvar注釈を図２０のアウトラインデータ３１の末尾の行に出力する。
【０１４２】
次のステップＳ３１５では、ＣＰＵ１０ｄは、行番号変数の代入値を一つ増やす処理を行い、処理対象変数名に対する処理を終了する。  
【０１４３】
以上のステップＳ３１３乃至Ｓ３１５を全てのvar注釈について実行し終えると、ＣＰＵ１０ｄは、第４の処理ループＬ４を離脱して、第５の処理ループＬ５の実行を開始する。
【０１４４】
第５の処理ループＬ５では、ＣＰＵ１０ｄは、以下に説明するステップＳ３１６乃至Ｓ３３０の処理を、処理対象の関数名とその作業内容（中括弧に含まれる内容）とを含む全ての行群（以下、「関数範囲」と表記）の中の各行について、一行ずつ個別に実行する。
【０１４５】
まず、ステップＳ３１６では、ＣＰＵ１０ｄは、図１１のreturn管理テーブル２４から、当該関数範囲内での処理対象行の行番号を「関数名のある行からそのret注釈のある行までの行数」フィールドに持つレコードを、検索する。
【０１４６】
次のステップＳ３１７では、ＣＰＵ１０ｄは、図１１のreturn管理テーブル２４から当該レコードが検出できたか否かを、判別する。そして、ＣＰＵ１０ｄは、図１１のreturn管理テーブル２４から当該レコードが検出できなかった場合、ステップＳ３２１へ処理を進め、図１１のreturn管理テーブル２４から当該レコードが検出できた場合、ステップＳ３１７からステップＳ３１８へ処理を分岐させる。
【０１４７】
ステップＳ３１８では、ＣＰＵ１０ｄは、図１１のreturn管理テーブル２４における処理対象のreturnのレコードの「アウトラインにおけるそのret注釈を含む行の番号」フィールドに、行番号変数の代入値を格納する処理を行う。
【０１４８】
次のステップＳ３１９では、ＣＰＵ１０ｄは、図２０のアウトラインデータ３１の末尾の行に、処理対象のret注釈を出力する処理を行う。
【０１４９】
次のステップＳ３２０では、ＣＰＵ１０ｄは、行番号変数の代入値を一つ増やす処理を行う。その後、ＣＰＵ１０ｄは、ステップＳ３２１へ処理を進める。
【０１５０】
ステップＳ３２１では、ＣＰＵ１０ｄは、図１３のver注釈管理テーブル２６から、当該関数範囲内での処理対象行の行番号を「関数名のある行からそのver注釈のある行までの行数」フィールドに持つレコードを、検索する。
【０１５１】
次のステップＳ３２２では、ＣＰＵ１０ｄは、図１３のver注釈管理テーブル２６から当該レコードが検出できたか否かを、判別する。そして、ＣＰＵ１０ｄは、図１３のver注釈管理テーブル２６から当該レコードが検出できなかった場合、ステップＳ３２６へ処理を進め、図１３のver注釈管理テーブル２６から当該レコードが検出できた場合、ステップＳ３２２からステップＳ３２３へ処理を分岐させる。
【０１５２】
ステップＳ３２３では、ＣＰＵ１０ｄは、図１３のver注釈管理テーブル２６における処理対象のver注釈のレコードの「アウトラインにおけるそのver注釈を含む行の番号」フィールドに、行番号変数の代入値を格納する処理を行う。
【０１５３】
次のステップＳ３２４では、ＣＰＵ１０ｄは、図２０のアウトラインデータ３１の末尾の行に、処理対象のver注釈を出力する処理を行う。
【０１５４】
次のステップＳ３２５では、ＣＰＵ１０ｄは、行番号変数の代入値を一つ増やす処理を行う。その後、ＣＰＵ１０ｄは、ステップＳ３２６へ処理を進める。
【０１５５】
ステップＳ３２６では、ＣＰＵ１０ｄは、図１４のoth注釈管理テーブル２７から、当該関数範囲内での処理対象行の行番号を「関数名のある行からそのoth注釈のある行までの行数」フィールドに持つレコードを、検索する。
【０１５６】
次のステップＳ３２７では、ＣＰＵ１０ｄは、図１４のoth注釈管理テーブル２７から当該レコードが検出できたか否かを、判別する。そして、ＣＰＵ１０ｄは、図１４のoth注釈管理テーブル２７から当該レコードが検出できなかった場合、処理対象行に対する処理を終了し、図１４のoth注釈管理テーブル２７から当該レコードが検出できた場合、ＣＰＵ１０ｄは、ステップＳ３２７からステップＳ３２８へ処理を分岐させる。
【０１５７】
ステップＳ３２８では、ＣＰＵ１０ｄは、図１４のoth注釈管理テーブル２７における処理対象のoth注釈のレコードの「アウトラインにおけるそのoth注釈を含む行の番号」フィールドに、行番号変数の代入値を格納する処理を行う。
【０１５８】
次のステップＳ３２９では、ＣＰＵ１０ｄは、図２０のアウトラインデータ３１の末尾の行に、処理対象のoth注釈を出力する処理を行う。
【０１５９】
次のステップＳ３３０では、ＣＰＵ１０ｄは、行番号変数の代入値を一つ増やす処理を行う。その後、ＣＰＵ１０ｄは、処理対象行に対する処理を終了する。
【０１６０】
以上のステップＳ３１６及びＳ３３０を当該関数範囲内の全ての行について実行し終えると、ＣＰＵ１０ｄは、第５の処理ループＬ５を離脱する。
【０１６１】
以上のステップＳ３０２乃至Ｓ３０６，及び、第２乃至第５の処理ループＬ２〜Ｌ５を、図１５のアウトライン管理テーブル２８内の全ての関数名について実行し終えると、ＣＰＵ１０ｄは、第１の処理ループＬ１を離脱し、ステップＳ３３１へ処理を進める。
【０１６２】
ステップＳ３３１では、ＣＰＵ１０ｄは、図２０のアウトラインデータ３１に基づいて、アウトライン表示枠にアウトラインを表示する処理を行う。その後、ＣＰＵ１０ｄは、図１６乃至図１９に係るアウトライン表示処理を終了する。
【０１６３】
そして、このアウトライン表示処理の終了後、ＣＰＵ１０ｄは、図３のステップＳ１０７からステップＳ１０３へ処理を戻す。
【０１６４】
一方、ステップＳ１０６において、イベントがアウトライン表示指示でなかった場合、ＣＰＵ１０ｄは、ステップＳ１０８へ処理を進める。
【０１６５】
ステップＳ１０８では、ＣＰＵ１０ｄは、イベントがスクロール指示であるか否かを、判別する。そして、イベントがスクロール指示であった場合、ＣＰＵ１０ｄは、ステップＳ１０８からステップＳ１０９へ処理を分岐させる。
【０１６６】
ステップＳ１０９では、ＣＰＵ１０ｄは、スクロール処理を実行する。
【０１６７】
図２１は、スクロール処理の流れを示す図である。
【０１６８】
スクロール処理の開始後、最初のステップＳ４０１では、ＣＰＵ１０ｄは、ソースコード表示枠内に設けられている図示せぬスクロールボックスの移動行数を、表示開始行変数の代入値に加算する処理を行う。なお、表示開始行変数は、ソースコード表示枠内の先頭行がソースコード内での何行目にあたるかを示す変数である。ここで、ソースコード表示枠内では、注釈が除去されたソースコードが示されているので、ＣＰＵ１０ｄは、図示せぬスクロールボックスの移動行数を表示開始行変数の代入値に加算する際、その移動範囲をソースコード上に当て嵌めた場合においてその移動範囲に含まれる注釈のみの行の数も、表示開始行変数の代入値に加算するようになっている。
【０１６９】
次のステップＳ４０２では、ＣＰＵ１０ｄは、表示開始行変数の代入値の示す行がソースコード表示枠内の先頭行として表示されるよう、ソースコード表示枠内のソースコードをスクロールする処理を行う。その後、ＣＰＵ１０ｄは、図２１に係るスクロール処理を終了する。
【０１７０】
そして、このスクロール処理の終了後、ＣＰＵ１０ｄは、図３のステップＳ１０９からステップＳ１０３へ処理を戻す。
【０１７１】
一方、ステップＳ１０８において、イベントがスクロール指示でなかった場合、ＣＰＵ１０ｄは、ステップＳ１１０へ処理を進める。
【０１７２】
ステップＳ１１０では、イベントがドラッグであるか否かを、判別する。そして、イベントがドラッグであった場合、ＣＰＵ１０ｄは、ステップＳ１１０からステップＳ１１１へ処理を分岐させる。
【０１７３】
ステップＳ１１１では、ＣＰＵ１０ｄは、ドラッグ関連処理を実行する。
【０１７４】
図２２乃至図２５は、このドラッグ関連処理の流れを示す図である。
【０１７５】
ドラッグ関連処理の開始後、最初のステップＳ５０１では、ＣＰＵ１０ｄは、そのドラッグがアウトライン表示枠内で行われたものか否かを、判別する。そして、そのドラッグがアウトライン表示枠内で行われたものであった場合、ＣＰＵ１０ｄは、ステップＳ５０２へ処理を進める。
【０１７６】
ステップＳ５０２では、ＣＰＵ１０ｄは、ドラッグされた部分（文字列）のアウトライン内での行番号を取得する処理を行う。具体的には、ＣＰＵ１０ｄは、アウトライン表示枠内に表示中の各行において先頭行からドラッグ部分までの行数を読み取るとともに、そのアウトライン表示枠内の先頭行がアウトライン内での何行目にあたるかを示す表示開始行変数の代入値を読み取り、読みとった双方の値を合算する。これにより、ＣＰＵ１０ｄは、ドラッグされた部分（文字列）のアウトライン内での行番号を取得する。
【０１７７】
次のステップＳ５０３では、ＣＰＵ１０ｄは、ドラッグされた部分（文字列）のアウトラインでの行番号を検索条件に、図８乃至図１４の各テーブル２１〜２７を検索する処理を行う。
【０１７８】
次のステップＳ５０４では、ＣＰＵ１０ｄは、ドラッグされた部分（文字列）の行番号を含むレコードが図８乃至図１４の各テーブル２１〜２７から検出できたか否かを、判別する。そして、ＣＰＵ１０ｄは、ドラッグされた部分の行番号を含むレコードが何れかのテーブル２１〜２７から検出できなかった場合、ステップＳ５０４からステップＳ５０６へ処理を分岐させ、ドラッグされた部分の行番号を含むレコードが何れかのテーブル２１〜２７から検出できた場合、ステップＳ５０５へ処理を進める。
【０１７９】
ステップＳ５０５では、ＣＰＵ１０ｄは、ソースコード表示枠内においてドラッグ部分に対応する箇所を強調表示する処理を行う。例えば、アウトライン表示枠内のret注釈がドラッグされた場合においては、ソースコード表示枠内の対応するreturn句が強調表示される。また、例えば、アウトライン表示枠内の見出語（関数名，変数名など）がドラッグされた場合には、ソースコード表示枠内の対応する語句（関数名、変数名など）が強調表示される。その後、ＣＰＵ１０ｄは、ステップＳ５０６へ処理を進める。
【０１８０】
ステップＳ５０６では、ＣＰＵ１０ｄは、キー入力又はマウス入力がなされるまで待機する。そして、何れかの入力がなされると、ＣＰＵ１０ｄは、ステップＳ５０７へ処理を進める。
【０１８１】
ステップＳ５０７では、ＣＰＵ１０ｄは、なされた入力がドラッグ部分への入力（例えば、文字列の上書き更新のためのキー入力若しくは貼り付け、又は、文字列削除のための切り取り）であるか否かを、判別する。そして、その入力がドラッグ部分への入力でなかった場合（例えば、アウトライン表示枠内の左クリック）、ＣＰＵ１０ｄは、ドラッグ反転状態を解除し、ステップＳ５０７から処理を分岐させ、図２２乃至図２４に係るドラッグ関連処理を終了する。一方、その入力がドラッグ部分への入力であった場合、ＣＰＵ１０ｄは、ステップＳ５０８へ処理を進める。
【０１８２】
ステップＳ５０８では、ＣＰＵ１０ｄは、アウトライン表示枠内におけるドラッグ部分の内容を、入力された内容で更新する処理を行う。
【０１８３】
次のステップＳ５０９では、ＣＰＵ１０ｄは、ドラッグ部分の更新内容を、図２のソースコードデータと図２０のアウトラインデータ３１と図８乃至図１４の各テーブル２１〜２７とに反映する処理を行う。その後、図２２乃至図２４に係るドラッグ関連処理を終了する。
【０１８４】
一方、ステップＳ５０１において、ドラッグがソースコード表示枠内で行われたものであった場合、ＣＰＵ１０ｄは、ステップＳ５０１からステップＳ５１０へ処理を分岐させる。
【０１８５】
なお、ステップＳ１０２，Ｓ１１０及びＳ５０１を実行するＣＰＵ１０ｄは、前述した受付手段及び受付部に相当している。また、ステップＳ１０２，Ｓ１１０及びＳ５０１は、前述した受付手順に相当している。
【０１８６】
ステップＳ５１０では、ＣＰＵ１０ｄは、ドラッグされた部分（文字列）の先頭文字の行番号とマス番号とを取得する処理を行う。
【０１８７】
次のステップＳ５１１では、ＣＰＵ１０ｄは、ドラッグされた部分（文字列）の先頭文字の行番号及びマス番号を検索条件に、図８乃至図１１の各テーブル２１〜２４を検索する処理を行う。
【０１８８】
次のステップＳ５１２では、ＣＰＵ１０ｄは、ドラッグされた部分の先頭文字の行番号及びマス番号を含むレコードが図８乃至図１１の何れかのテーブル２１〜２４から検出できたか否かを、判別する。そして、ＣＰＵ１０ｄは、ドラッグされた部分の先頭文字の行番号及びマス番号を含むレコードが何れかのテーブル２１〜２４から検出できなかった場合、ステップＳ５１２からステップＳ５１９へ処理を分岐させ、ドラッグされた部分の先頭文字の行番号及びマス番号を含むレコードが何れかのテーブル２１〜２４から検出できた場合、ステップＳ５１３へ処理を進める。
【０１８９】
ステップＳ５１３では、ＣＰＵ１０ｄは、検出されたレコードから、当該行番号及びマス番号に先頭文字を有する語句（関数名，引数名又は変数名）を読み出し（但し、return管理テーブル２４から検出されたレコードについては読み出し処理は行わない）、この語句（又はreturn句）と、ドラッグされた部分の内容とが一致するかを、判別する。そして、ＣＰＵ１０ｄは、当該語句とドラッグ部分の内容とが一致していなかった場合、ステップＳ５１３からステップＳ５１９へ処理を分岐させ、当該語句とドラッグ部分の内容とが一致していた場合、ステップＳ５１４へ処理を進める。
【０１９０】
ステップＳ５１４では、ＣＰＵ１０ｄは、図４のステップＳ２０２で読み出されたソースコードデータ１２について、図２０のアウトラインデータが作成済みであるか否かを、判別する。すなわち、ＣＰＵ１０ｄは、この時点で、図３のステップＳ１０７を経ることによって当該ソースコードデータ１２についてのアウトラインデータが既に作成されているか否かを、判別する。そして、アウトラインデータが作成済みでなかった場合、ＣＰＵ１０ｄは、ステップＳ５１４からステップＳ５１９へ処理を分岐させる。一方、アウトラインデータが作成済みであった場合、ＣＰＵ１０ｄは、ステップＳ５１５へ処理を進める。
【０１９１】
ステップＳ５１５では、ＣＰＵ１０ｄは、アウトライン表示枠内においてドラッグ部分に対応する箇所（当該行番号及びマス番号に先頭文字を有する語句）を強調表示する処理を行う。
【０１９２】
次のステップＳ５１６では、ＣＰＵ１０ｄは、ステップＳ５１２で検出されたレコードに注釈が含まれているか否かを、判別する。そして、ＣＰＵ１０ｄは、検出レコードに注釈が含まれていなかった場合、ステップＳ５１６からステップＳ５１９へ処理を分岐させ、検出レコードに注釈が含まれていた場合、ステップＳ５１７へ処理を進める。
【０１９３】
ステップＳ５１７では、ＣＰＵ１０ｄは、ステップＳ５１２で検出されたレコードに含まれる注釈の位置を読み出した後、アウトライン表示枠内のその位置に当該注釈を表示する処理を行う。なお、ソースコード表示枠内の座標とアウトライン表示枠内の座標は、連動してスクロールするようになっているため、アウトライン表示枠内に表示された当該注釈は、ソースコード表示枠内のドラッグ部分と同一行に表示されることとなる。
【０１９４】
なお、ステップＳ５１０乃至Ｓ５１４，Ｓ５１６及びＳ５１７を実行するＣＰＵ１０ｄは、前述した第１の表示手段及び第１の表示部に相当している。また、ステップＳ５１０乃至Ｓ５１４，Ｓ５１６及びＳ５１７は、前述した第１の表示手順に相当している。
【０１９５】
次のステップＳ５１８では、ＣＰＵ１０ｄは、ステップＳ５１２で検出されたレコードに変数名が含まれていた場合、ソースコードデータにおけるその変数名が存在する全ての行の行番号を取得し、その行番号で図８乃至図１４の各テーブル２１〜２７を検索する処理を行う。そして、ＣＰＵ１０ｄは、その検索の結果、検出された全てのレコードに各々含まれる注釈を、アウトライン表示枠内の対応する行に表示する処理も行う。その後、ＣＰＵ１０ｄは、ステップＳ５１９へ処理を進める。
【０１９６】
なお、ステップＳ５１８を実行するＣＰＵ１０ｄは、前述した第２の表示手段及び第２の表示部に相当している。また、ステップＳ５１８は、前述した第２の表示手順に相当している。
【０１９７】
ステップＳ５１９では、ＣＰＵ１０ｄは、ＣＰＵ１０ｄは、キー入力又はマウス入力がなされるまで待機する。そして、何れかの入力がなされると、ＣＰＵ１０ｄは、ステップＳ５２０へ処理を進める。
【０１９８】
ステップＳ５２０では、ＣＰＵ１０ｄは、なされた入力がドラッグ部分への入力（例えば、文字列の上書き更新のためのキー入力若しくは貼り付け、又は、文字列削除のための切り取り）であるか否かを、判別する。そして、その入力がドラッグ部分への入力であった場合、ＣＰＵ１０ｄは、ステップＳ５２１へ処理を進める。
【０１９９】
ステップＳ５２１では、ＣＰＵ１０ｄは、ソースコード表示枠内におけるドラッグ部分の内容を、入力された内容で更新する処理を行う。その後、ＣＰＵ１０ｄは、ステップＳ５２８へ処理を進める。
【０２００】
一方、ステップＳ５２０において、なされた入力がドラッグ部分への入力でなかった場合（例えばソースコード表示枠内の左クリック）、ＣＰＵ１０ｄは、ステップＳ５２０からステップＳ５２２へ処理を分岐させる。
【０２０１】
ステップＳ５２２では、ＣＰＵ１０ｄは、なされた入力がドラッグ部分の削除（削除ボタンの押下）であるか否かを、判別する。そして、その入力がドラッグ部分の削除であった場合、ＣＰＵ１０ｄは、ステップ５２３へ処理を進める。
【０２０２】
ステップＳ５２３では、ＣＰＵ１０ｄは、ＣＰＵ１０ｄは、ソースコード表示枠内からドラッグ部分を削除する処理を行う。その後、ＣＰＵ１０ｄは、ステップＳ５２８へ処理を進める。
【０２０３】
一方、ステップＳ５２２において、なされた入力がドラッグ部分の削除でなかった場合、ＣＰＵ１０ｄは、ステップＳ５２２からステップＳ５２４へ処理を分岐させる。
【０２０４】
ステップＳ５２４では、ＣＰＵ１０ｄは、なされた入力がアウトライン表示枠内でのクリックか否かを、判別する。そして、その入力がアウトライン表示枠内でのクリックであった場合、ＣＰＵ１０ｄは、ステップＳ５２５へ処理を進める。
【０２０５】
ステップＳ５２５では、ＣＰＵ１０ｄは、図４のステップＳ２０２で読み出されたソースコードデータ１２について、図２０のアウトラインデータが作成済みであるか否かを、判別する。そして、アウトラインデータが作成済みであった場合、ＣＰＵ１０ｄは、ステップＳ５２６へ処理を進める。
【０２０６】
ステップＳ５２６では、ＣＰＵ１０ｄは、アウトライン表示枠内においてドラッグ部分に対応した注釈がある行にカーソルを表示する処理を行う。
【０２０７】
次のステップＳ５２７では、ＣＰＵ１０ｄは、アウトライン表示枠内のカーソル位置への文字列が完了するまで、待機する。そして、文字列の入力が完了すると、ＣＰＵ１０ｄは、ステップＳ５２８へ処理を進める。
【０２０８】
ステップＳ５２８では、ＣＰＵ１０ｄは、ドラッグ部分の内容更新又は削除を、図２のソースコードデータと図８乃至図１４の各テーブル２１〜２７とに反映する処理を行う。又は、ＣＰＵ１０ｄは、アウトライン表示枠内への文字列の入力があった場合には、その文字列をソースコードにおける注釈として、且つ、ドラッグ部分の文字列と対応付けて、図２のソースコードデータと図２０のアウトラインデータと図８乃至図１４の各テーブル２１〜２７とに反映する処理を行う。その後、図２２乃至図２５に係るドラッグ関連処理を終了する。
【０２０９】
また、ステップＳ５２４において、なされた入力がアウトライン表示枠内でのクリックでなかった場合、又は、ステップＳ５２５において、アウトラインデータが作成済みでなかった場合、ＣＰＵ１０ｄは、ステップＳ５２４又はステップＳ５２５から処理を分岐させ、ソースコード表示枠におけるドラッグ反転状態を解除し、図２２乃至図２５に係るドラッグ関連処理を終了する。
【０２１０】
そして、このドラッグ関連処理を行った後、ＣＰＵ１０ｄは、図３のステップＳ１１１からステップＳ１０３へ処理を戻す。
【０２１１】
一方、ステップＳ１１０において、イベントがドラッグでなかった場合、ＣＰＵ１０ｄは、ステップＳ１１２へ処理を進める。
【０２１２】
ステップＳ１１２では、ＣＰＵ１０ｄは、イベントが終了指示であるか否かを、判別させる。そして、イベントが終了指示でなかった場合、ＣＰＵ１０ｄは、ステップＳ１１２からステップＳ１１３へ処理を分岐させる。
【０２１３】
ステップＳ１１３では、ＣＰＵ１０ｄは、例えば、ファイルメニューや編集メニュー内の各選択肢の中から選択された処理実行指示、又は、右クリックにて表示されるメニュー内の各選択肢の中から選択された処理実行指示など、そのイベントに応じた処理を行う。なお、そのイベントが、ソースコード表示枠内でのクリックである場合、ＣＰＵ１０ｄは、そのクリック点に新たなソースコードを入力するためのキー入力をできるようにするため、そのクリック点にカーソルを表示する処理を行う。これらのような処理を行った後、ＣＰＵ１０ｄは、ステップＳ１０３へ処理を戻す。
【０２１４】
一方、ステップＳ１１２において、イベントが終了指示であった場合、ＣＰＵ１０ｄは、図３に係る処理を終了する。
【０２１５】
次に、本実施形態の作用及び効果について、説明する。
【０２１６】
ソフトウエア開発用装置１０の操作者は、入力装置１０ｂを操作することによって、ソフトウエア開発ツール１３を起動し、任意のソースコードデータ１２のファイルを開く（ステップＳ１０１〜Ｓ１０３）。すると、このソースコードデータ１２について、図８乃至図１５のテーブル２１〜２８が作成されるとともに、そのソースコードが、注釈が除去された状態でソースコード表示枠に表示される（ステップＳ１０４；ＹＥＳ，Ｓ１０５，Ｓ２０１〜Ｓ２３５）。その後、操作者が、アウトライン表示を指示すると、そのソースコード内の各種の注釈が、図９乃至図１４の対応するテーブル２２〜２７に登録され、アウトライン表示枠にアウトラインを表示するためのアウトラインデータが生成され、そのアウトラインデータに基づいてアウトライン表示枠にアウトラインが表示される（ステップＳ１０６；ＹＥＳ，Ｓ１０７，Ｓ３０１〜Ｓ３３１）。
【０２１７】
図２６は、図２のソースコードデータ１２に基づくソースコードとそのソースコードのアウトラインとがソースコード表示枠４１とアウトライン表示枠４２とにそれぞれ表示された状態を示す図である。図２６に示すように、ソースコード表示枠４１には、図２のソースコードデータ１２に見られる注釈が、含まれていない。その代わり、それら注釈は、アウトライン表示枠４２に表示されている。
【０２１８】
このような表示枠４１，４２が含まれる作業画面において、図２７に示すように、ソースコード表示枠４１内の「return」という文字列が、操作者によってドラッグされた場合（ステップＳ１１０；ＹＥＳ，Ｓ５０１；ＮＯ）、そのreturn句の先頭文字がソースコードにおいて８番目の行の４番目のマスに含まれるため、この行番号「８」とマス番号「４」とにより、図１１のreturn管理テーブル２４から、アウトライン上でのret注釈の位置が特定される（ステップＳ５１０，Ｓ５１１，Ｓ５１２；ＹＥＳ，Ｓ５１３；ＹＥＳ，Ｓ５１４；ＹＥＳ）。そして、図２７に示されるように、その特定された位置にあるret注釈が強調表示される（ステップＳ５１５）。なお、ソースコード表示枠内の座標とアウトライン表示枠内の座標は、連動してスクロールするようになっているため、アウトライン表示枠内に表示された当該注釈は、ソースコード表示枠内のドラッグ部分と同一行に表示されることとなる。
【０２１９】
また、操作者が、ソースコード表示枠４１にソースコードを表示させた後、アウトライン表示枠４２にアウトラインを表示させることなく、図２８に示すように、ソースコード表示枠４１内の「ctl_var」という変数名をドラッグすると、その変数名の先頭文字の行番号「２」とマス番号「６」とにより、図１０の変数管理テーブル２３から、アウトライン上でのvar注釈の位置が特定される（ステップＳ５１０，Ｓ５１１，Ｓ５１２；ＹＥＳ，Ｓ５１３；ＹＥＳ，Ｓ５１４；ＮＯ，Ｓ５１６；ＹＥＳ）。そして、図２８に示すように、アウトライン表示枠における特定された位置に、var注釈が表示されるとともに（ステップＳ５１７）、ソースコード表示枠４１内における「ctl_var」がある全ての行に含まれる注釈も、アウトライン表示枠４２に表示される（ステップＳ５１８）。
【０２２０】
従って、本実施形態のソフトウエア開発用装置１０によれば、注釈を除いたソースコードをソースコード表示枠４１に表示することができるとともに、その表示したソースコードのうちの任意の部分をドラッグすることにより、その部分に関連付けられている注釈がアウトライン表示枠４２に表示される。これにより、ソースコードの筋道（ロジック）の確認が注釈によって阻碍されることがなくなるとともに、注釈が有効に利用できる。
【０２２１】
（付記１）
コンピュータを、
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手段，
前記読出手段が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手段，
前記読出手段が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手段，
前記ソースコード表示手段において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手段，及び、
前記受付手段が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手段
として機能させる
ことを特徴とするソースコード表示プログラム。
【０２２２】
（付記２）
前記対応情報生成手段が、ソースコード内の注釈と、その注釈に関連付けられているトークンと、その注釈のソースコード内での行方向の所在位置を示す位置情報とを、対応付けた対応情報を生成し、記憶装置に記憶するとともに、
前記コンピュータを、更に、
前記ソースコードにおいて前記指定により特定される部分と同一内容の部分を抽出し、それら各部分の前記ソースコード内での位置を示す位置情報を取得し、それら位置情報に一致する位置情報を持つ注釈を前記記憶装置から読み出し、読み出した注釈を、前記第２の表示枠における対応する位置に表示する第２の表示手段
として機能させる
ことを特徴とする付記１記載のソースコード表示プログラム。
【０２２３】
（付記３）
コンピュータを、
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手段，
前記読出手段が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手段，
前記読出手段が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手段，
前記ソースコード表示手段において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手段，及び、
前記受付手段が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手段
として機能させるソースコード表示プログラム
を格納したことを特徴とするコンピュータ可読媒体。
【０２２４】
（付記４）
前記対応情報生成手段が、ソースコード内の注釈と、その注釈に関連付けられているトークンと、その注釈のソースコード内での行方向の所在位置を示す位置情報とを、対応付けた対応情報を生成し、記憶装置に記憶するとともに、
前記コンピュータを、更に、
前記ソースコードにおいて前記指定により特定される部分と同一内容の部分を抽出し、それら各部分の前記ソースコード内での位置を示す位置情報を取得し、それら位置情報に一致する位置情報を持つ注釈を前記記憶装置から読み出し、読み出した注釈を、前記第２の表示枠における対応する位置に表示する第２の表示手段
として機能させる
ことを特徴とする付記３記載のコンピュータ可読媒体。
【０２２５】
（付記５）
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出部，
前記読出部が前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成部，
前記読出部が前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示部，
前記ソースコード表示手順において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付部，及び、
前記受付部が受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示部
を備えることを特徴とするソースコード表示装置。
【０２２６】
（付記６）
前記対応情報生成部が、ソースコード内の注釈と、その注釈に関連付けられているトークンと、その注釈のソースコード内での行方向の所在位置を示す位置情報とを、対応付けた対応情報を生成し、記憶装置に記憶するとともに、
前記ソースコードにおいて前記指定により特定される部分と同一内容の部分を抽出し、それら各部分の前記ソースコード内での位置を示す位置情報を取得し、それら位置情報に一致する位置情報を持つ注釈を前記記憶装置から読み出し、読み出した注釈を、前記第２の表示枠における対応する位置に表示する第２の表示部を、更に備える
ことを特徴とする付記５記載のソースコード表示装置。
【０２２７】
（付記７）
コンピュータが、
文と注釈とを含むソースコードのうち、何れかのソースコードが入力装置を通じて指定されると、そのソースコードデータを記憶装置から読み出す読出手順，
前記読出手順において前記記憶装置から読み出したソースコードデータの示すソースコード内の注釈のそれぞれについて、その注釈とその注釈に関連付けられているトークンとを対応付けた対応情報を生成し、記憶装置に記憶する対応情報生成手順，
前記読出手順において前記記憶装置から読み出したソースコードデータに基づいて、注釈を除去したソースコードを第１の表示枠に表示するソースコード表示手順，
前記ソースコード表示手順において前記第１の表示枠に表示されたソースコードのうち、選択された任意の部分についての指定を、入力装置を通じて受け付ける受付手順，及び、
前記受付手順において受け付けた指定により特定される部分が、前記記憶装置内の何れかのトークンと一致する場合に、そのトークンに対応付けられている注釈をその記憶装置から読み出し、読み出した注釈を、第２の表示枠における当該部分の位置に対応する位置に表示する第１の表示手順
を実行する
ことを特徴とするソースコード表示方法。
【０２２８】
（付記８）
前記コンピュータが、
前記対応情報生成手順において、ソースコード内の注釈と、その注釈に関連付けられているトークンと、その注釈のソースコード内での行方向の所在位置を示す位置情報とを、対応付けた対応情報を生成し、記憶装置に記憶するとともに、
更に、
前記ソースコードにおいて前記指定により特定される部分と同一内容の部分を抽出し、それら各部分の前記ソースコード内での位置を示す位置情報を取得し、それら位置情報に一致する位置情報を持つ注釈を前記記憶装置から読み出し、読み出した注釈を、前記第２の表示枠における対応する位置に表示する第２の表示手順
を実行する
ことを特徴とする付記７記載のソースコード表示方法。
【図面の簡単な説明】
【０２２９】
【図１】本実施形態のソフトウエア開発用装置の構成図
【図２】ソースコードデータに基づいて表されるソースコードの一例を示す図
【図３】ソフトウエア開発ツールの起動後の処理の流れを示す図
【図４】ソースコード表示処理の流れを示す図
【図５】ソースコード表示処理の流れを示す図
【図６】ソースコード表示処理の流れを示す図
【図７】ソースコード表示処理の流れを示す図
【図８】関数構造体管理テーブルのデータ構造の一例を示す図
【図９】引数管理テーブルのデータ構造の一例を示す図
【図１０】変数管理テーブルのデータ構造の一例を示す図
【図１１】return管理テーブルのデータ構造の一例を示す図
【図１２】abs注釈管理テーブルのデータ構造の一例を示す図
【図１３】ver注釈管理テーブルのデータ構造の一例を示す図
【図１４】oth注釈管理テーブルのデータ構造の一例を示す図
【図１５】アウトライン管理テーブルのデータ構造の一例を示す図
【図１６】アウトライン表示処理の流れを示す図
【図１７】アウトライン表示処理の流れを示す図
【図１８】アウトライン表示処理の流れを示す図
【図１９】アウトライン表示処理の流れを示す図
【図２０】アウトラインデータのデータ構造の一例を示す図
【図２１】スクロール処理の流れを示す図
【図２２】ドラッグ関連処理の流れを示す図
【図２３】ドラッグ関連処理の流れを示す図
【図２４】ドラッグ関連処理の流れを示す図
【図２５】ドラッグ関連処理の流れを示す図
【図２６】ソースコードとアウトラインとが各表示枠に表示された状態を示す図
【図２７】ret注釈が強調表示された状態を示す図
【図２８】各注釈がアウトライン表示枠に表示された状態を示す図
【符号の説明】
【０２３０】
１０    ソフトウエア開発用装置
１０ｃ  ＨＤＤ
１０ｄ  ＣＰＵ
１０ｅ  ＤＲＡＭ
１１    基本ソフトウエア
１２    ソースコードデータ
１３    ソフトウエア開発ツール
２１    関数構造体管理テーブル
２２    引数管理テーブル
２３    変数管理テーブル
２４    return管理テーブル
２５    abs注釈管理テーブル
２６    ver注釈管理テーブル
２７    oth注釈管理テーブル
２８    アウトライン管理テーブル
３１    アウトラインデータ
４１    ソースコード表示枠
４２    アウトライン表示枠
【図１】
2008077613.tif 000003
【図２】
2008077613.tif 000004
【図３】
2008077613.tif 000005
【図４】
2008077613.tif 000006
【図５】
2008077613.tif 000007
【図６】
2008077613.tif 000008
【図７】
2008077613.tif 000009
【図８】
2008077613.tif 000010
【図９】
2008077613.tif 000011
【図１０】
2008077613.tif 000012
【図１１】
2008077613.tif 000013
【図１２】
2008077613.tif 000014
【図１３】
2008077613.tif 000015
【図１４】
2008077613.tif 000016
【図１５】
2008077613.tif 000017
【図１６】
2008077613.tif 000018
【図１７】
2008077613.tif 000019
【図１８】
2008077613.tif 000020
【図１９】
2008077613.tif 000021
【図２０】
2008077613.tif 000022
【図２１】
2008077613.tif 000023
【図２２】
2008077613.tif 000024
【図２３】
2008077613.tif 000025
【図２４】
2008077613.tif 000026
【図２５】
2008077613.tif 000027
【図２６】
2008077613.tif 000028
【図２７】
2008077613.tif 000029
【図２８】
2008077613.tif 000030