JP2004213529A - 言語非依存の構文でマクロを記録する方法およびシステム - Google Patents
言語非依存の構文でマクロを記録する方法およびシステム Download PDFInfo
- Publication number
- JP2004213529A JP2004213529A JP2003002118A JP2003002118A JP2004213529A JP 2004213529 A JP2004213529 A JP 2004213529A JP 2003002118 A JP2003002118 A JP 2003002118A JP 2003002118 A JP2003002118 A JP 2003002118A JP 2004213529 A JP2004213529 A JP 2004213529A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- computer
- recording
- independent syntax
- macro
- 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.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
【解決手段】目的命令言語(OIL)の非依存構文を使用することにより、特定言語のマクロ命令を各種言語で採用可能な汎用命令セットに変換できる。マクロは、再記録することなく、あるいは別の言語に翻訳することなく、複数のコンピュータ言語のソースコードに変換できる。
【選択図】 図1A
Description
技術分野
本発明は、広くコンピュータ環境におけるマクロ記録システムに関する。さらに詳しくは、マクロを最終的に記録するコンピュータ言語から独立した構文でマクロ命令を作成することにより、マクロを再作成することなく、マクロを複数の言語に変換する方法およびシステムに関する。
【0002】
背景技術
コンピュータ装置は公知であり普及している。コンピュータ装置は、例えばパーソナルコンピュータ、コンピュータ端末アクセスを有する集中型コンピュータ装置、インターネット等のネットワークに接続したコンピュータ装置を有する広域分散システムである。ある種のコンピュータ装置はほとんど人手を介さずに動作するが、多くのコンピュータ装置はその動作に人による入力を必要とする。パーソナルコンピュータ等のコンピュータ装置は、数字および文字情報を入力するためのキーボードを有する。
【0003】
コンピュータ装置は、作業の種類に応じて他の入力も有する。例えばグラフィカルユーザインタフェースの普及に伴い、グラフィカル入力装置の利用が急増している。グラフィカル入力装置は、例えばマウス、グラフィックタブレット、デジタイザ、ライトペンである。これらは、コンピュータスクリーン上のカーソル等のグラフィカル要素を移動し位置決めできる。このグラフィカル要素を使用することにより、機能的コマンドを選択でき、コンピュータ動作を指示でき、情報入力を補助できる。
【0004】
前記マウスは、最も普及しているグラフィカル入力装置の1つである。マウスは、コンピュータ装置に接続し、コマンドを選択したりグラフィカル情報を入力するために使う。マウスを平面上で動かすと、マウスの相対移動がコンピュータ装置に伝わり、カーソルを移動させる。マウスのボタンは、コマンドにアクセスしてそれを起動する。カーソルを置くことでグラフィカル情報を入力できる。
【0005】
コンピュータ装置は、アプリケーションを動作させることにより、他の形の入力をユーザから受け取ることもできる。例えば音声入力、デジタルカメラからの入力、ビデオ記録部からの入力、ローカルエリアネットワークまたはワイドエリアネットワークを介して接続した別のコンピュータ資源からの入力である。
【0006】
ユーザは、コンピュータ装置を操作する場合、入力装置を使ってコンピュータ装置の動作を指示する。コンピュータ装置は、特定の動作をするに当たり、一連の同一動作を必要とすることが頻繁である。この種の繰り返し動作は、1つ以上の入力装置からの入力を含むこともある。例えばある動作は、プログラムを開始するためにマウス動作を必要とし、その次にキーボードを使ってアクセスパスワードをテキスト入力することを必要とする。繰り返し動作は、その完了までにキーボード、マウス、その他入力を必要とすることが多い。ユーザは、このような繰り返し動作を行うたびに、同じ入力装置を使って一連の同じ動作をしなければならない。これは時間がかかる上、エラーを伴いやすい。状況によっては、繰り返し動作をマクロにより簡素化できる。
【0007】
マクロは、特定のアプリケーションにおいて、キーボード、マウス、その他入力装置の繰り返し入力を自動化するために用いる。一般にマクロは、繰り返し命令を含んだファイルである。マクロをいったん作成すれば、コンピュータ装置がそれを再生する。多くのソフトウエアアプリケーションは、マクロ記録再生機能を持っている。このようなソフトウエアアプリケーションにおいて、ユーザは、特定の動作あるいは一連の動作をマクロに記録し、そのマクロに名前を付ける。その後、その特定動作あるいは一連動作は、前記名前を付けたマクロを実行することで行える。従ってユーザは、時間を節約でき、マクロの全ステップを繰り返す労力から解放される。一般にアプリケーションソフトウエアは、マクロを実行するため、マクロ再生機能を有する。この機能は、コマンドあるいはショートカットコマンドによって開始できる。
【0008】
現在のマクロ記録技術において、一般にマクロの記録は、1つの言語、すなわちアプリケーション用ビジュアルベーシック(VBA)でしか行えない。しかしながら、マクロを記録し実行するために使えるプログラミング言語は、他にもたくさんある。ユーザは、好み、熟練度、専門レベルに応じて言語を選び、その言語でマクロを記録することを望む。VBA以外の言語でマクロを記録するために、アプリケーション開発者は、ユーザがマクロ記録を希望する各言語用に、マクロ記録部を書き直さねばならない。このような処理は高価で時間がかかるばかりでなく、エラーの可能性があり、異なる言語で記録したマクロ間に動作不一致が生ずる可能性もある。ソフトウエアアプリケーションにより最小の努力で複数言語においてマクロを記録する方法およびシステムを提供できれば、ユーザおよびアプリケーション開発者の時間および費用を軽減できる。
【0009】
発明の開示
ここに開示する本発明方法およびシステムは、コンピュータマクロをコンピュータ言語に依存しない構文において記録する手段を提供する。これにより、ソフトウエアアプリケーションは、命令を1度記録するだけで、その命令をいずれかのコンピュータ言語のソースコードに変換できる。本発明の一態様は、1つ以上の異なるコンピュータ言語においてマクロを記録しようとするユーザに対し、コンピュータシステムの記録システムを起動することでマクロの記録を開始可能とする。この記録システムは、例えばマクロ記録エンジンに存在するマクロ記録部を備える。マクロ記録部およびマクロ記録エンジンは、コンピュータシステムのソフトウエアアプリケーション内部に存在しても良い。
【0010】
次にユーザは、コンピュータシステムに記録しようとする1つ以上の動作を行う。一般にその動作は、コンピュータシステムのソフトウエアアプリケーション上で行う。この動作は、ユーザがソフトウエアアプリケーションと対話している間に発生する一連のコマンドやキーボード打鍵を含む。前記ソフトウエアアプリケーションは、前記ユーザ動作を命令リストと呼ぶ一連の命令に変換する。この命令リストは、コンピュータ言語に依存しない構文を有する。一般に前記命令リストは、ユーザが実施した動作をコンピュータ読み取り可能に翻訳したものであり、記録システムが記録したものである。このコンピュータ言語非依存構文の命令は、1つ以上の異なるコンピュータ言語のソースコードに変換可能である。コンピュータ言語非依存構文は、前記ソフトウエアアプリケーションが使用するコンピュータ言語から独立している。
【0011】
前記命令リストは、一般に命令とオペランドとを1対1または1対0の関係で含む。一般にオペランドは、処理しようとする情報あるいは取り扱おうとする情報を指示する。ソフトウエアアプリケーションは、構築部の助けを借り、ユーザの動作を命令リストに変換する。構築部は、ソフトウエアアプリケーション内に含めても良い。各命令は、コンピュータ言語非依存構文で作成する。命令リストが完成すると、それを1つ以上の処理部へ送り、特定コンピュータ言語のソースコードに変換する。前記命令リストはコンピュータ言語非依存構文で書かれているため、各アプリケーション開発者およびユーザは、その好みに応じ、前記命令リストを異なるコンピュータ言語に変換できる。例えばユーザAはマクロを言語Aで記録することを選び、ユーザBは言語Bで記録することを選ぶ。両ユーザが同一動作を記録したとすれば、言語非依存構文を持った同一命令リストが作成される。そしてその命令リストを各々異なる処理部で処理することにより、言語Aと言語Bとに変換する。他の実施例において、言語非依存構文を用いた命令リストを、複数のコンピュータ言語に一度に変換することも可能である。この場合、命令リストは、別々の処理部へ送るが、その時各処理部用に再作成する必要はない。
【0012】
発明を実施するための最良の形態
添付図面を参照しながら本発明およびその利点を詳細に説明する。
【0013】
本発明は、目的命令言語(OIL)においてマクロを記録するコンピュータ実行方法を支援する。目的命令言語とは、コンピュータ言語に依存しない構文であり、マクロを1言語において記録し、それを他の各種プログラミング言語において利用できるようにする。プログラマは、目的命令言語の非依存構文を使用することにより、特定言語のマクロ命令ステップを、各種言語で採用可能な汎用命令セットに変換できる。プログラマは、目的命令言語を使用することにより、同一マクロを各種言語で再作成する必要がなくなる。本発明は、添付図面を参照することにより、より良く理解できよう。
【0014】
本発明の実施例は、パーソナルコンピュータで実行するソフトウエアモジュールおよびオペレーティングシステムとの関連で全般的に説明するが、当業者には明らかな通り、本発明は他のコンピュータタイプのプログラムモジュールにも適用できる。また当業者には明らかな通り、本発明はスタンドアロンコンピュータ環境および分散コンピュータ環境において実施できる。分散コンピュータ環境では、局所および遠隔記憶装置にプログラムモジュールを物理的に配置する。このプログラムモジュールの実行は、局所においてスタンドアロン形式で、あるいは遠隔地においてクライアント/サーバ形式で行える。このような分散コンピュータ環境は、例えば事務所のローカルエリアネットワーク、企業のコンピュータネットワーク、世界的インターネットを含む。
【0015】
以下の詳細説明は、従来のコンピュータ構成部品、例えば処理装置、記憶装置、表示装置、入力装置等による処理およびこれら構成部品の動作に関する記号的表現を用いる。これら構成部品は、従来の分散コンピュータ環境におけるコンピュータ構成部品、例えば遠隔ファイルサーバ、遠隔コンピュータサーバ、遠隔記憶装置を含む。このような分散コンピュータ構成部品の各々は、処理装置から通信ネットワークを介してアクセスできる。
【0016】
コンピュータによる処理および動作は、処理装置または遠隔サーバによる信号操作、局所または遠隔記憶装置による前記信号のデータ構造への保存を含む。このデータ構造は、記憶装置に格納したデータの集合を物理的に体系化することであり、特定の電気的または磁気的要素を表す。前記記号的表現は、コンピュータプログラミングおよびコンピュータ構築の当業者が利用することにより、最も効果的に技術や発見を他の当業者に伝えることができる。
【0017】
本発明は、本明細書で説明すると共に添付図面に示したフローチャート(または論理フローチャート)の機能を実施するためのコンピュータプログラムも含む。ただしコンピュータプログラミングにより本発明を実施する場合、様々な方法があり、本発明は特定のコンピュータプログラム命令セットに拘束されるものではない。熟練プログラマであれば、添付フローチャートおよび本明細書に基づき、容易に本発明を実施するためのコンピュータプログラムを書けるであろう。従って特定のプログラムコード命令セットを開示することは、本発明の実施および利用方法を適切に理解する上で、不必要と考える。フローチャートを参照しながら、本発明が請求するコンピュータプログラムの独創的機能を以下に詳細に説明する。
【0018】
添付図面において、同一符号は同一要素を示す。これら添付図面を参照しながら、本発明の各態様および本発明実施における動作環境例を詳細に説明する。
【0019】
図1Aは、本発明の各実施例における動作環境1を例示するブロック図である。当業者には明らかな通り、図1Aおよびそれに関する説明は、コンピュータハードウエアおよびプログラムモジュールの一例についての簡略な説明である。これらに関するさらなる情報は、プログラミングマニュアル、ユーザガイド等の刊行物から容易に得ることができる。
【0020】
図1Aに示す動作環境例1は、汎用コンピュータ装置を含む。このコンピュータ装置は、従来のパーソナルコンピュータ10で良い。図1Aにおいて、パーソナルコンピュータ10は、ネットワーク環境で動作し、遠隔サーバ110に論理接続する。パーソナルコンピュータ10と遠隔サーバ110との間の論理接続は、ローカルエリアネットワーク12とワイドエリアネットワーク13とで代表する。当業者には明らかな通り、このクライアント/サーバ構成において、遠隔サーバ110はファイルサーバまたはコンピュータサーバとして機能できる。
【0021】
パーソナルコンピュータ10は、処理装置14を含む。この処理装置は、例えばカリフォルニア州サンタクララのインテル社が製造する「ペンティアム」マイクロプロセッサである。パーソナルコンピュータ10は、システムメモリ15をさらに含む。システムメモリ15は、リードオンリメモリ(ROM)16とランダムアクセスメモリ(RAM)とを含み、システムバス18を介して処理装置14に接続する。コンピュータ10の一実施例は、基本入出力システム(BIOS)19を使用する。BIOS19は、ROM16に格納する。当業者には明らかな通り、BIOS19は、基本ルーチンセットであり、パーソナルコンピュータ10の各要素間の情報伝達を支援する。当業者には明らかな通り、本発明は他の構成を有するコンピュータでも実施可能である。例えばBIOS19を使用しないコンピュータ、処理装置14として他のマイクロプロセッサを使用するコンピュータ等においても実施可能である。
【0022】
パーソナルコンピュータ10内において、局所ハードディスク装置20は、ハードディスク装置インタフェース21を介してシステムバス18に接続する。フロッピーディスク23を読み書きするためのフロッピーディスク装置22は、フロッピーディスク装置インタフェース24を介してシステムバス18に接続する。CD−ROMまたはDVDディスク26を読むためのCD−ROMまたはDVD装置25は、CD−ROMまたはDVDインタフェース27を介してシステムバス18に接続する。
【0023】
ユーザは、入力装置を用いてパーソナルコンピュータ10にコマンドおよび情報を入力できる。入力装置は、例えばキーボード28および/またはマウス29等のポインティング装置であり、シリアルポートインタフェース30を介してシステムバス18に接続する。他のポインティング装置(図1Aに示さず)は、トラックパッド、トラックボール、デジタイザペン、ヘッドトラッカ、データグローブ等、モニタ105上でカーソルを位置決めするための適切な装置を含む。モニタ105等の表示装置は、ビデオアダプタ32を介してシステムバス18に接続する。
【0024】
図1Aに示すように、ROM16、RAM17、ハードディスク20、フロッピーディスク23、CD−ROM/DVDディスク26は、多くのプログラムモジュールを格納できる。例えばオペレーティングシステム36、アプリケーションプログラムモジュール117、ブラウザプログラムモジュール37,文書プログラム38を格納できる。プログラムモジュールは、ルーチン、サブルーチン、プログラム、オブジェクト、部品、データ構造等を含み、特定のタスクを実行したり特定の抽象データタイプを実行する。
【0025】
このネットワーク環境における遠隔サーバ110は、遠隔記憶装置33に接続する。この遠隔記憶装置33は、一般に大容量装置であり、例えばハードディスク装置、CD−ROMまたはDVD装置、光磁気装置等である。当業者には明らかな通り、アプリケーションプログラムモジュール117等のプログラムモジュールは、コンピュータ読み取り可能媒体を介して遠隔サーバ110に提供する。パーソナルコンピュータ10は、ネットワークインタフェース34を介して遠隔サーバ110に接続する。このネットワークインタフェース34は、ローカルエリアネットワーク(LAN)12を介して通信を行う。
【0026】
好適実施例において、パーソナルコンピュータ10は、モデム35によっても遠隔サーバ110に接続する。モデム35は、インターネット等のワイドエリアネットワーク(WAN)13を介して通信する。モデム35は、シリアルポートインタフェース30を介してシステムバス18に接続する。モデム35は、公衆交換電話網(PSTN)または共同アンテナテレビ(CATV)ネットワークに接続しても良い。図1Aのモデム35はパーソナルコンピュータ10の外部にあるが、当業者には明らかな通り、パーソナルコンピュータ10の内部に設け、システムバス18と直接通信するようにもできる。なお、LAN12およびWAN13の両方を経由した遠隔サーバ110への接続は必要ないが、パーソナルコンピュータ10と遠隔サーバ110との間の通信路を提供するための代替方法として両方を示した。
【0027】
当業者には明らかな通り、オペレーティングシステム36、アプリケーションプログラムモジュール117、ブラウザプログラムモジュール37、文書プログラム38等のプログラムモジュールは、コンピュータ読み取り可能媒体を介してパーソナルコンピュータ10に提供できる。動作環境1の一実施例において、コンピュータ読み取り媒体は、局所または遠隔記憶装置を含むことができる。これは例えば局所ハードディスク装置20、フロッピーディスク23、CD−ROM/DVD26、RAM17、ROM16、遠隔記憶装置33を含む。パーソナルコンピュータ10の一実施例において、局所ハードディスク装置20は、データおよびプログラムを格納するために使う。
【0028】
パーソナルコンピュータ10および動作環境1全体の他の要素は示していないが、当業者には明らかな通り、かかる構成部品およびそれらの相互接続は公知である。本発明は当業者が実施するものであるため、パーソナルコンピュータ10および動作環境1全体の要素に関するさらなる詳細説明は、本発明との関連において必要ないと思われる。
【0029】
図1Bは、本発明に基づく、マクロを目的命令言語で記録するためのマクロ構築記録システム100を示すブロック図である。本例のマクロ構築記録システム100は、ユーザインタフェース105と、サーバ110と、データベース115と、アプリケーション117とを備える。アプリケーション117は、マクロライブラリ120、アプリケーション用ビジュアルスタジオ(VSA)サブシステム125、および/またはアプリケーション用ビジュアルベーシック(VBA)サブシステム130を備える。マクロライブラリ120は、処理部135と、マクロ記録エンジン140とを備える。マクロ記録エンジン140は、記録部145と、構築部150と、命令リスト155と、検証部160と、変数マップ165とを備える。VSAサブシステム125は、VSA記録部175を備える。VBAサブシステム130は、VBA記録部170を備える。
【0030】
ユーザインタフェース105は、コンピュータネットワークを介してサーバ110と通信接続する。ユーザは、ユーザインタフェース105を用い、サーバ110,データベース115,およびアプリケーション117と通信する。例えばユーザインタフェース105は、サーバ110を経由し、アプリケーション117およびデータベース115との間でデータおよび問い合わせを含む情報を通信できる。ユーザインタフェース105は、サーバ110を介してデータベース115およびアプリケーション117から情報を受け取れる。一実施例において、ユーザインタフェース105はパーソナルコンピュータである。
【0031】
サーバ110は、コンピュータネットワークを介し、ユーザインタフェース105およびデータベース115と通信接続する。
【0032】
データベース115は、コンピュータネットワークを介し、サーバ110およびアプリケーション117と通信接続する。データベース115は、ソフトウエアアプリケーション、言語処理部、およびマクロ記録部に関する情報を格納する。一実施例において、データベース115は、構造化照会言語(SQL)サーバデータベースである。
【0033】
アプリケーション117は、ソフトウエアアプリケーションであり、特定タスクの実行においてユーザを支援する。特定タスクとは、ワードプロセッシング、会計、在庫管理を含む。
【0034】
マクロライブラリ120は、ダイナミックリンクライブラリである。一実施例において、マクロライブラリ120はアプリケーション117に内蔵する。しかしながらマクロライブラリ120は、アプリケーション117とは独立に設け、複数のアプリケーション117からアクセスできるようにしても良い。処理部135は、Cプラスプラス(C++)処理部、Cシャープ(C#)処理部、VBA処理部、ビジュアルベーシックネット(VB.NET)処理部を含む複数のコード処理部の1つ以上を備える。処理部135は、例えばマクロ記録エンジン140から受け取った命令を特定言語ソースコードに変換する。
【0035】
記録部145、構築部150、命令リスト155、検証部160、変数マップ165は、代表的にコンポーネントオブジェクトモデル(COM)構成要素である。一実施例において、記録部145、構築部150、命令リスト155、検証部160、および変数マップ165は、アプリケーション117内に存在する。しかしながら別の実施例において、これらCOM構成要素は、アプリケーション117から独立して存在できる。この場合、複数のアプリケーション117から単一の構築部150にアクセス可能である。記録部145はプログラムであり、ユーザインタフェース105におけるユーザ動作から生成したマクロを記録し格納する。構築部150は、空の命令リスト155を作成し、記録部145から情報を受け取り、言語非依存構文を使用して命令を構築し、その命令を検証部160と変数マップ165とへ送って命令構成の適正さを確認し、その命令を命令リスト155に追加する。記録部145は、命令リスト155を処理部135へ送る。処理部135は、命令リスト155を特定言語ソースコードに変換する。
【0036】
命令リスト155は、命令とオペランドとのペアのリストである。オペランドは、命令のオプション部分であり、命令フォーマットに依存する。一実施例において、命令リスト155は、命令とオペランドとを1対1あるいは1対0の関係で含む。完成した命令リスト155は、コンピュータ言語非依存構文の命令セットを含む。完成した命令リスト155は、記録部145から処理部135へ送る。検証部160は、命令リスト155における命令が正しい数およびタイプのオペランドを含むか否かを判定する。例えば検証部160は、処理部135が受け取る命令リスト155が問題を起こすソースコードを含まないように確認する。構成が適正であると判断したら、検証部160は、その命令を構築部150に返す。変数マップ165は、構築部150から命令を受け取り、その命令中の変数名およびタイプを格納し、同一名で異なるタイプの変数をユーザが作成しないようにし、その命令を構築部150に返す。
【0037】
VSAサブシステム125は、ダイナミックリンクライブラリであり、VSA記録部175を含む。VSA記録部175は、一般にVSA処理部135からマクロソースコードを受け取り、そのマクロを作成した文書に関連するVSAアプリケーション117内に前記ソースコードを保存する。
【0038】
VBAサブシステム130は、ダイナミックリンクライブラリであり、VBA記録部170を備える。VBA記録部170は、一般にVBA処理部135からマクロソースコードを受け取り、当該マクロを作成した文書に関連するVBAアプリケーション117内に前記ソースコードを保存する。一実施例において、システム100の目的は、命令リスト155が対象とする処理スタックの各命令が正しいタイプおよび数のオペランドを持つようにすることである。
【0039】
図2は、命令リスト200の内部構造における統一モデリング言語(UML)を示す図である。この命令リスト200は、本発明の一実施例に基づき、コンピュータ言語非依存構文を用いて作成する。図1Bおよび図2を参照すると、一例としての命令リスト200は、構築部150の命令リスト155に存在する命令205とオペランド250とを備える。命令205は、「callvirt」210と、「ldloc」215と、「stloc」220と、「ldc_i4」225と、「ldc_r8」230と、「ldstr」235と、「pop」240と、「comment」245とからなる。オペランド250は、変数255と、メソッド260と、リテラル265とからなる。数字207および「0..1」252は、命令リスト155の各命令205は、0個または1個のオペランド250に関連付くことを示す。
【0040】
変数255は、オペランド250の1タイプであり、一般に名前付けした記憶場所として定義され、プログラム実行中に変更可能なデータを含むことができる。メソッド260は、オペランド250の1タイプであり、オブジェクトがメッセージを受け取った時に実行する処理として定義される。リテラル265は、オペランド250の1タイプであり、値として定義される。この値は、アプリケーション117内で使用され、変数の値あるいは式の結果としてではなく、それ自身として表される。例えば、数字「25」、文字「a」、文字列「hello」は、全てリテラル265の例である。
【0041】
命令「callvirt」210は、仮想メソッドの呼び出しを表す。「callvirt」210は、オペランド250としてメソッド260を取る。また「callvirt」210は、メソッド260に関係する全ての引数をあらかじめ処理スタックに置く必要がある。この処理スタックは、命令リスト155の処理中に使用する。処理スタックのサイズは、命令リスト155の処理に伴い上下する。一実施例において、命令リスト155内のある命令は要素を処理スタックに置き、ある命令は処理スタックから要素を取り、ある命令は処理スタックに手を触れない。次に「callvirt」210は、処理スタックの引数を使用し、メソッド260を実行する。メソッド260が何らかの情報を戻せば、「callvirt」210は、その戻り情報を処理スタックへ戻す。「ldloc」215は、ローカル変数のロード動作を表す。「ldloc」215は、参照した変数255を取り出し、それを処理スタックへ入れ、その変数を他の格納動作または呼び出しが利用できるようにする。「stloc」220は、ローカル変数の格納動作を表す。処理スタックから値を取り出し、その値を変数255に割り当てる。
【0042】
「ldc_i4」225は、4バイト整数を処理スタックへロードし、対応するオペランドとしてリテラル265を取る。例えば「ldc_i4」225は、4,8,12を含む数字を取る。「ldc_r8」230は、8バイトのダブル値を処理スタックへロードすることを表す。「ldc_i4」225と同様、「ldc_r8」230は、対応するオペランドとしてリテラル265を取る。「ldstr」235は、ストリングをスタックへロードし、対応するオペランド250としてリテラル265を取る。「pop」240は、対応するオペランドを取らず、「pop」240が与えられた時点における処理スタックの一番上にあるオペランド250を破棄する。「comment」245は、リテラル265を取り、それをコメントストリングとして送出する。処理部135は、そのストリングを言語にあったフォーマットに変更できる。
【0043】
当業者には明らかな通り、命令リスト200の一部として示した前記命令は、全命令の小さなサブセットに過ぎない。全命令は、算術命令や論理命令を含み、言語非依存構文を用いて処理できる。
【0044】
図3〜図5は、本発明の一実施例に基づく、コンピュータ言語非依存構文においてマクロを記録する方法のコンピュータ実行処理を示す論理フローチャートである。図3の論理フローチャート300は、図1Bのマクロ記録システム100の動作環境において、コンピュータ言語非依存構文でマクロを記録する処理全体を示す。
【0045】
図1Bおよび図3を参照して説明する。一実施例方法300は、開始ステップからステップ305へ進む。ステップ305において、ユーザは、ユーザインタフェース105を介してアプリケーション117を開く。ユーザインタフェース105は、ユーザがサーバ110およびデータベース115を介してアプリケーション117へアクセスするための場所である。ユーザは、アプリケーション117を開くため、ユーザインタフェース105のモニタ上で、アプリケーション117に対応するアイコンを選択する。
【0046】
ステップ310において、ユーザは、マクロの記録を開始する。一実施例において、ユーザはマクロ記録を開始するため、アプリケーション117のドロップダウンボックスから「マクロ記録」を選択する。するとダイアログボックスが現れるので、ユーザは記録するマクロに名前を付け、マクロの格納場所をデータベース115内に選択し、マクロの簡単な説明を加える。例えばマクロを作成する目的やマクロの機能を簡単に説明する。ユーザは、マクロの説明を完成すると、ダイアログボックスを閉じ、アプリケーション117はマクロの記録を開始する。
【0047】
ステップ315において、ユーザは、記録可能な動作を行う。ステップ320において、アプリケーション117は、その記録可能動作を実行する。記録可能動作とは、ユーザがアプリケーション117において行う何らかの動作であり、例えばキー操作、アプリケーション117の特定領域からのデータ選択、算術的決定等である。ステップ325は、ユーザが実行した記録可能動作を記録するか否かを決定する。記録しなければ「NO」へ分岐してステップ365へ進み、ユーザが別の記録可能動作を実行するか否かを決定する。動作を記録する場合は「YES」へ分岐し、ステップ330へ進む。
【0048】
ステップ330において、アプリケーション117は、マクロ記録エンジン140において命令リスト155を構築する。命令リスト155は、マクロ動作に沿った一連のコンピュータ言語非依存構文の命令を含む。これら命令は、ユーザの動作記録をコンピュータ言語非依存構文に翻訳したものである。ステップ335において、アプリケーション117は、命令リスト155をマクロ記録エンジン140へ送る。ステップ345において、マクロ記録エンジン140は、その命令リスト155を1つ以上の処理部135へ送る。命令リスト155を1つ以上の処理部135へ送るタイミングは、一般にアプリケーション117が決定する。例えば、ユーザが対応ソースコードラインを生成するための動作を完了すると、アプリケーション117は、ユーザ動作に基づき作成した命令リスト155を処理部135へ送る。処理部135は、例えばC++、C#、VBA、VB.NET等、複数のコンピュータ言語コードを生成できる。ステップ345において、マクロ記録部145は、1つの命令リスト155を1つ以上の処理部135へ送る。その処理部において、ユーザのマクロ使用目的およびユーザの好みの言語に基づき、1つ以上の特定言語ソースコードを生成する。
【0049】
ステップ350において、処理部135は、命令リスト155をコンピュータ言語非依存構文から例えばC++、C#、VBA、VB.NET等の特定言語ソースコードへ変換する。ステップ355において、処理部135は、その特定言語ソースコードをマクロ記録エンジン140へ送る。ステップ360において、マクロ記録エンジン140は、その特定言語ソースコードを適切な場所に保存する。一実施例において、前記ソースコードを保存する適切な場所は、データベース115、VSAサブシステム125、VBAサブシステム130、またはアプリケーション117を含む。例えば、記録部145は命令リスト155をVBA処理部135へ送り、その命令リスト155をVBAコードに変換する。変換後のVBAコードは、マクロ記録エンジン140へ送る。マクロ記録エンジン140は、そのVBAコードをVBAサブシステム130内のVBA記録部170へ送る。一実施例において、アプリケーション117は、ユーザインタフェース105を介してユーザに適切な場所の選択を促す。ユーザは、それに基づき適切な場所を選択する。ステップ361において、構築部150は、命令リスト155を削除する。ステップ362において、アプリケーション117は、構築部150を削除する。
【0050】
ステップ365は、ユーザがアプリケーション117において別の記録可能動作を行ったか否かを判定する。「YES」であればステップ325へ進み、その動作を記録するか否かを決定する。ユーザが別の記録可能動作を行っていなければ、「NO」へ分岐してステップ370へ進む。ステップ370において、ユーザは、アプリケーション117におけるマクロ記録を停止する。ユーザは、マクロ記録を停止するに当たり、ユーザインタフェース105のモニタ表示において、アプリケーション117のドロップダウンボックスから[マクロ記録停止」を選択する。この時点で前記マクロは特定言語コードになっており、ユーザはアプリケーション117においてそのマクロにアクセス可能である。フローチャート300は、終了ステップにおいて終了する。
【0051】
図4は、図3のステップ330の詳細を示す論理フローチャートである。すなわち、コンピュータ言語非依存構文において命令リスト155を構築するためのコンピュータ実行方法例を示す。図1B、3、および4を参照しながら説明する。ステップ330の詳細は、ステップ405において開始し、ユーザはアプリケーション117で記録可能な動作を行う。ステップ410において、アプリケーション117は、マクロ記録エンジン140の構築部150を作成する。構築部150は、一般にアプリケーション117において記録したユーザ動作毎に作成する。しかしながら別の実施例において、処理部135が前の命令リスト155を処理した後、構築部150を空の命令リスト155と共にリセットすれば、記録したユーザ動作毎に新しい構築部150を作成する必要はない。
【0052】
ステップ415において、構築部150は、空の命令リスト155と、変数マップ165と、検証部160とを、マクロ記録エンジン140内に作成する。命令リスト155、変数マップ165、および検証部160は、一般にアプリケーション117における記録可能ユーザ動作毎に作成する。しかしながら別の実施例において、処理部135が前の命令リスト155を処理した後、命令リスト155、変数マップ165、および検証部160をリセットすれば、記録したユーザ動作毎にそれらを新しく作成する必要はない。
【0053】
ステップ420において、アプリケーション117は、記録したユーザ動作の一部をコンピュータ言語非依存構文を有する命令に翻訳する。ステップ425において、構築部150は、必要に応じてその命令の情報を変数マップ165へ追加する。構築部150が変数マップ165へ情報を追加するのは、その命令が前の命令で使用していない変数を含む場合である。ステップ445において、構築部150は、前記命令を検証部160へ送る。ステップ450において、検証部160は、その命令が適正に作成されたか否かを判定する。検証部160は、命令が適正に作成されたか否かを判定するに当たり、当該命令のコードを検査し、適切なコード構造を確認する。すなわち、その命令が正しいタイプおよび数のオペランドを持っているか、呼び出しを実行するために適切なタイプの情報を持っているかを検査する。
【0054】
ステップ455は、現在の命令が命令リスト155の現在の内容に照らして適正に構築されているか否かを決定するため、構築部150が検証部160を使うか否かを決定する。「YES」であればステップ460に分岐し、構築部150は検証部160を用いて当該命令が命令リスト155の現在の内容に則っているか否かを決定する。次にステップ470へ進む。構築部150が、現在の命令が命令リスト155の現在の内容に照らして適正に構築されているか否かの決定に検証部160を使わないのであれば、「NO」に分岐してステップ470へ進む。ステップ470において、構築部150は、当該命令を命令リスト155に追加する。
【0055】
ステップ475は、命令リスト155が完成したか否かを決定する。「NO」であれば、ステップ420へ進み、アプリケーション117は、ユーザ動作の他の部分をコンピュータ言語非依存構文を有する命令に翻訳する。命令リスト155が完成していれば、「YES」に分岐して図3のステップ335へ進む。
【0056】
図5は、図4のステップ450の詳細を示す論理フローチャートである。すなわち、命令が適正に作成されているか否かを検証部160が判定するためのコンピュータ実行方法の例を示す。図1B、4、および5を参照して説明する。ステップ450を開始すると、ステップ510において、検証部160は、構築部150から命令を受け取る。ステップ515において、検証部160は、受け取った命令が正しい数およびタイプのオペランドを含むか否かを調べる。「NO」であればステップ520へ分岐し、命令リスト155の作成は失敗し、処理は終了する。命令が正しい数およびタイプのオペランドを含めば、「YES」に分岐して図4のステップ455へ進む。
【0057】
このように本発明によれば、ユーザおよび開発者は、様々なプログラミング言語においてマクロを作成し使用できる。目的命令言語の言語非依存構文を用いることにより、マクロを1つの言語で作成するだけで良く、さらに別の言語で作成する必要がなくなる。すなわち目的命令言語は、元のマクロ命令を中立命令に変換し、その中立命令を様々な言語に変換できる。
【0058】
本発明は、従来技術の問題点を克服し、当初目的を達成できる。本発明の実施例をいくつか説明してきたが、当業者には明らかな通り、請求の範囲に記載した本発明の要旨および範囲を逸脱することなく、本発明には様々な修正や変更が可能である。例えば本発明の方法は、一般にマクロと呼ばれる命令だけでなく、コンピュータ読み取り可能命令すべてに適用可能である。
【図面の簡単な説明】
【図1A】本発明の各実施例を実行するための動作環境例を示すブロック図である。
【図1B】本発明の一実施例に基づく、目的命令言語においてマクロを記録するためのマクロ作成記録システムを示すブロック図である。
【図2】本発明の一実施例に基づく、目的命令言語を用いて命令リストを作成する統一モデリング言語のブロック図である。
【図3】本発明の一実施例に基づく、目的命令言語を用いてマクロを記録する処理を示すフローチャートである。
【図4】本発明の一実施例に基づく、目的命令言語を用いてマクロの命令リストを作成する処理を示すフローチャートである。
【図5】本発明の一実施例に基づく、目的命令言語で書いた命令の適切な構成を検証する処理を示すフローチャートである。
Claims (26)
- コンピュータシステムにおいて、少なくとも1つの動作を記録する要求を受け付け、
前記コンピュータシステムにおいて、少なくとも1つの動作を記録するための記録システムを起動し、
前記コンピュータシステム上で実行した少なくとも1つの動作を受け付け、
前記コンピュータシステム上で実行した前記少なくとも1つの動作を前記記録システムによって記録し、
前記記録システムで記録した前記少なくとも1つの動作を、コンピュータ言語非依存構文を有する少なくとも1つの命令に変換し、
前記コンピュータ言語非依存構文を有する少なくとも1つの命令をコンピュータ言語非依存構文を有する命令リストに変換し、
前記コンピュータ言語非依存構文を有する命令リストを複数のソースコード言語の1つに変換する各段階を備える、コンピュータ言語非依存構文において命令を記録するコンピュータ実行方法。 - 少なくとも1つの命令からなる別の動作を前記コンピュータシステムが受け付けるか否かを決定し、
記録を停止する要求を受け付け、
前記記録システムによる記録を終了する各段階をさらに備える、請求項1記載の方法。 - 前記コンピュータ言語非依存構文を有する少なくとも1つの命令をコンピュータ言語非依存構文を有する命令リストに変換する前記段階は、
命令リストを作成し、
前記コンピュータシステム上で実行した少なくとも1つの動作を、コンピュータ言語非依存構文を有する命令に翻訳し、
前記コンピュータ言語非依存構文を有する命令を、コンピュータ言語非依存構文を有する少なくとも1つの命令からなる命令リストに追加し、
前記コンピュータ言語非依存構文を有する少なくとも1つの命令からなる命令リストを、複数の処理部の少なくとも1つへ送り、
前記複数の処理部の少なくとも1つにおいて、前記コンピュータ言語非依存構文を有する少なくとも1つの命令からなる命令リストを特定言語ソースコードに処理する各段階を備える、請求項1記載の方法。 - 前記コンピュータ言語非依存構文を有する命令を検証部にて受け入れ、
前記検証部において、前記コンピュータ言語非依存構文を有する命令が適正に構成されているか否かを決定し、
前記コンピュータ言語非依存構文を有する命令が前記命令リストの内容に照らして意味をなすか否かを決定するため、当該命令を前記検証部にて評価するか否かを問い合わせ、
肯定回答があれば、前記検証部において、前記コンピュータ言語非依存構文を有する命令が前記命令リストの内容に照らして意味をなすか否かを決定する各段階をさらに備える、請求項3記載の方法。 - 前記命令リストは、記録したマクロ毎にソフトウエアアプリケーション内の構築部が作成する、請求項3記載の方法。
- 前記構築部は、記録したマクロ毎に前記ソフトウエアアプリケーションが作成する、請求項5記載の方法。
- 前記構築部は、前記検証部と、変数マップと、命令リストとを、前記ソフトウエアアプリケーション内においてマクロ毎に作成する、請求項3記載の方法。
- 前記少なくとも1つの動作に対応した前記複数のソースコード言語の1つからなるソースコードは、マクロである、請求項1記載の方法。
- 前記複数のソースコード言語の1つは、複数の処理部の少なくとも1つが生成する、請求項1記載の方法。
- 前記複数の処理部の前記少なくとも1つは、Cシャープ処理部、Cプラスプラス処理部、VBA処理部、またはVB.Net処理部である、請求項9記載の方法。
- 前記命令リストは、
コンピュータシステムにおいて処理部が認識可能でありソースコードに変換可能な少なくとも1つの命令と、
前記コンピュータシステムにおいて前記命令が動作または操作する情報を指示するオペランドとを備える、請求項1記載の方法。 - 請求項1記載の各段階を実行するためのコンピュータ実行可能命令を有するコンピュータ読み取り可能媒体。
- ユーザインタフェースと、
前記ユーザインタフェースに接続したサーバと、
データベースに接続し、前記ユーザインタフェースにおいて開始する動作を記録する手段を提供する記録部と、
前記記録部に接続し、前記記録した動作を前記記録部から受け取り、前記記録した動作に基づき少なくとも1つの命令を生成する構築部と、
前記構築部に接続し、前記構築部から前記少なくとも1つの命令を受け取る命令リストと、
前記構築部に接続し、前記命令リストを受け取って少なくとも1つのソースコードを生成する複数の処理部の少なくとも1つと、を備える、コンピュータ言語非依存構文において命令を記録するシステム。 - データベースと複数のダイナミックリンクライブラリとに接続したソフトウエアアプリケーションと、
前記構築部と前記複数の処理部の少なくとも1つとに接続し、前記命令リスト構成の適正さを判断する検証部と、
前記構築部と前記複数の処理部の少なくとも1つとに接続し、前記命令が含む変数について前記命令リストを評価する変数マップとをさらに備える、請求項13記載のシステム。 - 前記生成したソースコードを受け取り、必要があるまでそれを格納するサブシステムをさらに備える、請求項14記載のシステム。
- 前記複数の処理部の1つは、アプリケーション用ビジュアルベーシック処理部である、請求項13記載のシステム。
- 前記複数の処理部の1つは、Cプラスプラス処理部である、請求項13記載のシステム。
- 前記複数の処理部の1つは、Cシャープ処理部である、請求項13記載のシステム。
- 前記複数の処理部の1つは、ビジュアルベーシックネット処理部である、請求項13記載のシステム。
- 前記構築部は、前記ソフトウエアアプリケーション内に存在する、請求項13記載のシステム。
- 前記構築部は、複数のソフトウエアアプリケーションに接続し、当該複数のソフトウエアアプリケーション用にコンピュータ言語非依存構文において命令を構築できる、請求項13記載のシステム。
- 少なくとも1つの命令からなり、その命令がコンピュータ言語非依存構文を有しコンピュータシステムまたはソフトウエアアプリケーションから認識および作用可能である、命令リスト。
- 前記命令が動作あるいは操作する情報を指示するオペランドをさらに備える、請求項22記載の命令リスト。
- 前記オペランドは、変数、メソッド、およびリテラルからなるグループから選択する、請求項22記載の命令リスト。
- 前記少なくとも1つの命令の各々は、それに関連付けた1つのオペランドを有する、請求項22記載の命令リスト。
- コンピュータシステムにおいて、少なくとも1つの動作を記録する要求を受け付け、
前記コンピュータシステムにおいて、少なくとも1つの動作を記録するための記録システムを起動し、
前記コンピュータシステム上で実行した少なくとも1つの動作を受け付け、
前記コンピュータシステム上で実行した前記少なくとも1つの動作を、コンピュータ言語非依存構文を有する少なくとも1つの命令に変換し、
前記少なくとも1つの命令をコンピュータ言語非依存構文を有する命令リストに変換し、
前記コンピュータ言語非依存構文を有する命令リストを複数のソースコードの1つに変換する各段階を備える、コンピュータ言語非依存構文において命令を記録するコンピュータ読み取り可能媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003002118A JP2004213529A (ja) | 2003-01-08 | 2003-01-08 | 言語非依存の構文でマクロを記録する方法およびシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003002118A JP2004213529A (ja) | 2003-01-08 | 2003-01-08 | 言語非依存の構文でマクロを記録する方法およびシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004213529A true JP2004213529A (ja) | 2004-07-29 |
Family
ID=32819952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003002118A Pending JP2004213529A (ja) | 2003-01-08 | 2003-01-08 | 言語非依存の構文でマクロを記録する方法およびシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004213529A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013502017A (ja) * | 2009-08-13 | 2013-01-17 | グーグル・インコーポレーテッド | ホストとなるコンピュータ環境における仮想オブジェクト間接化 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04102919A (ja) * | 1990-08-22 | 1992-04-03 | Hitachi Ltd | 同一機能仕様多種プログラム作成支援方法 |
JPH07234793A (ja) * | 1994-02-24 | 1995-09-05 | Fujitsu Ltd | 条件分岐最適化装置 |
US6237136B1 (en) * | 1997-12-02 | 2001-05-22 | National Instruments Corporation | System and method for automatically creating source code example files for an application program in a plurality of programming languages |
JP2002373078A (ja) * | 2001-06-15 | 2002-12-26 | Sharp Corp | マクロ作成装置、マクロ実行装置、それらの方法、それらのコンピュータ・プログラムおよびそれらのプログラムを記録した記録媒体 |
-
2003
- 2003-01-08 JP JP2003002118A patent/JP2004213529A/ja active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04102919A (ja) * | 1990-08-22 | 1992-04-03 | Hitachi Ltd | 同一機能仕様多種プログラム作成支援方法 |
JPH07234793A (ja) * | 1994-02-24 | 1995-09-05 | Fujitsu Ltd | 条件分岐最適化装置 |
US6237136B1 (en) * | 1997-12-02 | 2001-05-22 | National Instruments Corporation | System and method for automatically creating source code example files for an application program in a plurality of programming languages |
JP2002373078A (ja) * | 2001-06-15 | 2002-12-26 | Sharp Corp | マクロ作成装置、マクロ実行装置、それらの方法、それらのコンピュータ・プログラムおよびそれらのプログラムを記録した記録媒体 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013502017A (ja) * | 2009-08-13 | 2013-01-17 | グーグル・インコーポレーテッド | ホストとなるコンピュータ環境における仮想オブジェクト間接化 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2347262C2 (ru) | Способ и система для записи макросов в синтаксисе, независимом от языка | |
JP4366065B2 (ja) | リソース・ファイル・ビルダ・ツール及びコンピュータ可読コード | |
US9361069B2 (en) | Systems and methods for defining a simulated interactive web page | |
US10198425B2 (en) | Methods and apparatus for reusing report design components and templates | |
US9524279B2 (en) | Help document animated visualization | |
US7636897B2 (en) | System and method for property-based focus navigation in a user interface | |
KR101120756B1 (ko) | 사용자 인터페이스 상에서의 사용자 액션을 설명하는텍스트를 자동으로 생성하는 시스템, 방법 및 그 컴퓨터실행가능 명령어를 포함하는 컴퓨터 판독가능 매체 | |
US7930182B2 (en) | Computer-implemented tool for creation of speech application code and associated functional specification | |
US8656346B2 (en) | Converting command units into workflow activities | |
JP4901731B2 (ja) | コンテンツ生成用の自動画像キャプチャ | |
US20050060719A1 (en) | Capturing and processing user events on a computer system for recording and playback | |
JPH11509654A (ja) | アプリケーションプログラムにおけるビフェイビアの自動的実施 | |
US7752596B2 (en) | Connecting alternative development environment to interpretive runtime engine | |
CN115437684A (zh) | 一种针对Linux内核源代码的文件级裁剪方法和系统 | |
CN115794254A (zh) | 基于云计算的组件研发管理平台和方法 | |
JP2004213529A (ja) | 言語非依存の構文でマクロを記録する方法およびシステム | |
EP1437647B1 (en) | Method and system for recording macros in a language independent syntax | |
Pradhan | User interface test automation and its challenges in an industrial scenario | |
Sauerová | Web Browser Recorder | |
Wilson | The Absolute Beginner’s Guide to Python Programming | |
DTU et al. | D7. 4b: Report on the Sensoria CASE Tool Description and Evaluation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20051129 |
|
A131 | Notification of reasons for refusal |
Effective date: 20081128 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090227 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090304 |
|
A601 | Written request for extension of time |
Effective date: 20090330 Free format text: JAPANESE INTERMEDIATE CODE: A601 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090402 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090428 |
|
A602 | Written permission of extension of time |
Effective date: 20090507 Free format text: JAPANESE INTERMEDIATE CODE: A602 |
|
A521 | Written amendment |
Effective date: 20090528 Free format text: JAPANESE INTERMEDIATE CODE: A523 |
|
A131 | Notification of reasons for refusal |
Effective date: 20100309 Free format text: JAPANESE INTERMEDIATE CODE: A131 |
|
A02 | Decision of refusal |
Effective date: 20100730 Free format text: JAPANESE INTERMEDIATE CODE: A02 |