(57)【特許請求の範囲】
【請求項１】
メインプログラムの実行の際に複数の個別サブプログラムを統合するように構成されたコンピュータシステム内の上記メインプログラムに上記複数の個別サブプログラムを統合する方法であって、上記複数の個別サブプログラムの各々が、各々の複数のサブプログラムコマンドを実行するための複数の導入可能コマンドを備え、応答し、且つ、上記コンピュータシステム内の上記メインプログラムが複数の事象コマンドを実行するため複数事象に応答するものにおいて、
（ａ）  上記メインプログラムの実行の際に関連して、所定のディレクトリ内の上記複数の個別サブプログラムの各々に対してディレクトリポインタを格納するステップ、上記ディレクトリポインタの各々は上記複数の個別サブプログラムの予め定められた一個を識別し、
（ｂ）  上記メインプログラムの実行の際に関連して、上記複数の個別サブプログラムの各々を識別するために、上記コンピュータシステム内の上記メインプログラムの初期設定時に上記ディレクトリポインタを経由して上記所定のディレクトリを読み取るステップ、
（ｃ）  上記メインプログラムの実行の際に関連して、上記識別された複数の個別サブプログラムにアクセスするためのサブプログラム記述リストを生成して維持するステップ、上記サブプログラム記述リストは上記複数の個別サブプログラムの各々に対してサブプログラム記述エントリを有し、各々の上記サブプログラム記述エントリは上記個別サブプログラムの識別と、上記個別サブプログラムを格納する上記コンピュータシステム内の記憶場所とを備えており、
（ｄ）  上記メインプログラムの実行の際に関連して、上記識別された複数の個別サブプログラムの各々を参照するための導入可能コマンド参照リストを生成して維持するステップ、上記導入可能コマンド参照リストは上記複数の個別サブプログラムの各々に含まれる複数の導入可能コマンドの各々に対して導入可能コマンド参照エントリを含み、各々の上記導入可能コマンド参照エントリは導入可能コマンドと、該導入可能コマンドに応答する上記複数のサブプログラムのうちの特定の１個を有しており、
（ｅ）  上記メインプログラムの実行の際に関連して、特定の事象に応答して上記コンピュータシステム内の上記メインプログラムにより実行されるコマンドを決定するための事象参照リストを作成して維持するステップ、上記事象参照リストは上記コンピュータシステム内の上記メインプログラムが応答している上記複数事象の各々に対して事象エントリを含んでおり、各々の上記事象エントリは上記コンピュータシステム内の上記メインプログラムにより実行される上記コマンドを決定するためのコマンド識別情報を有し、且つ少なくとも一つの上記事象エントリは上記複数の導入可能コマンドの各々の１個を識別するためのコマンド識別情報を含んでおり、及び
（ｆ）  一つの事象の選択の後、上記事象参照リストを参照して該事象に対応する上記事象エントリが導入可能コマンドを識別するものである場合、上記導入可能コマンド参照リストを参照することにより１個の上記複数の個別サブプログラムを識別し、そして上記サブプログラム記述リストを参照することにより上記１個の上記複数の個別サブプログラムにアクセスして、上記サブプログラムコマンドを実行するように構成された上記コンピュータシステムにより上記メインプログラムの実行の際に各々の上記サブプログラムコマンドが実行されるステップ、
を含むことを特徴とする個別サブプログラムをメインプログラムに統合する方法。
【請求項２】
請求項１に記載の方法において、サブプログラム記述リストを生成して維持する上記ステップ（ｃ）がさらに、
（ｇ）  上記コンピュータシステム内で上記メインプログラムを出る前にサブプログラム参照リストとして上記サブプログラム記述リストを格納し、上記メインプログラムを出る前に上記導入可能コマンド参照リストを格納して、その後上記コンピュータシステム内で上記メインプログラムが初期設定された後に、上記メインプログラムに対して上記サブプログラム参照リストと上記導入可能コマンド参照リストが利用できるようにするサブステップ、及び
（ｈ）  その後に上記コンピュータシステム内で上記メインプログラムが初期設定される時、既に除去された上記複数の個別サブプログラムのいずれかを上記サブプログラム記述リストと上記サブプログラム参照リストと比較することによって識別し、既に除去された個別サブプログラムがある場合、上記除去された個別サブプログラムに含まれていた複数の導入可能コマンドを除去された導入可能コマンドと同定して、該除去された導入可能コマンドを識別するための上記コマンド識別情報を上記事象参照リストから除去するサブステップ、
を含み、そして上記ステップ（ｄ）を実行することを特徴とする個別サブプログラムをメインプログラムに統合する方法。
【請求項３】
請求項１に記載の方法において、更に、
上記メインプログラムが上記複数の個別サブプログラムと情報交換できるようにするステップを有し、該ステップにおいて、上記メインプログラムが機能を実行するためのコマンドを提供して上記メインプログラムが該コマンドに応答して、前記機能の実行の結果としてのデータを上記複数の個別サブプログラムに提供する、
ことを特徴とする個別サブプログラムをメインプログラムに統合する方法。
【請求項４】
請求項１に記載の方法において、
上記メインプログラムと上記個別サブプログラムが、所定の記憶スペースを有する上記コンピュータシステム上で実行されるものであって、上記ステップ（ｆ）が更に、
上記個別サブプログラムが上記コンピュータシステムの上記記憶スペースのアドレススペースにロードされているかどうかを判定し、ロードされている場合には、上記個別サブプログラムをアクセスするステップ、及び、
ロードされていない場合には上記個別サブプログラムをロードするための上記記憶スペースを割りつけて、上記個別サブプログラムをアクセスするステップ、
を備えたことを特徴とする個別サブプログラムをメインプログラムに統合する方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明はアプリケーションプログラムに関し、とくに一つまたは複数の個別サブプログラムをメインプログラムに統合する方法に関する。
【０００２】
【従来の技術】
パーソナルコンピュータが今日の社会に定着するにつれ、パーソナルコンピュータで使用するアプリケーションソフトウェアの需要は増加し続けている。この需要増加により、ソフトウェア開発業者の数およびアプリケーションソフトウァアプログラムの種類と数が大幅に増大した。更にソフトウェア開発業者達は、よりよい製品を提供し、他社と競合し得る利点を獲得または維持するという努力を通し、停まることなく既存プログラムを改良し続けている。
【０００３】
【発明が解決しようとする課題】
しかし、アプリケーションソフトウェアが増え、その結果としての既存プログラムの改良にともない、ユーザは、ソフトウェアがごく短期間で旧式化してしまうという不利益を被る。この旧式化に最も寄与する重大要因の一つは、既存ソフトウェアの改良のための新ルーチン開発である。かかる新ルーチンは全体ソフトウェア製品のほんの一部分を構成しているたけであるのに、その新ルーチンの恩恵を得るためにユーザは新ソフトウェア製品全体を購入しなくてはならない。それ故、新しいメインプログラム全体を購入するのではなく、ユーザ自身が容易に新ルーチンの組み込み修正ができるようなソフトウェアアプリケーションプログラムを提供することが望ましい。
【０００４】
現在、ソフトウェア開発業者は、特徴、機能、改良を多くして高価格で供給するか、特徴、機能、改良を少なくして低価格で供給するかを決定する際にジレンマに直面してもいる。アプリケーションプログラムに所望の特徴、機能、改良を組み込む本質的なカストマイズをユーザ自身が出来るようにモジュール形式で販売されるアプリケーションソフトウェアを提供することが望ましい。従って、アプリケーションプログラムをユーザが容易にカストマイズできるようにする方法を提供することが望ましい。
【０００５】
また、ソフトウェア開発業者は、アプリケーションソフトウェアの評判をより向上するための努力において、ごく簡単に使えるソフトウェアを提供したいと欲する。しかしながらアプリケーションプログラムをグレードアップするための既存の方法のほとんどは、グレードアップ実行担当者による特殊専門知識を要する。このため、現在、多くのソフトウェア設計者が発表するソフトウェア新バージョンは、最も基本的なグレードアップをユーザに提供するものである。従って、ソフトウェアのグレードアップをユーザ自身が容易にできるようにする方法および装置を提供することが望ましい。
【０００６】
【課題を解決するための手段】
本発明は、メインプログラムに個別サブプログラムを統合するための方法と装置を提供することによって先行技術の前述の各欠点を解決しようとするものである。本明細書に記載された好適実施例では、別個サブプログラムにサブプログラム機能を実行するためのアクセスコマンドが含まれ、個別サブプログラムはこのコマンドに対して応答する。同様に、メインプログラムは事象機能を実行する事象に対して応答する。好適方法には、更に、特定事象に応答するメインプログラムが実行する機能を決定する複数の事象エントリを備えた事象参照リストを保持する工程が含まれるが、その際、少なくとも事象エントリの一つに、サブプログラムのアクセスコマンドを識別する情報を有する。好適実施例には、更に、サブプログラム機能を実行されるようにサブプログラムをアクセスすることによって、一つ以上の事象の選択に対応する工程が含まれる。
【０００７】
上述した通り、本発明は、個別サブプログラムをメインプログラムに完全に統合する方法を提供することによって、メインプログラムのコマンドと同じ方法でサブプログラムのコマンドを呼び出せるようにするものである。一般に、個別サブプログラムは、メインプログラムで利用可能な機能を実行するためのものである。例えば、メインプログラムが文書処理業務用のものである場合、スペルチェック、シソーラス、印刷、文書検索、ヘルプといった機能を実行するために個別サブプログラムを提供することが考えられる。本発明の重要態様の一つは、ユーザが見たときに個別サブプログラムがメインプログラムの一部であるようにメインプログラムに個別サブプログラムを統合することである。以下に詳述するが、本発明に記載の好適方法によれば、個別サブプログラムをメインプログラムに統合する際、個別サブプログラムの機能を実行するためのコマンドをキーボード上のキーまたはメインプログラムメニュー上のいずれかの位置に割り当てられるよう構成できる。割り当てられたキーを押すか、適当なメニュー位置をアクセスすることによって、ユーザは、メインプログラムによって実行される機能を呼び出すのと同じ方法で個別サブプログラムの機能を呼び出すことができる。
【０００８】
【実施例】
図１の決定流れ図は本発明に記載の好適実施例の一般的方法を説明するものである。当該技術で周知の通り、メインプログラムを実行する前にこれをコンピュータ上のディレクトリに格納する。メインプログラムと一緒に利用する個別サブプログラムを同じディレクトリ、またはサブディレクトリに格納する。ユーザがメインプログラムを実行した時点でシステムを初期設定する（ステップ１００）。当該技術分野で周知の通り、システムの初期設定には、メインプログラムをコンピュータのメモリスぺースへロードする工程、メインプログラムの初期設定ルーチンが規定する通りにレジスタを所望状態に設定またはリセットする工程、プログラムが使用できる状態になっていることを示すプロンプトをユーザに提供する工程、が含まれる。メインプログラムの初期設定の後、メインプログラムは自身のディレクトリを読み取り、メインプログラムと一緒に利用するために格納されている導入可能サブプログラムを識別する（ステップ１０２）。各々の導入可能サブプログラムは、所定のファイルに、サブプログラムを記述するための所定の情報を有する。メインプログラムは前記所定ファイルを呼び出し、個別サブプログラムを呼び出すための相互参照配列を作る（ステップ１０４）。
【０００９】
更にくわしく説明すると、メインプログラムは導入可能サブプログラム記述リスト（ＩＳＤ）を作り（ステップ１０２）、導入可能コマンド参照リスト（ＩＣＲ）作り（ステップ１０４）、個別サブプログラムを記述し、メインプログラムによる個別サブプログラムへのアクセスを許可する。図５（Ａ）と図５（Ｂ）を参照すると、図５（Ａ）には導入可能コマンド参照リストのデータ構造、図５（Ｂ）には導入可能サブプログラム記述リストのデータ構造が示されている。導入可能コマンド参照リスト５００は、メインプログラムによって識別された（上述のステップ１０２）、各サブプログラムの各導入可能コマンドのリストである。但し、各サブプログラムは一つまたは複数のコマンドを含むので、導入可能コマンド参照リスト上のコマンドの数は、通常、識別された個別サブプログラムの数よりも多い、ということに注意する。導入可能コマンド参照リスト上に記載された各コマンドについて、データ構造５００を規定する。
【００１０】
各導入可能コマンドエントリのデータ構造には、個別サブプログラムコマンドを特定するため導入可能コマンド番号（ＩＣ番号）５０４が付いている。この導入可能コマンド番号は、本発明の範囲に反することなく種々の方法で割り振ることができる。但し、本明細書に記載の本発明好適実施例では、導入可能コマンド番号は、導入可能サブプログラム１個につき１２７個のコマンドを可能にする、７ビットの数を利用している。導入可能コマンド番号の次に続くのは、導入可能サブプログラム記述リスト５０２に対する導入可能サブプログラム記述ポインタ（ＩＳＤポインタ）５０６である。ＩＳＤポインタは８ビットの数で、ユーザは最大２５６個の導入可能サブプログラムを呼び出すことができる。ＩＳＤポインタの次に続くのは、導入可能サブプログラムのコマンド機能実行部分を識別する導入可能サブプログラムに対する導入可能サブプログラムポインタ（ＩＳポインタ）５０８である。導入可能サブプログラムポインタ５０８の次に続くのは、コマンドの特性を特定する情報を格納するために用意されている、メインプログラムコマンド構造フィールド５１０である。メインプログラムコマンド構造フィールド５１０に格納されている情報は、メインプログラムのコマンドのために提供される情報と同様である。詳細は後述するが、サブプログラムに伝送されるデータ構造を格納する記憶場所を指示し、それによって個別サブプログラムとメインプログラムをインタフェースするコミュニケーションポインタ５１２も用意されている。
【００１１】
導入可能サブプログラム記述リスト（ＩＳＤリスト）５０２は、メインプログラムによって識別された各導入可能サブプログラムを記述するデータの配列である。図５Ｂに記載のデータ構造は、識別された各導入可能サブプログラムに関するものである。コンピュータのメモリ上にロードするためのディレクトリにおいてメインプログラムが導入可能サブプログラムを捜し出すことができるようにするために、導入可能サブプログラム記述リストは、導入可能サブプログラムの位置に対するポインタ５１４を備えている。ディレクトリポインタ５１４の次に続くのは、当該導入可能サブプログラムに属する導入可能コマンド参照リスト上に記載されている第一導入可能コマンドを識別するＩＣ番号である。ＩＣ番号５１６の次に続いているのは、導入可能サブプログラムの専用呼出し情報を識別するデータ５１８である。例えば、アイドル時間中に導入可能サブプログラムを呼び出す必要があるかどうか、導入可能サブプログラム自身のヘルプルーチンを入れるかどうか、導入可能サブプログラムが「自動実行」メッセージを受け取る必要があるかどうか、導入可能サブプログラムが遮断メッセージを受け取る必要があるかどうか、などを識別するためにデータが提供される。次回アクセスされたときに導入可能サブプログラムに戻されるロングワードを、導入可能サブプログラムによって格納できるようするために、専用呼出しデータの後ろにロングワード５２０が続いている。このロングワードの後ろに導入可能サブプログラム番号５２２が続いている。導入可能コマンド番号のように、導入可能サブプログラム番号により導入可能サブプログラムを識別する。
【００１２】
更に図１、特にそのステップ１０４を参照する。メインプログラムが導入可能コマンド参照リストと導入可能サブプログラム記述リストを作成した後に、メインプログラムの事象参照リストが修正される。当該技術分野で周知の通り、一般的なソフトウェアアプリケーションプログラムは、事象と、事象に応じてプログラムが実行する動作とを関連付ける、表、ファイル、配列、などのデータ構造を備えている。本願実施例でそうであるように、例えば、キーボードのキーを押す、または、メニュー項目を選択する、というような、ユーザーによるプログラムへの入力、を事象に含ませてもよい。また、直前の操作実行中に、ユーザによって埋め込まれたオブジェクトの結果としてのプログラムによって、事象を自己生成させてもよい。メインプログラムによって、事象に応答して導入可能サブプログラムを参照できるので、ステップ１０２で識別された複数の導入可能サブプログラムから導入可能コマンドに応答して参照事項を包含するように事象参照リストを修正する（ステップ１０４）。本発明の現好適実施例の場合、導入可能コマンドに応答する参照事項は、導入可能コマンド参照リスト５００（図５）に格納されている導入可能コマンド番号（ＩＣ番号）である。
【００１３】
事象参照リストをアップデート可能にするための方法は、本発明の特殊態様ではない。しかしながら、事象参照リストをアップデート可能にするのに適した方法は、１９９０年１月８日に出願された、レイモンドＤ．グラム（ Raymond D. Gram )による米国特許願第０７／４６1,７７５号「コンピュータシステムにおいてユーザインタフェースをカストマイズするための方法とシステム」に説明されており、その開示内容全体が参考として本明細書に含まれる。
【００１４】
導入可能コマンド参照リスト、導入可能サブプログラム記述リスト、および、事象参照リストを組み合わせて相互参照アレイを構成する。相互参照アレイにより、メインプログラムは、メインプログラム事象に応じて複数の導入可能サブプログラムを自動的に呼び出すことができる。従って、相互参照アレイにより、複数のサブプログラムがメインプログラムに完全に統合される。また、相互参照アレイが自動的に生成され、メインプログラムのディレクトリに格納されている各サブプログラムを包含するので、メインプログラムへの複数サブプログラム統合にはユーザの介入を全く要しない。
【００１５】
相互参照アレイを作成し、システムが使用できる状態になっていることを示すプロンプトをユーザに表示した後、メインプログラムはユーザ入力のような事象を待つ（ステップ１０６）。上述した通り、事象には、一般的に、キーボード上のキーを押すユーザ、メニューから項目を選択するユーザ、または、別のユーザの入力をシステムに提供するユーザが含まれていてもよい。システムは、事象受信（ステップ１０６）と同時に事象ＩＤを読み取り、この事象ＩＤを利用して事象参照リスト上の適当なコマンドを参照する（ステップ１０８）。導入可能サブプログラムの導入可能コマンドへの参照は、メインプログラムのコマンドに従って事象参照リスト上で行われる。従って、導入可能サブプログラムによって実行される機能をユーザが呼び出そうとする場合、例えば、メニュー項目を選択するといった、標準的なユーザ入力だけで呼び出すことができる。
【００１６】
事象コマンドが導入可能コマンドである場合（ステップ１１０）、相互参照アレイを用いて導入可能サブプログラムを参照する（ステップ１１２）。その後、システムはステップ１０６に戻り、再び、システム事象の発生を待つ。事象コマンドが導入可能コマンドでない場合（ステップ１１０）、事象がメインプログラムを出るためのものかどうかをシステムが判断する（ステップ１１４）。事象がメインプログラムを出るためのものである場合システムは導入可能コマンド参照リストと導入可能サブプログラム記述リストを格納する（ステップ１１６）ので、次回メインプログラムを初期設定するときにそれらのリストを利用できる。注目に値するのは、図２を参照して下記に詳しく説明するように、導入可能サブプログラム記述リストが導入可能サブプログラム参照リスト（ＩＳＲリスト）として格納されることである。
【００１７】
事象が導入可能コマンドでなく、また、メインプログラムからの出口でもない場合、その事象がメインプログラムの一つを実行するためのものであり、システムは通常の方法でこのコマンドを実行し（ステップ１１８）、その後、ステップ１１６に戻って別のシステム事象の発生を待つ。
本発明の特徴は、導入可能サブプログラムの導入可能コマンドを、メインプログラムのコマンドと同じ方法で、ユーザが呼び出すことである。詳しくは後述するが、導入可能コマンドが、導入可能サブプログラムの導入可能コマンドのためのキー割りつけまたはメニュー位置を識別するデフォルト事象割りつけを備えてもよいので、導入可能サブプログラムはこれらの事象に応答する。また、上記に参照した米国特許願第０７／４６1,７７５号に記載および説明されている方法により、ユーザは、導入可能コマンドについて事象割りつけを選択することもできる。
【００１８】
更にまた、導入可能コマンドは、別のコマンドをプリエンプトまたはポストエンプトしてもよい。詳細には、他のコマンドを選択しているとき他のコマンドが実行される前に導入可能コマンドを呼び出す（即ち、プリエンプト）ことができるか、他のコマンドを選択しているとき他のコマンドが実行された後で導入可能コマンドを呼び出すことができるか、である。つまり、導入可能コマンドはメインプログラムのコマンドの属性ごとに許可される。
【００１９】
上述の通り、メインプログラムの連続セッション中に用いる相互参照アレイ部分を格納することが望ましい。従って、メインプログラムを出る前に、システムはコマンド参照リスト（図５（Ａ））と、導入可能サブプログラム記述リスト（図５（Ｂ））を保管する。これらのリストを各セッション後に格納することによって、後続セッション中のリスト修正に要する相当時間を短縮できる。また、ユーザによるメニューおよびキー割振りをセッションからセッションへ保管できる。普通のユーザは自分のアプリケーションソフトウェアの構成を滅多に変更しないので同一サブプログラム、キー割当て、メニュー割当てが組み合わせて何回も使用されるため、これらの特徴は特に価値がある。導入可能サブプログラム記述リストは、導入可能サブプログラム参照リストとして格納される。
【００２０】
図２を参照すると、メインプログラムの初期設定時に相互参照アレイデータを修正する（図１のステップ１０４）現好適方法を説明するための決定流れ図が示されている。導入可能サブプログラム記述リストが生成された（図１のステップ１０２）後、システムは、導入可能サブプログラム参照リストが直前のセッションから保存されていたのかどうか判断する（ステップ２００）。導入可能サブプログラム参照リストが存在している場合、（図１のステップ１０２で作成された）導入可能サブプログラム記述リストと、既存の導入可能サブプログラム参照リストとを比較する（ステップ２０２）。この比較によって、直前のセッション以来ディレクトリから除去された、または、ディレクトリに追加された導入可能サブプログラムを識別する。導入可能サブプログラムリストにない導入可能サブプログラム参照リスト上のサブプログラムが存在する場合（ステップ２０４）、導入可能サブプログラムは既にメインプログラムのディレクトリから除去されており、従って、サブプログラムならびにそのコマンドに対する参照事項が除去されるように相互参照アレイを修正しなくてはならない。そのため、事象参照リスト上の事象割りつけから、導入可能サブプログラムのいずれかの導入可能コマンドが削除される（ステップ２０６）。また、導入可能サブプログラムのコマンドが、導入可能コマンド参照リストから削除される。当業者には、導入可能コマンド参照リスト５００の導入可能サブプログラム記述ポインタ５０６（図５（Ａ））を用いて両リストを容易にアップデートできることが分かるであろう。
同様に、システムは、導入可能サブプログラム参照リスト上にない導入可能サブプログラム記述リスト上に記載されているサブプログラムが存在するかどうか、判定し（ステップ２０８）、そのようなサブプログラムが存在する場合、導入可能サブプログラムはメインプログラムのディレクトリに既に加えられており、従って、サブプログラムならびにそのコマンドに対する参照事項が追加されるように相互参照アレイを修正しなくてはならない。当業者には、導入可能コマンド参照リストが存在しない場合（ステップ２００）、導入可能コマンド参照リストが生成されなくてはならない（ステップ２１６）ことが分かるであろう。導入可能コマンド参照リストが修正（ステップ２００〜２１０）または作成（ステップ２１６）された後、追加されたサブプログラムのコマンドを導入可能コマンド参照リスト（ＩＣＲリスト）に追加し（ステップ２１０）、サブプログラムのコマンドのためのデフォルトキーを割振る。導入可能サブプログラム参照リストがアップデートした後に事象参照リストアップデートすると（ステップ２１４）、システムはステップ１０６に戻って上述の通り事象の発生を待つ。導入可能コマンドのメインプログラムへの完全統合に加え、メインプログラムのコマンドと同じ方法でユーザがサブプログラムを呼び出せるように、サブプログラムをメインプログラムに完全に統合してメインプログラムと同じデータ、ポインタ、ルーチンへアクセスさせる。これを実行するために、メインプログラムとサブプログラムの間のコミュニケーションを提供する命令セットとメモリとを、メインプログラムに備える。図３の決定流れ図にコミュニケーションの方法を示す。
【００２１】
メインプログラムが事象に応答して導入可能コマンドを識別し（図１のステップ１１０）、導入可能サブプログラムを参照する（ステップ１１２）場合、図３の方法を実行する。この方法では、メインプログラムは、最初に導入可能サブプログラム記述（ＩＳＤ）リスト（図５の５０２）を読み取り、次にサブプログラムのロングワード５２０および、サブプログラムに対する呼出しをフォーマットするのに必要な他の情報を獲得する（ステップ３００）。本願でそうであるように、サブプログラムに対する呼出しには、予め決められた記憶場所へコールワードを格納する工程と、コンピュータのプロセッサの制御をサブプログラムの命令セットに転送する工程が含まれている。コールワードは、サブプログラムがその意図する機能を実行できるようにするための、メインプログラムからの情報を備えている。コールワードは、図６（Ａ）に示されているようにフォーマットされる。
【００２２】
図６（Ａ）を参照すると、コールワード６００の構造は、サブプログラムがどのように呼出されたかを識別するデータを含むデータフィールド６０２と、呼び出されてコールになった導入可能コマンドを識別するデータを含むフィールド６０４から成る。更に、導入可能サブプログラムが状態情報をメインプログラムに戻せるように、復帰状態フィールド６０６が設けられている。この状態情報には、例えば、エラーが発生したことを示してエラー種別を識別するエラーコード情報、ロックされているサブプログラムの資源ファイルを維持するようにメインプログラムに指示するための情報、特定時刻にサブプログラムを再コールするための情報、などを備えてもよい。また、コールワードは、サブプログラム機能を実行するための追加情報を獲得するためのサブプログラムが利用するメインプログラムへのポインタを含むメインプログラムポインタ６０８を備える。これらのポインタのうちの１個は、導入可能サブプログラム記述リストに格納されたサブプログラムのロングワード５２０（図５（Ｂ））であってもよい。
【００２３】
本発明の特徴は、ロングワードを使用してサブプログラムがデータ中間コールを格納できるようにすることである。ロングワードは、各コールの最後にサブプログラムによってメインプログラムに提供される。メインプログラムは、次にサブプログラムが呼び出されるまで、導入可能サブプログラム記述リスト中のロングワードを格納する。サブプログラムへの各コールと同時に、メインプログラムは、直前に格納されたロングワードを獲得し、サブプログラムが使用するためのサブプログラムに戻す。従って、サブプログラムは、例えば、ヒープ上に動的に割りつけられたメモリへのポインタ、または、ヒープ上の種々の記憶場所を割りつけるポインタセットへのポインタというような、自身のポインタを格納するためにロングワードを利用できる。当業者であれば、本方法で複数のサブプログラムに記憶スぺースを割つけることによって、メモリブロックを割りつける必要がなくなることが、分かるであろう。サブプログラムは、他の所望機能のためにロングワードを使用できる。メインプログラムの特定データに対するポインタのような追加メインプログラムデータポインタがフィールド６０８に提供され、それによって、サブプログラムは、メインプログラムの全データにアクセスできる。
【００２４】
サブプログラムに対するコールワードが一旦フォーマットされると、コールワードは記憶場所に格納され、メインプログラムは導入可能コマンド参照リストを読み取って、導入可能サブプログラムへのポインタ（例えば、図５の導入可能サブプログラムポインタ５０６）を獲得する（ステップ３０２）。次に、メインプログラムは、導入可能サブプログラムポインタによって特定されたメモリーに進むようにコンピュータのプロセッサに指示し（ステップ３０４）、それによって、コンピュータのプロセッサの制御をサブプログラムの命令セットに移す。導入可能サブプログラムは、適当な戻し状態フィールドとデータポインタを設定し、その機能を実施する。
【００２５】
最初の呼出しで転送された情報を利用するのに加えて、サブプログラムは、コールバックワード（構造は図６（Ｂ）に図示）を用いてメインプログラムに照合できる。また、コールバックワードにより、導入可能サブプログラムがメインプログラムに実行させるオペレーションを要求することができる。第一データフィールドは、導入可能サブプログラムによって実行されるメインプログラムを要求する命令コードを識別する、ｏｐコードデータフィールド６１０である。命令コードデータフィールドの次に続くのは、ｏｐコード実行中に発生したエラーをメインプログラムがサブプログラムに対して識別できるようにする、エラーコードデーターフィールドである。エラーデータフィールドの次は、ｏｐコードを実行するためにメインプログラムが必要とする情報を格納し、ｏｐコードによるデータを格納するためのｏｐコードパラメータフィールド６１４である。従って、サブプログラムは、ｏｐコードを実行するという限られた目的のためにコンピュータのプロセッサの制御をメインプログラムに移すことができる。メインプログラムは、コミュニケーションワードを調べて（ステップ３０８）、コールバックが必要かどうかを判定し、必要である場合はｏｐコードを実行し（ステップ３１０）、いずれか必要な情報をコールバックワード６１６に戻す。当業者であれば、コールバックワードを使用して、メインプログラムが実行する機能をサブプログラムが要求できるようになることによって、メインプログラムへのサブプログラムの統合が更に確実なものになることが分かるであろう。例えば、サブプログラムはメインプログラムに対して、メモリの割りつけ、メッセージの表示、ユーザインプットの獲得、などを要求できる。
【００２６】
結局、必要な情報はサブプログラムによって実行され（ステップ３０４）、追加情報は一切必要なく、サブプログラムは予め定められた記憶場所にコールワードを格納し、メインプログラムはサブプログラムロングワードを保管し（ステップ３１２）、戻る。
上記に説明した方法によれば、ユーザが容易にサブプログラムを呼び出せるように、複数の個別サブプログラムをメインプログラムに統合することもできる。注目に値するのは、２つのプログラムを統合させるに当たってユーザに必要な作業は、所定の記憶場所、通常はメインプログラムと同じディレクトリであるが、サブプログラムを格納するだけでよい、という点である。その以降、メインプログラムは、サブプログラムを識別でき、また、複数の個別サブプログラムのメインプログラムに統合できるようにする相互参照アレイを生成できる。同様の方法で、メインプログラムからサブプログラムを除去する場合、ユーザは、メインプログラムのディレクトリからサブプログラムを削除するだけでよい。その後、メインプログラムは相互参照アレイを再構成するので、削除されたサブプログラムが統合されることは無い。本発明の特に優れた特徴は、メインプログラムのメニュー上にサブプログラムのコマンドを置き、サブプログラムのコマンドにキーを割り振り、サブプログラムが要求する機能を実行できる、メインプログラムの機能である。
【００２７】
以上説明した通り、本発明の現好適実施例の場合、メインプログラムに１２７個のサブプログラムを統合することができる。当業者であれば、本発明の方法を利用して、メインプログラムにより多くの、または、より少ないサブプログラムを統合する変更を、容易に実行できることであろう。しかしながら、メインプログラムに統合を許されるサブプログラムの数には関係なく、メインプログラム実行中にコンピュータのアドレススペースにロードされるサブプログラムの数を限定する方法を提供することが望ましい。本発明による方法には、終始、図４の決定流れ図のステップが含まれる。
【００２８】
導入可能サブプログラムが参照されると（図１のステップ１１２）、メインプログラムは導入可能サブプログラムリスト（ＬＳＩリスト）を読み取る（ステップ４００）。ＬＳＩリストは、コンピュータのアドレススペースにロードされている導入可能サブプログラムのリストである。導入可能サブプログラムがロードされていない場合（ステップ４０２）、メインプログラムは、導入可能サブプログラムをロードするためにアドレススペースを割りつける必要があるかどうか決定する。当業者であれば、アドレススペースを割りつける必要があるかどうかの決定を種々の方法で実施可能であることが分かるであろう。例えば、予め定められた大きさのアドレススペースを、複数の導入可能サブプログラムに割りつけることができる。または、予め定められた数のサブプログラムを、プロセッサのアドレススペース中で常時維持することもできる。サブプログラムをロードする前にアドレススペースを割りつける必要があるかどうか決定する方法は、当業者には容易に明らかになるであろう。
【００２９】
アドレススペースを割りつける必要がある場合、メインプログラムは必要なアドレススペースを割りつける方法を決定する（ステップ４０６）。本発明の現好適実施例では、アドレススペースにロードされている各サブプログラムが最後にアクセスされたときを示すエントリを、ＬＳＩリストが保持している。ステップ４０６は、アドレススペースにロードされたサブプログラムがアクセスされずに長時間放置されているかどうかを判断し、サブプログラムが最初に占有していたアドレススペースを割りつけることによって、決定をおこなう。後からのサブプログラムをロードするためにアドレススペースを割りつけるための他の方法は、当業者には容易に明らかになるであろう。必要なアドレススペースを割りつけた後（ステップ４０６）。または、余分のアドレススペースが必要ない場合（４０４）、導入可能サブプログラムがロードされる（ステップ４０８）。その後、導入可能サブプログラムのアクセス情報がアップデートされる（ステップ４０９）。本発明の現好適実施例では、アクセス情報は、各サブプログラムがアクセスされた日時を示すデータが含まれているので、ステップ４０６のような決定ができるのである。当業者にとっては明らかである通り、他のアクセス情報もアップデートできる。
【００３０】
本明細書では説明のために本発明の特定実施例について説明を行ったが、本発明の趣旨と範囲に反することなく種々なる変更を実施できることは明らかである。従って、本発明は、添付されているクレイムから逸脱しない範囲で限定されるものではない。
【図面の簡単な説明】
【図１】メインプログラムに個別サブプログラムを統合する本発明好適方法を説明する決定流れ図である。
【図２】本明細書に記載の好適実施例によりメインプログラムを個別サブプログラムにインタフェースするための参照データを保持する方法を説明する決定流れ図である。
【図３】本明細書に記載の好適実施例によりメインプログラムとサブプログラムの間の通信を可能にする方法を説明する決定流れ図である。
【図４】本明細書に記載の好適実施例により数多の個別サブプログラムへのアクセスを許可する間、メモリスペースを保存する方法を説明する決定流れ図である。
【図５】本明細書に記載の好適実施例によりメインプログラムから個別サブプログラムを参照するのに利用されるリストのデータ構造を説明する決定流れ図である。
【図６】本明細書に記載の好適実施例によりメインプログラムとサブプログラムの間で交換される情報パケットのデータ構造を説明する決定流れ図である。
【符号の説明】
５００    導入可能コマンド参照リスト
５０２    導入可能サブプログラム記述リスト
５０４    導入可能コマンド番号
５０６    導入可能サブプログラム記述ポインタ
５０８    導入可能サブプログラムボインタ
５１０    メインプログラムコマンド構造フィールド
５１２    コミュニケーションポインタ
５１４    ディレクトリポインタ
５１６    ＩＣポインタ
５１８    専用呼出しデータ
５２０    ロングワード
５２２    導入可能サブプログラム番号
６００    コールワード
６１６    コールバックワード
【図１】
0003728325.tif 000002
【図２】
0003728325.tif 000003
【図３】
0003728325.tif 000004
【図４】
0003728325.tif 000005
【図５】
0003728325.tif 000006
【図６】
0003728325.tif 000007