(57)【要約】【課題】  プログラムツリーの表示方法およびプログラム生成システムにおいて構造化プログラミングされたプログラムとの対応付けを明確にする。【解決手段】  プログラムの構成要素であって、少なくともコンパイル単位を含むプログラム要素を各ノードに割り当ててプログラムツリー２１を形成し、形成したプログラムツリー２１をプログラムツリー表示部に表示する。また、処理内容表示部にプログラム要素の処理内容を表示する。そして、入力手段によってプログラムツリー表示部と処理内容表示部への入力作業を行う。【選択図】  図１
2007011507.tif 000002
【特許請求の範囲】
【請求項１】
プログラムの構成要素であるプログラム要素をツリーの各ノードに割り当てることによって、前記プログラムをツリー状に表示するプログラムツリーの表示方法において、
コンパイル単位を前記プログラムツリーのノードとして表示することを特徴とするプログラムツリーの表示方法。
【請求項２】
前記コンパイル単位に対応するノード近傍には、他のノードと区別するための名称であるコンパイル名称が表示されることを特徴とする請求項１記載のプログラムツリーの表示方法。
【請求項３】
前記コンパイル単位に含まれる機能単位を前記プログラムツリーのノードとして表示することを特徴とする請求項１記載のプログラムツリーの表示方法。
【請求項４】
前記機能単位に対応するノード近傍には、前記機能単位の機能を表す名称である機能名称が表示されることを特徴とする請求項３記載のプログラムツリーの表示方法。
【請求項５】
前記コンパイル単位の直下にある機能単位である第１の機能単位のノードは、前記第１の機能単位を含む前記コンパイル単位のノードに従属させて表示することを特徴とする請求項３記載のプログラムツリーの表示方法。
【請求項６】
前記第１の機能単位に含まれる副プログラムである第２の機能単位のノードは、前記第１の機能単位のノードに従属させて表示することを特徴とする請求項５記載のプログラムツリーの表示方法。
【請求項７】
上位機能単位に含まれる副プログラムを下位機能単位としたとき、前記下位機能単位のノードを前記上位機能単位のノードに従属させて表示することを特徴とする請求項３記載のプログラムツリーの表示方法。
【請求項８】
前記第１の機能単位より下位の機能単位を省略して表示することを特徴とする請求項５記載のプログラムツリーの表示方法。
【請求項９】
前記コンパイル単位を１つ以上含むプロジェクトを前記プログラムツリーのノードとして表示することを特徴とする請求項１記載のプログラムツリーの表示方法。
【請求項１０】
前記プロジェクトに対応するノード近傍には、前記プロジェクトの名称であるプロジェクト名称が表示されることを特徴とする請求項９記載のプログラムツリーの表示方法。
【請求項１１】
プログラムを生成するためのプログラム生成システムにおいて、
コンパイル単位をノードに割り当て、かつ前記プログラムの構成要素であるプログラム要素を各ノードに割り当てて、前記プログラムをツリー状に構成したプログラムツリーを表示するプログラムツリー表示部と、
前記各プログラム要素の処理内容が表示される処理内容表示部と、
前記プログラムツリー表示部と前記処理内容表示部への入力作業を行うための入力手段と、
を有することを特徴とするプログラム生成システム。
【請求項１２】
ファイルを格納するためのファイル格納部が、前記コンパイル単位のノードに対応付けて設けられていることを特徴とする請求項１１記載のプログラム生成システム。
【請求項１３】
前記ファイルは、前記コンパイル単位に対応するノードと他のノードと区別するための名称であるコンパイル名称を保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項１４】
前記ファイルは、前記コンパイル名称を前記ファイル格納部の名称としても保持することを特徴とする請求項１３記載のプログラム生成システム。
【請求項１５】
前記プログラムツリー表示部は、前記コンパイル名称を前記コンパイル単位に対応するノード近傍に表示することを特徴とする請求項１３記載のプログラム生成システム。
【請求項１６】
前記ファイルは、前記コンパイル単位に対応するプログラムの内容説明であるコンパイル説明を属性として保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項１７】
前記ファイルは、前記コンパイル単位に対応するプログラムの更新履歴であるコンパイル更新履歴を属性として保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項１８】
前記プログラムツリー表示部は、前記コンパイル単位に含まれる機能単位を前記プログラムツリーのノードとして表示することを特徴とする請求項１１記載のプログラム生成システム。
【請求項１９】
前記プログラムツリー表示部は、前記コンパイル単位の直下にある機能単位である第１の機能単位のノードを前記第１の機能単位を含む前記コンパイル単位のノードに従属させて表示することを特徴とする請求項１８記載のプログラム生成システム。
【請求項２０】
前記プログラムツリー表示部は、前記第１の機能単位に含まれる副プログラムである第２の機能単位のノードを前記第１の機能単位のノードに従属させて表示することを特徴とする請求項１９記載のプログラム生成システム。
【請求項２１】
前記プログラムツリー表示部は、上位機能単位に含まれる副プログラムを下位機能単位としたとき、前記下位機能単位のノードを前記上位機能単位のノードに従属させて表示することを特徴とする請求項２０記載のプログラム生成システム。
【請求項２２】
前記プログラムツリー表示部は、前記第１の機能単位より下位の機能単位を省略して表示することを特徴とする請求項１９記載のプログラム生成システム。
【請求項２３】
前記コンパイル単位を１つ以上含むプロジェクトを前記プログラムツリーのノードとして表示することを特徴とする請求項１１記載のプログラム生成システム。
【請求項２４】
前記プロジェクトは、前記プログラムのリンクに必要な情報を保持することを特徴とする請求項２３記載のプログラム生成システム。
【請求項２５】
前記プロジェクトは、別のプロジェクトに属するコンパイル単位を取り込む機能を有することを特徴とする請求項２３記載のプログラム生成システム。
【請求項２６】
前記プロジェクトは、前記プロジェクトを表す名称であるプロジェクト名称を保持することを特徴とする請求項２３記載のプログラム生成システム。
【請求項２７】
前記プログラムツリー表示部は、プロジェクト名称を前記プロジェクトのノード近傍に表示することを特徴とする請求項２３記載のプログラム生成システム。
【請求項２８】
前記入力手段より入力されたデータを高級言語形式もしくは電子計算機が直接実行できる形式に変換するデータ変換手段を有することを特徴とする請求項１１記載のプログラム生成システム。
【請求項２９】
前記ファイルは、前記コンパイル単位がコンパイルされて出力される出力先の名称であるコンパイル出力先名称を保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項３０】
前記ファイルは、機能単位がコンパイルされて出力されるときの名称である機能出力名称を保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項３１】
前記ファイルは、機能単位に含まれる副プログラムが引数や返却値を持つ場合には、それらの名称、型、引渡順序などのコード生成に必要となる情報であるコード生成情報を保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項３２】
前記ファイルは、機能単位の内容説明に関する記述を属性として保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項３３】
前記ファイルは、機能単位の機能を表す機能名称を保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項３４】
前記プログラムツリー表示部は、前記機能名称を前記機能単位に対応するノード近傍に表示することを特徴とする請求項３３記載のプログラム生成システム。
【請求項３５】
前記処理内容表示部は、各機能単位に対応した処理内容を表示する処理内容表示ウィンドウを表示することを特徴とする請求項１１記載のプログラム生成システム。
【請求項３６】
前記処理内容表示部は、複数の前記処理内容表示ウィンドウを表示することが可能であることを特徴とする請求項３５記載のプログラム生成システム。
【請求項３７】
前記処理内容表示部は、処理内容表示ウィンドウに機能単位中に含まれる副プログラムを図形シンボルで表現することを特徴とする請求項１１記載のプログラム生成システム。
【請求項３８】
前記処理内容表示部は、前記図形シンボルが選択されると前記図形シンボルに対応する前記副プログラムの処理内容を表示する前記処理内容表示ウィンドウを表示することを特徴とする請求項３７記載のプログラム生成システム。
【請求項３９】
前記処理内容表示部は、前記図形シンボルに対して前記図形シンボルとして表された前記副プログラムの機能名称を表示することを特徴とする請求項３７記載のプログラム生成システム。
【請求項４０】
前記ファイルは、自己を包含するプログラムの要素に対応するノードに従属するように形成された階層構造を保持することを特徴とする請求項１２記載のプログラム生成システム。
【請求項４１】
前記ファイル格納部は、前記コンパイル単位内にあるすべての機能単位の処理内容を１つのファイルに記録した処理内容ファイルを格納することを特徴とする請求項１２記載のプログラム生成システム。
【請求項４２】
前記ファイル格納部は、機能単位の処理内容を前記機能単位ごとに記録した機能処理内容ファイルを格納することを特徴とする請求項１２記載のプログラム生成システム。
【請求項４３】
機能出力名称、コード生成情報、機能単位の内容説明に関する記述、および機能名称は、処理内容ファイル、機能処理内容ファイル、前記ファイル格納部に設けられた属性ファイルのいずれかに記憶されることを特徴とする請求項１２記載のプログラム生成システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムツリーの表示方法、およびプログラム生成システムに関し、特にＣＡＤシステムを用いたプログラミングにおけるプログラムツリーの表示方法、およびプログラム生成システムに関する。
【背景技術】
【０００２】
従来、プログラムの開発においては、アセンブラやＣ言語などのプログラミング言語を用いて電子計算機のプログラムを製作する場合には、テキストエディタなどのテキストを直接記述する手段が用いられてきた。
【０００３】
テキストエディタベースのプログラムの製作手法としては、構造化プログラミング手法が普及している。すなわち、１つのロードモジュールを複数のコンパイル単位（原始プログラムをコンパイルして、１つの出力を得る単位）に分割して製作した後、各コンパイル単位の出力を結合して最終的なロードモジュールにする方法をとったり、まとまった機能単位を独立したプログラム部品として製作して、これをまとめて大きな機能単位にくみ上げていく方法をとったりする。
【０００４】
この構造化プログラミング手法は、小さな機能単位のモジュールは短期間で製作でき、汎用な機能単位のモジュールは再利用可能で、再利用することにより、後続の別のプログラムの製作に応用でき、各機能単位のモジュールは独立に検査ができるなどのメリットがあることが知られており、構造化プログラミング手法は、プログラム製作手法としては、必須の手法となっている。
【０００５】
一方、プログラムの規模がある程度の規模に達すると、テキストのみでは可読性に乏しく、プログラムの設計のみならず、検査・管理・保守等に多大な労力を要することとなる。そこで、これを解決するために図式のプログラムを用いる方法が提案された。たとえば、ＨＣＰ（Hierarchical and ComPact description）チャートと呼ばれる木構造の図式プログラム記述方法が提案された（たとえば、特許文献１，２参照）。また、ＰＡＤ（Problem Analysis Diagram）図と呼ばれる図式プログラム記述方法が提案された（たとえば、特許文献１０参照）。
【０００６】
また、このような図式のプログラムから、電子計算機で実行できる形式、もしくは高級言語の形式のプログラムを自動生成する方法も提案されている。たとえば、三組の形式で表現した木構造要素の列からソースプログラムを生成する方法が提案された（たとえば、特許文献３参照）。また、設計ドキュメントに基づいてプログラムを自動生成する方法も提案されている（たとえば、特許文献４参照）。
【０００７】
また、プログラムの管理方法については、様々な形式を用いて表現する方法が提案されている。たとえば、概念間をリンク構造で結合する形をもつリンク形式と呼ばれる形式が提案されている（たとえば、特許文献５参照）。また、データ相互間の接続上の連関、および意味上の連関を表すネットワークを用いるネットワーク形式と呼ばれる形式が提案されている（たとえば、特許文献６参照）。また、ツリー形式と呼ばれる形式が提案されている（たとえば、特許文献７，８，９参照）。
【特許文献１】特開平２−２３５１４４号公報（図２）
【特許文献２】特開平１−４１９３１号公報（図２）
【特許文献３】特開昭６３−１６７９３１号公報（図１）
【特許文献４】特開平２−２５３４４３号公報（図１）
【特許文献５】特開昭６３−２３３４２８号公報（図４）
【特許文献６】特開昭６３−６１３２９号公報（図４）
【特許文献７】特開２００３−８５０１２号公報（段落番号〔００２１〕〜〔００２９〕、図１）
【特許文献８】特開２００２−６６９６７号公報（段落番号〔００１１〕〜〔００１２〕、図１）
【特許文献９】特開２００４−２４０５９３号公報（段落番号〔００２６〕〜〔００３９〕、図５）
【特許文献１０】特公平６−４０３０２号公報（図３）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかし、構造化プログラミング手法に則って製作されたプログラムと、直接的な対応付けが可能な、図式のプログラミング手法に適合するプログラムの管理方法や、それを用いたＣＡＤ（Computer Aided Design）システムは知られていない。
【０００９】
たとえば、上述特許文献１記載の発明では、モジュール化という手法で機能分割を行って階層化を行うが、手作業で構造化プログラム手法を用いて製作したプログラムよりは、かなり単純化されたものしか作ることができない。
【００１０】
また、上述特許文献２記載の発明では、プログラムの階層化として、プログラムの一部を別ファイルに書き出して機能を分割するが、この方法では、埋め込まれる方のプログラムは単独でコンパイルできるものにはならないので、埋め込まれる方のファイルを単独で検査したりすることが不可能であるため、本来の構造化プログラミングのメリットを享受することはできない。したがって、いわゆる構造化プログラミングの手法に基づくプログラミング開発手法とは直接的な対応付けができない。
【００１１】
また、上述特許文献７記載の発明では、データベース管理システムプログラムを木構造で表示するが、当該システムで表示される図式プログラムは、機能単位であるプロシージャの相互関係のみであって、これが実際のプログラムのどのプログラムの構成要素に対応するか明確ではない。
【００１２】
また、上述特許文献８記載の発明では、木構造データ管理に基づきロボットの動作を司るプログラムを記述するが、この記述方法においても、プログラムの構成要素と表示される木構造データの関連が明確にされていない。
【００１３】
また、上述特許文献９記載の発明では、プロジェクトをツリー状に表示するが、この表示方法においても、やはりプログラムの構成要素と表示されるツリー状に表示される内容との関連が明確にされていない。
【００１４】
以上のように、構造化プログラミングという手法は一般的に用いられているのに対し、構造化プログラミングされたものを、プログラムとの対応付けを明確にした形で、図式に表現して管理したり、それと図式プログラミング手法を組み合わせた、プログラムの製作手段、それとプログラムコード自動生成手段を組み合わせた、プログラム製作用ＣＡＤシステムはこれまでにはなかった。
【００１５】
本発明はこのような点を鑑みてなされたものであり、構造化プログラミングされたプログラムとの対応付けを明確にして図式に表現するプログラムツリーの表示方法およびプログラム生成システムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明では上記問題を解決するために、プログラムの構成要素であるプログラム要素をツリーの各ノードに割り当てることによって、前記プログラムをツリー状に表示するプログラムツリーの表示方法において、コンパイル単位を前記プログラムツリーのノードとして表示することを特徴とするプログラムツリーの表示方法が提供される。
【００１７】
このようなプログラムツリーの表示方法によれば、コンパイル単位がプログラムツリーのノードとして表示される。
また、本発明では、プログラムを生成するためのプログラム生成システムにおいて、コンパイル単位をノードに割り当て、かつ前記プログラムの構成要素であるプログラム要素を各ノードに割り当てて、前記プログラムをツリー状に構成したプログラムツリーを表示するプログラムツリー表示部と、前記各プログラム要素の処理内容が表示される処理内容表示部と、前記プログラムツリー表示部と前記処理内容表示部への入力作業を行うための入力手段とを有することを特徴とするプログラム生成システムが提供される。
【００１８】
このようなプログラム生成システムによれば、プログラムツリー表示部により、コンパイル単位のノードとプログラム要素のノードを含むプログラムツリーが表示され、処理内容表示部により、プログラム要素の処理内容が表示され、入力手段により、前記プログラムツリー表示部と前記処理内容表示部に表示される内容に対してデータが入力される。
【発明の効果】
【００１９】
本発明のプログラムツリーの表示方法によれば、構造化プログラミングの手法でプログラミングされたプログラムと対応付けてプログラムツリーが表示できるので、視認性がよくなり、プログラムの再利用性、可搬性を損なうことなくプログラムの製作ができる。
【００２０】
また、本発明のプログラム生成システムによれば、構造化プログラミングの手法でプログラミングされたプログラムとの対応付けが明確であるので、視認性がよくなり、構造化プログラミングの利点であるプログラムの再利用性、可搬性を損なうことなくプログラムを製作できる。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図１は、本実施の形態に適用される発明の概念図である。図１に示すように、本実施の形態のＣＡＤシステム１は、端末装置１０、マウス１１、キーボード１２、およびモニタ１３から構成されている。
【００２２】
モニタ１３に映し出されている画面表示例２０には、プログラムツリー２１とプログラムの機能単位に対応した処理内容を表示する処理内容表示ウィンドウ２２が表示されている。プログラムツリー２１は、プログラムを構成するプログラム要素である、プロジェクト、コンパイル単位、および機能単位をノードとしてツリー状に表示したものである。また、処理内容表示ウィンドウ２２は、プログラムの処理内容を表示するためのウィンドウである。
【００２３】
ＣＡＤシステム１は、入力されたデータを図形式からＣ言語形式や、図形式とＣ言語形式から全体を包含するＣ言語形式や、図形式から機械語形式などのように、プログラムを自動生成する手段を持たせることにより、プログラム生成システムを構成している。
【００２４】
このようなプログラム生成システムが構成されることにより、プログラムの処理内容を表示する手段、プログラムやユーザからの指示信号を入力する手段、および入力したデータからプログラムを出力する手段を付加したので、プロジェクト単位や、コンパイル単位、機能単位を視覚的に認識できる形でプログラムを製作できるようになる。
【００２５】
図２は、本実施の形態に用いる端末装置のハードウェア構成例を示す図である。図２に示すように、端末装置１０は、ＣＰＵ（Central Processing Unit）１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０６を介してＲＡＭ（Random Access Memory）１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、および入力インタフェース１０５が接続されている。
【００２６】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００２７】
グラフィック処理装置１０４には、モニタ１３が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１３の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１１とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１１から送られてくる信号を、バス１０６を介してＣＰＵ１０１に送信する。
【００２８】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図３は、本実施の形態のプログラムツリーの表示例である。この図においては、ノード２６ａに示す記号はコンパイル単位を示すものである。本実施の形態においては、コンパイル単位をモジュール（分離可能なソフトウェア部品）と捉えることとする。ノード２６ａのすぐ右にあり「入力制御」と表示されている文字２７ａは、ノード２６ａに対応するコンパイル単位の名称をプログラムツリー２１上で見やすくするために配置した実装例である。以下、プログラムツリー２１のコンパイル単位のノードの右側にある文字は、当該ノードに対応するコンパイル単位に付けられた名称であるものとする。
【００２９】
また、ノード２８ａに示す記号は機能単位を示すものであり、すぐ右にある「電流制御」と表示されている文字２９ａは、ノード２８ａに対応する機能単位の名称をプログラムツリー２１上で見やすくするために配置した実装例である。以下、プログラムツリー２１の機能単位のノードの右側にある文字は、当該ノードに対応する機能単位に付けられた名称であるものとする。
【００３０】
ところで、電流制御の機能単位は、入力制御のコンパイル単位に属するものである。そこで、その従属関係を明確にするために、電流制御の機能単位を表すノード２８ａは、入力制御のコンパイル単位を表すノード２６ａの下位に従属するように表示している。また、コンパイル単位は、機能単位を入れる器のように考えるため、直接コンパイル単位に属する処理機能というのは存在せず、必ず処理機能は機能単位に属する。
【００３１】
また、機能単位の中にはさらに細かな機能単位が含まれていることがある。これは、構造化プログラミングの考え方におけるプログラムの構造化に伴う機能の詳細分割に相当する考え方である。機能単位の実装の形は、Ｃ言語では関数と呼ばれ、他のプログラミング言語では、サブルーチン、プロシージャなどと呼ばれることもある副プログラムに相当するものである。この場合には、大きな機能単位の中により小さな規模の機能単位が現れることになる。プログラムツリー２１上においては、その様子は電流制御の機能単位を表すノード２８ａと電流指令演算の機能単位を表すノード２８ｂの関係において示している。つまり、電流指令演算の機能単位は、電流制御の機能単位に属する部分機能であり、お互いの機能単位同士の従属関係の視認性を向上させるために、ノード２８ｂをノード２８ａの下位に従属するように表示する。
【００３２】
このことは細分化された下位の機能単位の中においても、同様に起こりうることであり、その場合には、再帰的に下位の部分機能単位を表すノードを属する上位の機能単位に従属するように表示する。この場合の具体的な形は、たとえば、ＰＷＭ（Pulse Width Modulation）変調器の機能単位を表すノード２８ｄと電圧分配の機能単位を表すノード２８ｃの関係において示している。
【００３３】
ところで、コンパイル単位はコンパイルした結果として１つのファイルを出力するものである。より具体的には、Ｃ言語形式のプログラムにおいて、コンパイル単位は拡張子が通常「ｃ」で表されるＣ言語のソースファイルであり、これをコンパイルすることにより拡張子が通常「ｏ」や「ｏｂｊ」で表されるオブジェクトファイルが生成される。
【００３４】
この出力ファイルは、直接ＣＰＵが解釈して実行できるバイナリファイルとなっている場合もありえるが、バイナリファイルで出力すると中・大規模プログラムの製作やプログラムの再利用は容易ではないため、通常はコンパイルが終了した段階ではメモリ上での絶対位置が決定されておらず、モジュールの先頭からの相対位置でアドレスが記述されているようなリロケータブル・オブジェクトが生成される。このようなリロケータブル・オブジェクトを１つ以上必要な分だけ製作してから、実行環境のメモリ環境に合致したリンク用のメモリマップコマンドなどの情報を与える。そして、リンカもしくはリンケージ・エディタと呼ばれるツールでこれらを結合して、最終的な実行可能な形式のプログラムとする。
【００３５】
プログラムツリー２１として表されたプログラムは、３つのコンパイル単位を有しているが、コンパイル後にリンケージ・エディタを使って最終的な実行可能な形式のプログラムを作ることがプログラム製作の目的であるから、リンケージ・エディタで結合する単位を表す概念を設けておくと有用である。そこで、コンパイル単位を１つ以上含み、各コンパイル単位から生成される出力を結合してできるロードモジュールに対応する単位をプロジェクトと定義する。プロジェクトは、プログラムツリー２１上にノード２４として示される記号で表している。また、ノード２４の右側にある文字２５は、プロジェクトに付けられた名称をプログラムツリー２１上に表示したものである。以上のことから、プログラムツリー２１は、インバータ制御のプロジェクトを構成するモジュールに分けてツリー状に図式化したものであるといえる。
【００３６】
上記のとおり、ＣＡＤシステム１によれば、画面表示例２０にプログラムツリー２１が表示され、プログラムの構造を簡易に読み取ることが可能となるので、構造化プログラミングによるプログラムの製作が容易になる。
【００３７】
次に、各プログラム要素のノードに対応して保持される各プログラム要素の説明の入力方法や履歴管理について説明する。
図４は、入力制御のコンパイル単位に対応する属性入力ウィンドウを示す図である。属性入力ウィンドウ３０は、入力欄３１、３２、３３、および３４を備えている。属性入力ウィンドウ３０は、入力制御のコンパイル単位のノード２６ａに関連づけられており、ノード２６ａを選択することによって表示することができる。
【００３８】
入力欄３１は、コンパイル単位の名称を入力するための入力欄であり、入力欄３２は、コンパイル単位がＣ言語形式のプログラムにコンパイルされ、Ｃ言語形式のソースプログラムとして出力されるときのソースプログラム名を入力するための入力欄である。また、入力欄３３は、コンパイル単位の説明を入力するための入力欄であり、入力欄３４は、コンパイル単位の更新履歴を入力するための入力欄である。
【００３９】
本実施の形態のＣＡＤシステム１を用いて製作するプログラムをＣ言語に変換する場合など、コンパイルを実行するためには出力名が必要になる。そこで、属性入力ウィンドウ３０に入力欄３２を設け、入力された情報をコンパイル単位がコンパイルされたときの出力先のソースプログラム名にする。
【００４０】
また、Ｃ言語のコンパイルをする場合には、Ｃ言語の規約に従った文字しか使用できないという制約がある。たとえば、日本語を表すための２バイト系の文字が使えない。そのため、英語やローマ字などで名称をつけなければならないので、ユーザにとってわかりやすい名称が付けられないことがある。
【００４１】
そこで、入力欄３１と入力欄３２を別に設けることにより、入力欄３２に入力される名称はＣ言語の規約に従った名前を入力し、入力欄３１にはユーザがわかりやすい名称を入力することができるようになり、その名称をプログラムツリー２１に表示することができるようになる。このように、プログラムツリー２１上においてユーザにとってわかりやすい名称が表示できることにより、ノードがどのコンパイル単位と対応しているかの視認性がよくなり、本実施の形態のＣＡＤシステム１を用いてプログラミングするときのプログラミングが容易となる。
【００４２】
また、入力欄３３を設けることにより、入力制御のコンパイル単位の出力に関連づけて注釈をつけることが可能となる。したがって、プログラムツリー２１上において、注釈がどのコンパイル単位に関連づけられているかを視覚的に理解することができるようになる。また、入力欄３４を設けることにより、入力制御のコンパイル単位の出力に関連づけて履歴管理をすることが可能となる。したがって、プログラムツリー２１上において、コンパイル単位のバージョンを容易に管理することができるようになる。
【００４３】
なお、属性入力ウィンドウ３０に示した更新履歴の例には、版数と変更内容のみが記載されているが、この他にも、変更日時や、変更作業者などの情報を入力してもよい。また、入力欄３４は、３行しか表示されていないが、多くの情報を記入する必要がある場合には、スクロールバーを表示させることによって多くの情報を入力できるようにしてもよい。
【００４４】
また、入力制御のコンパイル単位に対応する属性入力ウィンドウ３０について説明したが、プログラムツリー２１の他のコンパイル単位である、故障検出のコンパイル単位のノード２６ｂと電源同期のコンパイル単位のノード２６ｃにも属性入力ウィンドウ３０と同様の構成をもつ属性入力ウィンドウが関連づけられているものとする。そして、故障検出のコンパイル単位や、電源同期のコンパイル単位に対応付けて属性を記録したい場合、対応するノードから属性入力ウィンドウを呼び出し、所定の入力欄に所定の事項を入力することにより、記録したい事項を記憶されることができるものとする。
【００４５】
次に、機能単位に対応する属性入力ウィンドウについて説明する。
図５は、電流制御の機能単位に対応する属性入力ウィンドウを示す図である。属性入力ウィンドウ４０は、入力欄４１、４２、４３、４４、および４５を備えている。属性入力ウィンドウ４０は、電流制御のコンパイル単位のノード２８ａに関連づけられており、ノード２８ａを選択することによって表示することができる。
【００４６】
入力欄４１は、機能単位の名称を入力するための入力欄であり、入力欄４２は、出力名としてＣ言語に変換したときの関数名を入力するための入力欄である。入力欄４１と入力欄４２を別に設けた理由は、上述した入力欄３１と入力欄３２を別に設けた理由と同じく、Ｃ言語の形式で出力されたソースプログラムをコンパイルするときにはＣ言語の規約により使用できる文字に制限により、ユーザにとってわかりにくい名称しか付けられないという弊害を防ぐためである。
【００４７】
また、入力欄４３は、電流制御の機能単位に相当する副プログラムの引数を入力するための入力欄であり、入力欄４４は、電流制御の機能単位に相当する副プログラムの戻り値を入力するための入力欄であり、入力欄４５は、機能単位の説明を入力するための入力欄である。入力欄４５を設けることにより、電流制御の機能単位に関連づけて機能説明を付けることが可能となる。したがってプログラムツリー２１上において、機能説明がどの機能単位に関連づけられているかを視覚的に理解することができるようになる。
【００４８】
なお、電流制御の機能単位に対応する属性入力ウィンドウ４０について説明したが、プログラムツリー２１の電流制御の機能単位以外の機能単位についても、属性入力ウィンドウ４０と同様の構成をもつ属性入力ウィンドウが関連づけられており、対応する属性入力ウィンドウから属性を入力できるものとする。
【００４９】
次に、プロジェクトに対応する属性入力ウィンドウについて説明する。
図６は、プロジェクトに対応する属性入力ウィンドウを示す図である。属性入力ウィンドウ５０は、プロジェクトのノード２４に関連づけられており、ノード２４を選択することによって表示することができる。属性入力ウィンドウ５０は、プロジェクトの名称を入力するための入力欄５１を備えている。また、リンクのための情報を入力する入力欄５３を備えている。リンクのための情報は、プロジェクトのリンクのときに必要になる。つまり、プロジェクトに含まれるコンパイル単位の出力を結合するときに必要になる情報である。なお、リンクのための情報は、具体的にはリンクコマンドを指す。入力欄５３に入力されているリンクコマンドは、各コンパイル単位のプログラムのコンパイルが終了したときに実行されるような、後処理コマンドのようにして実行される。
【００５０】
また、入力欄５３に入力されたリンクコマンドを後処理コマンドとして捉えるならば、必ずしもリンクの情報ではないが、より一般的な後処理コマンドを記述できるようにすることも有用である。特に、各コンパイル単位をオブジェクト形式ではなく、Ｃ言語形式などにコンパイルする場合には、その後クロスコンパイラなどを用いてコンパイルを行ってからでないと、リンケージ・エディタでリンクを行うことができない。このような場合には、リンクコマンドにはクロスコンパイラによるコンパイルも含めた形でのコマンドを記述する必要がある。このように、リンクコマンドは広い意味で捉えるものとする。
【００５１】
さらに、説明を入力する入力欄５２が設けてある。しかしながら、この入力欄５２に記入されている内容は、図４の入力欄３３や図５の入力欄４５のように後述するコンパイル後のプログラムへ記述されるようなコメントではない。なぜならば、プロジェクト単位は、コンパイル単位を超えた単位であるため、各々のコンパイル時には、プロジェクトの情報は参照されないためである。以上からわかるとおり、プロジェクトは構造化プログラミングを反映させたものというよりは、構造化プログラミングを反映させたコンパイル単位などの概念をプログラムツリー２１上で視覚的にわかりやすく表現するための補佐をするものとして有効な概念である。
【００５２】
次に、各属性入力ウィンドウから入力された情報を記憶、管理する機能について説明する。
図７は、記憶部のデータ構成例を示す図である。図７に示すように、記憶部６０は、ファイル格納部６１ａ、６１ｂ、および６１ｃを備えている。ファイル格納部６１ａ、６１ｂ、および６１ｃは、プログラムツリー２１に設定されている３つのコンパイル単位に対応している。ここでは、ファイル格納部６１ａは、入力制御のコンパイル単位に対応しており、ファイル格納部６１ｂは、故障検出のコンパイル単位に対応しており、ファイル格納部６１ｃは、電源同期のコンパイル単位に対応しているものとする。
【００５３】
また、ファイル格納部６１ａ、６１ｂ、および６１ｃの名称６２ａ、６２ｂ、および６２ｃは、プログラムツリー２１上に表示されている、各コンパイル単位の名称２７ａ、２７ｂ、および２７ｃと同一とする。すると、ＨＤＤ１０３上でコンパイル単位を探す場合、プログラムツリー２１上と同一の名称を探せばよいので利便性が高まる。また、コンパイル単位のノードに物理的なファイル格納部を関連づけることにより、処理内容を直接記述しないコンパイル単位に実体を与えることができ、データとしての識別が容易になる。
【００５４】
記憶部６０に設けられた３つのファイル格納部６１ａ、６１ｂ、および６１ｃは、たとえば、Ｍｉｃｒｏｓｏｆｔ（登録商標）社製のＷｉｎｄｏｗｓ（登録商標）ではフォルダ、ＵＮＩＸ（登録商標）やＭｉｃｒｏｓｏｆｔ社製ＭＳ−ＤＯＳ（登録商標）などではディレクトリと呼ばれているものを指す。
【００５５】
各コンパイル単位には、属性入力ウィンドウ３０において入力した各種属性が関連づけられているが、これらの入力情報は、ＨＤＤ１０３内に設けられた記憶部６０のファイル格納部６１ａ、６１ｂ、および６１ｃに格納される。そのときのファイル格納部６１ａのデータ構造例を図８に示す。
【００５６】
図８は、ファイル格納部のデータ構造例を示す図である。図８においては、図７に示した３つのコンパイル単位に対応するファイル格納部６１ａ、６１ｂ、および６１ｃのうち、一番上に示されている入力制御のコンパイル単位のファイル格納部６１ａについてのデータ構造例を示している。
【００５７】
図８に示すように、ファイル格納部６１ａには、属性ファイル６４、階層情報ファイル６５、処理内容ファイル６６、および処理内容情報ファイル６７が格納されている。属性ファイル６４は、属性入力ウィンドウ３０の所定の入力欄から入力された入力制御のコンパイル単位の属性が記録されている。階層情報ファイル６５は、プログラムツリー２１から明らかなようにコンパイル単位中には機能単位が階層状に入力されているので、この階層構造の情報が記憶されている。
【００５８】
なお、図示はしていないが、これらの情報は同一のファイルに入れてもよい。また、階層構造を記述するには、ＸＭＬ（eXtensible Markup Language）などのマークアップ記述言語を利用すると、ＤＯＭ（Document Object Model）などの一般的に流通している仕組みを利用することが可能となるため好都合である。
【００５９】
ところで、各機能単位は処理内容を持つが、その処理内容は同じコンパイル単位内にあるすべての機能単位の処理内容と共にまとめて処理内容ファイル６６に記録する。また、コンパイル単位内の各機能単位の属性情報をまとめて処理内容情報ファイル６７に記録する。
【００６０】
以上のように、コンパイル単位を構成する属性情報、階層情報、処理内容をすべてファイルの実体としてコンパイル単位に対応する１つのファイル中に格納されるので、ファイル格納部６１ａを中身ごと移動・複写することが可能となるので可搬性が向上する。また、モジュールとして再利用も可能となるので、一度テストされたコンパイル単位であれば、それを改変することなく再利用することができるので、再利用性も向上し、プログラム品質の向上にも寄与することができる。
【００６１】
図９は、ファイル格納部のデータ構造例を示す図である。図９に示すように、ファイル格納部６１ｄは、属性ファイル６４、階層情報ファイル６５、電流制御ファイル６６ａ、電流指令演算ファイル６６ｂ、電流調整器ファイル６６ｃ、電圧分配ファイル６６ｄ、およびＰＷＭ変調器ファイル６６ｅを備えている。
【００６２】
ファイル格納部６１ｄは、図８に示したファイル格納部６１ａと同様に入力制御のコンパイル単位とそのコンパイル単位に含まれる機能単位の属性情報を記憶するファイルを格納する。しかし、ファイル格納部６１ｄには、処理内容ファイル６６と処理内容情報ファイル６７がない。
【００６３】
ファイル格納部６１ｄには、機能単位を表す各ノードに対応した処理内容を記録するファイルを設ける。つまり、ファイル格納部６１ｄ内に、ファイル格納部６１ｄに対応する入力制御のコンパイル単位に含まれる各機能単位に対応した処理内容を記録したファイルをそれぞれ設ける。図９に示すように、コンパイル単位の属性を記憶する属性ファイル６４、コンパイル単位に含まれる機能単位の階層構造の情報を記憶する階層情報ファイル６５、電流制御の機能単位に対応する電流制御ファイル６６ａ、電流指令演算の機能単位に対応する電流指令演算ファイル６６ｂ、電流調整器の機能単位に対応する電流調整器ファイル６６ｃ、電圧分配の機能単位に対応する電圧分配ファイル６６ｄ、およびＰＷＭ変調器の機能単位に対応するＰＷＭ変調器ファイル６６ｅを備えている。
【００６４】
なお、ファイル格納部６１ｄにおいて各機能単位の属性情報は、処理内容を記述したファイル内に一緒に保存するため、ファイル格納部６１ａにおいて示した処理内容情報ファイル６７に対応するファイルはファイル格納部６１ｄにはない。また、必要に応じて処理内容情報ファイル６７に対応するファイルを設けてもよい。
【００６５】
以上のように、ファイル格納部６１ａでは、コンパイル単位中のすべての機能単位の情報を１つのファイルに保存していたが、ファイル格納部６１ｄにおいては、各機能単位に対応するファイルを設けることにより、各機能単位に分けて保存するようにしている。このようにすることにより、機能単位に対応するファイル６６ａ〜６６ｅのサイズが小さくなることが期待されるので、処理能力の低い計算機上でも負荷をかけずに処理できるようなＣＡＤシステム１を提供することが可能となる。
【００６６】
ところで、属性入力ウィンドウ３０、４０、５０から入力された各種情報はＣＡＤシステム１上でプログラムを製作しているときだけではなく、Ｃ言語などの高級言語形式にコンパイルした後のプログラムを見る場合にも用いられる。
【００６７】
図１０、図１１は、入力制御のコンパイル単位をコンパイルしたときのプログラムソースを示す図である。図１０、図１１に示すプログラムソース７０は、本来１つのプログラムソースであるが、便宜上２つの図に分けて説明する。
【００６８】
図１０に示すように、属性入力ウィンドウ３０から入力される入力制御のコンパイル単位の各種情報は、ヘッダの後にコメントとして挿入される。また、属性入力ウィンドウ４０から入力される電流制御の機能単位の各種情報は、電流制御の機能単位に対応する関数であるｉｎｔ  ＣｕｒｒｅｎｔＣｏｎｔｒｏｌ（ｉｎｔ  ｌｉｎ，  ｉｎｔ  Ｖｄｃ）；の直前にコメントとして挿入される。なお、図１１に示すように、電流制御以外の機能単位に対応する関数の直前にも属性入力ウィンドウから入力される各種情報がコメントとして挿入される。
【００６９】
次に、本実施の形態のＣＡＤシステム１における画面表示例について説明する。
図１２は、本実施の形態のＣＡＤシステムの画面表示例を示す図である。画面表示例２０には、プログラムツリー２１と処理内容表示ウィンドウ２２が表示されている。処理内容表示ウィンドウ２２は、電流制御の機能単位の処理内容を表示したときの画面表示例である。
【００７０】
上述のとおり、コンパイル単位はプログラムの処理機能を有する機能単位を入れる外枠でしかない。つまり、入力作業などのプログラムの製作作業や、プログラムの参照作業などを行うための情報は機能単位にある情報である。したがって、処理内容を表示する処理内容表示ウィンドウ２２には、機能単位に対応した処理内容を表示する。
【００７１】
ＣＡＤシステム１において、処理内容表示ウィンドウ２２には機能単位ごとの処理内容が表示されると、機能単位内と機能単位外が表示の上で強制的が分離される。すると、処理内容表示ウィンドウ２２に表示されている処理内容以外のことを気にすることなく作業することができることより、より構造化プログラミングに適合した手法でプログラミングをすることが可能となる。
【００７２】
なお、図式プログラムにおいては、すべてのプログラムを図で表現する場合に加え、図にＣ言語のプログラムの部分もしくは全体を割り当てるなどして、直接Ｃ言語で記述する部分を含めることもある。また、処理内容表示ウィンドウに表示するプログラムは必ずしも図式プログラムである必要はなく、テキスト形式で記述されたプログラムでもよい。
【００７３】
図１３は、ＣＡＤシステムで処理内容表示ウィンドウを複数枚表示させたときの画面表示例を示す図である。画面表示例２０ａには、プログラムツリー２１と処理内容表示ウィンドウ２２、２２ａ、および２２ｂが表示されている。処理内容表示ウィンドウ２２ａは、電圧分配の機能単位の処理内容が表示されるウィンドウであり、処理内容表示ウィンドウ２２ｂは、ＰＷＭ変調器の機能単位の処理内容が表示されるウィンドウである。
【００７４】
プログラムツリー２１には、複数の機能単位が含まれているので、一度に複数枚の処理内容表示ウィンドウを開くことができると、他の機能単位の処理内容と比較することができる。また、他の機能単位の処理内容と比較しながら処理内容の流れを追うことができる。たとえば、親階層の処理内容と子階層の処理内容を同時に見ることが可能となり利便性が向上する。
【００７５】
図１４は、処理内容表示ウィンドウで副プログラムブロックを表示させるときのＣＡＤシステムの画面表示例を示す図である。画面表示例２０ｂには、プログラムツリー２１と処理内容表示ウィンドウ２２ａが表示されている。プログラムツリー２１の機能単位は階層構造を形成している。これは、下位の機能単位は上位の機能単位の副プログラムであるともいえる。したがって、当該上位の機能単位に該当する機能単位の処理内容を処理内容表示ウィンドウで表示させると、処理内容として当該下位の機能単位に該当する副プログラムが表示されることになる。この画面表示例を示したものが処理内容表示ウィンドウ２２ａである。
【００７６】
処理内容表示ウィンドウ２２ａは、電圧分配の機能単位の処理内容を表示している。プログラムツリー２１に示したとおり、この電圧分配の機能単位は、ＰＷＭ変調器の機能単位を副プログラムとして含んでいる。処理内容表示ウィンドウ２２ａに表示されている機能単位ブロック２３は、この副プログラムを表している。
【００７７】
副プログラムは、上位のプログラム中では１つのまとまった機能を持つため、１つのブロックで表すようにする。機能単位ブロック２３は、左側に２つの接続点、右側に１つの接続点を持っているが、左側の接続点を入力信号、右側の接続点を出力信号と見なすとするならば、この副プログラムは、２入力１出力の副プログラムを表すことになる。このように、機能単位に含まれる副プログラムを機能単位ブロックとして表示すると視認性がよりよくなる。
【００７８】
図１５は、機能単位ブロックから処理内容表示ウィンドウを表示させるときのＣＡＤシステムの画面表示例を示す図である。画面表示例２０ｃには、プログラムツリー２１と処理内容表示ウィンドウ２２ａ、２２ｃが表示されている。処理内容表示ウィンドウ２２ａに表示されている図式プログラムの機能単位ブロック２３には処理内容表示ウィンドウ２２ｃが関連づけられており、機能単位ブロック２３を選択すると処理内容表示ウィンドウ２２ｃが開く。また、処理内容表示ウィンドウ２２ｃには、機能単位ブロック２３に対応する副プログラムの処理内容が表示される。複数の機能単位に対応した処理内容が表示できるＣＡＤシステム１においては、副プログラムの内容をプログラムツリー２１からだけでなく、処理内容表示ウィンドウに表示されている図式プログラムからも処理内容表示ウィンドウを開けると便利である。
【００７９】
図１６は、機能単位ブロックに対応する機能単位の名称を表示した場合のＣＡＤシステムの画面表示例を示す図である。画面表示例２０ｄは、プログラムツリー２１と処理内容表示ウィンドウ２２ｄが表示されている。処理内容表示ウィンドウ２２ｄに表示されている機能単位ブロック２３ａには、機能単位ブロック２３ａに対応する機能単位の名称２３ｂが表示されている。
【００８０】
上記図１５で示したように、機能単位ブロックを選択することによって、機能単位ブロックに対応した処理内容が見えることは利便性を向上するが、そのような動作をしなくても内容がわかればさらに利便性が向上する。そこで、対応する機能単位に対応するプログラムツリー２１上の名前を図式プログラム中の機能単位に対応する機能単位ブロック２３ａ中に表示させることによって、プログラムツリー２１上での処理内容の理解が容易であったのと同様に、図式プログラム中においても理解が容易になる。
【００８１】
図１７は、取り込みウィンドウの表示例である。図１７に示す取り込みウィンドウ８０は、インバータ制御のプロジェクトのノード２４に関連づけられた画面を開いたときに開くウィンドウを示したときの例である。たとえば、別のプロジェクトで製作したようなコンパイル単位を、自プロジェクトに取り込む機能を用いる際に表示する。ＣＡＤシステム１において、コンパイル単位はファイル格納部という形で実装されているので、取り込みたいコンパイル単位のファイル格納部をコピーなどして自プロジェクトのファイル格納部に取り込むことにより、すでに製作されたコンパイル単位を容易に取り入れることができる。
【００８２】
ノード２４には、属性入力ウィンドウ５０と取り込みウィンドウ８０という２つのウィンドウが関連づけられている。それぞれのウィンドウを開きたいときの操作は、たとえば、マウスを使用したウィンドウシステムにおいて、ノード２４をマウスカーソルでポイントし、マウスボタンをクリックすると複数のメニューを開くようにし、そのメニューから所望のウィンドウを選んで画面を開くような操作を指す。
【００８３】
コンパイル単位は、ＨＤＤ１０３上には、コンパイル単位を表す各ノードに対応したファイル格納部により、ＨＤＤ１０３上にそのコンパイル単位のすべての情報を含む形でファイルを格納している。また、ファイル格納部は、プログラムツリー２１上の対応するノードに付されている名称と同じ名称が付されているので、取り込みウィンドウ８０では、取り込みたいコンパイル単位のファイル格納部のパスを入力欄８１に入力して取り込みを行う。
【００８４】
次に、取り込みを行ったときのプロジェクトの変化を具体的に説明する。
図１８は、取り込みを行う前のプロジェクトをツリー状に示した図であり、図１９は、取り込みを行うプロジェクトとは別に製作されたプロジェクトをツリー状に示した図である。
【００８５】
プログラムツリー２１ａに示したプロジェクトから、プログラムツリー２１ｂに示したプロジェクトの中のプログラムを取り込んで使用したいとき、図１８に示したインバータ制御のプロジェクトのノード２４ａを選択し、取り込みウィンドウ８０を開く。そして、プログラムツリー２１ｂの中にある電源同期のコンパイル単位を指定して取り込みを行うと、電源同期のコンパイル単位がプログラムツリー２１ａとして示したプロジェクトに取り込まれる。そして、その結果としてプログラムツリー２１に示したプロジェクトを製作することができる。
【００８６】
図２０は、省略表示した場合のプログラムツリーの表示例である。プログラムツリー２１ｃは、コンパイル単位の直下にある機能単位は表示するが、それより下の階層にある機能単位は表示を省略して、プログラムツリー２１として示したプロジェクトを表示したものである。記号９０は、直右の機能単位の下位に属する機能単位は表示を省略していることを示す記号である。このように、表示させることにより、コンパイル単位のノードの直下にある機能単位だけを表示させている。
【００８７】
このようにすることにより、コンパイル単位の直下にある機能単位はコンパイル単位外への公開機能とし、そうでない機能単位はその直上の機能単位の副プログラムとしてコンパイル単位外へは非公開であるとすると、プログラムツリー２１ｃは、各コンパイル単位にはどのような公開機能が実装されているのかを列挙したことになるため、各コンパイル単位の再利用を行うときにはとても有用となる。また、プログラムツリー２１ｃにおいて表示が省略されている機能単位は、それぞれのコンパイル単位内部でのみ使用可能な機能単位であることが視覚的に明確に確認することが可能となる。また、このようなコンパイル単位内部でのみ使用可能な機能単位を製作する場合には、その範囲内でしか使用しないという限定事項の元に製作することができるので単純化できる。したがって、製作の手数や検査の手数を低減させることができるので、製作にかかる負担を低減させ、また、仕様の複雑さに由来する品質の低下を避けることができる。
【００８８】
次に、コンパイル単位直下の機能単位のみ公開機能とした場合のプログラムソースの変化を、具体的にＣ言語形式でコンパイルしたプログラムソースを用いて説明する。
図２１は、コンパイル単位直下の機能単位のみ公開機能とした場合のプロジェクトのヘッダファイルを示した図である。ヘッダファイル７１には、プロジェクトにおけるコンパイル単位の直下にある機能単位が当該コンパイル単位外から参照され得るため、当該機能単位に相当する関数の外部参照宣言が記載されている。プログラムツリー２１のノード２６ａの直下にはノード２８ａとノード２８ｅが接続されていることからわかるように、入力制御のコンパイル単位の直下には電流制御の機能単位と直流電圧制御の機能単位が存在する。入力制御のコンパイル単位が含む機能単位のうち、電流制御の機能単位と直流電圧制御の機能単位のみが外部から参照され得る。したがって、ヘッダファイル７１は、電流制御の機能単位と直流電圧制御の機能単位がインバータ制御のプロジェクトの外部から読み出しが可能になるように、電流制御の機能単位に対応する関数の関数宣言であるｉｎｔ  ＣｕｒｒｅｎｔＣｏｎｔｒｏｌ（ｉｎｔ  ｌｉｎ，  ｉｎｔ  Ｖｄｃ）；と、直流電圧制御の機能単位に対応する関数の関数宣言であるｉｎｔ  ＤＣＶｏｌｔａｇｅＣｏｎｔｒｏｌｌｅｒ（ｉｎｔ  Ｖｄｃ）；が記載されている。
【００８９】
図２２は、コンパイル単位直下の機能単位のみ公開機能とした場合のプロジェクトのプログラムソースの冒頭部を示した図である。図２２に示すように、図１０に示したプログラムソース７０の冒頭部分は、ヘッダファイル７１を参照するように外部参照宣言が記載される。
【００９０】
図２３は、コンパイル単位の外部から機能単位を参照する機能単位を追加したプログラムツリーを示す図である。図２３に示すように、プログラムツリー２１ｄには、インバータ制御のプロジェクトのノード２４の下にメインのコンパイル単位のノード２６ｄが追加されている。また、メインのコンパイル単位には割り込みメインの機能単位が含まれており、割り込みメインの機能単位のノード２８ｆは、ノード２６ｄに従属するように表示される。
【００９１】
たとえば、割り込みメインの機能単位が、他のコンパイル単位に含まれる機能単位を呼び出しているとするときの様子をプログラムソースを用いて説明する。
図２４は、メインのコンパイル単位のプログラムソースを示す図である。図２４に示すように、プログラムソース７２は、割り込みメインの機能単位が入力制御のコンパイル単位に含まれている電流制御の機能単位と直流電圧制御の機能単位を呼び出している様子を表している。
【００９２】
なお、上記実施の形態においては、一部のノードのみに対する説明を行った部分があるが、説明をしなかった他のノードに対しても上記実施の形態で説明した処理を行うことにより、当然に同様の効果を得ることができる。
【図面の簡単な説明】
【００９３】
【図１】本実施の形態に適用される発明の概念図である。
【図２】本実施の形態に用いる端末装置のハードウェア構成例を示す図である。
【図３】本実施の形態のプログラムツリーの表示例である。
【図４】入力制御のコンパイル単位に対応する属性入力ウィンドウを示す図である。
【図５】電流制御の機能単位に対応する属性入力ウィンドウを示す図である。
【図６】プロジェクトに対応する属性入力ウィンドウを示す図である。
【図７】記憶部のデータ構成例を示す図である。
【図８】ファイル格納部のデータ構造例を示す図である。
【図９】ファイル格納部のデータ構造例を示す図である。
【図１０】入力制御のコンパイル単位をコンパイルしたときのプログラムソースを示す図である。
【図１１】入力制御のコンパイル単位をコンパイルしたときのプログラムソースを示す図である。
【図１２】本実施の形態のＣＡＤシステムの画面表示例を示す図である。
【図１３】ＣＡＤシステムで処理内容表示ウィンドウを複数枚表示させたときの画面表示例を示す図である。
【図１４】処理内容表示ウィンドウで副プログラムブロックを表示させるときのＣＡＤシステムの画面表示例を示す図である。
【図１５】機能単位ブロックから処理内容表示ウィンドウを表示させるときのＣＡＤシステムの画面表示例を示す図である。
【図１６】機能単位ブロックに対応する機能単位の名称を表示した場合のＣＡＤシステムの画面表示例を示す図である。
【図１７】取り込みウィンドウの表示例である。
【図１８】取り込みを行う前のプロジェクトをツリー状に示した図である。
【図１９】取り込みを行うプロジェクトとは別に製作されたプロジェクトをツリー状に示した図である。
【図２０】省略表示した場合のプログラムツリーの表示例である。
【図２１】コンパイル単位直下の機能単位のみ公開機能とした場合のプロジェクトのヘッダファイルを示した図である。
【図２２】コンパイル単位直下の機能単位のみ公開機能とした場合のプロジェクトのプログラムソースの冒頭部を示した図である。
【図２３】コンパイル単位の外部から機能単位を参照する機能単位を追加したプログラムツリーを示す図である。
【図２４】メインのコンパイル単位のプログラムソースを示す図である。
【符号の説明】
【００９４】
１  ＣＡＤシステム
１０  端末装置
１１  マウス
１２  キーボード
１３  モニタ
２０  画面表示例
２１  プログラムツリー
２２  処理内容表示ウィンドウ
【図１】
2007011507.tif 000003
【図２】
2007011507.tif 000004
【図３】
2007011507.tif 000005
【図４】
2007011507.tif 000006
【図５】
2007011507.tif 000007
【図６】
2007011507.tif 000008
【図７】
2007011507.tif 000009
【図８】
2007011507.tif 000010
【図９】
2007011507.tif 000011
【図１０】
2007011507.tif 000012
【図１１】
2007011507.tif 000013
【図１２】
2007011507.tif 000014
【図１３】
2007011507.tif 000015
【図１４】
2007011507.tif 000016
【図１５】
2007011507.tif 000017
【図１６】
2007011507.tif 000018
【図１７】
2007011507.tif 000019
【図１８】
2007011507.tif 000020
【図１９】
2007011507.tif 000021
【図２０】
2007011507.tif 000022
【図２１】
2007011507.tif 000023
【図２２】
2007011507.tif 000024
【図２３】
2007011507.tif 000025
【図２４】
2007011507.tif 000026