(57)【要約】      （修正有）【課題】コンピュータマクロをコンピュータ言語に依存しない構文において記録し、複数のコンピュータ言語用マクロを再作成する必要をなくす。【解決手段】目的命令言語（ＯＩＬ）の非依存構文を使用することにより、特定言語のマクロ命令を各種言語で採用可能な汎用命令セットに変換できる。マクロは、再記録することなく、あるいは別の言語に翻訳することなく、複数のコンピュータ言語のソースコードに変換できる。【選択図】      図１Ａ
2004213529.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータシステムにおいて、少なくとも１つの動作を記録する要求を受け付け、
前記コンピュータシステムにおいて、少なくとも１つの動作を記録するための記録システムを起動し、
前記コンピュータシステム上で実行した少なくとも１つの動作を受け付け、
前記コンピュータシステム上で実行した前記少なくとも１つの動作を前記記録システムによって記録し、
前記記録システムで記録した前記少なくとも１つの動作を、コンピュータ言語非依存構文を有する少なくとも１つの命令に変換し、
前記コンピュータ言語非依存構文を有する少なくとも１つの命令をコンピュータ言語非依存構文を有する命令リストに変換し、
前記コンピュータ言語非依存構文を有する命令リストを複数のソースコード言語の１つに変換する各段階を備える、コンピュータ言語非依存構文において命令を記録するコンピュータ実行方法。
【請求項２】
少なくとも１つの命令からなる別の動作を前記コンピュータシステムが受け付けるか否かを決定し、
記録を停止する要求を受け付け、
前記記録システムによる記録を終了する各段階をさらに備える、請求項１記載の方法。
【請求項３】
前記コンピュータ言語非依存構文を有する少なくとも１つの命令をコンピュータ言語非依存構文を有する命令リストに変換する前記段階は、
命令リストを作成し、
前記コンピュータシステム上で実行した少なくとも１つの動作を、コンピュータ言語非依存構文を有する命令に翻訳し、
前記コンピュータ言語非依存構文を有する命令を、コンピュータ言語非依存構文を有する少なくとも１つの命令からなる命令リストに追加し、
前記コンピュータ言語非依存構文を有する少なくとも１つの命令からなる命令リストを、複数の処理部の少なくとも１つへ送り、
前記複数の処理部の少なくとも１つにおいて、前記コンピュータ言語非依存構文を有する少なくとも１つの命令からなる命令リストを特定言語ソースコードに処理する各段階を備える、請求項１記載の方法。
【請求項４】
前記コンピュータ言語非依存構文を有する命令を検証部にて受け入れ、
前記検証部において、前記コンピュータ言語非依存構文を有する命令が適正に構成されているか否かを決定し、
前記コンピュータ言語非依存構文を有する命令が前記命令リストの内容に照らして意味をなすか否かを決定するため、当該命令を前記検証部にて評価するか否かを問い合わせ、
肯定回答があれば、前記検証部において、前記コンピュータ言語非依存構文を有する命令が前記命令リストの内容に照らして意味をなすか否かを決定する各段階をさらに備える、請求項３記載の方法。
【請求項５】
前記命令リストは、記録したマクロ毎にソフトウエアアプリケーション内の構築部が作成する、請求項３記載の方法。
【請求項６】
前記構築部は、記録したマクロ毎に前記ソフトウエアアプリケーションが作成する、請求項５記載の方法。
【請求項７】
前記構築部は、前記検証部と、変数マップと、命令リストとを、前記ソフトウエアアプリケーション内においてマクロ毎に作成する、請求項３記載の方法。
【請求項８】
前記少なくとも１つの動作に対応した前記複数のソースコード言語の１つからなるソースコードは、マクロである、請求項１記載の方法。
【請求項９】
前記複数のソースコード言語の１つは、複数の処理部の少なくとも１つが生成する、請求項１記載の方法。
【請求項１０】
前記複数の処理部の前記少なくとも１つは、Ｃシャープ処理部、Ｃプラスプラス処理部、ＶＢＡ処理部、またはＶＢ．Ｎｅｔ処理部である、請求項９記載の方法。
【請求項１１】
前記命令リストは、
コンピュータシステムにおいて処理部が認識可能でありソースコードに変換可能な少なくとも１つの命令と、
前記コンピュータシステムにおいて前記命令が動作または操作する情報を指示するオペランドとを備える、請求項１記載の方法。
【請求項１２】
請求項１記載の各段階を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体。
【請求項１３】
ユーザインタフェースと、
前記ユーザインタフェースに接続したサーバと、
データベースに接続し、前記ユーザインタフェースにおいて開始する動作を記録する手段を提供する記録部と、
前記記録部に接続し、前記記録した動作を前記記録部から受け取り、前記記録した動作に基づき少なくとも１つの命令を生成する構築部と、
前記構築部に接続し、前記構築部から前記少なくとも１つの命令を受け取る命令リストと、
前記構築部に接続し、前記命令リストを受け取って少なくとも１つのソースコードを生成する複数の処理部の少なくとも１つと、を備える、コンピュータ言語非依存構文において命令を記録するシステム。
【請求項１４】
データベースと複数のダイナミックリンクライブラリとに接続したソフトウエアアプリケーションと、
前記構築部と前記複数の処理部の少なくとも１つとに接続し、前記命令リスト構成の適正さを判断する検証部と、
前記構築部と前記複数の処理部の少なくとも１つとに接続し、前記命令が含む変数について前記命令リストを評価する変数マップとをさらに備える、請求項１３記載のシステム。
【請求項１５】
前記生成したソースコードを受け取り、必要があるまでそれを格納するサブシステムをさらに備える、請求項１４記載のシステム。
【請求項１６】
前記複数の処理部の１つは、アプリケーション用ビジュアルベーシック処理部である、請求項１３記載のシステム。
【請求項１７】
前記複数の処理部の１つは、Ｃプラスプラス処理部である、請求項１３記載のシステム。
【請求項１８】
前記複数の処理部の１つは、Ｃシャープ処理部である、請求項１３記載のシステム。
【請求項１９】
前記複数の処理部の１つは、ビジュアルベーシックネット処理部である、請求項１３記載のシステム。
【請求項２０】
前記構築部は、前記ソフトウエアアプリケーション内に存在する、請求項１３記載のシステム。
【請求項２１】
前記構築部は、複数のソフトウエアアプリケーションに接続し、当該複数のソフトウエアアプリケーション用にコンピュータ言語非依存構文において命令を構築できる、請求項１３記載のシステム。
【請求項２２】
少なくとも１つの命令からなり、その命令がコンピュータ言語非依存構文を有しコンピュータシステムまたはソフトウエアアプリケーションから認識および作用可能である、命令リスト。
【請求項２３】
前記命令が動作あるいは操作する情報を指示するオペランドをさらに備える、請求項２２記載の命令リスト。
【請求項２４】
前記オペランドは、変数、メソッド、およびリテラルからなるグループから選択する、請求項２２記載の命令リスト。
【請求項２５】
前記少なくとも１つの命令の各々は、それに関連付けた１つのオペランドを有する、請求項２２記載の命令リスト。
【請求項２６】
コンピュータシステムにおいて、少なくとも１つの動作を記録する要求を受け付け、
前記コンピュータシステムにおいて、少なくとも１つの動作を記録するための記録システムを起動し、
前記コンピュータシステム上で実行した少なくとも１つの動作を受け付け、
前記コンピュータシステム上で実行した前記少なくとも１つの動作を、コンピュータ言語非依存構文を有する少なくとも１つの命令に変換し、
前記少なくとも１つの命令をコンピュータ言語非依存構文を有する命令リストに変換し、
前記コンピュータ言語非依存構文を有する命令リストを複数のソースコードの１つに変換する各段階を備える、コンピュータ言語非依存構文において命令を記録するコンピュータ読み取り可能媒体。
【発明の詳細な説明】
【０００１】
技術分野
本発明は、広くコンピュータ環境におけるマクロ記録システムに関する。さらに詳しくは、マクロを最終的に記録するコンピュータ言語から独立した構文でマクロ命令を作成することにより、マクロを再作成することなく、マクロを複数の言語に変換する方法およびシステムに関する。
【０００２】
背景技術
コンピュータ装置は公知であり普及している。コンピュータ装置は、例えばパーソナルコンピュータ、コンピュータ端末アクセスを有する集中型コンピュータ装置、インターネット等のネットワークに接続したコンピュータ装置を有する広域分散システムである。ある種のコンピュータ装置はほとんど人手を介さずに動作するが、多くのコンピュータ装置はその動作に人による入力を必要とする。パーソナルコンピュータ等のコンピュータ装置は、数字および文字情報を入力するためのキーボードを有する。
【０００３】
コンピュータ装置は、作業の種類に応じて他の入力も有する。例えばグラフィカルユーザインタフェースの普及に伴い、グラフィカル入力装置の利用が急増している。グラフィカル入力装置は、例えばマウス、グラフィックタブレット、デジタイザ、ライトペンである。これらは、コンピュータスクリーン上のカーソル等のグラフィカル要素を移動し位置決めできる。このグラフィカル要素を使用することにより、機能的コマンドを選択でき、コンピュータ動作を指示でき、情報入力を補助できる。
【０００４】
前記マウスは、最も普及しているグラフィカル入力装置の１つである。マウスは、コンピュータ装置に接続し、コマンドを選択したりグラフィカル情報を入力するために使う。マウスを平面上で動かすと、マウスの相対移動がコンピュータ装置に伝わり、カーソルを移動させる。マウスのボタンは、コマンドにアクセスしてそれを起動する。カーソルを置くことでグラフィカル情報を入力できる。
【０００５】
コンピュータ装置は、アプリケーションを動作させることにより、他の形の入力をユーザから受け取ることもできる。例えば音声入力、デジタルカメラからの入力、ビデオ記録部からの入力、ローカルエリアネットワークまたはワイドエリアネットワークを介して接続した別のコンピュータ資源からの入力である。
【０００６】
ユーザは、コンピュータ装置を操作する場合、入力装置を使ってコンピュータ装置の動作を指示する。コンピュータ装置は、特定の動作をするに当たり、一連の同一動作を必要とすることが頻繁である。この種の繰り返し動作は、１つ以上の入力装置からの入力を含むこともある。例えばある動作は、プログラムを開始するためにマウス動作を必要とし、その次にキーボードを使ってアクセスパスワードをテキスト入力することを必要とする。繰り返し動作は、その完了までにキーボード、マウス、その他入力を必要とすることが多い。ユーザは、このような繰り返し動作を行うたびに、同じ入力装置を使って一連の同じ動作をしなければならない。これは時間がかかる上、エラーを伴いやすい。状況によっては、繰り返し動作をマクロにより簡素化できる。
【０００７】
マクロは、特定のアプリケーションにおいて、キーボード、マウス、その他入力装置の繰り返し入力を自動化するために用いる。一般にマクロは、繰り返し命令を含んだファイルである。マクロをいったん作成すれば、コンピュータ装置がそれを再生する。多くのソフトウエアアプリケーションは、マクロ記録再生機能を持っている。このようなソフトウエアアプリケーションにおいて、ユーザは、特定の動作あるいは一連の動作をマクロに記録し、そのマクロに名前を付ける。その後、その特定動作あるいは一連動作は、前記名前を付けたマクロを実行することで行える。従ってユーザは、時間を節約でき、マクロの全ステップを繰り返す労力から解放される。一般にアプリケーションソフトウエアは、マクロを実行するため、マクロ再生機能を有する。この機能は、コマンドあるいはショートカットコマンドによって開始できる。
【０００８】
現在のマクロ記録技術において、一般にマクロの記録は、１つの言語、すなわちアプリケーション用ビジュアルベーシック（ＶＢＡ）でしか行えない。しかしながら、マクロを記録し実行するために使えるプログラミング言語は、他にもたくさんある。ユーザは、好み、熟練度、専門レベルに応じて言語を選び、その言語でマクロを記録することを望む。ＶＢＡ以外の言語でマクロを記録するために、アプリケーション開発者は、ユーザがマクロ記録を希望する各言語用に、マクロ記録部を書き直さねばならない。このような処理は高価で時間がかかるばかりでなく、エラーの可能性があり、異なる言語で記録したマクロ間に動作不一致が生ずる可能性もある。ソフトウエアアプリケーションにより最小の努力で複数言語においてマクロを記録する方法およびシステムを提供できれば、ユーザおよびアプリケーション開発者の時間および費用を軽減できる。
【０００９】
発明の開示
ここに開示する本発明方法およびシステムは、コンピュータマクロをコンピュータ言語に依存しない構文において記録する手段を提供する。これにより、ソフトウエアアプリケーションは、命令を１度記録するだけで、その命令をいずれかのコンピュータ言語のソースコードに変換できる。本発明の一態様は、１つ以上の異なるコンピュータ言語においてマクロを記録しようとするユーザに対し、コンピュータシステムの記録システムを起動することでマクロの記録を開始可能とする。この記録システムは、例えばマクロ記録エンジンに存在するマクロ記録部を備える。マクロ記録部およびマクロ記録エンジンは、コンピュータシステムのソフトウエアアプリケーション内部に存在しても良い。
【００１０】
次にユーザは、コンピュータシステムに記録しようとする１つ以上の動作を行う。一般にその動作は、コンピュータシステムのソフトウエアアプリケーション上で行う。この動作は、ユーザがソフトウエアアプリケーションと対話している間に発生する一連のコマンドやキーボード打鍵を含む。前記ソフトウエアアプリケーションは、前記ユーザ動作を命令リストと呼ぶ一連の命令に変換する。この命令リストは、コンピュータ言語に依存しない構文を有する。一般に前記命令リストは、ユーザが実施した動作をコンピュータ読み取り可能に翻訳したものであり、記録システムが記録したものである。このコンピュータ言語非依存構文の命令は、１つ以上の異なるコンピュータ言語のソースコードに変換可能である。コンピュータ言語非依存構文は、前記ソフトウエアアプリケーションが使用するコンピュータ言語から独立している。
【００１１】
前記命令リストは、一般に命令とオペランドとを１対１または１対０の関係で含む。一般にオペランドは、処理しようとする情報あるいは取り扱おうとする情報を指示する。ソフトウエアアプリケーションは、構築部の助けを借り、ユーザの動作を命令リストに変換する。構築部は、ソフトウエアアプリケーション内に含めても良い。各命令は、コンピュータ言語非依存構文で作成する。命令リストが完成すると、それを１つ以上の処理部へ送り、特定コンピュータ言語のソースコードに変換する。前記命令リストはコンピュータ言語非依存構文で書かれているため、各アプリケーション開発者およびユーザは、その好みに応じ、前記命令リストを異なるコンピュータ言語に変換できる。例えばユーザＡはマクロを言語Ａで記録することを選び、ユーザＢは言語Ｂで記録することを選ぶ。両ユーザが同一動作を記録したとすれば、言語非依存構文を持った同一命令リストが作成される。そしてその命令リストを各々異なる処理部で処理することにより、言語Ａと言語Ｂとに変換する。他の実施例において、言語非依存構文を用いた命令リストを、複数のコンピュータ言語に一度に変換することも可能である。この場合、命令リストは、別々の処理部へ送るが、その時各処理部用に再作成する必要はない。
【００１２】
発明を実施するための最良の形態
添付図面を参照しながら本発明およびその利点を詳細に説明する。
【００１３】
本発明は、目的命令言語（ＯＩＬ）においてマクロを記録するコンピュータ実行方法を支援する。目的命令言語とは、コンピュータ言語に依存しない構文であり、マクロを１言語において記録し、それを他の各種プログラミング言語において利用できるようにする。プログラマは、目的命令言語の非依存構文を使用することにより、特定言語のマクロ命令ステップを、各種言語で採用可能な汎用命令セットに変換できる。プログラマは、目的命令言語を使用することにより、同一マクロを各種言語で再作成する必要がなくなる。本発明は、添付図面を参照することにより、より良く理解できよう。
【００１４】
本発明の実施例は、パーソナルコンピュータで実行するソフトウエアモジュールおよびオペレーティングシステムとの関連で全般的に説明するが、当業者には明らかな通り、本発明は他のコンピュータタイプのプログラムモジュールにも適用できる。また当業者には明らかな通り、本発明はスタンドアロンコンピュータ環境および分散コンピュータ環境において実施できる。分散コンピュータ環境では、局所および遠隔記憶装置にプログラムモジュールを物理的に配置する。このプログラムモジュールの実行は、局所においてスタンドアロン形式で、あるいは遠隔地においてクライアント／サーバ形式で行える。このような分散コンピュータ環境は、例えば事務所のローカルエリアネットワーク、企業のコンピュータネットワーク、世界的インターネットを含む。
【００１５】
以下の詳細説明は、従来のコンピュータ構成部品、例えば処理装置、記憶装置、表示装置、入力装置等による処理およびこれら構成部品の動作に関する記号的表現を用いる。これら構成部品は、従来の分散コンピュータ環境におけるコンピュータ構成部品、例えば遠隔ファイルサーバ、遠隔コンピュータサーバ、遠隔記憶装置を含む。このような分散コンピュータ構成部品の各々は、処理装置から通信ネットワークを介してアクセスできる。
【００１６】
コンピュータによる処理および動作は、処理装置または遠隔サーバによる信号操作、局所または遠隔記憶装置による前記信号のデータ構造への保存を含む。このデータ構造は、記憶装置に格納したデータの集合を物理的に体系化することであり、特定の電気的または磁気的要素を表す。前記記号的表現は、コンピュータプログラミングおよびコンピュータ構築の当業者が利用することにより、最も効果的に技術や発見を他の当業者に伝えることができる。
【００１７】
本発明は、本明細書で説明すると共に添付図面に示したフローチャート（または論理フローチャート）の機能を実施するためのコンピュータプログラムも含む。ただしコンピュータプログラミングにより本発明を実施する場合、様々な方法があり、本発明は特定のコンピュータプログラム命令セットに拘束されるものではない。熟練プログラマであれば、添付フローチャートおよび本明細書に基づき、容易に本発明を実施するためのコンピュータプログラムを書けるであろう。従って特定のプログラムコード命令セットを開示することは、本発明の実施および利用方法を適切に理解する上で、不必要と考える。フローチャートを参照しながら、本発明が請求するコンピュータプログラムの独創的機能を以下に詳細に説明する。
【００１８】
添付図面において、同一符号は同一要素を示す。これら添付図面を参照しながら、本発明の各態様および本発明実施における動作環境例を詳細に説明する。
【００１９】
図１Ａは、本発明の各実施例における動作環境１を例示するブロック図である。当業者には明らかな通り、図１Ａおよびそれに関する説明は、コンピュータハードウエアおよびプログラムモジュールの一例についての簡略な説明である。これらに関するさらなる情報は、プログラミングマニュアル、ユーザガイド等の刊行物から容易に得ることができる。
【００２０】
図１Ａに示す動作環境例１は、汎用コンピュータ装置を含む。このコンピュータ装置は、従来のパーソナルコンピュータ１０で良い。図１Ａにおいて、パーソナルコンピュータ１０は、ネットワーク環境で動作し、遠隔サーバ１１０に論理接続する。パーソナルコンピュータ１０と遠隔サーバ１１０との間の論理接続は、ローカルエリアネットワーク１２とワイドエリアネットワーク１３とで代表する。当業者には明らかな通り、このクライアント／サーバ構成において、遠隔サーバ１１０はファイルサーバまたはコンピュータサーバとして機能できる。
【００２１】
パーソナルコンピュータ１０は、処理装置１４を含む。この処理装置は、例えばカリフォルニア州サンタクララのインテル社が製造する「ペンティアム」マイクロプロセッサである。パーソナルコンピュータ１０は、システムメモリ１５をさらに含む。システムメモリ１５は、リードオンリメモリ（ＲＯＭ）１６とランダムアクセスメモリ（ＲＡＭ）とを含み、システムバス１８を介して処理装置１４に接続する。コンピュータ１０の一実施例は、基本入出力システム（ＢＩＯＳ）１９を使用する。ＢＩＯＳ１９は、ＲＯＭ１６に格納する。当業者には明らかな通り、ＢＩＯＳ１９は、基本ルーチンセットであり、パーソナルコンピュータ１０の各要素間の情報伝達を支援する。当業者には明らかな通り、本発明は他の構成を有するコンピュータでも実施可能である。例えばＢＩＯＳ１９を使用しないコンピュータ、処理装置１４として他のマイクロプロセッサを使用するコンピュータ等においても実施可能である。
【００２２】
パーソナルコンピュータ１０内において、局所ハードディスク装置２０は、ハードディスク装置インタフェース２１を介してシステムバス１８に接続する。フロッピーディスク２３を読み書きするためのフロッピーディスク装置２２は、フロッピーディスク装置インタフェース２４を介してシステムバス１８に接続する。ＣＤ−ＲＯＭまたはＤＶＤディスク２６を読むためのＣＤ−ＲＯＭまたはＤＶＤ装置２５は、ＣＤ−ＲＯＭまたはＤＶＤインタフェース２７を介してシステムバス１８に接続する。
【００２３】
ユーザは、入力装置を用いてパーソナルコンピュータ１０にコマンドおよび情報を入力できる。入力装置は、例えばキーボード２８および／またはマウス２９等のポインティング装置であり、シリアルポートインタフェース３０を介してシステムバス１８に接続する。他のポインティング装置（図１Ａに示さず）は、トラックパッド、トラックボール、デジタイザペン、ヘッドトラッカ、データグローブ等、モニタ１０５上でカーソルを位置決めするための適切な装置を含む。モニタ１０５等の表示装置は、ビデオアダプタ３２を介してシステムバス１８に接続する。
【００２４】
図１Ａに示すように、ＲＯＭ１６、ＲＡＭ１７、ハードディスク２０、フロッピーディスク２３、ＣＤ−ＲＯＭ／ＤＶＤディスク２６は、多くのプログラムモジュールを格納できる。例えばオペレーティングシステム３６、アプリケーションプログラムモジュール１１７、ブラウザプログラムモジュール３７，文書プログラム３８を格納できる。プログラムモジュールは、ルーチン、サブルーチン、プログラム、オブジェクト、部品、データ構造等を含み、特定のタスクを実行したり特定の抽象データタイプを実行する。
【００２５】
このネットワーク環境における遠隔サーバ１１０は、遠隔記憶装置３３に接続する。この遠隔記憶装置３３は、一般に大容量装置であり、例えばハードディスク装置、ＣＤ−ＲＯＭまたはＤＶＤ装置、光磁気装置等である。当業者には明らかな通り、アプリケーションプログラムモジュール１１７等のプログラムモジュールは、コンピュータ読み取り可能媒体を介して遠隔サーバ１１０に提供する。パーソナルコンピュータ１０は、ネットワークインタフェース３４を介して遠隔サーバ１１０に接続する。このネットワークインタフェース３４は、ローカルエリアネットワーク（ＬＡＮ）１２を介して通信を行う。
【００２６】
好適実施例において、パーソナルコンピュータ１０は、モデム３５によっても遠隔サーバ１１０に接続する。モデム３５は、インターネット等のワイドエリアネットワーク（ＷＡＮ）１３を介して通信する。モデム３５は、シリアルポートインタフェース３０を介してシステムバス１８に接続する。モデム３５は、公衆交換電話網（ＰＳＴＮ）または共同アンテナテレビ（ＣＡＴＶ）ネットワークに接続しても良い。図１Ａのモデム３５はパーソナルコンピュータ１０の外部にあるが、当業者には明らかな通り、パーソナルコンピュータ１０の内部に設け、システムバス１８と直接通信するようにもできる。なお、ＬＡＮ１２およびＷＡＮ１３の両方を経由した遠隔サーバ１１０への接続は必要ないが、パーソナルコンピュータ１０と遠隔サーバ１１０との間の通信路を提供するための代替方法として両方を示した。
【００２７】
当業者には明らかな通り、オペレーティングシステム３６、アプリケーションプログラムモジュール１１７、ブラウザプログラムモジュール３７、文書プログラム３８等のプログラムモジュールは、コンピュータ読み取り可能媒体を介してパーソナルコンピュータ１０に提供できる。動作環境１の一実施例において、コンピュータ読み取り媒体は、局所または遠隔記憶装置を含むことができる。これは例えば局所ハードディスク装置２０、フロッピーディスク２３、ＣＤ−ＲＯＭ／ＤＶＤ２６、ＲＡＭ１７、ＲＯＭ１６、遠隔記憶装置３３を含む。パーソナルコンピュータ１０の一実施例において、局所ハードディスク装置２０は、データおよびプログラムを格納するために使う。
【００２８】
パーソナルコンピュータ１０および動作環境１全体の他の要素は示していないが、当業者には明らかな通り、かかる構成部品およびそれらの相互接続は公知である。本発明は当業者が実施するものであるため、パーソナルコンピュータ１０および動作環境１全体の要素に関するさらなる詳細説明は、本発明との関連において必要ないと思われる。
【００２９】
図１Ｂは、本発明に基づく、マクロを目的命令言語で記録するためのマクロ構築記録システム１００を示すブロック図である。本例のマクロ構築記録システム１００は、ユーザインタフェース１０５と、サーバ１１０と、データベース１１５と、アプリケーション１１７とを備える。アプリケーション１１７は、マクロライブラリ１２０、アプリケーション用ビジュアルスタジオ（ＶＳＡ）サブシステム１２５、および／またはアプリケーション用ビジュアルベーシック（ＶＢＡ）サブシステム１３０を備える。マクロライブラリ１２０は、処理部１３５と、マクロ記録エンジン１４０とを備える。マクロ記録エンジン１４０は、記録部１４５と、構築部１５０と、命令リスト１５５と、検証部１６０と、変数マップ１６５とを備える。ＶＳＡサブシステム１２５は、ＶＳＡ記録部１７５を備える。ＶＢＡサブシステム１３０は、ＶＢＡ記録部１７０を備える。
【００３０】
ユーザインタフェース１０５は、コンピュータネットワークを介してサーバ１１０と通信接続する。ユーザは、ユーザインタフェース１０５を用い、サーバ１１０，データベース１１５，およびアプリケーション１１７と通信する。例えばユーザインタフェース１０５は、サーバ１１０を経由し、アプリケーション１１７およびデータベース１１５との間でデータおよび問い合わせを含む情報を通信できる。ユーザインタフェース１０５は、サーバ１１０を介してデータベース１１５およびアプリケーション１１７から情報を受け取れる。一実施例において、ユーザインタフェース１０５はパーソナルコンピュータである。
【００３１】
サーバ１１０は、コンピュータネットワークを介し、ユーザインタフェース１０５およびデータベース１１５と通信接続する。
【００３２】
データベース１１５は、コンピュータネットワークを介し、サーバ１１０およびアプリケーション１１７と通信接続する。データベース１１５は、ソフトウエアアプリケーション、言語処理部、およびマクロ記録部に関する情報を格納する。一実施例において、データベース１１５は、構造化照会言語（ＳＱＬ）サーバデータベースである。
【００３３】
アプリケーション１１７は、ソフトウエアアプリケーションであり、特定タスクの実行においてユーザを支援する。特定タスクとは、ワードプロセッシング、会計、在庫管理を含む。
【００３４】
マクロライブラリ１２０は、ダイナミックリンクライブラリである。一実施例において、マクロライブラリ１２０はアプリケーション１１７に内蔵する。しかしながらマクロライブラリ１２０は、アプリケーション１１７とは独立に設け、複数のアプリケーション１１７からアクセスできるようにしても良い。処理部１３５は、Ｃプラスプラス（Ｃ＋＋）処理部、Ｃシャープ（Ｃ＃）処理部、ＶＢＡ処理部、ビジュアルベーシックネット（ＶＢ．ＮＥＴ）処理部を含む複数のコード処理部の１つ以上を備える。処理部１３５は、例えばマクロ記録エンジン１４０から受け取った命令を特定言語ソースコードに変換する。
【００３５】
記録部１４５、構築部１５０、命令リスト１５５、検証部１６０、変数マップ１６５は、代表的にコンポーネントオブジェクトモデル（ＣＯＭ）構成要素である。一実施例において、記録部１４５、構築部１５０、命令リスト１５５、検証部１６０、および変数マップ１６５は、アプリケーション１１７内に存在する。しかしながら別の実施例において、これらＣＯＭ構成要素は、アプリケーション１１７から独立して存在できる。この場合、複数のアプリケーション１１７から単一の構築部１５０にアクセス可能である。記録部１４５はプログラムであり、ユーザインタフェース１０５におけるユーザ動作から生成したマクロを記録し格納する。構築部１５０は、空の命令リスト１５５を作成し、記録部１４５から情報を受け取り、言語非依存構文を使用して命令を構築し、その命令を検証部１６０と変数マップ１６５とへ送って命令構成の適正さを確認し、その命令を命令リスト１５５に追加する。記録部１４５は、命令リスト１５５を処理部１３５へ送る。処理部１３５は、命令リスト１５５を特定言語ソースコードに変換する。
【００３６】
命令リスト１５５は、命令とオペランドとのペアのリストである。オペランドは、命令のオプション部分であり、命令フォーマットに依存する。一実施例において、命令リスト１５５は、命令とオペランドとを１対１あるいは１対０の関係で含む。完成した命令リスト１５５は、コンピュータ言語非依存構文の命令セットを含む。完成した命令リスト１５５は、記録部１４５から処理部１３５へ送る。検証部１６０は、命令リスト１５５における命令が正しい数およびタイプのオペランドを含むか否かを判定する。例えば検証部１６０は、処理部１３５が受け取る命令リスト１５５が問題を起こすソースコードを含まないように確認する。構成が適正であると判断したら、検証部１６０は、その命令を構築部１５０に返す。変数マップ１６５は、構築部１５０から命令を受け取り、その命令中の変数名およびタイプを格納し、同一名で異なるタイプの変数をユーザが作成しないようにし、その命令を構築部１５０に返す。
【００３７】
ＶＳＡサブシステム１２５は、ダイナミックリンクライブラリであり、ＶＳＡ記録部１７５を含む。ＶＳＡ記録部１７５は、一般にＶＳＡ処理部１３５からマクロソースコードを受け取り、そのマクロを作成した文書に関連するＶＳＡアプリケーション１１７内に前記ソースコードを保存する。
【００３８】
ＶＢＡサブシステム１３０は、ダイナミックリンクライブラリであり、ＶＢＡ記録部１７０を備える。ＶＢＡ記録部１７０は、一般にＶＢＡ処理部１３５からマクロソースコードを受け取り、当該マクロを作成した文書に関連するＶＢＡアプリケーション１１７内に前記ソースコードを保存する。一実施例において、システム１００の目的は、命令リスト１５５が対象とする処理スタックの各命令が正しいタイプおよび数のオペランドを持つようにすることである。
【００３９】
図２は、命令リスト２００の内部構造における統一モデリング言語（ＵＭＬ）を示す図である。この命令リスト２００は、本発明の一実施例に基づき、コンピュータ言語非依存構文を用いて作成する。図１Ｂおよび図２を参照すると、一例としての命令リスト２００は、構築部１５０の命令リスト１５５に存在する命令２０５とオペランド２５０とを備える。命令２０５は、「ｃａｌｌｖｉｒｔ」２１０と、「ｌｄｌｏｃ」２１５と、「ｓｔｌｏｃ」２２０と、「ｌｄｃ＿ｉ４」２２５と、「ｌｄｃ＿ｒ８」２３０と、「ｌｄｓｔｒ」２３５と、「ｐｏｐ」２４０と、「ｃｏｍｍｅｎｔ」２４５とからなる。オペランド２５０は、変数２５５と、メソッド２６０と、リテラル２６５とからなる。数字２０７および「０．．１」２５２は、命令リスト１５５の各命令２０５は、０個または１個のオペランド２５０に関連付くことを示す。
【００４０】
変数２５５は、オペランド２５０の１タイプであり、一般に名前付けした記憶場所として定義され、プログラム実行中に変更可能なデータを含むことができる。メソッド２６０は、オペランド２５０の１タイプであり、オブジェクトがメッセージを受け取った時に実行する処理として定義される。リテラル２６５は、オペランド２５０の１タイプであり、値として定義される。この値は、アプリケーション１１７内で使用され、変数の値あるいは式の結果としてではなく、それ自身として表される。例えば、数字「２５」、文字「ａ」、文字列「ｈｅｌｌｏ」は、全てリテラル２６５の例である。
【００４１】
命令「ｃａｌｌｖｉｒｔ」２１０は、仮想メソッドの呼び出しを表す。「ｃａｌｌｖｉｒｔ」２１０は、オペランド２５０としてメソッド２６０を取る。また「ｃａｌｌｖｉｒｔ」２１０は、メソッド２６０に関係する全ての引数をあらかじめ処理スタックに置く必要がある。この処理スタックは、命令リスト１５５の処理中に使用する。処理スタックのサイズは、命令リスト１５５の処理に伴い上下する。一実施例において、命令リスト１５５内のある命令は要素を処理スタックに置き、ある命令は処理スタックから要素を取り、ある命令は処理スタックに手を触れない。次に「ｃａｌｌｖｉｒｔ」２１０は、処理スタックの引数を使用し、メソッド２６０を実行する。メソッド２６０が何らかの情報を戻せば、「ｃａｌｌｖｉｒｔ」２１０は、その戻り情報を処理スタックへ戻す。「ｌｄｌｏｃ」２１５は、ローカル変数のロード動作を表す。「ｌｄｌｏｃ」２１５は、参照した変数２５５を取り出し、それを処理スタックへ入れ、その変数を他の格納動作または呼び出しが利用できるようにする。「ｓｔｌｏｃ」２２０は、ローカル変数の格納動作を表す。処理スタックから値を取り出し、その値を変数２５５に割り当てる。
【００４２】
「ｌｄｃ＿ｉ４」２２５は、４バイト整数を処理スタックへロードし、対応するオペランドとしてリテラル２６５を取る。例えば「ｌｄｃ＿ｉ４」２２５は、４，８，１２を含む数字を取る。「ｌｄｃ＿ｒ８」２３０は、８バイトのダブル値を処理スタックへロードすることを表す。「ｌｄｃ＿ｉ４」２２５と同様、「ｌｄｃ＿ｒ８」２３０は、対応するオペランドとしてリテラル２６５を取る。「ｌｄｓｔｒ」２３５は、ストリングをスタックへロードし、対応するオペランド２５０としてリテラル２６５を取る。「ｐｏｐ」２４０は、対応するオペランドを取らず、「ｐｏｐ」２４０が与えられた時点における処理スタックの一番上にあるオペランド２５０を破棄する。「ｃｏｍｍｅｎｔ」２４５は、リテラル２６５を取り、それをコメントストリングとして送出する。処理部１３５は、そのストリングを言語にあったフォーマットに変更できる。
【００４３】
当業者には明らかな通り、命令リスト２００の一部として示した前記命令は、全命令の小さなサブセットに過ぎない。全命令は、算術命令や論理命令を含み、言語非依存構文を用いて処理できる。
【００４４】
図３〜図５は、本発明の一実施例に基づく、コンピュータ言語非依存構文においてマクロを記録する方法のコンピュータ実行処理を示す論理フローチャートである。図３の論理フローチャート３００は、図１Ｂのマクロ記録システム１００の動作環境において、コンピュータ言語非依存構文でマクロを記録する処理全体を示す。
【００４５】
図１Ｂおよび図３を参照して説明する。一実施例方法３００は、開始ステップからステップ３０５へ進む。ステップ３０５において、ユーザは、ユーザインタフェース１０５を介してアプリケーション１１７を開く。ユーザインタフェース１０５は、ユーザがサーバ１１０およびデータベース１１５を介してアプリケーション１１７へアクセスするための場所である。ユーザは、アプリケーション１１７を開くため、ユーザインタフェース１０５のモニタ上で、アプリケーション１１７に対応するアイコンを選択する。
【００４６】
ステップ３１０において、ユーザは、マクロの記録を開始する。一実施例において、ユーザはマクロ記録を開始するため、アプリケーション１１７のドロップダウンボックスから「マクロ記録」を選択する。するとダイアログボックスが現れるので、ユーザは記録するマクロに名前を付け、マクロの格納場所をデータベース１１５内に選択し、マクロの簡単な説明を加える。例えばマクロを作成する目的やマクロの機能を簡単に説明する。ユーザは、マクロの説明を完成すると、ダイアログボックスを閉じ、アプリケーション１１７はマクロの記録を開始する。
【００４７】
ステップ３１５において、ユーザは、記録可能な動作を行う。ステップ３２０において、アプリケーション１１７は、その記録可能動作を実行する。記録可能動作とは、ユーザがアプリケーション１１７において行う何らかの動作であり、例えばキー操作、アプリケーション１１７の特定領域からのデータ選択、算術的決定等である。ステップ３２５は、ユーザが実行した記録可能動作を記録するか否かを決定する。記録しなければ「ＮＯ」へ分岐してステップ３６５へ進み、ユーザが別の記録可能動作を実行するか否かを決定する。動作を記録する場合は「ＹＥＳ」へ分岐し、ステップ３３０へ進む。
【００４８】
ステップ３３０において、アプリケーション１１７は、マクロ記録エンジン１４０において命令リスト１５５を構築する。命令リスト１５５は、マクロ動作に沿った一連のコンピュータ言語非依存構文の命令を含む。これら命令は、ユーザの動作記録をコンピュータ言語非依存構文に翻訳したものである。ステップ３３５において、アプリケーション１１７は、命令リスト１５５をマクロ記録エンジン１４０へ送る。ステップ３４５において、マクロ記録エンジン１４０は、その命令リスト１５５を１つ以上の処理部１３５へ送る。命令リスト１５５を１つ以上の処理部１３５へ送るタイミングは、一般にアプリケーション１１７が決定する。例えば、ユーザが対応ソースコードラインを生成するための動作を完了すると、アプリケーション１１７は、ユーザ動作に基づき作成した命令リスト１５５を処理部１３５へ送る。処理部１３５は、例えばＣ＋＋、Ｃ＃、ＶＢＡ、ＶＢ．ＮＥＴ等、複数のコンピュータ言語コードを生成できる。ステップ３４５において、マクロ記録部１４５は、１つの命令リスト１５５を１つ以上の処理部１３５へ送る。その処理部において、ユーザのマクロ使用目的およびユーザの好みの言語に基づき、１つ以上の特定言語ソースコードを生成する。
【００４９】
ステップ３５０において、処理部１３５は、命令リスト１５５をコンピュータ言語非依存構文から例えばＣ＋＋、Ｃ＃、ＶＢＡ、ＶＢ．ＮＥＴ等の特定言語ソースコードへ変換する。ステップ３５５において、処理部１３５は、その特定言語ソースコードをマクロ記録エンジン１４０へ送る。ステップ３６０において、マクロ記録エンジン１４０は、その特定言語ソースコードを適切な場所に保存する。一実施例において、前記ソースコードを保存する適切な場所は、データベース１１５、ＶＳＡサブシステム１２５、ＶＢＡサブシステム１３０、またはアプリケーション１１７を含む。例えば、記録部１４５は命令リスト１５５をＶＢＡ処理部１３５へ送り、その命令リスト１５５をＶＢＡコードに変換する。変換後のＶＢＡコードは、マクロ記録エンジン１４０へ送る。マクロ記録エンジン１４０は、そのＶＢＡコードをＶＢＡサブシステム１３０内のＶＢＡ記録部１７０へ送る。一実施例において、アプリケーション１１７は、ユーザインタフェース１０５を介してユーザに適切な場所の選択を促す。ユーザは、それに基づき適切な場所を選択する。ステップ３６１において、構築部１５０は、命令リスト１５５を削除する。ステップ３６２において、アプリケーション１１７は、構築部１５０を削除する。
【００５０】
ステップ３６５は、ユーザがアプリケーション１１７において別の記録可能動作を行ったか否かを判定する。「ＹＥＳ」であればステップ３２５へ進み、その動作を記録するか否かを決定する。ユーザが別の記録可能動作を行っていなければ、「ＮＯ」へ分岐してステップ３７０へ進む。ステップ３７０において、ユーザは、アプリケーション１１７におけるマクロ記録を停止する。ユーザは、マクロ記録を停止するに当たり、ユーザインタフェース１０５のモニタ表示において、アプリケーション１１７のドロップダウンボックスから［マクロ記録停止」を選択する。この時点で前記マクロは特定言語コードになっており、ユーザはアプリケーション１１７においてそのマクロにアクセス可能である。フローチャート３００は、終了ステップにおいて終了する。
【００５１】
図４は、図３のステップ３３０の詳細を示す論理フローチャートである。すなわち、コンピュータ言語非依存構文において命令リスト１５５を構築するためのコンピュータ実行方法例を示す。図１Ｂ、３、および４を参照しながら説明する。ステップ３３０の詳細は、ステップ４０５において開始し、ユーザはアプリケーション１１７で記録可能な動作を行う。ステップ４１０において、アプリケーション１１７は、マクロ記録エンジン１４０の構築部１５０を作成する。構築部１５０は、一般にアプリケーション１１７において記録したユーザ動作毎に作成する。しかしながら別の実施例において、処理部１３５が前の命令リスト１５５を処理した後、構築部１５０を空の命令リスト１５５と共にリセットすれば、記録したユーザ動作毎に新しい構築部１５０を作成する必要はない。
【００５２】
ステップ４１５において、構築部１５０は、空の命令リスト１５５と、変数マップ１６５と、検証部１６０とを、マクロ記録エンジン１４０内に作成する。命令リスト１５５、変数マップ１６５、および検証部１６０は、一般にアプリケーション１１７における記録可能ユーザ動作毎に作成する。しかしながら別の実施例において、処理部１３５が前の命令リスト１５５を処理した後、命令リスト１５５、変数マップ１６５、および検証部１６０をリセットすれば、記録したユーザ動作毎にそれらを新しく作成する必要はない。
【００５３】
ステップ４２０において、アプリケーション１１７は、記録したユーザ動作の一部をコンピュータ言語非依存構文を有する命令に翻訳する。ステップ４２５において、構築部１５０は、必要に応じてその命令の情報を変数マップ１６５へ追加する。構築部１５０が変数マップ１６５へ情報を追加するのは、その命令が前の命令で使用していない変数を含む場合である。ステップ４４５において、構築部１５０は、前記命令を検証部１６０へ送る。ステップ４５０において、検証部１６０は、その命令が適正に作成されたか否かを判定する。検証部１６０は、命令が適正に作成されたか否かを判定するに当たり、当該命令のコードを検査し、適切なコード構造を確認する。すなわち、その命令が正しいタイプおよび数のオペランドを持っているか、呼び出しを実行するために適切なタイプの情報を持っているかを検査する。
【００５４】
ステップ４５５は、現在の命令が命令リスト１５５の現在の内容に照らして適正に構築されているか否かを決定するため、構築部１５０が検証部１６０を使うか否かを決定する。「ＹＥＳ」であればステップ４６０に分岐し、構築部１５０は検証部１６０を用いて当該命令が命令リスト１５５の現在の内容に則っているか否かを決定する。次にステップ４７０へ進む。構築部１５０が、現在の命令が命令リスト１５５の現在の内容に照らして適正に構築されているか否かの決定に検証部１６０を使わないのであれば、「ＮＯ」に分岐してステップ４７０へ進む。ステップ４７０において、構築部１５０は、当該命令を命令リスト１５５に追加する。
【００５５】
ステップ４７５は、命令リスト１５５が完成したか否かを決定する。「ＮＯ」であれば、ステップ４２０へ進み、アプリケーション１１７は、ユーザ動作の他の部分をコンピュータ言語非依存構文を有する命令に翻訳する。命令リスト１５５が完成していれば、「ＹＥＳ」に分岐して図３のステップ３３５へ進む。
【００５６】
図５は、図４のステップ４５０の詳細を示す論理フローチャートである。すなわち、命令が適正に作成されているか否かを検証部１６０が判定するためのコンピュータ実行方法の例を示す。図１Ｂ、４、および５を参照して説明する。ステップ４５０を開始すると、ステップ５１０において、検証部１６０は、構築部１５０から命令を受け取る。ステップ５１５において、検証部１６０は、受け取った命令が正しい数およびタイプのオペランドを含むか否かを調べる。「ＮＯ」であればステップ５２０へ分岐し、命令リスト１５５の作成は失敗し、処理は終了する。命令が正しい数およびタイプのオペランドを含めば、「ＹＥＳ」に分岐して図４のステップ４５５へ進む。
【００５７】
このように本発明によれば、ユーザおよび開発者は、様々なプログラミング言語においてマクロを作成し使用できる。目的命令言語の言語非依存構文を用いることにより、マクロを１つの言語で作成するだけで良く、さらに別の言語で作成する必要がなくなる。すなわち目的命令言語は、元のマクロ命令を中立命令に変換し、その中立命令を様々な言語に変換できる。
【００５８】
本発明は、従来技術の問題点を克服し、当初目的を達成できる。本発明の実施例をいくつか説明してきたが、当業者には明らかな通り、請求の範囲に記載した本発明の要旨および範囲を逸脱することなく、本発明には様々な修正や変更が可能である。例えば本発明の方法は、一般にマクロと呼ばれる命令だけでなく、コンピュータ読み取り可能命令すべてに適用可能である。
【図面の簡単な説明】
【図１Ａ】本発明の各実施例を実行するための動作環境例を示すブロック図である。
【図１Ｂ】本発明の一実施例に基づく、目的命令言語においてマクロを記録するためのマクロ作成記録システムを示すブロック図である。
【図２】本発明の一実施例に基づく、目的命令言語を用いて命令リストを作成する統一モデリング言語のブロック図である。
【図３】本発明の一実施例に基づく、目的命令言語を用いてマクロを記録する処理を示すフローチャートである。
【図４】本発明の一実施例に基づく、目的命令言語を用いてマクロの命令リストを作成する処理を示すフローチャートである。
【図５】本発明の一実施例に基づく、目的命令言語で書いた命令の適切な構成を検証する処理を示すフローチャートである。
【図１Ａ】
2004213529.tif 000003
【図１Ｂ】
2004213529.tif 000004
【図２】
2004213529.tif 000005
【図３】
2004213529.tif 000006
【図４】
2004213529.tif 000007
【図５】
2004213529.tif 000008
【外国語明細書】
2004213529.tif 000009
2004213529.tif 000010
2004213529.tif 000011
2004213529.tif 000012
2004213529.tif 000013
2004213529.tif 000014
2004213529.tif 000015
2004213529.tif 000016
2004213529.tif 000017
2004213529.tif 000018
2004213529.tif 000019
2004213529.tif 000020
2004213529.tif 000021
2004213529.tif 000022
2004213529.tif 000023
2004213529.tif 000024
2004213529.tif 000025
2004213529.tif 000026
2004213529.tif 000027
2004213529.tif 000028
2004213529.tif 000029
2004213529.tif 000030
2004213529.tif 000031
2004213529.tif 000032
2004213529.tif 000033
2004213529.tif 000034
2004213529.tif 000035
2004213529.tif 000036
2004213529.tif 000037
2004213529.tif 000038
2004213529.tif 000039
2004213529.tif 000040
2004213529.tif 000041