JP4601144B2 - プログラム開発システム、記録媒体および方法 - Google Patents
プログラム開発システム、記録媒体および方法 Download PDFInfo
- Publication number
- JP4601144B2 JP4601144B2 JP2000290796A JP2000290796A JP4601144B2 JP 4601144 B2 JP4601144 B2 JP 4601144B2 JP 2000290796 A JP2000290796 A JP 2000290796A JP 2000290796 A JP2000290796 A JP 2000290796A JP 4601144 B2 JP4601144 B2 JP 4601144B2
- Authority
- JP
- Japan
- Prior art keywords
- function
- file
- directory
- acl
- called
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、プログラムを開発するためのプログラム開発方法と、プログラム開発用のプログラムを記録した記録媒体と、プログラムを開発するためのプログラム開発システムとに関する。
【0002】
【従来の技術】
従来から行われているプログラム開発では、1つのプログラムが複数に分割された状態で作成され、ファイルとして格納される。
【0003】
例えば、構造化プログラミング言語によるプログラム開発では、関連する複数の関数から成るファイルが多数作成され、ファイル間での関数呼出し等によって所望の情報処理が実現される。
このようなプログラム開発では、開発規模が大きくなると、プログラムを構成するファイルの数が多くなって、呼出しの対象となる関数を含むファイルをプログラム開発者が識別することが難しくなる。そのため、各々のファイルをディレクトリによって階層的に配置して管理する手法がとられている。
【0004】
一般に、このようなファイルの管理は、既存のオペレーティングシステムによるファイル管理処理によって実現されている。
【0005】
【発明が解決しようとする課題】
しかし、このようなファイル管理処理は、オペレーティングシステムの違いによって異なることが多い。例えば、代表的なオペレーティングシステムであるWindows(マイクロソフト社の登録商標である)と、UNIX(AT&T社の登録商標である)とでは、ディレクトリの区切り記号や、標準的に使われる文字コードが異なる。
【0006】
したがって、ディレクトリを示す情報を含むプログラムは、異なるオペレーティングシステム間での共用性や可搬性が損なわれることになる。
そのため、従来のプログラム開発では、同一の情報処理を実現するプログラムを、オペレーティングシステム毎に個別に開発する必要があった。
また、従来の構造化プログラミングによるプログラム開発では、1つのファイルに複数の関数を記述することが慣例であるが、このような記述は、以下のような問題を発生させ、プログラムの開発時や保守時の効率を低下させる原因となる。
【0007】
・任意のファイル中の特定の関数を再配置するには、そのファイルから対象となる関数部分を抽出して別のファィルに書き加える操作が必要であり、操作ミスが発生し易い。
・プログラム開発者が既存のファイル管理ツールなどでディレクトリ内を見ただけでは、どのファイル内に必要な関数が含まれているのか判断し難い。
【0008】
・任意の関数と他のファイルに存在する関数との相関関係に関わる情報が複数箇所に分散されてしまうため、人為的ミスが発生し易い。
なお、このような問題を回避するため、1つのファイルに1つの関数を記述する決まりを作ったとしても、プログラミング言語の規則では、1つのファイルに複数の関数を記述する形式が許されているので、プログラム開発者が、このような形式を安易に用いてしまう可能性がある。また、関数名をファイル名と同一にする決まりを作ったとしても、関数にファイル名と異なる名称を付与することは、プログラミング言語の規則として許されているので、関数名とファイル名とが異なることによる不具合を誘発し易い。
【0009】
そこで、本発明は、異なるオペレーティングシステム間でのプログラムの共用性や可搬性を向上させることができると共に、プログラムの開発および保守を効率良く行うことができるプログラム開発方法、プログラム開発用のプログラムを記録した記録媒体およびプログラム開発システムを提供することを目的とする。
【0010】
【課題を解決するための手段】
請求項1に記載のプログラム開発システムは、関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、索引部と実データ部を少なくとも有するファイルであるACLファイルを生成するACLファイル生成部と、前記実データ部の命令を実行する逐次実行部を少なくとも備え、1つの前記関数ファイルには1つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、前記ACLファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ACLファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ACLファイルの前記索引部として生成するものであり、前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始するものであることを特徴とする。
【0011】
請求項2に記載のプログラム開発システムは、請求項1に記載のプログラム開発システムにおいて、前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行するものであり、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索するものであることを特徴とする。
【0012】
また、請求項1に記載のプログラム開発システムにおいて、前記ACLファイルを用いたプログラムの実行中に、前記ディレクトリ集合部に含まれる関数ファイルに相当するプログラムの変更を許可することもできる。
また、請求項1に記載のプログラム開発システムにおいて、前記ディレクトリ集合部内の任意のディレクトリ以下に対応する仮想的なディレクトリ構造を、前記ACLファイル内の仮想的なディレクトリの任意のディレクトリの位置に割り当てることもできる。
【0013】
請求項3に記載のプログラム開発システムは、請求項2に記載のプログラム開発システムにおいて、前記逐次実行部は、実行する前記命令によって他の関数をディレクトリの指定を伴って呼び出す際に、指定されたディレクトリに、当該ディレクトリに属する各関数ファイルの実行環境を整えるための初期設定命令の記述を含む自動実行ファイルがある場合に、前記他の関数が記述された関数ファイルの呼び出しに先立って前記初期設定命令を実行し、実行する前記命令によって他の関数をディレクトリの指定を伴わずに呼び出す際に、前記他の関数が上位ディレクトリから検索され、かつ、カレントディレクトリに前記自動実行ファイルが含まれる場合に、前記上位ディレクトリへカレントディレクトリを移動させるのに先立って、前記自動実行ファイルに記述された初期設定命令で整えられた実行環境を解消する後処理を実行するものであることを特徴とする。
【0014】
また、請求項1に記載のプログラム開発システムにおいて、異なるディレクトリに同一名称のファイルの配置を許可することもできる。
請求項4に記載のコンピュータ読み取り可能な記録媒体は、コンピュータを、請求項1又は2に記載されたプログラム開発システムとして機能させるためのプログラムを記録したことを特徴とする。
【0015】
請求項5に記載の方法は、関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、索引部と実データ部を少なくとも有するファイルであるACLファイルを生成するACLファイル生成部と、前記実データ部の命令を実行する逐次実行部を少なくとも備えたプログラム開発システムにおける方法であって、1つの前記関数ファイルには1つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、前記ACLファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ACLファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ACLファイルの前記索引部として生成し、前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始することを特徴とする。
請求項6に記載の方法は、請求項5に記載された方法において、前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行し、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索することを特徴とする。
【0016】
【発明の実施の形態】
以下、図面に基づいて、本発明の実施形態について詳細を説明する。
図1は、本発明の実施形態に対応するプログラム開発システムの機能ブロック図である。
図1において、プログラム開発システム10は、プログラム開発者とのインタフェースを実現するインタフェース部11(例えば、GUI:Graphical User Interfaceなど)と、インタフェース部11と連携してプログラム開発者によるプログラムの作成を支援するプログラム作成支援部12(例えば、エディタなど)と、プログラム開発者によって作成されたプログラムに相当する複数のファイル(後述する「関数ファイル」)がディレクトリによって階層的に配置されて成るディレクトリ集合部13と、ディレクトリ集合部13内のディレクトリの構造や各関数ファイルに対応するプログラムに基づき、後述する「ACLファイル」を生成するACLファイル生成部14と、ACLファイル生成部14を起動すると共に、ACLファイル生成部14によって生成されたACLファイルを逐次解釈して、プログラム開発者によって作成されたプログラムをインタフェース部11と連携しつつ実行する逐次実行部15とから構成される。
【0017】
本実施形態のプログラム開発システム10に適用されるプログラミング言語は、プログラムを複数の関数の集まりとして記述することが可能な構造化プログラミング言語であり、既存の構造化プログラミング言語と同様に、静的変数や動的変数を用いることができる。
また、既存の構造化プログラミング言語との相違点は、1つの関数を1つのファイル(以下、「関数ファイル」と称する)に記述して関数名とファイル名とを等しい物として扱う規則を設けている点や、関数ファイルをディレクトリによって階層的に配置することで各々の関数の関連付けを実現する点などである。
【0018】
なお、関数名とファイル名とを等しい物として扱う規則としては、1つの関数ファイルに1つの関数を記述する規則だけでなく、関数ファイル内での関数名の記載を禁止する規則が挙げられる。このような規則によれば、1つの関数ファイルに複数の関数が記述されることがなく、関数ファイル名と異なる名称が関数に付与されることもない。
【0019】
また、本実施形態のプログラム開発システム10に適用されるプログラミング言語では、任意の関数ファイルから、下位ディレクトリ内の関数ファイルを呼出す命令は、ディレクトリ名に「.」と関数ファイル名と「()」とを連結する形で記載し、上位ディレクトリ内の関数ファイルを呼出す命令は、ディレクトリ名を付与せず、関数ファイル名と「()」とを連結する形で記載するものとする。なお、このとき、関数ファイル名は、拡張子を含まない文字列(大文字と小文字は区別されない)で記載するものとする。
【0020】
図2は、ディレクトリ集合部13におけるディレクトリの構造例を示す図である。
なお、図2は、メニュー表示を行ってユーザからの指示を受け付けて、その指示に応じて商品の受注伝票や納品書の入力処理や請求書の発行処理などを実現する伝票処理プログラムの作成時に生成されるディレクトリの構造を示している。
【0021】
図2では、ディレクトリ集合部13におけるディレクトリ間の関係を示すと共に、各々のディレクトリに属する関数ファイルやデータファイル(場合によっては、AUTOEXECファイル)を示している。また、図2では、各々のディレクトリ内の関数ファイルから呼出される関数ファイル(場合によっては、データファイル)を示している。
【0022】
図3、図4は、関数ファイルの記述例を示す図である。
図3では、図2に示したTOPディレクトリに属する関数ファイル:MAIN.SRCの記述例を示し、図4では、TOPディレクトリの下位のディレクトリである受注ディレクトリに属する関数ファイル:MAIN.SRCの記述例を示している。
【0023】
図3に示す関数ファイルは、伝票処理の一環として、受注処理、出荷処理、請求処理、業務終了の何れかの選択をユーザに促すメニュー表示を行い、ユーザからの選択の指示を受け付けると共に、受注処理、出荷処理、請求処理の何れかが選択された場合、下位のディレクトリに属する関数ファイルから、ユーザの指示に対応する関数ファイルの呼出しを行う。
【0024】
また、図4に示す関数ファイルは、このような処理の過程で、ユーザによって受注処理が選択された場合に呼出され、伝票入力、受注日計表印刷、戻るの何れかの選択をユーザに促すメニュー表示を行い、ユーザからの選択の指示を受け付ける。そして、伝票入力、受注日計表印刷の何れかが選択された場合、下位のディレクトリに属する関数ファイルから、ユーザの指示に対応する関数ファイルの呼出しを行う。
【0025】
このように、本実施形態のプログラム開発システム10では、伝票処理のように、階層的な構造でモデル化することが可能な処理に対するプログラムを開発する場合、プログラム開発者は、その構造に基づいてディレクトリを構築し、各々のディレクトリに属する関数ファイル(場合によっては、データファイル)を作成すれば良く、各々の関数を関連付けるためのファイルを別途作成する必要がない。
【0026】
ところで、本実施形態のプログラム開発システム10は、既存のオペレーティングシステムが搭載されたパーソナルコンピュータなどで実現されるシステムであり、上述したプログラミング言語によるプログラムの作成を実現するインタフェース部11やプログラム作成支援部12は、このようなオペレーティングシステムのもとで、従来のプログラム開発システムと同様に動作する。
【0027】
そのため、本実施形態では、インタフェース部11およびプログラム作成支援部12の動作の説明は省略し、プログラム開発者によって作成されたプログラムが関数ファイルとしてディレクトリ集合部13内に配置された状態において、逐次実行部15およびACLファイル生成部14の動作の説明を行う。
なお、逐次実行部15およびACLファイル生成部14は、後述する動作を実現するプログラムに相当し、そのプログラムは、CD−ROMなどの記録媒体からダウンロードされ、逐次実行ディレクトリにファイルとして格納される。また、逐次実行部15は、インタフェース部11を介し、プログラム開発者の指示によって起動されるものとする。
【0028】
図5〜図8は、逐次実行部15の動作フローチャートである。
図9は、ACLファイル生成部14の動作フローチャートである。
以下、図5〜図9を参照して、逐次実行部15およびACLファイル生成部14の動作を説明する。
まず、逐次実行部15は、プログラム開発者の指示によって起動されると、逐次実行部ディレクトリにAUTOEXECファイルが存在するか否かを判定し(図5S1)、逐次実行部ディレクトリにAUTOEXECファイルが存在する場合、AUTOEXECファイルの内容を1行毎に順次評価する(図5S2)。
【0029】
逐次実行部15は、このようにして評価した内容がACLファイルを生成する命令であるか否かを判定する(図5S3)。そして、逐次実行部15は、その内容がACLファイルを生成する命令である場合、ACLファイル生成部14を起動し(図5S4)、その内容がACLファイルを生成する以外の命令である場合、その命令を即時実行する(図5S5)。
【0030】
なお、ACLファイルを生成する命令には、ディレクトリ集合部13内のディレクトリを指定するパラメタが設けられているものとし、ACLファイル生成部では、そのパラメタによって指定されたディレクトリ以下を対象としてACLファイルが生成され、そのACLファイルには、パラメタによって指定されたディレクトリの名称に拡張子:ACLを付加したファイル名が付与される。そのため、逐次実行部15は、ACLファイル生成部14の起動時に、このようなパラメタによって指定されたディレクトリの名称をACLファイル生成部14に通知するものとする。
【0031】
次に、逐次実行部15は、AUTOEXECファイルの全ての行に対応する命令の実行が完了したか否かを判定し(図5S6)、未実行の命令が存在する場合、図5S2以降の処理を繰り返し行う。
一方、逐次実行部15は、AUTOEXECファイルの全ての行に対応する命令の実行が完了した場合、ACLファイル生成部14によって生成されるACLファイルに基づき、後述する「関数ファイル実行処理」を行う(図5S7)。
【0032】
ここで、図9を参照して、ACLファイル生成部14の動作を説明する。
まず、ACLファイル生成部14は、逐次実行部15によって起動されると、逐次実行部15から通知されたディレクトリの名称に対応するACLファイルが既に存在するか否かを判定し(図9S1)、そのACLファイルが既に存在する場合、ACLファイルの作成日時やディレクトリ集合部13内の関数ファイルの作成日時などを参照し、ACLファイルの生成後に関数ファイルの追加・削除・更新が行われた否かを判定する(図9S2)。
【0033】
そして、ACLファイル生成部14は、逐次実行部15によって通知されたディレクトリ名に対応するACLファイルが存在しない場合、または、このようなACLファイルが既に存在するが、そのACLファイルの生成後に関数ファイルの追加・削除・更新が行われた場合、ACLファイルの生成を開始する。
すなわち、逐次実行部15によって通知されたディレクトリ名に対応するACLファイルが既に存在して、そのACLファイルの生成後に関数ファイルの追加・削除・更新が行われていない場合には、ACLファイルの生成は行われない。なお、逐次実行部15によって通知されたディレクトリがディレクトリ集合部13内に存在しない場合にも、ACLファイルの生成は行われないものとする。
【0034】
以下、ACLファイル生成部14によるACLファイルの生成処理を説明する。
まず、ACLファイル生成部14は、ディレクトリ集合部13から、逐次実行部15によって通知された名称に対応するディレクトリを検索し、そのディレクトリ以下の構造を示す情報と、各関数ファイルに対応するプログラム(場合によっては、データファイルに対応する文字列)とを取得する(図9S3)と共に、関数ファイル(場合によっては、データファイル)内の文字コードの種類を取得する(図9S4)。
【0035】
次に、ACLファイル生成部14は、図9S4において取得した文字コードの種類に対応する文字コード変換処理を行う(図9S5)。すなわち、ディレクトリ集合部13内のディレクトリの構造を示す情報や、関数ファイルに対応するプログラム(場合によっては、データファイルに対応する文字列)を、ACLファイル生成部14で認識できる文字コードに変換する。
【0036】
そして、ACLファイル生成部14は、このようにして変換した各関数ファイルに対応するプログラムをコンパイルして中間コードを生成する(図9S6)。
最後に、ACLファイル生成部14は、図9S4において取得した文字コードの種類を示す文字コード指定部と、各関数ファイルに対応する中間コード(場合によっては、データファイルに対応するデータ列)から成る複数の実データ部と、各実データ部のポインタを関数ファイルの名称(場合によっては、データファイルの名称)に対応付けてディレクトリの階層的構造に応じて配置した索引部とから成るACLファイルを生成する(図9S7)。
【0037】
図10は、このようにして生成されるACLファイルのデータ構造を示す図である。
すなわち、ACLファイル生成部14によって生成されるACLファイルでは、ディレクトリ集合部13内のディレクトリ構造を、オペレーティングシステムに依存する文字を用いることなく、「BIGIN+ディレクトリ名」から始まり「END」により終わる再帰的なデータ構造で表すことができる。
【0038】
ところで、逐次実行部ディレクトリのAUTOEXECファイルに、ACLファイルを生成する命令が複数記載されている場合、ACLファイル生成部14は、繰り返し起動され、各々の命令に対応するACLファイルを生成することになる。
そのため、ACLファイル生成部14では、ディレクトリ集合部13内のルートディレクトリに対応するACLファイルと、ルートディレクトリ以外のディレクトリに対応するACLファイルとを生成することが可能である。なお、このようにして生成されたルートディレクトリ以外のディレクトリに対応するACLファイルは、関数ファイルに記載されている命令に基づき、逐次実行部15において、ルートディレクトリに対応するACLファイルの任意の位置に関係付けることが可能である(後述する図6S9の処理に相当する)。
【0039】
以下、図6〜図8を参照して、逐次実行部15による「関数ファイル実行処理」を説明する。ただし、以下の説明におけるディレクトリは、ACLファイル上に仮想的に構築されたディレクトリを示し、ディレクトリ集合部13内に構築されている実際のディレクトリではない。
まず、逐次実行部15は、ACLファイルの索引部の最初のディレクトリをカレントディレクトリとする(図6S1)。例えば、図2に示すような構造のディレクトリがディレクトリ集合部13内に構築されている状態でACLファイルが生成された場合、ACLファイルの索引部の最初のディレクトリは、図2のTOPディレクトリに対応することになる。
【0040】
そして、逐次実行部15は、カレントディレクトリにAUTOEXECファイルが存在するか否かを判定し(図6S2)、AUTOEXECファイルが存在する場合、AUTOEXECファイルの内容を1行ずつ評価して実行する(図6S3)。
次に、逐次実行部15は、ACLファイルの索引部14に基づき、カレントディレクトリの最初の関数ファイルを実行関数ファイル(実行権を与える関数ファイル)とする(図6S4)。例えば、図2に示すような構造のディレクトリがディレクトリ集合部13内に構築されている状態でACLファイルが生成された場合、カレントディレクトリの最初の関数ファイルは、図2のTOPディレクトリに属するMAIN.SRCに対応することになる。
【0041】
そして、逐次実行部15は、実行関数ファイルに対応する実データ部の命令を順次解読し(図6S5)、解読した内容が他の関数ファイルを呼出す命令であるか否かを判定する(図6S6)。
逐次実行部15は、解読した内容が他の関数ファイルを呼出す命令である場合、後述する「関数ファイル呼出し処理」を行い(図6S7)、図6S5以降の処理を繰り返し行う。
【0042】
一方、解読した命令が他の関数ファイルを呼出す以外の命令である場合、解読した内容が他のACLファイルを割り当てる命令であるか否かを判定する(図6S8)。そして、逐次実行部15は、解読した命令が他のACLファイルを割り当てる命令である場合、実行関数ファイルが属するACLファイルの所定の位置に他のACLファイルを割り当て(図6S9)、他のACLファイルを割り当てる以外の命令である場合、その命令を即時実行する(図6S10)。
【0043】
次に、逐次実行部15は、実行関数ファイルに対応する実データ部の全ての命令の実行が完了したか否かを判定し(図6S11)、未実行の命令が存在する場合、図6S5以降の処理を繰り返し行う。
【0044】
一方、逐次実行部15は、実行関数ファイルに対応する実データ部の全ての命令の実行が完了した場合、実行関数ファイルが他の関数ファイルから呼出されていたか否かを判定する(図6S12)。
そして、逐次実行部15は、実行関数ファイルが他の関数ファイルから呼出されていた場合、後述する「呼出し側の関数ファイルへの復帰処理」を行い(図6S13)、図6S5以降の処理を繰り返し行う。一方、実行関数ファイルが他の関数ファイルから呼出されていない場合、逐次実行部15は、「関数ファイル実行処理」を終了する。
【0045】
以下、図7を参照して、「関数ファイルの呼出し処理」を説明する。
まず、逐次実行部15は、呼出し対象の関数ファイルにディレクトリ名が付与されているか否かを判定する(図7S1)。
逐次実行部15は、呼出し対象の関数ファイルにディレクトリ名が付与されている場合、そのディレクトリ名に対応する下位ディレクトリにAUTOEXECファイルが存在するか否かを判定する(図7S2)。そして、AUTOEXECファイルが存在する場合には、AUTOEXECファイルの内容を1行ずつ評価して実行する(図7S3)。
【0046】
なお、AUTOEXECファイルには、そのAUTOEXECファイルが属するディレクトリ以下の実行に共通して必要な環境を整える命令が、プログラム開発者によって記載されている。例えば、カレントディレクトリ以下で共通に参照可能な変数や、カレントディレクトリ以下で使われるデータベースやファィルのオープン等が中心となる。
【0047】
次に、逐次実行部15は、呼出し対象の関数ファイルが属する下位ディレクトリをカレントディレクトリとし、呼出し対象の関数ファイルと同名の関数ファイルを実行関数ファイルとする(図7S4)。
【0048】
ただし、図7S3において、AUTOEXECファイルに記載された命令が正常に完了しなかった場合、逐次実行部15は、カレントディレクトリを変更せず、エラーを通知し、呼出し側の関数ファイルの呼出し位置に復帰するものとする。
一方、呼出し対象の関数ファイルにディレクトリ名が付与されていない場合、逐次実行部15は、カレントディレクトリを検索対象ディレクトリとして、呼出し対象の関数ファイルと同名の関数ファイルを検索する(図7S5)。
【0049】
そして、逐次実行部15は、検索対象ディレクトリに呼出し対象の関数ファイルと同名の関数ファイルが存在するか否かを判定する(図7S6)。
逐次実行部15は、検索対象ディレクトリに呼出し対象の関数ファイルと同名の関数ファイルが存在する場合、その関数ファイルを実行関数ファイルとする(図7S7)。一方、逐次実行部15は、検索対象ディレクトリに呼出し対象の関数ファイルと同名の関数ファイルが存在しない場合、上位ディレクトリを検索対象ディレクトリとして呼出し対象の関数ファイルと同名の関数ファイルを検索し(図7S8)、図7S6の処理を繰り返す。
【0050】
すなわち、逐次実行部15は、呼出し対象の関数ファイルにディレクトリ名が付与されていない状態において、呼出し対象の関数ファイルと同名の関数ファイルがカレントディレクトリ内に存在する場合には、その関数ファイルを実行関数ファイルとする。一方、呼出し対象の関数ファイルと同名の関数ファイルがカレントディレクトリ内に存在しない場合には、上位ディレクトリを順次さかのぼって、呼出し対象の関数ファイルと同名の関数ファイル検索し、最初に発見された関数ファイルを実行関数ファイルとする。また、上位ディレクトリを順次さかのぼる際には、カレントディレクトリは変更されない。
【0051】
そのため、プログラム開発者は、上位ディレクトリに属する関数ファイルを同一のディレクトリに存在する関数ファイルと同様に取り扱うことができる。したがって、同一階層の異なるディレクトリに属する関数ファイルから呼出される関数ファイルは、その階層の上位ディレクトリに1つ配置すれば、各々のディレクトリに配置する必要がなく、各々のディレクトリ内の関数ファイルの数を少なくすることができる。
【0052】
また、呼出し対象の関数ファイルと同名の関数ファイルが、カレントディレクトリと、上位ディレクトリとに存在する場合、カレントディレクトリに属する関数ファイルは優先的に実行関数ファイルとなる。
そのため、上位ディレクトリに属する関数ファイルと類似性の高い処理を実現するが、一部の処理が異なる関数ファイルを、任意のディレクトリの属する関数ファイルから呼出す必要がある場合、プログラム開発者は、上位ディレクトリに属する関数ファイルを任意のディレクトリに複写し、その関数ファイルの一部を修正して呼出し対象の関数ファイルとすれば良い。このとき、名称を変更する必要はない。
【0053】
以下、図8を参照して、「呼出し側の関数ファイルへの復帰処理」を説明する。
まず、逐次実行部15は、呼出し側の関数ファイルが上位のディレクトリに属するか否かを判定する(図8S1)。
なお、呼出し側の関数ファイルが上位のディレクトリに属する場合、上述した「関数ファイルの呼出し処理」において、上位ディレクトリに属する関数ファイルから、下位ディレクトリに属する関数ファイルが呼出されたことになり、下位ディレクトリに属するAUTOEXECファイルに記載された命令が実行された可能性がある。
【0054】
そこで、逐次実行部15は、呼出し側の関数ファイルが上位のディレクトリに属する場合、実行関数ファイルが属するディレクトリにAUTOEXECファイルが存在するか否かを判定する(図8S2)。そして、実行関数ファイルが属するディレクトリにAUTOEXECファイルが存在する場合には、AUTOEXECファイルの内容に対応する命令の後処理を行う(図8S3)。
【0055】
例えば、このような後処理としては、ディレクトリに固有の変数メモリ領域の破棄やデータベースやファイルのクローズなどがある。
次に、逐次実行部15は、呼出し側の関数ファイルが属するディレクトリをカレントディレクトリとし、呼出し側の関数ファイルを実行関数ファイルとし、呼出し位置に復帰する(図8S4)。
【0056】
一方、逐次実行部15は、呼出し側の関数ファイルが上位のディレクトリに属さない場合、呼出し側の関数ファイルを実行関数ファイルとし、呼出し位置に復帰する(図8S5)。
以上説明したように、本実施形態のプログラム開発システム10では、プログラム開発者によって作成されたプログラムを、オペレーティングシステムに依存しないACLファイルに展開し、逐次実行部15によって実行できる。
【0057】
したがって、本実施形態のプログラム開発システム10によって生成されるプログラムを、異なるオペレーティングシステムが搭載されたパーソナルコンピュータ上で実行するには、逐次実行部15の移植作業を行うだけで良い。すなわち、本実施形態のプログラム開発システム10によれば、異なるオペレーティングシステム間でのプログラムの共用性や可搬性を確実に向上できる。
【0058】
また、本実施形態のプログラム開発システム10では、複数の関数が1つのファイルに記載されることがなく、単一の関数が記載された関数ファイルをディレクトリによって階層的に配置することができる。
そのため、従来の構造化プログラミング言語によるプログラム開発で発生していた問題が解消でき、プログラムの開発時や保守時の効率が向上する。また、一般に、オブジェクト指向言語による開発が不向きとされているビジネスアプリケーションプログラム(例えば、上述した伝票処理プログラムなど)の開発を、効率良く行うことができる。さらに、逐次実行部15による「関数ファイルの呼出し処理」や「呼出し側の関数ファイルへの復帰処理」によって、構造化プログラミング言語でありながら、オブジェクト指向言語におけるコンストラクト、デストラクト、オーバーライドと類似の機能を実現できる。
【0059】
なお、本実施形態のプログラム開発システム10では、ACLファイル生成部14で生成されるACLファイルを、オブジェクト指向のクラスライブラリとすることができ、そのクラスライブラリからインスタンスを生成・実行することも可能である。
ところで、本実施形態のプログラム開発システム10では、ディレクトリ集合部13に配置されているプログラムであれば、部分的に完成したプログラミングであっても、ACLファイルに展開し逐次実行部15で実行できる。すなわち、本実施形態のプログラム開発システム10によれば、プログラム開発者は、実際の実行環境と同一の環境でデバッグを行うことができる。
【0060】
また、本実施形態のプログラム開発システム10では、逐次実行部15が起動されると、自動的にコンパイルが行われるため、プログラム開発者は、ディレクトリ集合部13内のプログラムの修正と逐次実行部15の起動とを繰り返すことによって、効率良くデバッグを行うことができる。
さらに、本実施形態のプログラム開発システム10では、一旦、ACLファイルが作成されてしまえば、そのACLファイル上に仮想的に構築されたディレクトリに基づいてプログラムが実行されるため、その間にディレクトリ集合部13内のプログラムが変更されたとしても、プログラムの実行に影響が及ばない。
【0061】
【発明の効果】
以上説明したように、請求項1、請求項4、請求項5に記載の発明によれば、異なるオペレーティングシステム間でのプログラムの共用性や可搬性を向上させることができ、請求項2、請求項3および請求項6に記載の発明によれば、プログラムの開発および保守を効率良く行うことができる。
【図面の簡単な説明】
【図1】プログラム開発システムの機能ブロック図である。
【図2】ディレクトリの構造例を示す図である。
【図3】関数ファイルの記述例を示す図(1)である。
【図4】は、関数ファイルの記述例を示す図(2)である。
【図5】逐次実行部の動作フローチャート(1)である。
【図6】逐次実行部の動作フローチャート(2)である。
【図7】逐次実行部の動作フローチャート(3)である。
【図8】逐次実行部の動作フローチャート(4)である。
【図9】ACLファイル生成部の動作フローチャートである。
【図10】ACLファイルのデータ構造を示す図
【符号の説明】
10 プログラム開発システム
11 インタフェース部
12 プログラム作成支援部
13 ディレクトリ集合部
14 ACLファイル生成部
Claims (6)
- 関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、
索引部と実データ部を少なくとも有するファイルであるACLファイルを生成するACLファイル生成部と、
前記実データ部の命令を実行する逐次実行部を少なくとも備え、
1つの前記関数ファイルには1つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、
前記ACLファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ACLファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ACLファイルの前記索引部として生成するものであり、
前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始するものであることを特徴とするプログラム開発システム。 - 前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行するものであり、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索するものであることを特徴とする、請求項1に記載されたプログラム開発システム。
- 前記逐次実行部は、実行する前記命令によって他の関数をディレクトリの指定を伴って呼び出す際に、指定されたディレクトリに、当該ディレクトリに属する各関数ファイルの実行環境を整えるための初期設定命令の記述を含む自動実行ファイルがある場合に、前記他の関数が記述された関数ファイルの呼び出しに先立って前記初期設定命令を実行し、実行する前記命令によって他の関数をディレクトリの指定を伴わずに呼び出す際に、前記他の関数が上位ディレクトリから検索され、かつ、カレントディレクトリに前記自動実行ファイルが含まれる場合に、前記上位ディレクトリへカレントディレクトリを移動させるのに先立って、前記自動実行ファイルに記述された初期設定命令で整えられた実行環境を解消する後処理を実行するものである
ことを特徴とする請求項2に記載のプログラム開発システム。 - コンピュータを、請求項1又は2に記載されたプログラム開発システムとして機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
- 関数ファイルを少なくとも有する複数のディレクトリを階層的に記憶したディレクトリ集合部と、
索引部と実データ部を少なくとも有するファイルであるACLファイルを生成するACLファイル生成部と、
前記実データ部の命令を実行する逐次実行部を少なくとも備えたプログラム開発システムにおける方法であって、
1つの前記関数ファイルには1つの関数が記述され、前記関数の名称が前記関数ファイルの名称とされており、
前記ACLファイル生成部は、前記関数ファイルに記述された関数をコンパイルして生成した命令を前記ACLファイルの前記実データ部として生成するとともに、前記ディレクトリに属する前記関数ファイルの名称及び前記実データ部へのポインタを前記ディレクトリ集合部の階層構造に従って配置したデータ構造を前記ACLファイルの前記索引部として生成し、
前記逐次実行部は、所定の関数に対応する前記実データ部へのポインタを前記索引部から取得して前記実データ部の命令を実行する処理を、カレントディレクトリの最初の関数から開始することを特徴とする方法。 - 前記逐次実行部は、実行する前記命令によって他の関数を呼び出す場合において、呼び出される関数が属するディレクトリが指定されているときは、当該指定されたディレクトリをカレントディレクトリにした上で、前記呼び出された関数に対応する命令を実行し、呼び出される関数が属するディレクトリが指定されておらず、かつ、前記呼び出される関数がカレントディレクトリに存在しないときは、前記カレントディレクトリを更新せずに、前記呼び出される関数の名称で上位ディレクトリを順次検索することを特徴とする、請求項5に記載された方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000290796A JP4601144B2 (ja) | 2000-09-25 | 2000-09-25 | プログラム開発システム、記録媒体および方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000290796A JP4601144B2 (ja) | 2000-09-25 | 2000-09-25 | プログラム開発システム、記録媒体および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002099414A JP2002099414A (ja) | 2002-04-05 |
JP4601144B2 true JP4601144B2 (ja) | 2010-12-22 |
Family
ID=18773968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000290796A Expired - Fee Related JP4601144B2 (ja) | 2000-09-25 | 2000-09-25 | プログラム開発システム、記録媒体および方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4601144B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4902574B2 (ja) * | 2008-02-25 | 2012-03-21 | 日本電信電話株式会社 | フォルダ割当プログラム実行制御装置、フォルダ割当プログラム実行制御方法、そのプログラムおよび記憶媒体 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04299434A (ja) * | 1991-03-27 | 1992-10-22 | Toshiba Corp | ファイル管理機構 |
JPH07200477A (ja) * | 1993-12-28 | 1995-08-04 | Fuji Xerox Co Ltd | 電子ファイリング装置およびそのファイル処理方法 |
JPH0981430A (ja) * | 1995-09-05 | 1997-03-28 | Internatl Business Mach Corp <Ibm> | ファイル・システム |
JPH11212774A (ja) * | 1998-01-23 | 1999-08-06 | Fujitsu Ltd | アプリケーション管理方法、及び、それを用いた情報処理装置 |
-
2000
- 2000-09-25 JP JP2000290796A patent/JP4601144B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04299434A (ja) * | 1991-03-27 | 1992-10-22 | Toshiba Corp | ファイル管理機構 |
JPH07200477A (ja) * | 1993-12-28 | 1995-08-04 | Fuji Xerox Co Ltd | 電子ファイリング装置およびそのファイル処理方法 |
JPH0981430A (ja) * | 1995-09-05 | 1997-03-28 | Internatl Business Mach Corp <Ibm> | ファイル・システム |
JPH11212774A (ja) * | 1998-01-23 | 1999-08-06 | Fujitsu Ltd | アプリケーション管理方法、及び、それを用いた情報処理装置 |
Also Published As
Publication number | Publication date |
---|---|
JP2002099414A (ja) | 2002-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4058118B2 (ja) | プログラム生成システム及び方法 | |
CN101334728B (zh) | 一种基于xml文档描述的界面生成方法和装置 | |
US9021419B2 (en) | System and method for supporting intelligent design pattern automation | |
JPH05197697A (ja) | ソフトウエア・システム構築装置及び方法 | |
JPH09212352A (ja) | プログラム開発支援システム | |
US6518979B1 (en) | Automatically-maintained customizable user interfaces | |
US5781905A (en) | Program generating method combining data item part with database manipulation part | |
CN113934429A (zh) | 一种设计稿的转换方法、装置、计算机设备和存储介质 | |
JP2001296996A (ja) | コンポーネントの自動生成装置および表現方法 | |
JP4601144B2 (ja) | プログラム開発システム、記録媒体および方法 | |
Mittelbach et al. | The docstrip program | |
CN112181483B (zh) | 等离子体控制系统软件开发平台及方法 | |
JPH064280A (ja) | ウィズィウィグ式エディターでオブジェクトをユーザ制御する機能を備えたグラフィカル・ユーザ・インターフェース | |
JP2007226685A (ja) | アプリケーションメンテナンス支援装置、アプリケーション生成装置、アプリケーションメンテナンス支援方法、およびコンピュータプログラム | |
JP4971096B2 (ja) | コーディング支援装置 | |
JP2001273125A (ja) | ソースプログラム自動生成方法およびシステム、ならびにそのプログラム記録媒体 | |
JPH06110733A (ja) | プログラムのテストケース生成装置 | |
JPH0683594A (ja) | ウィズィウィグ式エディターとコンパイラーとを統合したグラフィカル・ユーザ・インターフェース | |
JP7417462B2 (ja) | パッケージ生成装置、パッケージ管理システム及びパッケージ生成方法 | |
JP2002268882A (ja) | Webアプリケーションシステム、及びプログラム | |
JPH0954688A (ja) | Gui設計支援方法 | |
JP2000020294A (ja) | プログラム開発支援装置、及びコンピュータ読み取り可能な記録媒体 | |
JPH0895775A (ja) | プログラム作成編集装置 | |
JP4971095B2 (ja) | コーディング支援装置 | |
JPH04184627A (ja) | プログラム合成システムのインタフェース方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070223 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090903 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090915 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091116 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100907 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100928 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131008 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |