(57)【要約】【課題】  マクロの呼び出し状況が置換された引数やコメント文と共に表示されて、デバッグが可能となること。【解決手段】  アセンブラＡ１は、ソースファイル１からオブジェクトファイル２を生成するアセンブルを実行するソフトウェアである。アセンブルを実行するときには、マクロ定義及びマクロ呼出しができる。このマクロ定義及びマクロ呼出しを行なうときは、マクロ呼出しの部分をマクロ定義の内容に従ってオブジェクトファイル２内にコード展開する。また、マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報３を生成してオブジェクトファイル２内に埋め込む。【選択図】    図２
2006146731.tif 000002
【特許請求の範囲】
【請求項１】
ソースファイルからオブジェクトファイルを生成するアセンブル又はコンパイルをコンピュータに実行させ、前記アセンブル又はコンパイルを実行するときにマクロ定義及びマクロ呼出しができるアセンブラ又はコンパイラとなるプログラムにおいて、
このマクロ定義及びマクロ呼出しを行なうときは前記マクロ呼出しの部分を前記マクロ定義の内容に従って前記オブジェクトファイル内にコード展開し、前記マクロ呼出し毎に前記マクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込む手段をコンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記手段は、マクロ定義内にさらにマクロ呼出しがあるときは、当該マクロ呼出しについても前記マクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込むことを特徴とする請求項１に記載のプログラム。
【請求項３】
ソースファイルをアセンブル又はコンパイルして生成したオブジェクトファイルをリンクして生成された実行形式プログラムをコンピュータに実行させるシミュレータ又はエミュレータとなるプログラムにおいて、
マクロ呼出し部分の展開内容のステップ実行を行うときに、マクロ展開されたコードに代えて、前記オブジェクトファイル内に埋め込まれている前記マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報の当該マクロ定義部分の引数の置換された状態を表示して前記ステップ実行をする手段をコンピュータに実行させることを特徴とするプログラム。
【請求項４】
前記手段は、マクロ定義内にさらに前記マクロ呼出しがあって当該マクロ呼出しについても前記マクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込まれているときは、当該マクロ展開ソースコード情報のマクロ定義部分の引数の置換された状態も表示して前記ステップ実行をすることを特徴とする請求項３に記載のプログラム。
【請求項５】
プログラムを記憶している記憶媒体において、
前記プログラムは請求項１〜４のいずれかの一項に記載のプログラムであることを特徴とする記憶媒体。
【請求項６】
ソースファイルからオブジェクトファイルを生成するアセンブルを実行し、前記アセンブルを実行するときにマクロ定義及びマクロ呼出しができるアセンブラ装置において、
このマクロ定義及びマクロ呼出しを行なうときは前記マクロ呼出しの部分を前記マクロ定義の内容に従って前記オブジェクトファイル内にコード展開し、前記マクロ呼出し毎に前記マクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込む手段を備えていることを特徴とするアセンブラ装置。
【請求項７】
ソースファイルからオブジェクトファイルを生成するコンパイルを実行し、前記コンパイルを実行するときにマクロ定義及びマクロ呼出しができるコンパイラ装置において、
このマクロ定義及びマクロ呼出しを行なうときは前記マクロ呼出しの部分を前記マクロ定義の内容に従って前記オブジェクトファイル内にコード展開し、前記マクロ呼出し毎に前記マクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込む手段を備えていることを特徴とするコンパイラ装置。
【請求項８】
ソースファイルをアセンブル又はコンパイルして生成したオブジェクトファイルをリンクして生成された実行形式プログラムを実行するシミュレータ装置において、
マクロ呼出し部分の展開内容のステップ実行を行うときに、マクロ展開されたコードに代えて、前記オブジェクトファイル内に埋め込まれている前記マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報の当該マクロ定義部分の引数の置換された状態を表示して前記ステップ実行をする手段を備えていることを特徴とするシミュレータ装置。
【請求項９】
ソースファイルをアセンブル又はコンパイルして生成したオブジェクトファイルをリンクして生成された実行形式プログラムを実行するエミュレータ装置において、
マクロ呼出し部分の展開内容のステップ実行を行うときに、マクロ展開されたコードに代えて、前記オブジェクトファイル内に埋め込まれている前記マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報の当該マクロ定義部分の引数の置換された状態を表示して前記ステップ実行をする手段を備えていることを特徴とするエミュレータ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばマイコン組み込み機器等のソフトウェア開発に用いるアセンブラ、コンパイラ、シミュレータ又はエミュレータとなるプログラム、そのプログラムを記憶している記憶媒体、アセンブラ装置、コンパイラ装置、シミュレータ装置及びエミュレータ装置に関する。
【背景技術】
【０００２】
従来、プログラム開発は、図１５に示すように、ホストコンピュータ上でソースファイル１をコンパイラＣ１又はアセンブラＡ１でコンパイル又はアセンブルしてオブジェクトファイル２を生成し、そのオブジェクトファイル２からリンカＬ１により実行形式プログラムＰ３を生成することによりなされていた。
【０００３】
通常、コンパイル言語やアセンブリ言語でプログラミングする場合、マクロ定義及びマクロ呼出し機能を用いて、共通な処理部をまとめることはよく行なわれていることである。
このマクロを使用したプログラムのシミュレータやエミュレータによるデバッグにおいて、マクロ呼出し部分をステップ実行する場合、そのままマクロ呼出し行として実行するか、あるいは、その展開されたコードを実行することになる。
そして、単純な短いマクロの場合はそのような処理でもよいが、マクロ定義が長い場合や、あるいは、マクロが入れ子になっていた場合、そのマクロの引数がどのように置換されているのか、あるいは、入れ子マクロがどのように呼び出されたのかを確認するには、別途ソースコードを解析する必要があり、デバッグ効率を落とす要因にもなっていた。
【０００４】
このマクロ部分のデバッグを行う技術として特許文献１が知られている。この技術は、マクロ定義部分のソース行デバッグを可能とする。
【特許文献１】特許第２８２７７２４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術では、マクロ定義部分のソース行デバッグが可能になるものの、それは引数の置換がなされない元マクロ定義部分か、あるいは、展開された後の表示であり、前者の場合は引数の置換状況が不明であるという問題があり、後者の場合は入れ子があったときのマクロの呼び出し状況が不明である、元のソースプログラムのコメント文が見えない等の問題がある。
【０００６】
本発明の目的は、マクロの呼び出し状況が置換された引数やコメント文と共に表示されて、デバッグが可能となるようにすることである。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、ソースファイルからオブジェクトファイルを生成するアセンブル又はコンパイルをコンピュータに実行させ、前記アセンブル又はコンパイルを実行するときにマクロ定義及びマクロ呼出しができるアセンブラ又はコンパイラとなるプログラムにおいて、このマクロ定義及びマクロ呼出しを行なうときは前記マクロ呼出しの部分を前記マクロ定義の内容に従って前記オブジェクトファイル内にコード展開し、前記マクロ呼出し毎に前記マクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成して前記オ
【０００８】
請求項２に記載の発明は、請求項１に記載のプログラムにおいて、前記手段は、マクロ定義内にさらにマクロ呼出しがあるときは、当該マクロ呼出しについても前記マクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込むことを特徴とする。
【０００９】
請求項３に記載の発明は、ソースファイルをアセンブル又はコンパイルして生成したオブジェクトファイルをリンクして生成された実行形式プログラムをコンピュータに実行させるシミュレータ又はエミュレータとなるプログラムにおいて、マクロ呼出し部分の展開内容のステップ実行を行うときに、マクロ展開されたコードに代えて、前記オブジェクトファイル内に埋め込まれている前記マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報の当該マクロ定義部分の引数の置換された状態を表示して前記ステップ実行をする手段をコンピュータに実行させることを特徴とする。
【００１０】
請求項４に記載の発明は、請求項３に記載のプログラムにおいて、前記手段は、マクロ定義内にさらに前記マクロ呼出しがあって当該マクロ呼出しについても前記マクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込まれているときは、当該マクロ展開ソースコード情報のマクロ定義部分の引数の置換された状態も表示して前記ステップ実行をすることを特徴とする。
【００１１】
請求項５に記載の発明は、プログラムを記憶している記憶媒体において、前記プログラムは請求項１〜４のいずれかの一項に記載のプログラムであることを特徴とする。
【００１２】
請求項６に記載の発明は、ソースファイルからオブジェクトファイルを生成するアセンブルを実行し、前記アセンブルを実行するときにマクロ定義及びマクロ呼出しができるアセンブラ装置において、このマクロ定義及びマクロ呼出しを行なうときは前記マクロ呼出しの部分を前記マクロ定義の内容に従って前記オブジェクトファイル内にコード展開し、前記マクロ呼出し毎に前記マクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込む手段を備えていることを特徴とする。
【００１３】
請求項７に記載の発明は、ソースファイルからオブジェクトファイルを生成するコンパイルを実行し、前記コンパイルを実行するときにマクロ定義及びマクロ呼出しができるコンパイラ装置において、このマクロ定義及びマクロ呼出しを行なうときは前記マクロ呼出しの部分を前記マクロ定義の内容に従って前記オブジェクトファイル内にコード展開し、前記マクロ呼出し毎に前記マクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成して前記オブジェクトファイル内に埋め込む手段を備えていることを特徴とする。
【００１４】
請求項８に記載の発明は、ソースファイルをアセンブル又はコンパイルして生成したオブジェクトファイルをリンクして生成された実行形式プログラムを実行するシミュレータ装置において、マクロ呼出し部分の展開内容のステップ実行を行うときに、マクロ展開されたコードに代えて、前記オブジェクトファイル内に埋め込まれている前記マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報の当該マクロ定義部分の引数の置換された状態を表示して前記ステップ実行をする手段を備えていることを特徴とする。
【００１５】
請求項９に記載の発明は、ソースファイルをアセンブル又はコンパイルして生成したオブジェクトファイルをリンクして生成された実行形式プログラムを実行するエミュレータ装置において、マクロ呼出し部分の展開内容のステップ実行を行うときに、マクロ展開されたコードに代えて、前記オブジェクトファイル内に埋め込まれている前記マクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報の当該マクロ定義部分の引数の置換された状態を表示して前記ステップ実行をする手段を備えていることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、アセンブル又はコンパイルの際にはマクロ呼出し毎にマクロ定義部分の引数のみを置換したソースコードであるマクロ展開ソースコード情報を生成してオブジェクトファイル内に埋め込み、シミュレータ又はエミュレータでは当該引数の置換された状態を表示することができる。よって、引数の置換状況を明らかにすることができる。
【発明を実施するための最良の形態】
【００１７】
本発明を実施するための最良の一形態について説明する。
図１は、本発明のコンパイラ装置、アセンブラ装置、シミュレータ装置、エミュレータ装置を実施するホストコンピュータＨ１の電気的な接続のブロック図である。
このホストコンピュータＨ１は、各種演算を行い、コンピュータの各部を集中的に制御するＣＰＵ１２と、各種のＲＯＭ、ＲＡＭからなるメモリ１３とが、バス１４で接続されている。
【００１８】
バス１４には、所定のインターフェイスを介して、ハードディスクなどの磁気記憶装置１５と、キーボード、マウスなどの入力装置１６と、出力装置となる表示装置１７と、光ディスクなどの記憶媒体１８を読み取る読取装置１９とが接続され、また、インターネットなどのネットワーク２０と通信を行う通信インターフェイス１１が接続されている。
記憶媒体１８としては、光ディスク、光磁気ディスク、フレキシブルディスクなどの各種メディアを用いることができる。また、読取装置１９は、記憶媒体１８の種類に応じて光ディスクドライブ装置、光磁気ディスクドライブ装置、フレキシブルディスクドライブ装置などが用いられる。
ホストコンピュータＨ１は、記憶媒体１８から、プログラムをそれぞれ読み取って、磁気記憶装置１５にインストールする。また、このプログラムはインターネットなどのネットワークを介してダウンロードしてインストールするようにしてもよい。このインストールにより、ホストコンピュータＨ１は、後述の所定の処理の実行が可能な状態となる。
このホストコンピュータＨ１で用いるプログラムには、アセンブラＡ１（又はコンパイラＣ１）、リンカＬ１、シミュレータＳ１、エミュレータＥ１などが含まれ、ホストコンピュータＨ１は、プログラム開発支援システムとして用いられる。
【００１９】
次に、これら各プログラムに基づいてホストコンピュータＨ１が実行する処理について説明する。
図２は、ホストコンピュータＨ１が前述のプログラムに基づいて実行する処理の説明図である。これは、アセンブラＡ１により処理を実施する例である。まず、ホストコンピュータＨ１で作成されたソースファイル群１は、アセンブラＡ１により処理されて、各ソースファイルからそれぞれデバッグ情報付きでオブジェクトファイル２が生成される。
このとき、アセンブラＡ１はマクロ定義及びマクロ呼出しが選択的に実行可能であって、ソースコード内にマクロ定義及びマクロ呼出しが含まれる場合には、アセンブラＡ１は、マクロ呼出し部分をマクロ定義の内容に従ってオブジェクトファイル２内にコード展開するのみならず、マクロ呼出し毎に、そのマクロ定義部分の引数のみを置換したソースコード（マクロ展開ソースコード情報３）を生成し、オブジェクトファイル２内に埋め込む。
また、そのマクロ定義内にさらにマクロ呼出しがある入れ子構造の場合は、元のマクロ呼出しの展開の際に、その入れ子になっているマクロ（子マクロ）においても、マクロ定義部分の引数のみを置換したソースコード（マクロ展開ソースコード情報３）を生成して、オブジェクトファイル２内に埋め込む。
【００２０】
例えば、図３に示すようなマクロ定義及びマクロ呼び出しのあるアセンブリ言語ソースがあった場合には、従来は、図４に示すように、単純に展開されるだけであるが、本実施形態ではこれに加えて、図３の（１）のマクロ呼び出しに対しては図５に示すようなソース行であるマクロ展開ソースコード情報３を生成し、また、入れ子である（２）のマクロ呼び出しについては、図６に示すようなマクロ展開ソースコード情報３を生成し、オブジェクトファイル２内に埋め込む。このようなマクロ展開ソースコード情報３の例を図６に示す。
【００２１】
図２に戻り、これらのオブジェクトファイル２をリンカＬ１により結合処理を行い、実行形式プログラムＰ１を生成する。この実行形式プログラムＰ１内には、前述のように生成されたマクロ展開ソースコード情報３が含まれる。
シミュレータＳ１は、この実行形式プログラムＰ１に基づいてソース行デバッグを行う。シミュレータＳ１においてマクロ呼出しの１行毎のステップ実行が行われるとき、前述のように埋め込まれた情報（マクロ展開ソースコード情報３）に基づいて、そのマクロ呼出部に対応するマクロ引数置換されたマクロ定義を表示する。
これにより、このマクロ引数置換されたマクロ定義をステップ実行することができる。さらに、マクロ定義内に入れ子でマクロ呼び出しがあった場合は、そのマクロ呼び出し部からステップ動作する時に、さらにその子マクロでの引数置換された定義部を表示する。
【００２２】
具体的に説明すると、従来は、図３に示すような元のソース行表示又は展開された図４の表示がなされていたが、本実施形態では前述のようにマクロ引数置換されたソース行（マクロ展開ソースコード情報３）が埋め込まれているため、例えば、図７に示すような元のマクロ定義内に書かれたコメント文と共に、マクロの呼び出し状況及びその入れ子の状態がわかるようなソース行を表示し、その表示上でステップ実行することが可能になる。
あるいは、図３の（１）の行からステップ実行する場合は、図５の表示に切り替えてステップ実行することも可能になる。このとき、さらに（２）の行からステップ実行する場合は、図８の表示に切り替わることになる。同様に、展開部分にブレークポイントを置くことも可能になる。
【００２３】
このようにして、マクロ展開ソースコード情報３をオブジェクトファイル２内に備えることにより、オブジェクトファイル２をリンクして生成された実行形式プログラムＰ１を実行するシミュレータＳ１において、マクロ呼び出し部分の展開内容のステップ実行を行うときに、マクロ展開されてしまったコードではなく、マクロ定義部分の引数が置換された状態を表示してステップ実行するので、マクロ内デバッグを効率よく行うことができるようになる。
【００２４】
さらに、同様に、オブジェクトファイル２をリンクして生成された実行形式プログラムＰ１を実行するエミュレータＥ１においても、マクロ呼び出し部分の展開内容のステップ実行を行うときに、マクロ展開されてしまったコードではなく、マクロ定義部分の引数が置換された状態を表示してステップ実行するので、マクロ内デバッグを効率よく行うことができる。
【００２５】
次に、他の処理例について説明する。図９は、ホストコンピュータＨ１が実行する他の処理例の説明図である。この処理は、コンパイラＣ１により処理を実施する例である。
図９において、ホストコンピュータＨ１にて作成されたソースファイル群１をコンパイラＣ１で処理して、各ソースファイルからそれぞれデバッグ情報付きでオブジェクトファイルが生成される。
【００２６】
このとき、コンパイラＣ１はマクロ定義及びマクロ呼出しが選択的に実行可能であって、ソースコード内にマクロ定義及びマクロ呼出しが含まれる場合には、コンパイラＣ１は、マクロ呼出し部分をマクロ定義の内容に従ってオブジェクトファイル２内にコード展開するのみならず、マクロ呼出し毎に、そのマクロ定義部分の引数のみを置換したソースコード（マクロ展開ソースコード情報３）を生成し、オブジェクトファイル２内に埋め込む。
また、そのマクロ定義内にさらにマクロ呼出しがある入れ子構造の場合は、元のマクロ呼出しの展開の際に、その入れ子になっているマクロ（子マクロ）においても、マクロ定義部分の引数のみを置換したソースコード（マクロ展開ソースコード情報３）を生成して、オブジェクトファイル２内に埋め込む。
【００２７】
例えば、図１０に示すようなマクロ定義及びマクロ呼出しのあるＣ言語ソースがあった場合には、従来は、図１１に示すように、単純に展開されるだけであるが、本実施形態ではこれに加えて、図１０の（３）のマクロ呼び出しに対しては図１２に示すようなソース行であるマクロ展開ソースコード情報３を生成し、また、入れ子である（４）のマクロ呼び出しについては、図１３に示すようなマクロ展開ソースコード情報３を生成し、オブジェクトファイル２内に埋め込む。
【００２８】
図９に戻り、これらのオブジェクトファイル２をリンカＬ１により結合処理を行い、実行形式プログラムＰ２を生成する。この実行形式プログラムＰ１内には、前述のように生成されたマクロ展開ソースコード情報３が含まれる。
シミュレータＳ１は、この実行形式プログラムＰ２に基づいてソース行デバッグを行う。シミュレータＳ１においてマクロ呼出しの１行毎のステップ実行が行われるとき、前述のように埋め込まれた情報（マクロ展開ソースコード情報３）に基づいて、そのマクロ呼出部に対応するマクロ引数置換されたマクロ定義を表示する。
これにより、このマクロ引数置換されたマクロ定義をステップ実行することができる。さらに、マクロ定義内に入れ子でマクロ呼び出しがあった場合は、そのマクロ呼び出し部からステップ動作する時に、さらにその子マクロでの引数置換された定義部を表示する。
【００２９】
具体的に説明すると、従来は、図１０に示すような元のソース行表示か、あるいは展開された図１１の表示がなされていたが、上記マクロ引数置換されたソース行が埋め込まれているため、例えば、図１４に示すような元のマクロ定義内に書かれたコメント文と共にマクロの呼び出し状況、及びその入れ子の状態がわかるようなソース行を表示し、その表示上でステップ実行することが可能になる。あるいは、図１０の（３）の行からステップ実行する場合、図１２の表示に切り替えてステップ実行することも可能になる。このとき、さらに（４）の行からステップ実行する場合は、図１３の表示に切り替わることになる。同様に、展開部分にブレークポイントを置くことも可能になる。
【００３０】
このようにして、マクロ展開ソースコード情報３をオブジェクトファイル２内に備えることにより、オブジェクトファイル２をリンクして生成された実行形式プログラムＰ２を実行するシミュレータＳ１において、マクロ呼び出し部分の展開内容のステップ実行を行うときに、マクロ展開されてしまったコードではなく、マクロ定義部分の引数が置換された状態を表示してステップ実行するので、マクロ内デバッグを効率よく行うことができるようになる。
【００３１】
さらに、同様に、オブジェクトファイル２をリンクして生成された実行形式プログラムＰ１を実行するエミュレータＥ１においても、マクロ呼び出し部分の展開内容のステップ実行を行うときに、マクロ展開されてしまったコードではなく、マクロ定義部分の引数が置換された状態を表示してステップ実行するので、マクロ内デバッグを効率よく行うことができる。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施の形態であるホストコンピュータの電気的な接続のブロック図である。
【図２】ホストコンピュータが実行する一連の処理の説明図である。
【図３】マクロ定義及びマクロ呼び出しのあるアセンブリ言語ソースの一例を示す説明図である。
【図４】図３のアセンブリ言語ソースの従来における展開例の説明図である。
【図５】図３の（１）のマクロ呼び出しに対して生成されるマクロ展開ソースコード情報の説明図である。
【図６】図３の（２）のマクロ呼び出しに対して生成されるマクロ展開ソースコード情報の説明図である。
【図７】シミュレータが実行する処理の説明図である。
【図８】シミュレータが実行する処理の説明図である。
【図９】ホストコンピュータが実行する一連の処理の他例の説明図である。
【図１０】マクロ定義及びマクロ呼び出しのあるアセンブリ言語ソースの一例を示す説明図である。
【図１１】図１０のＣ言語ソースの従来における展開例の説明図である。
【図１２】図１０の（３）のマクロ呼び出しに対して生成されるマクロ展開ソースコード情報の説明図である。
【図１３】エミュレータが実行する処理の説明図である。
【図１４】エミュレータが実行する処理の説明図である。
【図１５】従来のホストコンピュータが実行する一連の処理の説明図である。
【符号の説明】
【００３３】
１  ソースファイル
２  オブジェクトファイル
３  マクロ展開ソースコード情報
１８  記憶媒体
Ａ１  アセンブラ
Ｅ１  エミュレータ
Ｈ１  ホストコンピュータ
Ｌ１  リンカ
Ｐ１  実行形式プログラム
Ｓ１  シミュレータ
【図１】
2006146731.tif 000003
【図２】
2006146731.tif 000004
【図３】
2006146731.tif 000005
【図４】
2006146731.tif 000006
【図５】
2006146731.tif 000007
【図６】
2006146731.tif 000008
【図７】
2006146731.tif 000009
【図８】
2006146731.tif 000010
【図９】
2006146731.tif 000011
【図１０】
2006146731.tif 000012
【図１１】
2006146731.tif 000013
【図１２】
2006146731.tif 000014
【図１３】
2006146731.tif 000015
【図１４】
2006146731.tif 000016
【図１５】
2006146731.tif 000017