(57)【要約】【課題】展開したソースプログラムをデバッグ中に、展開したソースプログラムを修正する場合は、最終的にはユーザがソースプログラムの不良箇所を特定して修正する必要がある。しかし、展開したデバッグ用のソースプログラムと展開ソースプログラムの２つの箇所関係をユーザが手動で特定しなければいけない。【解決手段】ソースプログラムに記述されたマクロを展開する指示を行うマクロ展開指示部１と、マクロをソースプログラム５１ａに展開したマクロ展開ソースプログラム５１ｂを作成し、マクロ展開ソースプログラム５１ｂを表示部に表示するマクロ展開処理部２と、表示部に表示されるマクロ展開ソースプログラム５１ｂに対して、ソースプログラム５１ａへの特定箇所への移動を指示するソースプログラム移動指示部３と、指示された特定箇所に移動してソースプログラム５１ａを表示部に表示するソースプログラム移動部４と、を備える。【選択図】図５
2013137716.tif 000002
【特許請求の範囲】
【請求項１】
ソースプログラムに記述されたマクロを展開する指示を行うマクロ展開指示部と、
前記マクロをソースプログラムに展開したマクロ展開ソースプログラムを作成し、前記マクロ展開ソースプログラムを表示部に表示するマクロ展開処理部と、
前記表示部に表示される前記マクロ展開ソースプログラムに対して、ソースプログラムへの特定箇所への移動を指示するソースプログラム移動指示部と、
指示された前記特定箇所に移動して前記ソースプログラムを前記表示部に表示するソースプログラム移動部と、を備える
マクロ展開装置。
【請求項２】
前記ソースプログラム移動指示部は、前記ソースプログラムに記述されている前記マクロの使用箇所、又は前記ソースプログラムに記述されたマクロの定義が記述されている箇所を前記特定箇所とし、前記特定箇所への移動指示を、前記マクロ展開ソースプログラムに表示される選択ボタンの操作によって行う
請求項１記載のマクロ展開装置。
【請求項３】
前記マクロ展開処理部は、
前記ソースプログラムのバックアップとして作成したバックアップソースプログラムをバックアップソースプログラム記憶部に保存するバックアップソースプログラム保存部と、
プリプロセス処理により前記ソースプログラムをマクロ展開した前記マクロ展開ソースプログラムを前記表示部に出力するプリプロセス制御部と、を備え、
前記ソースプログラム移動部は、
前記バックアップソースプログラム記憶部から読み出した前記バックアップソースプログラムを前記ソースプログラム記憶部に上書きする回復処理を行うバックアップソースプログラム回復部と、
前記ソースプログラム記憶部に上書きした前記バックアップソースプログラムを、前記バックアップソースプログラム記憶部から削除するバックアップソースプログラム削除部と、を備え、
前記ソースプログラム移動指示部によって指示された前記特定箇所への移動指示に基づいて、前記ソースプログラム記憶部から読み出した前記ソースプログラムを表示して前記特定箇所に移動する
請求項２記載のマクロ展開装置。
【請求項４】
前記マクロ展開処理部は、前記マクロ展開ソースプログラムに展開したマクロの名称をコメントとして挿入し、
前記プリプロセス制御部は、展開した前記マクロのマクロ名、前記マクロの展開箇所、及び前記マクロが定義されている箇所、前記マクロが前記ソースプログラムに記述されている箇所を前記記憶部に作成したテーブルに保存する
請求項３記載のマクロ展開装置。
【請求項５】
前記マクロ展開処理部は、展開した前記マクロの引数に色をつけて前記表示部に表示する
請求項４記載のマクロ展開装置。
【請求項６】
前記マクロ展開指示部は、前記ソースプログラムに記述されている個別のマクロ毎、又は前記ソースプログラムに記述されている全てのマクロを選択して展開することを指示する
請求項５記載のマクロ展開装置。
【請求項７】
ソースプログラムに記述されたマクロを展開する指示を行う手順、
前記マクロをソースプログラムに展開したマクロ展開ソースプログラムを作成し、前記マクロ展開ソースプログラムを表示部に表示する手順、
前記表示部に表示される前記マクロ展開ソースプログラムに対して、ソースプログラムへの特定箇所への移動を指示する手順、
指示された前記特定箇所に移動して前記ソースプログラムを前記表示部に表示する手順とを、
コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソースプログラムに記述されたマクロの特定箇所を展開して表示する場合に適用できるマクロ展開装置及びプログラムに関する。
【背景技術】
【０００２】
従来、一般的なソフトウェアを開発する際には、ソースプログラム上に何度も記述される命令や関数を定義したマクロをプログラムに実装する場合があった。このマクロを用いると、ソフトウェアの処理時間を短縮することができると共に、ソースプログラムのコードの量を削減でき、開発効率を高めることができる。このため、保守時にはソースプログラムの視認性が高まり、内容を容易に把握しやすくなる。
【０００３】
また、複数種類のマクロを組み合わせて、処理を行わせるようにソースプログラムをプログラミングすることが可能である。そして、定型化された処理をマクロに集約することによって、マクロを用いた同じ系統の機能をソースプログラムに容易に追加できる。例えば、処理時点における日付情報を取得する処理については、事前に日付取得マクロを作成しておく。そして、ソースプログラムには、日付取得マクロを呼び出す記述をしておく。これにより、複数のソフトウェアであっても同じ日付情報を取得することができる。また、マクロを用いた特定の処理を複数のソフトウェアで再利用することも可能である。
【０００４】
ソフトウェアの開発時には、プログラミングを担当するユーザがソフトウェアに不具合を発見すると、デバッグを行ってソースプログラム内の不良箇所を特定し、修正を行っている。この際、ソースプログラム内のマクロにどのような命令が記述されているかを確認する場合がある。
【０００５】
しかし、マクロを用いた処理からマクロの中身を直接デバッグできない場合がある。このため、ソースプログラムのデバッグ時に、マクロにどのような命令が記述されているかを展開して（以下、このような処理を「マクロ展開」と呼ぶ。）、不具合が生じた箇所を特定した後に、デバッグ中のソースプログラムを修正する仕組みが必要とされていた。ここで、マクロ展開してソースプログラムを修正する技術としては、特許文献１に開示されているものが知られている。
【０００６】
特許文献１には、Ｃ言語を用いて記述されたソースプログラムをマクロ定義の定義内容に従って展開する過程において、マクロ定義の内容を示す文字列配列変数を得た後、展開後のソースプログラムに文字列配列変数を付加する技術が開示されている。そして、ソースプログラムのマクロ使用命令に対して、マクロ定義内容を展開してデバッグするプログラムコンパイラが提供されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１―１５４０９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ここで、マクロ展開した後のソースプログラムをデバッグ中に、ユーザが特定した不良箇所を修正する場合を想定する。このとき、特許文献１に開示されたプログラムコンパイラを用いると、ユーザはマクロ展開される前のソースプログラムを目視で検索して、特定したマクロの不良箇所を修正できる。しかし、プログラムコードの量が膨大になっても、展開したデバッグ用のソースプログラムとソースプログラムの２つからマクロの位置関係を手動で特定しなければいけない。このため、マクロ展開した後のソースプログラムから不良箇所を特定しても、マクロ展開する前のソースプログラムから不良箇所のマクロを特定することは困難であった。
【０００９】
本発明はこのような状況に鑑みて成されたものであり、マクロ展開したソースプログラム内に記述されたマクロのコメントから、マクロ展開される前のソースプログラムにおけるマクロの特定箇所に移動して表示する方法を提供するものである。
【課題を解決するための手段】
【００１０】
本発明は、ソースプログラムに記述されたマクロを展開する指示を行い、マクロをソースプログラムに展開したマクロ展開ソースプログラムを作成し、マクロ展開ソースプログラムを表示部に表示する。そして、表示部に表示されるマクロ展開ソースプログラムに対して、ソースプログラムへの特定箇所への移動を指示し、指示された特定箇所に移動してソースプログラムを表示部に表示する。
【発明の効果】
【００１１】
本発明によれば、ソースプログラムをマクロ展開することによって、ユーザがデバッグを行うソースプログラム内のマクロを特定し易くなる。また、マクロ展開ソースプログラムから、ユーザが修正するマクロ箇所を指定するだけで、ソースプログラム内のマクロの不良箇所に移動してソースプログラムを表示部に表示する。このため、ユーザが目視でソースプログラムからマクロを検索しなくてもよくなり、ソフトウェア開発の効率が向上する。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施の形態例におけるマクロ展開装置の内部構成例を示すブロック図である。
【図２】本発明の一実施の形態例におけるマクロ展開装置の詳細な内部構成例を示すブロック図である。
【図３】本発明の一実施の形態例におけるマクロ展開装置が画面に表示する画面表示メニューの例を示す説明図である。
【図４】本発明の一実施の形態例におけるマクロ展開装置の使用例を示す説明図である。
【図５】本発明の一実施の形態例におけるマクロ展開指示部及びマクロ展開処理部の処理例を示すフローチャートである。
【図６】本発明の一実施の形態例におけるソースプログラム移動指示部及びソースプログラム移動部の処理例を示すフローチャートである。
【図７】本発明の一実施の形態例におけるマクロ展開の前後におけるソースプログラムの表示例を示す説明図である。
【図８】本発明の一実施の形態例におけるマクロ展開時に作成されるテーブルの例を示す説明図である。
【図９】本発明の一実施の形態例におけるマクロ使用箇所にジャンプする場合のソースプログラムの表示例を示す説明図である。
【図１０】本発明の一実施の形態例におけるマクロ定義箇所にジャンプする場合のソースプログラムの表示例を示す説明図である。
【発明を実施するための形態】
【００１３】
以下、本発明の一実施の形態例について、添付図面を参照して説明する。本実施の形態例では、ソースプログラムに記述されるマクロを展開して表示部５に表示し、ユーザが直接マクロを編集することを可能とするマクロ展開装置１０に適用した例について説明する。このマクロ展開装置１０は、コンピュータがプログラムを実行することにより、内部ブロックが連携して行うソースプログラムのマクロ展開方法を実現する。
【００１４】
図１は、マクロ展開装置１０の内部構成例を示すブロック図である。
マクロ展開装置１０は、ソースプログラムに記述されたマクロの展開を指示するマクロ展開指示部１と、指示されたマクロのマクロ展開を行って、マクロ展開ソースプログラムを表示部５に表示するマクロ展開処理部２とを備える。また、マクロ展開装置１０は、ソースプログラムの特定箇所への移動を指示するソースプログラム移動指示部３と、ソースプログラム内に記述されるマクロの使用箇所又は定義箇所へ移動してソースプログラムを表示するソースプログラム移動部４とを備える。また、マクロが展開される前後のソースプログラム等は表示部５に表示され、ユーザが操作する操作部６の操作入力により展開されるマクロ等が特定される。
【００１５】
次に、マクロ展開装置１０の動作例を説明する。
始めに、ユーザが操作部６を操作してソースプログラム内のマクロをクリックし、マクロ展開を指示すると、マクロ展開指示部１は、指示内容を受け付け、マクロ展開を指示する。マクロ展開処理部２は、マクロ展開指示部１からの指示に基づいて、マクロ展開ソースプログラムを表示部５に表示する。
【００１６】
そして、ユーザがソースプログラムのデバッグを行う際には、マクロ展開ソースプログラム内のマクロの不良箇所を特定すると、ソースプログラムに移動して特定されたマクロが表示される。以下の説明では、マクロ展開ソースプログラム内でマクロを指定して、このマクロが記述されているソースプログラムの特定箇所を表示することを、「ジャンプ」と呼ぶ。
【００１７】
図２は、マクロ展開装置１０の詳細な内部構成例を示すブロック図である。
上述したように、マクロ展開装置１０は、マクロ展開指示部１、マクロ展開処理部２、ソースプログラム移動指示部３、ソースプログラム移動部４を備える。さらに、マクロ展開装置１０は、ソースプログラム５１ａを保存する記憶部７を備える。記憶部７は、ソースプログラム記憶部５１とバックアップソースプログラム記憶部５３を備える。そして、ソースプログラム記憶部５１は、ソースプログラム記憶部５１内に記述されたマクロの使用箇所等の情報が書き込まれるテーブル５２を備える。テーブル５２には、プリプロセス制御部によって、展開したマクロのマクロ名、マクロの展開箇所、及びマクロが定義されている箇所、マクロがソースプログラムに記述されている箇所が保存される。
【００１８】
ソースプログラム記憶部５１は、マクロ展開される前のソースプログラム５１ａを記憶する。そして、ソースプログラム５１ａがマクロ展開されると、ソースプログラム記憶部５１にマクロ展開ソースプログラム５１ｂが上書き保存される。バックアップソースプログラム記憶部５３には、バックアップとしてコピーされたマクロ展開される前のソースプログラム５１ａを記憶する。
【００１９】
また、マクロ展開処理部２は、バックアップソースプログラム保存部２１とプリプロセス制御部２２を備える。バックアップソースプログラム保存部２１は、ソースプログラム記憶部５１から読み出したソースプログラム５１ａをバックアップしたバックアップソースプログラム５３ａを、バックアップソースプログラム記憶部５３に保存する。プリプロセス制御部２２は、Ｃ言語等でコンパイルを行う前にソースプログラム５１ａにプリプロセス処理を行って、マクロ展開したマクロ展開ソースプログラム５１ｂをソースプログラム記憶部５１に保存する。
【００２０】
また、ソースプログラム移動部４は、バックアップソースプログラム回復部４１と、バックアップソースプログラム削除部４２と、ソースプログラムジャンプ処理部４３とを備える。バックアップソースプログラム回復部４１は、ソースプログラム記憶部５１に記憶されているソースプログラム５１ａに対して、バックアップソースプログラム記憶部５３から読み出したバックアップソースプログラム５３ａを上書きする回復処理を行う。バックアップソースプログラム削除部４２は、バックアップソースプログラム記憶部５３からマクロ展開ソースプログラム５１ｂを削除する処理を行う。ソースプログラムジャンプ処理部４３は、ソースプログラム記憶部５１に保存されているソースプログラム５１ａにアクセスして、マクロの特定箇所にジャンプする処理を行う。
【００２１】
ここで、各処理ブロックの動作を説明する前に、マクロ展開装置１０が画面に表示する画面表示メニュー１１に含まれる各種のボタンの例を説明する。
【００２２】
図３は、マクロ展開装置１０を制御する画面表示メニュー１１である。
ユーザがソースプログラム５１ａを右クリックすると、表示部５に画面表示メニュー１１が表示される。なお、右クリックとしたのは一例であり、画面表示メニュー１１を出現させる手法は限定されない。そして、ユーザが画面表示メニュー１１からマクロ展開ボタン１２を選択すると、選択されたマクロ展開ボタン１２は反転表示され、プリプロセス制御部２２によってマクロ展開が実行される。なお、マクロ展開はソースプログラム５１ａに含まれる全てのマクロ、又は指定したマクロ毎に展開することが可能である。
【００２３】
その後、マクロ展開ソースプログラム５１ｂ内のマクロに対して、ユーザが定義移動ボタン１３を選択すると、ソースプログラム５１ａ内のユーザが選択したマクロの定義箇所にジャンプすることができる。一方、ユーザが使用箇所移動ボタン１４を選択すると、ソースプログラム５１ａ内のユーザが選択したマクロの使用箇所にジャンプすることができる。また、デバッグにてソースプログラム記憶部５１の修正が不要である場合には、ソースプログラム５１ａのマクロ展開した箇所に戻るという意味で、使用箇所移動ボタン１４を選択すればよい。
【００２４】
ここで、図２に戻って、マクロ展開装置１０の動作例を説明する。
マクロ展開指示部１は、マクロ展開装置１０が動作するための画面を表示するプロセスであり、ユーザが画面表示メニュー１１からマクロ展開ボタン１２を選択すると、マクロ展開処理部２が行うマクロ展開処理の開始を指示する。また、マクロ展開指示部１は、ソースプログラムに記述されている個別のマクロ毎、又はソースプログラムに記述されている全てのマクロを選択して展開することを指示することができる。
【００２５】
マクロ展開処理部２は、ソースプログラム５１ａに対してマクロ使用箇所をマクロの実体に置換するプロセスであり、マクロ展開指示部１からマクロ展開の指示を受けると、ソースプログラム記憶部５１をマクロ展開して表示する。また、マクロ展開処理部２は、マクロ展開ソースプログラム５１ｂに展開したマクロの名称をコメントとしてソースプログラム５１ａに挿入する。
【００２６】
このとき、バックアップソースプログラム保存部２１は、マクロ展開をする前のソースプログラム５１ａをバックアップしたバックアップソースプログラム５３ａをバックアップソースプログラム記憶部５３に保存する。そして、プリプロセス制御部２２は、ソースプログラム記憶部５１から読み出したソースプログラム５１ａをマクロ展開したマクロ展開ソースプログラム５１ｂをソースプログラム記憶部５１に上書き保存する。
【００２７】
ソースプログラム移動指示部３は、ソースプログラム移動部４の実行を、ユーザが定義移動ボタン１３又は使用箇所移動ボタン１４等の選択ボタンを選択することによって制御する。ソースプログラム移動部４は、マクロ展開ソースプログラム５１ｂから、ユーザが指定したマクロの定義がされている箇所又はマクロが使用されている箇所を特定箇所とし、この特定箇所にジャンプするプロセスである。ソースプログラム移動部４は、ソースプログラム５１ａへの移動、バックアップソースプログラム記憶部５３に保存したバックアップソースプログラム５３ａの削除、及びソースプログラム５１ａに記述されるマクロの特定箇所へジャンプ処理を行う。
【００２８】
バックアップソースプログラム回復部４１は、バックアップソースプログラム記憶部５３から読み出したバックアップソースプログラム５３ａをソースプログラム記憶部５１に上書き保存する。バックアップソースプログラム削除部４２は、バックアップソースプログラム記憶部５３からバックアップソースプログラム５３ａを削除する。
【００２９】
ソースプログラムジャンプ処理部４３は、ユーザが指定したソースプログラム５１ａの特定箇所へ移動して、ソースプログラム５１ａを表示する。なお、ソースプログラム５１ａに移動するときにマクロ展開ソースプログラム５１ｂを自動的に削除しているが、マクロ展開ソースプログラム５１ｂを残したままとしてもよい。
【００３０】
図４は、マクロ展開装置１０の使用例を示す説明図である。
始めに、ユーザがソースプログラム５１ａのテスト又はデバッグを行う前に、ソースプログラム５１ａをマクロ展開する方法について説明を行う。
【００３１】
上述したように、ユーザがソースプログラム５１ａに記述されている特定のマクロを指定して、画面表示メニュー１１のマクロ展開ボタン１２を選択する。この選択により、マクロ展開処理部２は、指定されたマクロを展開したマクロ展開ソースプログラム５１ｂを表示部５に表示する。
【００３２】
一方、ユーザが特定のマクロを指定せずに、マクロ展開ボタン１２を選択すると、マクロ展開処理部２は、ソースプログラム５１ａに記述されている全てのマクロを展開したマクロ展開ソースプログラム５１ｂを表示部５に表示する。その後、ユーザは、マクロ展開ソースプログラム５１ｂを使用してテストとデバッグを行うこととなる。そして、ユーザが特定のマクロを指定して定義移動ボタン１３を選択すると、ソースプログラム移動部４は、指定されたマクロがソースプログラム５１ａ内で定義されている箇所に移動して、この指定されたマクロを表示部５に表示する。
【００３３】
次に、ユーザがテスト・デバッグを行った後に、ソースプログラム５１ａに戻る方法について説明を行う。
ユーザがマクロ展開ソースプログラム５１ｂに記述されたマクロを指定して定義移動ボタン１３を選択すると、ソースプログラム５１ａ内でマクロが定義されているマクロ定義箇所５５を表示する。また、ユーザがマクロを指定して使用箇所移動ボタン１４を選択すると、ソースプログラム５１ａ内でマクロが使用されているマクロ使用箇所５６を表示する。また、ソースプログラム５１ａ内におけるマクロ定義がネスト（入れ子）で記述されている場合であっても、任意のマクロ定義箇所５５へジャンプすることも可能である。
【００３４】
＜マクロ展開指示部１及びマクロ展開処理部２の処理例＞
図５は、マクロ展開指示部１及びマクロ展開処理部２の処理例を示すフローチャートである。図５において、マクロ展開指示部１は、ステップＳ１のマクロ展開判定処理を行い、マクロ展開処理部２は、ステップＳ２〜Ｓ４のマクロ展開処理を行う。
【００３５】
始めに、マクロ展開指示部１は、ソースプログラム５１ａに対してマクロ展開の実施を指示したか否かを判定する（ステップＳ１）。マクロ展開の実施は、ユーザがソースプログラム５１ａに対してマクロ展開ボタン１２を選択することによりステップＳ２以降の動作が開始する。マクロ展開を実施しない時は全ての処理を終了する。
【００３６】
次に、マクロ展開処理部２内のバックアップソースプログラム保存部２１は、マクロ展開前のソースプログラム５１ａをバックアップしたバックアップソースプログラム５３ａを作成し（ステップＳ２）、バックアップソースプログラム記憶部５３に保存する。バックアップソースプログラム５３ａは、マクロ展開ソースプログラム５１ｂをソースプログラム５１ａに戻す際に使用する。
【００３７】
次に、マクロ展開処理部２は、プリプロセス処理によりソースプログラム５１ａのマクロ展開を行い、マクロ展開ソースプログラム５１ｂを作成する（ステップＳ３）。マクロ展開されるマクロが関数型マクロである場合は、マクロ展開処理部２は、引数を展開した部分に色をつける。このため、マクロ展開ソースプログラム５１ｂ内で、色が付けられ引数が展開された部分と、マクロ処理が行われる部分を明確に区別して表示部５に表示することが可能となる。最後に、マクロ展開処理部２は、マクロ展開ソースプログラム５１ｂを表示部５に出力して表示させる（ステップＳ４）。
【００３８】
＜ソースプログラム移動指示部３及びソースプログラム移動部４の処理例＞
図６は、ソースプログラム移動指示部３及びソースプログラム移動部４のフローチャートである。図６において、ソースプログラム移動指示部３は、ステップＳ１１のソースプログラム５１ａへの移動判定処理を行い、ソースプログラム移動部４は、ステップＳ１２〜Ｓ１６のジャンプ処理を行う。
【００３９】
始めに、ソースプログラム移動指示部３は、ソースプログラム５１ａへの移動を指示したか否かを判定する（ステップＳ１１）。ソースプログラム５１ａへの移動は、ユーザが画面表示メニュー１１の定義移動ボタン１３又は使用箇所移動ボタン１４を選択したことに連動して開始する。移動を指示しない時は全ての処理を終了する。
【００４０】
ステップＳ１１で移動指示が実施されたと判定されると、ソースプログラム移動部４内のバックアップソースプログラム回復部４１は、表示しているマクロ展開ソースプログラム５１ｂにバックアップソースプログラム５３ａを上書き更新する処理を行う（ステップＳ１２）。そして、バックアップソースプログラム削除部４２は、バックアップソースプログラム記憶部５３からバックアップソースプログラム５３ａを削除する（ステップＳ１３）。
【００４１】
次に、ソースプログラム移動部４は、ソースプログラムの移動箇所を判定する（ステップＳ１４）。画面表示メニュー１１の定義移動ボタン１３が選択されると、ソースプログラム５１ａ内でユーザが指定したマクロの定義箇所にジャンプする（ステップＳ１５）。また、画面表示メニュー１１の使用箇所移動ボタン１４が選択されると、ソースプログラム５１ａ内でユーザが指定したマクロの使用箇所にジャンプする（ステップＳ１６）。
【００４２】
次に、上述した図５及び図６における各処理ブロックの詳細な内部情報について、図７〜図１０を参照して説明する。
図７は、Ｃ言語によって記述されるソースプログラム５１ａのマクロ展開前後における表示例を示す説明図である。図７Ａは、マクロ展開前のソースプログラム５１ａの表示例であり、図７Ｂは、マクロ展開ソースプログラム５１ｂの表示例である。
【００４３】
マクロ展開ソースプログラム５１ｂは、図５のステップＳ３によって使用箇所が展開されたマクロ展開箇所５７を含む。また、マクロ展開ソースプログラム５１ｂは、図５のステップＳ１によって作成されたバックアップソースプログラム記憶部５３を含む。そして、マクロ展開ソースプログラム５１ｂは、ＭＡＣＲＯ１の定義箇所５８と、ＭＡＣＲＯ２の定義箇所５９を含む。以下の説明では、２種類のマクロである「ＭＡＣＲＯ１」と「ＭＡＣＲＯ２」を定めており、ＭＡＣＲＯ１，２は、それぞれ定義箇所５８，５９に定義されている。
【００４４】
まず、バックアップソースプログラム保存部２１は、マクロ展開前のソースプログラム５１ａに記述されたファイル名が「ｘｘｘｘ．ｃ」であるファイルをバックアップし、バックアップソースプログラム５３ａを作成する。このバックアップソースプログラム５３ａは、ファイル名を「ｘｘｘｘ．ｃ」から「ｘｘｘｘ＿ｂａｋ．ｃ」に変更したものであり、バックアップソースプログラム記憶部５３に保存される。その後、マクロ展開処理部２は、ソースプログラム５１ａのマクロ展開を行ったマクロ展開ソースプログラム５１ｂをソースプログラム記憶部５１に上書きする。
【００４５】
図８は、マクロ展開時に作成するテーブル５２の内容を示す説明図である。
テーブル５２は、展開したマクロの数だけマクロに関する情報を持ち、マクロ展開時に記憶部７に作成される。そして、テーブル５２は、ＭＡＣＲＯ２の使用箇所５２ａと、展開したマクロ定義のファイル名５２ｂと、ソースプログラム５１ａのマクロ使用箇所５２ｃを含む。ＭＡＣＲＯ２の使用箇所５２ａには、ＭＡＣＲＯ２のマクロ名、マクロ展開ソースのファイル名、展開行の箇所が記述される。展開したマクロ定義のファイル名５２ｂには、展開したマクロ定義のファイル名、定義箇所が記述される。ソースプログラム５１ａに記述されるマクロ使用箇所５２ｃには、ソースファイル名及び使用箇所が記述される。
【００４６】
テーブル５２は、ＭＡＣＲＯ１の使用箇所５２ｄと、ＭＡＣＲＯ１を呼び出すＭＡＣＲＯ２の定義箇所５２ｅを含む。ＭＡＣＲＯ１の使用箇所５２ｄには、定義箇所５９に記述されたＭＡＣＲＯ２から呼ばれるＭＡＣＲＯ１のマクロ名、マクロ展開ソースのファイル名、展開行の箇所が記述される。ＭＡＣＲＯ１の使用箇所５２ｄに記述されるＭＡＣＲＯ１は、定義箇所５９に記述されたＭＡＣＲＯ２から呼び出されている。このため、定義箇所５２ｅに記述される情報は、ＭＡＣＲＯ１を呼び出しているＭＡＣＲＯ２の定義箇所となり、展開したマクロ定義のファイル名５２ｂと同じ情報となる。
【００４７】
次に、図６に示したマクロ展開ソースプログラム５１ｂからソースプログラム５１ａのユーザが指定したマクロに移動する方法について説明する。
ユーザは表示されたマクロ展開ソースプログラム５１ｂから、ソースプログラム５１ａにおいてマクロが記述される箇所を特定する場合、ソースプログラム移動指示部３とソースプログラム移動部４を用いてジャンプする。このため、ユーザが自分で検索等を用いてソースプログラム５１ａからマクロを探さなくても、１度のボタン操作を行うだけで指定したマクロがソースプログラム５１ａに記述された箇所に移動して表示することが可能となる。この移動に際して、ユーザは、マクロ使用箇所、マクロ定義箇所、マクロのネストの途中部分等の任意の箇所を指定することができる。
【００４８】
＜マクロの使用箇所移動における表示処理の例＞
図９は、マクロ展開ソースプログラム５１ｂで指定したマクロの使用箇所へ移動した場合におけるソースプログラム５１ａの表示例を示す。図９Ａは、マクロ展開ソースプログラム５１ｂの表示例であり、図９Ｂは、使用箇所への移動後のソースプログラム５１ａの表示例である。
【００４９】
図９Ａと図９Ｂに示すように、マクロ展開ソースプログラム５１ｂから、ユーザが画面表示メニュー１１の使用箇所移動ボタン１４を選択すると、マクロ展開ソースプログラム５１ｂからソースプログラム５１ａが表示される。
【００５０】
ここで、マクロ展開ソースプログラム５１ｂには、ユーザが使用箇所移動を選択するマクロ名６０がコメントとして記述される。そして、図９Ａに示すように、マクロ展開ソースプログラム５１ｂが表示されると同時に、バックアップソースプログラム５３ａが作成される。
【００５１】
ユーザが画面表示メニュー１１の使用箇所移動ボタン１４を選択すると、選択したマクロが使用されている箇所に移動したソースプログラム５１ａが表示される。また、ユーザがマクロのコメント行以外に展開された箇所から使用箇所移動ボタン１４を選択すると、ユーザが右クリックで指定したマクロと、テーブル５２に記述された内容とを照合して該当するソースプログラム５１ａのマクロを表示する。
【００５２】
ここで、図９Ｂに示すソースプログラム５１ａは、マクロ展開ソースプログラム５１ｂをバックアップソースプログラム５３ａによって上書きしたものである。そして、図９Ａに示すマクロ展開ソースプログラム５１ｂにおいてユーザが選択したマクロ名６０の使用箇所の移動先６１は、上書きしたソースプログラム５１ａに表示される。また、上書き処理に際しては、バックアップソースプログラム削除部４２は、ファイル名が「ｘｘｘｘ＿ｂａｋ．ｃ」として表されるバックアップソースプログラム５３ａを削除する。
【００５３】
＜マクロの定義箇所移動における表示処理の例＞
図１０は、マクロ展開ソースプログラム５１ｂで指定したマクロの定義箇所へ移動した場合におけるソースプログラム５１ａの表示例を示す。図１０Ａは、マクロ展開ソースプログラム５１ｂの表示例であり、図１０Ｂは、定義箇所への移動後のソースプログラム５１ａの表示例である。
【００５４】
図１０Ａと図１０Ｂに示すように、マクロ展開ソースプログラム５１ｂから、ユーザが画面表示メニュー１１の定義移動ボタン１３を選択すると、マクロ展開ソースプログラム５１ｂからソースプログラム５１ａが表示される。
【００５５】
ここで、マクロ展開したマクロ展開ソースプログラム５１ｂには、ユーザが定義箇所移動を選択するマクロ名６２がコメントとして記述される。そして、図１０Ａに示すように、マクロ展開ソースプログラム５１ｂが表示されると同時に、バックアップソースプログラム５３ａが作成されている。
【００５６】
ユーザが画面表示メニュー１１の定義移動ボタン１３を選択すると、選択したマクロが定義されている箇所に移動したソースプログラム５１ａが表示される。また、ユーザがマクロのコメント行以外に展開された箇所から定義移動ボタン１３を選択すると、ユーザが右クリックで指定したマクロと、テーブル５２に記述された内容とを照合して該当するソースプログラム５１ａのマクロの定義箇所を表示する。
【００５７】
ここで、図１０Ｂに示すソースプログラム５１ａは、マクロ展開ソースプログラム５１ｂをバックアップソースプログラム５３ａによって上書きしたものである。そして、図１０Ａに示すマクロ展開ソースプログラム５１ｂにおいてユーザが選択したマクロ名６０の定義箇所の移動先６３には、「ｆｉｌｅ２．ｈ」が表示される。また、上書き処理に際しては、バックアップソースプログラム削除部４２は、ファイル名が「ｘｘｘｘ＿ｂａｋ．ｃ」として表されるバックアップソースプログラム５３ａを削除する。
【００５８】
以上説明した一実施の形態例に係るマクロ展開装置１０によれば、ソースプログラム５１ａをマクロ展開してマクロ展開ソースプログラム５１ｂを表示することができる。また、マクロ展開ソースプログラム５１ｂからユーザが指定したマクロの使用箇所又は定義箇所を選択して、ソースプログラム５１ａ内におけるマクロの特定箇所に移動して表示することができる。このため、ユーザのデバッグが容易となり、かつ、ソースプログラム５１ａ及びマクロ展開ソースプログラム５１ｂの紐付けがされる。また、ソースプログラム５１ａへの移動が容易となり、効率のよいプログラム開発を行うことができる。
【００５９】
また、マクロ展開ソースプログラム５１ｂには、展開されたマクロが含まれるため、ユーザが編集できないように表示することが望ましい。なお、バックアップソースプログラム５３ａは、マクロ展開する前のソースプログラム５１ａをバックアップしたものであるため、同じくユーザが編集できないようにしておく。
【００６０】
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、さらに、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。また、本書で述べた中間語命令の名称及び書式は一例であり、実装に応じて、名称及び書式の変更、又は情報の追加を行ってもよい。
【００６１】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【００６２】
１…マクロ展開指示部、２…マクロ展開処理部、３…ソースプログラム移動指示部、４…ソースプログラム移動部、５…表示部、６…操作部、７…記憶部、１０…マクロ展開装置、１１…画面表示メニュー、１２…マクロ展開ボタン、１３…定義移動ボタン、１４…使用箇所移動ボタン、２１…バックアップソースプログラム保存部、２２…プリプロセス制御部、４１…バックアップソースプログラム回復部、４２…バックアップソースプログラム削除部、４３…ソースプログラムジャンプ処理部、５１…ソースプログラム記憶部、５１ａ…ソースプログラム、５１ｂ…マクロ展開ソースプログラム、５２…テーブル、５３…バックアップソースプログラム記憶部、５３ａ…バックアップソースプログラム、５５…マクロ定義箇所、５６…マクロ使用箇所、５７…マクロ展開箇所、５８…定義箇所、５９…定義箇所、６０…マクロ名、６１…移動先、６２…マクロ名、６３…移動先
【図１】
2013137716.tif 000003
【図２】
2013137716.tif 000004
【図３】
2013137716.tif 000005
【図４】
2013137716.tif 000006
【図５】
2013137716.tif 000007
【図６】
2013137716.tif 000008
【図７】
2013137716.tif 000009
【図８】
2013137716.tif 000010
【図９】
2013137716.tif 000011
【図１０】
2013137716.tif 000012