(57)【特許請求の範囲】
【請求項１】
関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、
索引部と実データ部を少なくとも有するファイルであるＡＣＬファイルを生成するＡＣＬファイル生成部と、
前記実データ部の命令を実行する逐次実行部を少なくとも備え、
１つの前記関数ファイルには１つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、
前記ＡＣＬファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ＡＣＬファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ＡＣＬファイルの前記索引部として生成するものであり、
前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始するものであることを特徴とするプログラム開発システム。
【請求項２】
前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行するものであり、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索するものであることを特徴とする、請求項１に記載されたプログラム開発システム。
【請求項３】
前記逐次実行部は、実行する前記命令によって他の関数をディレクトリの指定を伴って呼び出す際に、指定されたディレクトリに、当該ディレクトリに属する各関数ファイルの実行環境を整えるための初期設定命令の記述を含む自動実行ファイルがある場合に、前記他の関数が記述された関数ファイルの呼び出しに先立って前記初期設定命令を実行し、実行する前記命令によって他の関数をディレクトリの指定を伴わずに呼び出す際に、前記他の関数が上位ディレクトリから検索され、かつ、カレントディレクトリに前記自動実行ファイルが含まれる場合に、前記上位ディレクトリへカレントディレクトリを移動させるのに先立って、前記自動実行ファイルに記述された初期設定命令で整えられた実行環境を解消する後処理を実行するものである
ことを特徴とする請求項２に記載のプログラム開発システム。
【請求項４】
コンピュータを、請求項１又は２に記載されたプログラム開発システムとして機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項５】
関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、
索引部と実データ部を少なくとも有するファイルであるＡＣＬファイルを生成するＡＣＬファイル生成部と、
前記実データ部の命令を実行する逐次実行部を少なくとも備えたプログラム開発システムにおける方法であって、
１つの前記関数ファイルには１つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、
前記ＡＣＬファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ＡＣＬファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ＡＣＬファイルの前記索引部として生成し、
前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始することを特徴とする方法。
【請求項６】
前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行し、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索することを特徴とする、請求項５に記載された方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、プログラムを開発するためのプログラム開発方法と、プログラム開発用のプログラムを記録した記録媒体と、プログラムを開発するためのプログラム開発システムとに関する。
【０００２】
【従来の技術】
従来から行われているプログラム開発では、１つのプログラムが複数に分割された状態で作成され、ファイルとして格納される。
【０００３】
例えば、構造化プログラミング言語によるプログラム開発では、関連する複数の関数から成るファイルが多数作成され、ファイル間での関数呼出し等によって所望の情報処理が実現される。
このようなプログラム開発では、開発規模が大きくなると、プログラムを構成するファイルの数が多くなって、呼出しの対象となる関数を含むファイルをプログラム開発者が識別することが難しくなる。そのため、各々のファイルをディレクトリによって階層的に配置して管理する手法がとられている。
【０００４】
一般に、このようなファイルの管理は、既存のオペレーティングシステムによるファイル管理処理によって実現されている。
【０００５】
【発明が解決しようとする課題】
しかし、このようなファイル管理処理は、オペレーティングシステムの違いによって異なることが多い。例えば、代表的なオペレーティングシステムであるＷｉｎｄｏｗｓ（マイクロソフト社の登録商標である）と、ＵＮＩＸ（ＡＴ＆Ｔ社の登録商標である）とでは、ディレクトリの区切り記号や、標準的に使われる文字コードが異なる。
【０００６】
したがって、ディレクトリを示す情報を含むプログラムは、異なるオペレーティングシステム間での共用性や可搬性が損なわれることになる。
そのため、従来のプログラム開発では、同一の情報処理を実現するプログラムを、オペレーティングシステム毎に個別に開発する必要があった。
また、従来の構造化プログラミングによるプログラム開発では、１つのファイルに複数の関数を記述することが慣例であるが、このような記述は、以下のような問題を発生させ、プログラムの開発時や保守時の効率を低下させる原因となる。
【０００７】
・任意のファイル中の特定の関数を再配置するには、そのファイルから対象となる関数部分を抽出して別のファィルに書き加える操作が必要であり、操作ミスが発生し易い。
・プログラム開発者が既存のファイル管理ツールなどでディレクトリ内を見ただけでは、どのファイル内に必要な関数が含まれているのか判断し難い。
【０００８】
・任意の関数と他のファイルに存在する関数との相関関係に関わる情報が複数箇所に分散されてしまうため、人為的ミスが発生し易い。
なお、このような問題を回避するため、１つのファイルに１つの関数を記述する決まりを作ったとしても、プログラミング言語の規則では、１つのファイルに複数の関数を記述する形式が許されているので、プログラム開発者が、このような形式を安易に用いてしまう可能性がある。また、関数名をファイル名と同一にする決まりを作ったとしても、関数にファイル名と異なる名称を付与することは、プログラミング言語の規則として許されているので、関数名とファイル名とが異なることによる不具合を誘発し易い。
【０００９】
そこで、本発明は、異なるオペレーティングシステム間でのプログラムの共用性や可搬性を向上させることができると共に、プログラムの開発および保守を効率良く行うことができるプログラム開発方法、プログラム開発用のプログラムを記録した記録媒体およびプログラム開発システムを提供することを目的とする。
【００１０】
【課題を解決するための手段】
請求項１に記載のプログラム開発システムは、関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、索引部と実データ部を少なくとも有するファイルであるＡＣＬファイルを生成するＡＣＬファイル生成部と、前記実データ部の命令を実行する逐次実行部を少なくとも備え、１つの前記関数ファイルには１つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、前記ＡＣＬファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ＡＣＬファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ＡＣＬファイルの前記索引部として生成するものであり、前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始するものであることを特徴とする。
【００１１】
請求項２に記載のプログラム開発システムは、請求項１に記載のプログラム開発システムにおいて、前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行するものであり、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索するものであることを特徴とする。
【００１２】
また、請求項１に記載のプログラム開発システムにおいて、前記ＡＣＬファイルを用いたプログラムの実行中に、前記ディレクトリ集合部に含まれる関数ファイルに相当するプログラムの変更を許可することもできる。
また、請求項１に記載のプログラム開発システムにおいて、前記ディレクトリ集合部内の任意のディレクトリ以下に対応する仮想的なディレクトリ構造を、前記ＡＣＬファイル内の仮想的なディレクトリの任意のディレクトリの位置に割り当てることもできる。
【００１３】
請求項３に記載のプログラム開発システムは、請求項２に記載のプログラム開発システムにおいて、前記逐次実行部は、実行する前記命令によって他の関数をディレクトリの指定を伴って呼び出す際に、指定されたディレクトリに、当該ディレクトリに属する各関数ファイルの実行環境を整えるための初期設定命令の記述を含む自動実行ファイルがある場合に、前記他の関数が記述された関数ファイルの呼び出しに先立って前記初期設定命令を実行し、実行する前記命令によって他の関数をディレクトリの指定を伴わずに呼び出す際に、前記他の関数が上位ディレクトリから検索され、かつ、カレントディレクトリに前記自動実行ファイルが含まれる場合に、前記上位ディレクトリへカレントディレクトリを移動させるのに先立って、前記自動実行ファイルに記述された初期設定命令で整えられた実行環境を解消する後処理を実行するものであることを特徴とする。
【００１４】
また、請求項１に記載のプログラム開発システムにおいて、異なるディレクトリに同一名称のファイルの配置を許可することもできる。
請求項４に記載のコンピュータ読み取り可能な記録媒体は、コンピュータを、請求項１又は２に記載されたプログラム開発システムとして機能させるためのプログラムを記録したことを特徴とする。
【００１５】
請求項５に記載の方法は、関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、索引部と実データ部を少なくとも有するファイルであるＡＣＬファイルを生成するＡＣＬファイル生成部と、前記実データ部の命令を実行する逐次実行部を少なくとも備えたプログラム開発システムにおける方法であって、１つの前記関数ファイルには１つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、前記ＡＣＬファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ＡＣＬファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ＡＣＬファイルの前記索引部として生成し、前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始することを特徴とする。
請求項6に記載の方法は、請求項5に記載された方法において、前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行し、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索することを特徴とする。
【００１６】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施形態について詳細を説明する。
図１は、本発明の実施形態に対応するプログラム開発システムの機能ブロック図である。
図１において、プログラム開発システム１０は、プログラム開発者とのインタフェースを実現するインタフェース部１１（例えば、ＧＵＩ：Graphical User Interfaceなど）と、インタフェース部１１と連携してプログラム開発者によるプログラムの作成を支援するプログラム作成支援部１２（例えば、エディタなど）と、プログラム開発者によって作成されたプログラムに相当する複数のファイル（後述する「関数ファイル」）がディレクトリによって階層的に配置されて成るディレクトリ集合部１３と、ディレクトリ集合部１３内のディレクトリの構造や各関数ファイルに対応するプログラムに基づき、後述する「ＡＣＬファイル」を生成するＡＣＬファイル生成部１４と、ＡＣＬファイル生成部１４を起動すると共に、ＡＣＬファイル生成部１４によって生成されたＡＣＬファイルを逐次解釈して、プログラム開発者によって作成されたプログラムをインタフェース部１１と連携しつつ実行する逐次実行部１５とから構成される。
【００１７】
本実施形態のプログラム開発システム１０に適用されるプログラミング言語は、プログラムを複数の関数の集まりとして記述することが可能な構造化プログラミング言語であり、既存の構造化プログラミング言語と同様に、静的変数や動的変数を用いることができる。
また、既存の構造化プログラミング言語との相違点は、１つの関数を１つのファイル（以下、「関数ファイル」と称する）に記述して関数名とファイル名とを等しい物として扱う規則を設けている点や、関数ファイルをディレクトリによって階層的に配置することで各々の関数の関連付けを実現する点などである。
【００１８】
なお、関数名とファイル名とを等しい物として扱う規則としては、１つの関数ファイルに１つの関数を記述する規則だけでなく、関数ファイル内での関数名の記載を禁止する規則が挙げられる。このような規則によれば、１つの関数ファイルに複数の関数が記述されることがなく、関数ファイル名と異なる名称が関数に付与されることもない。
【００１９】
また、本実施形態のプログラム開発システム１０に適用されるプログラミング言語では、任意の関数ファイルから、下位ディレクトリ内の関数ファイルを呼出す命令は、ディレクトリ名に「．」と関数ファイル名と「（）」とを連結する形で記載し、上位ディレクトリ内の関数ファイルを呼出す命令は、ディレクトリ名を付与せず、関数ファイル名と「（）」とを連結する形で記載するものとする。なお、このとき、関数ファイル名は、拡張子を含まない文字列（大文字と小文字は区別されない）で記載するものとする。
【００２０】
図２は、ディレクトリ集合部１３におけるディレクトリの構造例を示す図である。
なお、図２は、メニュー表示を行ってユーザからの指示を受け付けて、その指示に応じて商品の受注伝票や納品書の入力処理や請求書の発行処理などを実現する伝票処理プログラムの作成時に生成されるディレクトリの構造を示している。
【００２１】
図２では、ディレクトリ集合部１３におけるディレクトリ間の関係を示すと共に、各々のディレクトリに属する関数ファイルやデータファイル（場合によっては、ＡＵＴＯＥＸＥＣファイル）を示している。また、図２では、各々のディレクトリ内の関数ファイルから呼出される関数ファイル（場合によっては、データファイル）を示している。
【００２２】
図３、図４は、関数ファイルの記述例を示す図である。
図３では、図２に示したＴＯＰディレクトリに属する関数ファイル：ＭＡＩＮ.ＳＲＣの記述例を示し、図４では、ＴＯＰディレクトリの下位のディレクトリである受注ディレクトリに属する関数ファイル：ＭＡＩＮ.ＳＲＣの記述例を示している。
【００２３】
図３に示す関数ファイルは、伝票処理の一環として、受注処理、出荷処理、請求処理、業務終了の何れかの選択をユーザに促すメニュー表示を行い、ユーザからの選択の指示を受け付けると共に、受注処理、出荷処理、請求処理の何れかが選択された場合、下位のディレクトリに属する関数ファイルから、ユーザの指示に対応する関数ファイルの呼出しを行う。
【００２４】
また、図４に示す関数ファイルは、このような処理の過程で、ユーザによって受注処理が選択された場合に呼出され、伝票入力、受注日計表印刷、戻るの何れかの選択をユーザに促すメニュー表示を行い、ユーザからの選択の指示を受け付ける。そして、伝票入力、受注日計表印刷の何れかが選択された場合、下位のディレクトリに属する関数ファイルから、ユーザの指示に対応する関数ファイルの呼出しを行う。
【００２５】
このように、本実施形態のプログラム開発システム１０では、伝票処理のように、階層的な構造でモデル化することが可能な処理に対するプログラムを開発する場合、プログラム開発者は、その構造に基づいてディレクトリを構築し、各々のディレクトリに属する関数ファイル（場合によっては、データファイル）を作成すれば良く、各々の関数を関連付けるためのファイルを別途作成する必要がない。
【００２６】
ところで、本実施形態のプログラム開発システム１０は、既存のオペレーティングシステムが搭載されたパーソナルコンピュータなどで実現されるシステムであり、上述したプログラミング言語によるプログラムの作成を実現するインタフェース部１１やプログラム作成支援部１２は、このようなオペレーティングシステムのもとで、従来のプログラム開発システムと同様に動作する。
【００２７】
そのため、本実施形態では、インタフェース部１１およびプログラム作成支援部１２の動作の説明は省略し、プログラム開発者によって作成されたプログラムが関数ファイルとしてディレクトリ集合部１３内に配置された状態において、逐次実行部１５およびＡＣＬファイル生成部１４の動作の説明を行う。
なお、逐次実行部１５およびＡＣＬファイル生成部１４は、後述する動作を実現するプログラムに相当し、そのプログラムは、ＣＤ−ＲＯＭなどの記録媒体からダウンロードされ、逐次実行ディレクトリにファイルとして格納される。また、逐次実行部１５は、インタフェース部１１を介し、プログラム開発者の指示によって起動されるものとする。
【００２８】
図５〜図８は、逐次実行部１５の動作フローチャートである。
図９は、ＡＣＬファイル生成部１４の動作フローチャートである。
以下、図５〜図９を参照して、逐次実行部１５およびＡＣＬファイル生成部１４の動作を説明する。
まず、逐次実行部１５は、プログラム開発者の指示によって起動されると、逐次実行部ディレクトリにＡＵＴＯＥＸＥＣファイルが存在するか否かを判定し（図５Ｓ１）、逐次実行部ディレクトリにＡＵＴＯＥＸＥＣファイルが存在する場合、ＡＵＴＯＥＸＥＣファイルの内容を１行毎に順次評価する（図５Ｓ２）。
【００２９】
逐次実行部１５は、このようにして評価した内容がＡＣＬファイルを生成する命令であるか否かを判定する（図５Ｓ３）。そして、逐次実行部１５は、その内容がＡＣＬファイルを生成する命令である場合、ＡＣＬファイル生成部１４を起動し（図５Ｓ４）、その内容がＡＣＬファイルを生成する以外の命令である場合、その命令を即時実行する（図５Ｓ５）。
【００３０】
なお、ＡＣＬファイルを生成する命令には、ディレクトリ集合部１３内のディレクトリを指定するパラメタが設けられているものとし、ＡＣＬファイル生成部では、そのパラメタによって指定されたディレクトリ以下を対象としてＡＣＬファイルが生成され、そのＡＣＬファイルには、パラメタによって指定されたディレクトリの名称に拡張子：ＡＣＬを付加したファイル名が付与される。そのため、逐次実行部１５は、ＡＣＬファイル生成部１４の起動時に、このようなパラメタによって指定されたディレクトリの名称をＡＣＬファイル生成部１４に通知するものとする。
【００３１】
次に、逐次実行部１５は、ＡＵＴＯＥＸＥＣファイルの全ての行に対応する命令の実行が完了したか否かを判定し（図５Ｓ６）、未実行の命令が存在する場合、図５Ｓ２以降の処理を繰り返し行う。
一方、逐次実行部１５は、ＡＵＴＯＥＸＥＣファイルの全ての行に対応する命令の実行が完了した場合、ＡＣＬファイル生成部１４によって生成されるＡＣＬファイルに基づき、後述する「関数ファイル実行処理」を行う（図５Ｓ７）。
【００３２】
ここで、図９を参照して、ＡＣＬファイル生成部１４の動作を説明する。
まず、ＡＣＬファイル生成部１４は、逐次実行部１５によって起動されると、逐次実行部１５から通知されたディレクトリの名称に対応するＡＣＬファイルが既に存在するか否かを判定し（図９Ｓ１）、そのＡＣＬファイルが既に存在する場合、ＡＣＬファイルの作成日時やディレクトリ集合部１３内の関数ファイルの作成日時などを参照し、ＡＣＬファイルの生成後に関数ファイルの追加・削除・更新が行われた否かを判定する（図９Ｓ２）。
【００３３】
そして、ＡＣＬファイル生成部１４は、逐次実行部１５によって通知されたディレクトリ名に対応するＡＣＬファイルが存在しない場合、または、このようなＡＣＬファイルが既に存在するが、そのＡＣＬファイルの生成後に関数ファイルの追加・削除・更新が行われた場合、ＡＣＬファイルの生成を開始する。
すなわち、逐次実行部１５によって通知されたディレクトリ名に対応するＡＣＬファイルが既に存在して、そのＡＣＬファイルの生成後に関数ファイルの追加・削除・更新が行われていない場合には、ＡＣＬファイルの生成は行われない。なお、逐次実行部１５によって通知されたディレクトリがディレクトリ集合部１３内に存在しない場合にも、ＡＣＬファイルの生成は行われないものとする。
【００３４】
以下、ＡＣＬファイル生成部１４によるＡＣＬファイルの生成処理を説明する。
まず、ＡＣＬファイル生成部１４は、ディレクトリ集合部１３から、逐次実行部１５によって通知された名称に対応するディレクトリを検索し、そのディレクトリ以下の構造を示す情報と、各関数ファイルに対応するプログラム（場合によっては、データファイルに対応する文字列）とを取得する（図９Ｓ３）と共に、関数ファイル（場合によっては、データファイル）内の文字コードの種類を取得する（図９Ｓ４）。
【００３５】
次に、ＡＣＬファイル生成部１４は、図９Ｓ４において取得した文字コードの種類に対応する文字コード変換処理を行う（図９Ｓ５）。すなわち、ディレクトリ集合部１３内のディレクトリの構造を示す情報や、関数ファイルに対応するプログラム（場合によっては、データファイルに対応する文字列）を、ＡＣＬファイル生成部１４で認識できる文字コードに変換する。
【００３６】
そして、ＡＣＬファイル生成部１４は、このようにして変換した各関数ファイルに対応するプログラムをコンパイルして中間コードを生成する（図９Ｓ６）。
最後に、ＡＣＬファイル生成部１４は、図９Ｓ４において取得した文字コードの種類を示す文字コード指定部と、各関数ファイルに対応する中間コード（場合によっては、データファイルに対応するデータ列）から成る複数の実データ部と、各実データ部のポインタを関数ファイルの名称（場合によっては、データファイルの名称）に対応付けてディレクトリの階層的構造に応じて配置した索引部とから成るＡＣＬファイルを生成する（図９Ｓ７）。
【００３７】
図１０は、このようにして生成されるＡＣＬファイルのデータ構造を示す図である。
すなわち、ＡＣＬファイル生成部１４によって生成されるＡＣＬファイルでは、ディレクトリ集合部１３内のディレクトリ構造を、オペレーティングシステムに依存する文字を用いることなく、「ＢＩＧＩＮ＋ディレクトリ名」から始まり「ＥＮＤ」により終わる再帰的なデータ構造で表すことができる。
【００３８】
ところで、逐次実行部ディレクトリのＡＵＴＯＥＸＥＣファイルに、ＡＣＬファイルを生成する命令が複数記載されている場合、ＡＣＬファイル生成部１４は、繰り返し起動され、各々の命令に対応するＡＣＬファイルを生成することになる。
そのため、ＡＣＬファイル生成部１４では、ディレクトリ集合部１３内のルートディレクトリに対応するＡＣＬファイルと、ルートディレクトリ以外のディレクトリに対応するＡＣＬファイルとを生成することが可能である。なお、このようにして生成されたルートディレクトリ以外のディレクトリに対応するＡＣＬファイルは、関数ファイルに記載されている命令に基づき、逐次実行部１５において、ルートディレクトリに対応するＡＣＬファイルの任意の位置に関係付けることが可能である（後述する図６Ｓ９の処理に相当する）。
【００３９】
以下、図６〜図８を参照して、逐次実行部１５による「関数ファイル実行処理」を説明する。ただし、以下の説明におけるディレクトリは、ＡＣＬファイル上に仮想的に構築されたディレクトリを示し、ディレクトリ集合部１３内に構築されている実際のディレクトリではない。
まず、逐次実行部１５は、ＡＣＬファイルの索引部の最初のディレクトリをカレントディレクトリとする（図６Ｓ１）。例えば、図２に示すような構造のディレクトリがディレクトリ集合部１３内に構築されている状態でＡＣＬファイルが生成された場合、ＡＣＬファイルの索引部の最初のディレクトリは、図２のＴＯＰディレクトリに対応することになる。
【００４０】
そして、逐次実行部１５は、カレントディレクトリにＡＵＴＯＥＸＥＣファイルが存在するか否かを判定し（図６Ｓ２）、ＡＵＴＯＥＸＥＣファイルが存在する場合、ＡＵＴＯＥＸＥＣファイルの内容を１行ずつ評価して実行する（図６Ｓ３）。
次に、逐次実行部１５は、ＡＣＬファイルの索引部１４に基づき、カレントディレクトリの最初の関数ファイルを実行関数ファイル（実行権を与える関数ファイル）とする（図６Ｓ４）。例えば、図２に示すような構造のディレクトリがディレクトリ集合部１３内に構築されている状態でＡＣＬファイルが生成された場合、カレントディレクトリの最初の関数ファイルは、図２のＴＯＰディレクトリに属するＭＡＩＮ.ＳＲＣに対応することになる。
【００４１】
そして、逐次実行部１５は、実行関数ファイルに対応する実データ部の命令を順次解読し（図６Ｓ５）、解読した内容が他の関数ファイルを呼出す命令であるか否かを判定する（図６Ｓ６）。
逐次実行部１５は、解読した内容が他の関数ファイルを呼出す命令である場合、後述する「関数ファイル呼出し処理」を行い（図６Ｓ７）、図６Ｓ５以降の処理を繰り返し行う。
【００４２】
一方、解読した命令が他の関数ファイルを呼出す以外の命令である場合、解読した内容が他のＡＣＬファイルを割り当てる命令であるか否かを判定する（図６Ｓ８）。そして、逐次実行部１５は、解読した命令が他のＡＣＬファイルを割り当てる命令である場合、実行関数ファイルが属するＡＣＬファイルの所定の位置に他のＡＣＬファイルを割り当て（図６Ｓ９）、他のＡＣＬファイルを割り当てる以外の命令である場合、その命令を即時実行する（図６Ｓ１０）。
【００４３】
次に、逐次実行部１５は、実行関数ファイルに対応する実データ部の全ての命令の実行が完了したか否かを判定し（図６Ｓ１１）、未実行の命令が存在する場合、図６Ｓ５以降の処理を繰り返し行う。
【００４４】
一方、逐次実行部１５は、実行関数ファイルに対応する実データ部の全ての命令の実行が完了した場合、実行関数ファイルが他の関数ファイルから呼出されていたか否かを判定する（図６Ｓ１２）。
そして、逐次実行部１５は、実行関数ファイルが他の関数ファイルから呼出されていた場合、後述する「呼出し側の関数ファイルへの復帰処理」を行い（図６Ｓ１３）、図６Ｓ５以降の処理を繰り返し行う。一方、実行関数ファイルが他の関数ファイルから呼出されていない場合、逐次実行部１５は、「関数ファイル実行処理」を終了する。
【００４５】
以下、図７を参照して、「関数ファイルの呼出し処理」を説明する。
まず、逐次実行部１５は、呼出し対象の関数ファイルにディレクトリ名が付与されているか否かを判定する（図７Ｓ１）。
逐次実行部１５は、呼出し対象の関数ファイルにディレクトリ名が付与されている場合、そのディレクトリ名に対応する下位ディレクトリにＡＵＴＯＥＸＥＣファイルが存在するか否かを判定する（図７Ｓ２）。そして、ＡＵＴＯＥＸＥＣファイルが存在する場合には、ＡＵＴＯＥＸＥＣファイルの内容を１行ずつ評価して実行する（図７Ｓ３）。
【００４６】
なお、ＡＵＴＯＥＸＥＣファイルには、そのＡＵＴＯＥＸＥＣファイルが属するディレクトリ以下の実行に共通して必要な環境を整える命令が、プログラム開発者によって記載されている。例えば、カレントディレクトリ以下で共通に参照可能な変数や、カレントディレクトリ以下で使われるデータベースやファィルのオープン等が中心となる。
【００４７】
次に、逐次実行部１５は、呼出し対象の関数ファイルが属する下位ディレクトリをカレントディレクトリとし、呼出し対象の関数ファイルと同名の関数ファイルを実行関数ファイルとする（図７Ｓ４）。
【００４８】
ただし、図７Ｓ３において、ＡＵＴＯＥＸＥＣファイルに記載された命令が正常に完了しなかった場合、逐次実行部１５は、カレントディレクトリを変更せず、エラーを通知し、呼出し側の関数ファイルの呼出し位置に復帰するものとする。
一方、呼出し対象の関数ファイルにディレクトリ名が付与されていない場合、逐次実行部１５は、カレントディレクトリを検索対象ディレクトリとして、呼出し対象の関数ファイルと同名の関数ファイルを検索する（図７Ｓ５）。
【００４９】
そして、逐次実行部１５は、検索対象ディレクトリに呼出し対象の関数ファイルと同名の関数ファイルが存在するか否かを判定する（図７Ｓ６）。
逐次実行部１５は、検索対象ディレクトリに呼出し対象の関数ファイルと同名の関数ファイルが存在する場合、その関数ファイルを実行関数ファイルとする（図７Ｓ７）。一方、逐次実行部１５は、検索対象ディレクトリに呼出し対象の関数ファイルと同名の関数ファイルが存在しない場合、上位ディレクトリを検索対象ディレクトリとして呼出し対象の関数ファイルと同名の関数ファイルを検索し（図７Ｓ８）、図７Ｓ６の処理を繰り返す。
【００５０】
すなわち、逐次実行部１５は、呼出し対象の関数ファイルにディレクトリ名が付与されていない状態において、呼出し対象の関数ファイルと同名の関数ファイルがカレントディレクトリ内に存在する場合には、その関数ファイルを実行関数ファイルとする。一方、呼出し対象の関数ファイルと同名の関数ファイルがカレントディレクトリ内に存在しない場合には、上位ディレクトリを順次さかのぼって、呼出し対象の関数ファイルと同名の関数ファイル検索し、最初に発見された関数ファイルを実行関数ファイルとする。また、上位ディレクトリを順次さかのぼる際には、カレントディレクトリは変更されない。
【００５１】
そのため、プログラム開発者は、上位ディレクトリに属する関数ファイルを同一のディレクトリに存在する関数ファイルと同様に取り扱うことができる。したがって、同一階層の異なるディレクトリに属する関数ファイルから呼出される関数ファイルは、その階層の上位ディレクトリに１つ配置すれば、各々のディレクトリに配置する必要がなく、各々のディレクトリ内の関数ファイルの数を少なくすることができる。
【００５２】
また、呼出し対象の関数ファイルと同名の関数ファイルが、カレントディレクトリと、上位ディレクトリとに存在する場合、カレントディレクトリに属する関数ファイルは優先的に実行関数ファイルとなる。
そのため、上位ディレクトリに属する関数ファイルと類似性の高い処理を実現するが、一部の処理が異なる関数ファイルを、任意のディレクトリの属する関数ファイルから呼出す必要がある場合、プログラム開発者は、上位ディレクトリに属する関数ファイルを任意のディレクトリに複写し、その関数ファイルの一部を修正して呼出し対象の関数ファイルとすれば良い。このとき、名称を変更する必要はない。
【００５３】
以下、図８を参照して、「呼出し側の関数ファイルへの復帰処理」を説明する。
まず、逐次実行部１５は、呼出し側の関数ファイルが上位のディレクトリに属するか否かを判定する（図８Ｓ１）。
なお、呼出し側の関数ファイルが上位のディレクトリに属する場合、上述した「関数ファイルの呼出し処理」において、上位ディレクトリに属する関数ファイルから、下位ディレクトリに属する関数ファイルが呼出されたことになり、下位ディレクトリに属するＡＵＴＯＥＸＥＣファイルに記載された命令が実行された可能性がある。
【００５４】
そこで、逐次実行部１５は、呼出し側の関数ファイルが上位のディレクトリに属する場合、実行関数ファイルが属するディレクトリにＡＵＴＯＥＸＥＣファイルが存在するか否かを判定する（図８Ｓ２）。そして、実行関数ファイルが属するディレクトリにＡＵＴＯＥＸＥＣファイルが存在する場合には、ＡＵＴＯＥＸＥＣファイルの内容に対応する命令の後処理を行う（図８Ｓ３）。
【００５５】
例えば、このような後処理としては、ディレクトリに固有の変数メモリ領域の破棄やデータベースやファイルのクローズなどがある。
次に、逐次実行部１５は、呼出し側の関数ファイルが属するディレクトリをカレントディレクトリとし、呼出し側の関数ファイルを実行関数ファイルとし、呼出し位置に復帰する（図８Ｓ４）。
【００５６】
一方、逐次実行部１５は、呼出し側の関数ファイルが上位のディレクトリに属さない場合、呼出し側の関数ファイルを実行関数ファイルとし、呼出し位置に復帰する（図８Ｓ５）。
以上説明したように、本実施形態のプログラム開発システム１０では、プログラム開発者によって作成されたプログラムを、オペレーティングシステムに依存しないＡＣＬファイルに展開し、逐次実行部１５によって実行できる。
【００５７】
したがって、本実施形態のプログラム開発システム１０によって生成されるプログラムを、異なるオペレーティングシステムが搭載されたパーソナルコンピュータ上で実行するには、逐次実行部１５の移植作業を行うだけで良い。すなわち、本実施形態のプログラム開発システム１０によれば、異なるオペレーティングシステム間でのプログラムの共用性や可搬性を確実に向上できる。
【００５８】
また、本実施形態のプログラム開発システム１０では、複数の関数が１つのファイルに記載されることがなく、単一の関数が記載された関数ファイルをディレクトリによって階層的に配置することができる。
そのため、従来の構造化プログラミング言語によるプログラム開発で発生していた問題が解消でき、プログラムの開発時や保守時の効率が向上する。また、一般に、オブジェクト指向言語による開発が不向きとされているビジネスアプリケーションプログラム（例えば、上述した伝票処理プログラムなど）の開発を、効率良く行うことができる。さらに、逐次実行部１５による「関数ファイルの呼出し処理」や「呼出し側の関数ファイルへの復帰処理」によって、構造化プログラミング言語でありながら、オブジェクト指向言語におけるコンストラクト、デストラクト、オーバーライドと類似の機能を実現できる。
【００５９】
なお、本実施形態のプログラム開発システム１０では、ＡＣＬファイル生成部１４で生成されるＡＣＬファイルを、オブジェクト指向のクラスライブラリとすることができ、そのクラスライブラリからインスタンスを生成・実行することも可能である。
ところで、本実施形態のプログラム開発システム１０では、ディレクトリ集合部１３に配置されているプログラムであれば、部分的に完成したプログラミングであっても、ＡＣＬファイルに展開し逐次実行部１５で実行できる。すなわち、本実施形態のプログラム開発システム１０によれば、プログラム開発者は、実際の実行環境と同一の環境でデバッグを行うことができる。
【００６０】
また、本実施形態のプログラム開発システム１０では、逐次実行部１５が起動されると、自動的にコンパイルが行われるため、プログラム開発者は、ディレクトリ集合部１３内のプログラムの修正と逐次実行部１５の起動とを繰り返すことによって、効率良くデバッグを行うことができる。
さらに、本実施形態のプログラム開発システム１０では、一旦、ＡＣＬファイルが作成されてしまえば、そのＡＣＬファイル上に仮想的に構築されたディレクトリに基づいてプログラムが実行されるため、その間にディレクトリ集合部１３内のプログラムが変更されたとしても、プログラムの実行に影響が及ばない。
【００６１】
【発明の効果】
以上説明したように、請求項１、請求項４、請求項５に記載の発明によれば、異なるオペレーティングシステム間でのプログラムの共用性や可搬性を向上させることができ、請求項２、請求項3および請求項６に記載の発明によれば、プログラムの開発および保守を効率良く行うことができる。
【図面の簡単な説明】
【図１】プログラム開発システムの機能ブロック図である。
【図２】ディレクトリの構造例を示す図である。
【図３】関数ファイルの記述例を示す図（１）である。
【図４】は、関数ファイルの記述例を示す図（２）である。
【図５】逐次実行部の動作フローチャート（１）である。
【図６】逐次実行部の動作フローチャート（２）である。
【図７】逐次実行部の動作フローチャート（３）である。
【図８】逐次実行部の動作フローチャート（４）である。
【図９】ＡＣＬファイル生成部の動作フローチャートである。
【図１０】ＡＣＬファイルのデータ構造を示す図
【符号の説明】
１０  プログラム開発システム
１１  インタフェース部
１２  プログラム作成支援部
１３  ディレクトリ集合部
１４  ＡＣＬファイル生成部
【図１】
0004601144.tif 000002
【図２】
0004601144.tif 000003
【図３】
0004601144.tif 000004
【図４】
0004601144.tif 000005
【図５】
0004601144.tif 000006
【図６】
0004601144.tif 000007
【図７】
0004601144.tif 000008
【図８】
0004601144.tif 000009
【図９】
0004601144.tif 000010
【図１０】
0004601144.tif 000011