JPH02201652A - プログラム・ソース・コードを変換するシステム - Google Patents
プログラム・ソース・コードを変換するシステムInfo
- Publication number
- JPH02201652A JPH02201652A JP1307802A JP30780289A JPH02201652A JP H02201652 A JPH02201652 A JP H02201652A JP 1307802 A JP1307802 A JP 1307802A JP 30780289 A JP30780289 A JP 30780289A JP H02201652 A JPH02201652 A JP H02201652A
- Authority
- JP
- Japan
- Prior art keywords
- language
- statements
- independent
- host
- precompiler
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/423—Preprocessors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
A、産業上の利用分野
本発明は一般にディジタル−コンピューターシステムに
関するコンパイラ及びトランスレータに関する。より具
体的には、本発明は実行可能コードへのコンパイルに先
立ってプログラムのソース−ファイルの一部を翻訳する
ためのプリコンパイラに関する。
関するコンパイラ及びトランスレータに関する。より具
体的には、本発明は実行可能コードへのコンパイルに先
立ってプログラムのソース−ファイルの一部を翻訳する
ためのプリコンパイラに関する。
B、従来技術
可能な場合はいつでも、コンピュータ・プログラマは、
既に解かれた問題を解くために新しいコンピューターコ
ードを書く事を避けるべきである。
既に解かれた問題を解くために新しいコンピューターコ
ードを書く事を避けるべきである。
従って、プログラマにとって、現在のプログラミング作
業の種々の部分を達成するために既存のサブプログラム
及びユーティリティを利用するのは普通の事である。サ
ブプログラム・ライブラリを賢明に使用すると、全て新
規なコードを含むプログラムを作成するのに必要な時間
よりも遥かに短い時間で正しいプログラムを作成する事
が可能になる。
業の種々の部分を達成するために既存のサブプログラム
及びユーティリティを利用するのは普通の事である。サ
ブプログラム・ライブラリを賢明に使用すると、全て新
規なコードを含むプログラムを作成するのに必要な時間
よりも遥かに短い時間で正しいプログラムを作成する事
が可能になる。
ある分野においては、そのためにプログラマが使用可能
な大規模なシステムが形成されている。
な大規模なシステムが形成されている。
例えば、それはデータベース・システムの領域である。
プログラム中でデータベース機能を利用する必要のある
プログラマは、多数のファイル°アクセス手続きを書X
代りに、利用可能なデータベ−ス管理手続きのライブラ
リを起動する事ができる。それらの手続きは、典型的に
は、データベース・ファイルをアクセスし且つ更新する
詳細の全てを扱っている。プログラマは、高水準のサブ
プログラム呼び出しを通じてライブラリ・ルーチンを起
動するだけでよい。従って、プログラマは彼の仕事の残
りの部分に注意を集中する事ができる。
プログラマは、多数のファイル°アクセス手続きを書X
代りに、利用可能なデータベ−ス管理手続きのライブラ
リを起動する事ができる。それらの手続きは、典型的に
は、データベース・ファイルをアクセスし且つ更新する
詳細の全てを扱っている。プログラマは、高水準のサブ
プログラム呼び出しを通じてライブラリ・ルーチンを起
動するだけでよい。従って、プログラマは彼の仕事の残
りの部分に注意を集中する事ができる。
データベース管理システムは、一般に、プログラム開発
に使用している言語における有効なプログラミング・ス
テートメントではない一連のコマンドを用いて起動され
る。例えば、いくつかの周知のデータベース管理システ
ムは、構造化照会言語(S Q L )として知られて
いる形式化された表記法でコマンドを受け入れる。SQ
Lはデータベース処理機能のために特に設計された共通
のインターフェースである。SQLコマンドはC及びC
0DOL等の言語で使用されるプログラミング・ステー
トメントとはかなり異なった形式を有している。
に使用している言語における有効なプログラミング・ス
テートメントではない一連のコマンドを用いて起動され
る。例えば、いくつかの周知のデータベース管理システ
ムは、構造化照会言語(S Q L )として知られて
いる形式化された表記法でコマンドを受け入れる。SQ
Lはデータベース処理機能のために特に設計された共通
のインターフェースである。SQLコマンドはC及びC
0DOL等の言語で使用されるプログラミング・ステー
トメントとはかなり異なった形式を有している。
プログラマがSQLコマンドを(C等の言語で=4
書かれた)彼のアプリケーション・プログラム中に含ま
せる事を可能にするためにCプログラムのプログラム・
ソース−コードを走査して、全てのSQLコマンドをC
コンパイラが理解できる形式に翻訳する事が必要である
。これは一般にプリコンパイラを用いて行われる。プリ
コンパイラは、Cコード及びSQLステートメントの両
者を含むプログラム・ソース・ファイルを入力として受
取り、Cソース・コードのみを含む等価な修正されたソ
ース・ファイルを生成する。この(Ig正されたソース
・ファイルは、次にCコンパイラによりコンパイルして
実行可能コードを形成する事ができる。
せる事を可能にするためにCプログラムのプログラム・
ソース−コードを走査して、全てのSQLコマンドをC
コンパイラが理解できる形式に翻訳する事が必要である
。これは一般にプリコンパイラを用いて行われる。プリ
コンパイラは、Cコード及びSQLステートメントの両
者を含むプログラム・ソース・ファイルを入力として受
取り、Cソース・コードのみを含む等価な修正されたソ
ース・ファイルを生成する。この(Ig正されたソース
・ファイルは、次にCコンパイラによりコンパイルして
実行可能コードを形成する事ができる。
プリコンパイラは、SQLステートメントを理解し、そ
れらをホスト・プログラミング言語の等価なソース・コ
ード・ステートメントに翻訳するために必要である。埋
めこまれたS Q、 Lステートメントを含むプログラ
ミング言語の各々は、それぞれ異なったプリコンパイラ
を使用しなければならない。例えば、言語FORTRA
N、CS Pa5cab C0BOL及びAdaの各々
に関して別々のプリコンパイラを書がなければならない
。
れらをホスト・プログラミング言語の等価なソース・コ
ード・ステートメントに翻訳するために必要である。埋
めこまれたS Q、 Lステートメントを含むプログラ
ミング言語の各々は、それぞれ異なったプリコンパイラ
を使用しなければならない。例えば、言語FORTRA
N、CS Pa5cab C0BOL及びAdaの各々
に関して別々のプリコンパイラを書がなければならない
。
これらの言語の構文及び意味論は異なっているので、各
言語用の適当なプリコンパイラは初めがら作成しなけれ
ばならない。
言語用の適当なプリコンパイラは初めがら作成しなけれ
ばならない。
プリコンパイラを作成するために必要な努力及び費用は
かなり大きい。これは、プリコンパイラがSQLステー
トメントと同様にホスト言語のステートメントも理解す
る必要があるからである。
かなり大きい。これは、プリコンパイラがSQLステー
トメントと同様にホスト言語のステートメントも理解す
る必要があるからである。
もしSQLの何らかの低水準の特徴が変更されると、各
プリコンパイラの該当部分を書き替える必要がある。
プリコンパイラの該当部分を書き替える必要がある。
C1発明が解決しようとする課題
従って、プリコンパイラの作成を単純化し、且つ基礎を
成すプログラムに変化が生じた時の保守管理を単純化す
ることが望ましい。
成すプログラムに変化が生じた時の保守管理を単純化す
ることが望ましい。
従って、本発明の目的は、プリコンパイラの作成を単純
化するコンピュータ・ソース・コードのためのトランス
レータを提供する事である。また本発明の他の目的は、
(SQL等の)基礎を成す補足的システムについての詳
細な知識を必要とせずにプリコンパイラを書く事を可能
にすることである。
化するコンピュータ・ソース・コードのためのトランス
レータを提供する事である。また本発明の他の目的は、
(SQL等の)基礎を成す補足的システムについての詳
細な知識を必要とせずにプリコンパイラを書く事を可能
にすることである。
01課題を解決するための手段
これらの目的及び利点を達成するために、補足的言語の
埋込みステートメントを含みうるホスト言語プログラム
用のプリコンパイラは2つの主要な部分に分離される。
埋込みステートメントを含みうるホスト言語プログラム
用のプリコンパイラは2つの主要な部分に分離される。
1つの部分は処理されるホスト言語から独立である。補
足的言語のステートメントは形式化された、言語に独立
な形式でそれに渡される。この言語独立な部分は、言語
独立なステートメントを構文解析し、実行時ライブラリ
に対する呼び出しを表すタスクのリストを生成する責任
がある。
足的言語のステートメントは形式化された、言語に独立
な形式でそれに渡される。この言語独立な部分は、言語
独立なステートメントを構文解析し、実行時ライブラリ
に対する呼び出しを表すタスクのリストを生成する責任
がある。
プリコンパイラの他の部分は、処理すべきホスト言語の
アイデンティティに依存する。それは、ホスト言語のプ
ログラム中の補足的言語のステートメントの位置を決定
し、それらを言語独立な形式に変換し、変換されたステ
ートメントを言語独立な部分に通信する。言語依存部分
は、言語独立部分により生成されたタスク・リストを受
け取り、実行時ライブラリに対する適当なソース・コー
ド手続き呼び出しを生成する。
アイデンティティに依存する。それは、ホスト言語のプ
ログラム中の補足的言語のステートメントの位置を決定
し、それらを言語独立な形式に変換し、変換されたステ
ートメントを言語独立な部分に通信する。言語依存部分
は、言語独立部分により生成されたタスク・リストを受
け取り、実行時ライブラリに対する適当なソース・コー
ド手続き呼び出しを生成する。
E、実施例
第1図は、プログラム・ソース・コードを実行可能コー
ドに変換するためのシステムのブロック図である。プロ
グラム・ソース・コードはホスト言語のステートメント
及び補足的言語のステートメントを含んでいる。以下の
説明中では、補足的言語はSQLである。
ドに変換するためのシステムのブロック図である。プロ
グラム・ソース・コードはホスト言語のステートメント
及び補足的言語のステートメントを含んでいる。以下の
説明中では、補足的言語はSQLである。
ソース・ファイル10は、主としてC0BOL又はC等
のホスト言語で書がれたプログラム・ソース・コードを
含んでいる。ソース・ファイルは言語依存プリコンパイ
ラ12への入力である。また1組のユーザー・オプショ
ン14は、典型的には、ソース・ファイル10の実行可
能バージョンに関する期待される実行時環境を定義する
ために使用される。言語依存プリコンパイラ12は、ラ
イン18で言語独立形式でSQLコマンドを送り且つラ
イン20で実行すべきタスクのリストを受け取る事によ
って、SQLパーザ−16と通信する。受け取ったタス
ク・リストは、SQLステートメントを実現するために
行わなければならないライブラリ手続きへの一連の呼び
出しを識別する。
のホスト言語で書がれたプログラム・ソース・コードを
含んでいる。ソース・ファイルは言語依存プリコンパイ
ラ12への入力である。また1組のユーザー・オプショ
ン14は、典型的には、ソース・ファイル10の実行可
能バージョンに関する期待される実行時環境を定義する
ために使用される。言語依存プリコンパイラ12は、ラ
イン18で言語独立形式でSQLコマンドを送り且つラ
イン20で実行すべきタスクのリストを受け取る事によ
って、SQLパーザ−16と通信する。受け取ったタス
ク・リストは、SQLステートメントを実現するために
行わなければならないライブラリ手続きへの一連の呼び
出しを識別する。
プリコンパイラ12は、これらのタスクをホスト言語の
手続き呼び出しに変換し、それを修正されたソース・フ
ァイル22中に置く。ソース・ファイル10から読み取
られたホスト言語のソース・ステートメントは単に修正
されたソース・ファイル22にコピーされる。
手続き呼び出しに変換し、それを修正されたソース・フ
ァイル22中に置く。ソース・ファイル10から読み取
られたホスト言語のソース・ステートメントは単に修正
されたソース・ファイル22にコピーされる。
従って、プリコンパイル・フェーズが終了した後、修正
されたソース・ファイル22は、ホスト言語の元のソー
ス・ステートメントの全てと、ソース・ファイル10中
のSQLステートメントが置き換えられたホスト言語に
おける一連の手続き呼び出しとを含んでいる。
されたソース・ファイル22は、ホスト言語の元のソー
ス・ステートメントの全てと、ソース・ファイル10中
のSQLステートメントが置き換えられたホスト言語に
おける一連の手続き呼び出しとを含んでいる。
次に、修正されたソース・ファイル22は、従来技術で
周知のようにホスト言語のコンパイラ24によりコンパ
イルされ、実行可能コード26を生じる。システムの実
現方法の詳細に依存して、このコンパイル・ステップは
実際には幾つかのサブステップを含む事がある。例えば
、修正されたソース・コードをオブジェクト−コードに
コンパイルするサブステップ及びオブジェクト・コード
を外部ライブラリの標準的なコードとリンクするサブス
テップを含む事がある。
周知のようにホスト言語のコンパイラ24によりコンパ
イルされ、実行可能コード26を生じる。システムの実
現方法の詳細に依存して、このコンパイル・ステップは
実際には幾つかのサブステップを含む事がある。例えば
、修正されたソース・コードをオブジェクト−コードに
コンパイルするサブステップ及びオブジェクト・コード
を外部ライブラリの標準的なコードとリンクするサブス
テップを含む事がある。
言語依存プリコンパイラ12がS Q Lコードのコン
パイルを実行できることは必ずしも必要ではない。プリ
コンパイラ12は、SQLステートメントを所定の、言
語独立な形式に変換出来さえすればよい。これは比較的
単純な工程である。さらに、返されたタスク−リストを
ホスト言語の手続き呼び出しに変換する事もまた単純な
工程である。
パイルを実行できることは必ずしも必要ではない。プリ
コンパイラ12は、SQLステートメントを所定の、言
語独立な形式に変換出来さえすればよい。これは比較的
単純な工程である。さらに、返されたタスク−リストを
ホスト言語の手続き呼び出しに変換する事もまた単純な
工程である。
従って、プリコンパイラ12を作成する人はSQLの内
部構造について知識を持たなくてもよい。
部構造について知識を持たなくてもよい。
さらに、SQLの内部構造に些細な変更があったとして
も言語依存プリコンパイラ12には何の影響もない。
も言語依存プリコンパイラ12には何の影響もない。
SQLパーザ−16は、受け取った、形式化されたSQ
Lステートメントを構文解析し、各SQ]1 Lステートメントを処理するために実行時に行われなく
てはならないタスクのリストを形成する。
Lステートメントを構文解析し、各SQ]1 Lステートメントを処理するために実行時に行われなく
てはならないタスクのリストを形成する。
タスク・リストは、標準的な言語独立な形式で言語依存
プリコンパイラ12に戻される。従って、SQLパーザ
−16は、ホスト言語に特有の情報についての知識を持
つ必要はない。事実、単一のSQLパーザ−16を、任
意の個数の異なったホスト言語に依存するプリコンパイ
ラ12と共に使用する事ができる。
プリコンパイラ12に戻される。従って、SQLパーザ
−16は、ホスト言語に特有の情報についての知識を持
つ必要はない。事実、単一のSQLパーザ−16を、任
意の個数の異なったホスト言語に依存するプリコンパイ
ラ12と共に使用する事ができる。
受け取ったS Q Lステートメンj・をタスク−リス
トに変換するために、SQLパーザ−16は、データベ
ース管理プログラム28にアクセスする必要があるかも
しれない。データベース管理プログラム28は、データ
ベース30とのインターフェースを与えるシステムであ
る。これは、データの整合性を保証するためにデータベ
ース30に対する全てのアクセス及び更新に関して責任
を有する。実行時に実行されるべきS Q L、ステー
トメントは、従来技術で知られているようにアクセス・
プランにコンパイルするためにデータベース管理プログ
ラム28に送られる。実際のデータベース・アクセスを
生じさせないSQLステートメントは、SQLパーザ−
16で処理する事ができる。
トに変換するために、SQLパーザ−16は、データベ
ース管理プログラム28にアクセスする必要があるかも
しれない。データベース管理プログラム28は、データ
ベース30とのインターフェースを与えるシステムであ
る。これは、データの整合性を保証するためにデータベ
ース30に対する全てのアクセス及び更新に関して責任
を有する。実行時に実行されるべきS Q L、ステー
トメントは、従来技術で知られているようにアクセス・
プランにコンパイルするためにデータベース管理プログ
ラム28に送られる。実際のデータベース・アクセスを
生じさせないSQLステートメントは、SQLパーザ−
16で処理する事ができる。
ソース・ファイル10中に埋めこまれたSQLコマンド
はホスト言語の変数に対する参照を含む必要があるので
、プリコンパイラ12はS Q Lステートメント中で
使われている全ての変数のアイデンティティをSQLパ
ーザ−1Gに通信する。
はホスト言語の変数に対する参照を含む必要があるので
、プリコンパイラ12はS Q Lステートメント中で
使われている全ての変数のアイデンティティをSQLパ
ーザ−1Gに通信する。
これらの変数はSQL変数宣言セクションで宣言する事
が望ましい。これは各セクションの開始と終了を定義す
るSQLステートメントによって区切られている。それ
らのセクション内で宣言されている全ての変数は、変数
のSQL型、データ・サイズ及び一意的なトークン識別
子を含む言語独立な形式でSQLパーザ−16に通信さ
れる。変数宣言に関するソース・ステートメントは、そ
のまま残り、(1f正されたソース・ファイル22にコ
ピーされる。S Q Lパーザ−16は、構文解析時に
転送された宣言を使用し、アクセス・プランの形成に使
うためにそれらをデータベース管理プログラム28に通
信する。
が望ましい。これは各セクションの開始と終了を定義す
るSQLステートメントによって区切られている。それ
らのセクション内で宣言されている全ての変数は、変数
のSQL型、データ・サイズ及び一意的なトークン識別
子を含む言語独立な形式でSQLパーザ−16に通信さ
れる。変数宣言に関するソース・ステートメントは、そ
のまま残り、(1f正されたソース・ファイル22にコ
ピーされる。S Q Lパーザ−16は、構文解析時に
転送された宣言を使用し、アクセス・プランの形成に使
うためにそれらをデータベース管理プログラム28に通
信する。
バインド・ファイル32及びバインダ・ルーチン34は
、アクセス・プランの形成を遅延させることが望ましい
時に使用される。言語依存プリコンパイラ12から受け
取った変数宣言及びS Q L。
、アクセス・プランの形成を遅延させることが望ましい
時に使用される。言語依存プリコンパイラ12から受け
取った変数宣言及びS Q L。
ステートメントは、それらを受け取った時にバインド・
ファイル32にコピーされる。SQLパーザ−16及び
データベース管理プログラム28は、それらの通常の機
能を実行する。しがしながら、アクセス・プランの形成
を遅延させる事が望ましいくこれは典型的には、ユーザ
ー・オプション14の1つとして示される)場合は、デ
ータベース管理プログラム28は実際にはデータベース
30にアクセス・プランを書き込まない。この状況は、
ソフトウェアの開発中にソース・ファイル10の構文を
単にチエツクするために使われる。
ファイル32にコピーされる。SQLパーザ−16及び
データベース管理プログラム28は、それらの通常の機
能を実行する。しがしながら、アクセス・プランの形成
を遅延させる事が望ましいくこれは典型的には、ユーザ
ー・オプション14の1つとして示される)場合は、デ
ータベース管理プログラム28は実際にはデータベース
30にアクセス・プランを書き込まない。この状況は、
ソフトウェアの開発中にソース・ファイル10の構文を
単にチエツクするために使われる。
プリコンパイルが終了した後の、ある時刻に、バインド
・ファイル32を処理するためにバインダ34が起動さ
れる。バインダ34は、プリコンパイル中にS Q L
パーザ−が実行するのと同じ操作を実行し、同一のアク
セス・プランを生成する。
・ファイル32を処理するためにバインダ34が起動さ
れる。バインダ34は、プリコンパイル中にS Q L
パーザ−が実行するのと同じ操作を実行し、同一のアク
セス・プランを生成する。
バインド・ファイル32の使用は、アクセス・プランの
遅延形成、をユーザーに許容する便宜を提供する。
遅延形成、をユーザーに許容する便宜を提供する。
実行時ライブラリ36は、実行可能コード26が実行さ
れている時にデ・−・夕△、−ス管理プログラム28に
アクセスするルーチンを含んでいる。SQLパーザ−1
6に91り返されるタスク・リストは、実行時ライブラ
II・ルーチンの起動前に(従ってデータベース管理プ
ログラムの起動前に)標準的な形式でホストFff語の
変数が実行時ライブラリ36に渡される」うにする命令
を含んでいる。3実行時ライブラリ36はデータベース
管理プログラム28を通じてデータベース30をアクセ
スするのに必要な手続き全て、より成っている。実行時
ライブラリ36の実際のコードは、実行可能コード26
に直接リンクする事もできるが、また実行可能コード2
6から手続き呼び出しによりアクセス可能なシステム内
の記憶位置に存在していてもよい。
れている時にデ・−・夕△、−ス管理プログラム28に
アクセスするルーチンを含んでいる。SQLパーザ−1
6に91り返されるタスク・リストは、実行時ライブラ
II・ルーチンの起動前に(従ってデータベース管理プ
ログラムの起動前に)標準的な形式でホストFff語の
変数が実行時ライブラリ36に渡される」うにする命令
を含んでいる。3実行時ライブラリ36はデータベース
管理プログラム28を通じてデータベース30をアクセ
スするのに必要な手続き全て、より成っている。実行時
ライブラリ36の実際のコードは、実行可能コード26
に直接リンクする事もできるが、また実行可能コード2
6から手続き呼び出しによりアクセス可能なシステム内
の記憶位置に存在していてもよい。
実行時ライブラリ36は、典型的には、データベース管
理プログラム28により使用されるデータ領域を割当て
及び解放する手続き、並びにデータベース・アクセス・
プランを実行する手続きを含んでいる。また、それは、
データベース30のアクセス時に生しうるエラーを処理
するための手続きも含んでいる。多重処理システムにお
いては、データベース30へのアクセスを一時に単一の
プロセスに限定する事が必要な事もある。これはセマフ
ォを用いて行う事ができる。セマフォは実行時ライブラ
リ36への手続き呼び出しを用いてセット及びリセット
される。
理プログラム28により使用されるデータ領域を割当て
及び解放する手続き、並びにデータベース・アクセス・
プランを実行する手続きを含んでいる。また、それは、
データベース30のアクセス時に生しうるエラーを処理
するための手続きも含んでいる。多重処理システムにお
いては、データベース30へのアクセスを一時に単一の
プロセスに限定する事が必要な事もある。これはセマフ
ォを用いて行う事ができる。セマフォは実行時ライブラ
リ36への手続き呼び出しを用いてセット及びリセット
される。
第2図は言語依存プリコンパイラ12及びSQLパーザ
−16によって行われるプリコンパイル・ステップを記
述した流れ図である。破線のボックス48.49内に含
まれるステップはSQLパーザ−16により実行され、
残りのステップはプリコンパイラ12により実行される
。プリコンパイラ12が起動される時、それはユーザー
・オプション及びシステム依存情報を用いて初期化され
る− ] 5i (ステップ50)。またこのステップはSQLパーザ−
16の初期化も含んでいる1、 次に、プログラムのソース・コード・ステートメントが
ソース−ファイルから読み取られる(ステップ52)。
−16によって行われるプリコンパイル・ステップを記
述した流れ図である。破線のボックス48.49内に含
まれるステップはSQLパーザ−16により実行され、
残りのステップはプリコンパイラ12により実行される
。プリコンパイラ12が起動される時、それはユーザー
・オプション及びシステム依存情報を用いて初期化され
る− ] 5i (ステップ50)。またこのステップはSQLパーザ−
16の初期化も含んでいる1、 次に、プログラムのソース・コード・ステートメントが
ソース−ファイルから読み取られる(ステップ52)。
もしプリコンパイラがSQL宣言モードであれば(ステ
ップ54)、次のステートメントはSQLデータ宣言で
ある。S Q、 L宣言モードは宣言開始SQLスデー
トメントが処理され且つ対応する宣言終了5QI−ステ
ートメントが処理されていない時に生する。この時プリ
コンパイラ12は、宣言を、変数のSQL型、データ畏
、及びプリコンパイラI2により一意的に割当てられた
トークンを含む標準的な形式に変換する(ステップ56
)。宣言はSQLパーザ−に渡され(ステップ58)
、SQLパーザ−は、それを、SQLパーザ−16によ
り維持されている変数リストに付加する(ステップ60
)。また、元の宣言も、修正されたソース・ファイルに
コピーされる(ステップ64)。
ップ54)、次のステートメントはSQLデータ宣言で
ある。S Q、 L宣言モードは宣言開始SQLスデー
トメントが処理され且つ対応する宣言終了5QI−ステ
ートメントが処理されていない時に生する。この時プリ
コンパイラ12は、宣言を、変数のSQL型、データ畏
、及びプリコンパイラI2により一意的に割当てられた
トークンを含む標準的な形式に変換する(ステップ56
)。宣言はSQLパーザ−に渡され(ステップ58)
、SQLパーザ−は、それを、SQLパーザ−16によ
り維持されている変数リストに付加する(ステップ60
)。また、元の宣言も、修正されたソース・ファイルに
コピーされる(ステップ64)。
もし現在のソース・ステートメントがデータ宣言ではな
いならば、それはSQLステートメントか否かがチエツ
クされる(ステップ62)。もし干うでなければ、それ
は無変更で修正ソース・ファイルにコピーされる(ステ
ップ64)。もし現在のステート、メントがSQLステ
ートメントならば、それは言語独立な形式に変換され(
ステップ66) 、SQLパーザ−に渡される(ステッ
プ68)。
いならば、それはSQLステートメントか否かがチエツ
クされる(ステップ62)。もし干うでなければ、それ
は無変更で修正ソース・ファイルにコピーされる(ステ
ップ64)。もし現在のステート、メントがSQLステ
ートメントならば、それは言語独立な形式に変換され(
ステップ66) 、SQLパーザ−に渡される(ステッ
プ68)。
SQLパーザ−16内では、S Q Lステートメント
が通常の構文解析技術を用いて解析される(ステップ6
9)。SQLステートメントに対応するタスク・リスト
が生成され(ステップ70)、プリコンパイラ12に返
される。あるSQLステートメントは、実行時タスクが
実行される必要がない。もし実行されるべきタスクが存
在するならば(ステップ71)、プリコンパイラ12は
ホスト言語の対応する手続き呼び出しを生成する(ステ
ップ72)。
が通常の構文解析技術を用いて解析される(ステップ6
9)。SQLステートメントに対応するタスク・リスト
が生成され(ステップ70)、プリコンパイラ12に返
される。あるSQLステートメントは、実行時タスクが
実行される必要がない。もし実行されるべきタスクが存
在するならば(ステップ71)、プリコンパイラ12は
ホスト言語の対応する手続き呼び出しを生成する(ステ
ップ72)。
全ての場合において、次のステップは、ソース・ファイ
ル10の中にさらにソース・ステートメントが存在する
か否かを判定する事である(ステップ74)。もし存在
すれば、制御はステ・ンブ52に戻り、次のソース・ス
テートメントが読み取られる。ソース・ファイルが空に
なると、プリコンパイルの工程は終了する(ステップ7
6)。
ル10の中にさらにソース・ステートメントが存在する
か否かを判定する事である(ステップ74)。もし存在
すれば、制御はステ・ンブ52に戻り、次のソース・ス
テートメントが読み取られる。ソース・ファイルが空に
なると、プリコンパイルの工程は終了する(ステップ7
6)。
第1図から容易に判るように、ソース・コードを実行可
能コードに変換する工程は、このシステムの2つの独立
な部分によって実行される。システム全体の左側部分8
0はどのホスト言語がコンパイルされるかに依存する。
能コードに変換する工程は、このシステムの2つの独立
な部分によって実行される。システム全体の左側部分8
0はどのホスト言語がコンパイルされるかに依存する。
右側部分82はホスト言語のアイデンティティに完全に
独立である。
独立である。
2つの部分は、所定の形式の言語独立な情報を伝達する
ことによってのみ通信する。従って、言語依存部分80
は、言語独立部分82に影響を与える事なく、所望のプ
ログラミング言語をサポートするように実施する事がで
きる。同様に、言語依存部分80の動作に影響を与える
事なく、言語独立部分82の内部機能に変更を加える事
ができる。
ことによってのみ通信する。従って、言語依存部分80
は、言語独立部分82に影響を与える事なく、所望のプ
ログラミング言語をサポートするように実施する事がで
きる。同様に、言語依存部分80の動作に影響を与える
事なく、言語独立部分82の内部機能に変更を加える事
ができる。
言語独立な部分はSQLコンパイラとして説明してきた
が、他のシステムを使用する事も可能である。例えば、
プロ・ソ々又はそれ自身のコマンド言語を有する他の装
置に関するドライバを同様の方式で実現してもよい4、
これは、全ての言語に関して使用される標準的なインタ
ーフェースを持つ、そのような装置のために単一のコン
パイラと実行時ライブラリを書ズ事を可能にする。
が、他のシステムを使用する事も可能である。例えば、
プロ・ソ々又はそれ自身のコマンド言語を有する他の装
置に関するドライバを同様の方式で実現してもよい4、
これは、全ての言語に関して使用される標準的なインタ
ーフェースを持つ、そのような装置のために単一のコン
パイラと実行時ライブラリを書ズ事を可能にする。
F2発明の効果
本発明を用いれば、ブリコンパイラの作成及び保守管理
が単純化される。
が単純化される。
第1図は、本発明によるブリコンパイラ・システムのブ
ロック図、 第2図は、第1図のシステムにより実行される動作ステ
ップを説明する図である。 出願人 インターナショナル・ビジネス・マシーンズー
コーポレーション
ロック図、 第2図は、第1図のシステムにより実行される動作ステ
ップを説明する図である。 出願人 インターナショナル・ビジネス・マシーンズー
コーポレーション
Claims (3)
- (1)プログラム・ソース・コードを変換するためのシ
ステムであって、 補足的言語のステートメントを言語独立な形式のタスク
のリストに変換する言語独立な変換手段と、 上記言語独立な変換手段と通信して、複数のプログラム
・ソース・コード・ステートメントを含む入力ファイル
から補足的言語のステートメントを選択し、上記補足的
言語のステートメントを言語独立な形式に変換し、上記
補足的言語のステートメントを上記言語独立な変換手段
に通信し、且つ上記言語独立な変換手段からのタスクの
リストを受け取る言語特有の変換手段とを含む プログラム・ソース・コードを変換するためのシステム
。 - (2)プログラム・ソース・コードを変換する方法であ
って、 ホスト言語のステートメント及び補足的言語のステート
メントを含むソース・ファイルを供給し、上記ホスト言
語のステートメントを修正ソース・ファイルにコピーし
、 上記補足的言語のステートメントに対応する、ホスト言
語に独立な形のタスクのリストを形成し、上記タスクを
ホスト言語のステートメントに変換し、該ホスト言語の
ステートメントを上記修正ソース・ファイルに書き込む
ステップを含むプログラム・ソース・コードを変換する
方法。 - (3)ホスト言語のステートメント及び補足的言語のス
テートメントを含むプログラム・ソース・ファイルをプ
リコンパイルする方法であって、ユーザー情報及びオプ
ションを用いて、ホスト言語特有のプリコンパイラを初
期化し、 上記言語特有のプリコンパイラから得られた情報を用い
て、補足的言語のプリコンパイラを初期化し、 上記プログラム・ソース・ファイルを処理して、ホスト
言語のステートメントを修正ソース・ファイルにコピー
し、且つ補足的言語のステートメントを抽出し、 上記抽出された補足的言語のステートメントをホスト言
語に独立な形式に変換し、 上記変換された補足的言語のステートメントを構文解析
し、且つ上記補助的言語のステートメントを実行するの
に必要なタスクのリストを形成し、上記タスクのリスト
をホスト言語のステートメントに変換し、 上記変換されたホスト言語のステートメントを上記修正
ソース・ファイルに書き込む ステップを含むプログラム・ソース・ファイルをプリコ
ンパイルする方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US277367 | 1988-11-29 | ||
| US07/277,367 US5230049A (en) | 1988-11-29 | 1988-11-29 | Program source code translator |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH02201652A true JPH02201652A (ja) | 1990-08-09 |
Family
ID=23060551
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP1307802A Pending JPH02201652A (ja) | 1988-11-29 | 1989-11-29 | プログラム・ソース・コードを変換するシステム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US5230049A (ja) |
| EP (1) | EP0373132A3 (ja) |
| JP (1) | JPH02201652A (ja) |
| BR (1) | BR8906000A (ja) |
Families Citing this family (62)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5542085A (en) * | 1990-07-24 | 1996-07-30 | Hitachi, Ltd. | Method for producing program modules |
| JP2720904B2 (ja) * | 1990-08-31 | 1998-03-04 | 富士通株式会社 | 自己記述によるデータベース管理システムの構成方法および開発/変更方法 |
| JP2811990B2 (ja) * | 1991-04-19 | 1998-10-15 | 三菱電機株式会社 | プログラム処理装置及びプログラム処理方法 |
| CA2077273C (en) * | 1991-12-12 | 1996-12-03 | Mike H. Conner | Language neutral objects |
| JPH05233326A (ja) * | 1991-12-19 | 1993-09-10 | Internatl Business Mach Corp <Ibm> | コンピュータシステムにおいて事象を取り扱う方法及びシステム |
| US5349660A (en) * | 1992-01-24 | 1994-09-20 | Hewlett-Packard Company | Method of improving performance in an automated test system |
| JPH0778742B2 (ja) * | 1992-08-12 | 1995-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピユータ・プログラム言語変換装置及びその方法 |
| EP0582738A1 (en) * | 1992-08-12 | 1994-02-16 | International Business Machines Corporation | Language compiler |
| US5740405A (en) * | 1992-12-17 | 1998-04-14 | Microsoft Corporation | Method and system for providing data compatibility between different versions of a software program |
| US5386570A (en) * | 1993-05-24 | 1995-01-31 | Hewlett-Packard Company | Method for a two pass compiler with the saving parse states from first to second pass |
| US5504885A (en) * | 1993-06-29 | 1996-04-02 | Texas Instruments Incorporated | O-R gateway: a system for connecting object-oriented application programs and relational databases |
| US5432930A (en) * | 1993-09-30 | 1995-07-11 | Eagle Crest Limited | System for accessing cobol data files by generating a dictionary of NF.sup.2 |
| US5487169A (en) * | 1993-11-18 | 1996-01-23 | Motorola, Inc. | Method for translating a test plan source file containing multiple programming languages |
| US5640550A (en) * | 1994-04-15 | 1997-06-17 | Coker; Drake | Computer system for generating SQL statements from COBOL code |
| US5826076A (en) * | 1994-05-13 | 1998-10-20 | Liant Software Corporation | Computer-based information access method and apparatus to permit SQL-based manipulation of programming language-specific data files |
| US5619685A (en) * | 1994-11-04 | 1997-04-08 | Ball Corporation | Run-time dynamically adaptive computer process for facilitating communication between computer programs |
| US5634098A (en) * | 1995-02-01 | 1997-05-27 | Sun Microsystems, Inc. | Method and apparatus for environment-variable driven software testing |
| US7024666B1 (en) * | 2002-01-28 | 2006-04-04 | Roy-G-Biv Corporation | Motion control systems and methods |
| US7137107B1 (en) | 2003-04-29 | 2006-11-14 | Roy-G-Biv Corporation | Motion control systems and methods |
| US20060206219A1 (en) * | 1995-05-30 | 2006-09-14 | Brown David W | Motion control systems and methods |
| US20100131081A1 (en) * | 1995-05-30 | 2010-05-27 | Brown David W | Systems and methods for motion control |
| US5691897A (en) * | 1995-05-30 | 1997-11-25 | Roy-G-Biv Corporation | Motion control systems |
| US5640558A (en) * | 1995-05-31 | 1997-06-17 | International Business Machines Corporation | Identifying and analyzing multiple level class relationships in an object oriented system by parsing source code without compilation |
| US5850550A (en) * | 1995-08-31 | 1998-12-15 | International Business Machine Corporation | No preprocessor and a source level debugger for embedded SQL in a 3GL |
| US5956510A (en) * | 1996-09-10 | 1999-09-21 | Unisys Corporation | Apparatus and method for revising computer program code |
| US5995974A (en) * | 1997-08-27 | 1999-11-30 | Informix Software, Inc. | Database server for handling a plurality of user defined routines (UDRs) expressed in a plurality of computer languages |
| US20010032278A1 (en) | 1997-10-07 | 2001-10-18 | Brown Stephen J. | Remote generation and distribution of command programs for programmable devices |
| US5950006A (en) * | 1997-11-05 | 1999-09-07 | Control Technology Corporation | Object-oriented programmable controller |
| US6072952A (en) * | 1998-04-22 | 2000-06-06 | Hewlett-Packard Co. | Method and apparatus for coalescing variables |
| US6158031A (en) * | 1998-09-08 | 2000-12-05 | Lucent Technologies, Inc. | Automated code generating translator for testing telecommunication system devices and method |
| US6378126B2 (en) | 1998-09-29 | 2002-04-23 | International Business Machines Corporation | Compilation of embedded language statements in a source code program |
| US6173441B1 (en) | 1998-10-16 | 2001-01-09 | Peter A. Klein | Method and system for compiling source code containing natural language instructions |
| US7152228B2 (en) | 1999-07-08 | 2006-12-19 | Science Applications International Corporation | Automatically generated objects within extensible object frameworks and links to enterprise resources |
| US6978261B2 (en) * | 1999-07-29 | 2005-12-20 | International Business Machines Corporation | Using database management system's infrastructure to invoke a stored procedure for creating and preparing a database application |
| US20100131078A1 (en) * | 1999-10-27 | 2010-05-27 | Brown David W | Event driven motion systems |
| US8032605B2 (en) | 1999-10-27 | 2011-10-04 | Roy-G-Biv Corporation | Generation and distribution of motion commands over a distributed network |
| US7406680B1 (en) * | 2000-06-01 | 2008-07-29 | Siemens Communications, Inc. | Method for adding extensions to the grammar for ASN.1 without modifying the basic compiler and code generator |
| US6629313B1 (en) * | 2000-06-29 | 2003-09-30 | Microsoft Corporation | In-line database access statements without a pre-compiler |
| US7076782B2 (en) | 2001-02-06 | 2006-07-11 | International Business Machines Corporation | Method, computer program product, and system for creating form independent applications operative on IMS resources |
| US7904194B2 (en) | 2001-02-09 | 2011-03-08 | Roy-G-Biv Corporation | Event management systems and methods for motion control systems |
| US7043716B2 (en) * | 2001-06-13 | 2006-05-09 | Arius Software Corporation | System and method for multiple level architecture by use of abstract application notation |
| US7757225B2 (en) * | 2001-06-29 | 2010-07-13 | Microsoft Corporation | Linktime recognition of alternative implementations of programmed functionality |
| US20040205619A1 (en) * | 2002-02-14 | 2004-10-14 | Twede Roger S. | Method and system for chained format translation |
| US7587305B2 (en) * | 2002-06-26 | 2009-09-08 | Cray Inc. | Transistor level verilog |
| CA2418670A1 (en) * | 2003-02-11 | 2004-08-11 | Ibm Canada Limited - Ibm Canada Limitee | Method and system for generating executable code for formatiing and printing complex data structures |
| US7533372B2 (en) * | 2003-08-05 | 2009-05-12 | Microsoft Corporation | Cross language migration |
| US8027349B2 (en) * | 2003-09-25 | 2011-09-27 | Roy-G-Biv Corporation | Database event driven motion systems |
| US20060064503A1 (en) | 2003-09-25 | 2006-03-23 | Brown David W | Data routing systems and methods |
| US20100131077A1 (en) * | 2004-02-25 | 2010-05-27 | Brown David W | Data Collection Systems and Methods for Motion Control |
| US7765531B2 (en) * | 2004-10-06 | 2010-07-27 | Hewlett-Packard Development Company, L.P. | Systems and methods for handling multiple static query modules for distinct environments |
| US7707561B2 (en) * | 2005-02-15 | 2010-04-27 | International Business Machines Corporation | Apparatus, system, and method for converting data |
| US8656374B2 (en) * | 2006-06-16 | 2014-02-18 | Business Objects Software Ltd. | Processing cobol data record schemas having disparate formats |
| US8276117B2 (en) * | 2007-08-03 | 2012-09-25 | International Business Machines Corporation | Displaying and refactoring programs that include database statements |
| US8473915B2 (en) * | 2007-08-03 | 2013-06-25 | International Business Machines Corporation | Coverage analysis tool for testing database-aware software applications |
| US20110302220A1 (en) * | 2010-06-08 | 2011-12-08 | Albert Marcella | Sql processing for data conversion |
| EP2610739B1 (en) * | 2011-12-29 | 2017-09-27 | Software AG | Method and system for executing a 3GL program and / or an assembler program within a 4GL runtime environment |
| WO2017096155A1 (en) * | 2015-12-02 | 2017-06-08 | Speedment, Inc. | Methods and systems for mapping object oriented/functional languages to database languages |
| US9652225B1 (en) | 2016-01-04 | 2017-05-16 | International Business Machines Corporation | Development community assessment via real-time workspace monitoring |
| US10459829B2 (en) * | 2017-06-07 | 2019-10-29 | M/S. Cigniti Technologies Limited | Overall test tool migration pipeline |
| DE102018112742A1 (de) * | 2018-05-28 | 2019-11-28 | Comforte Ag | Computerimplementiertes Verfahren zum Übergeben eines Datenstrings von einer Anwendung an eine Datenschutzeinrichtung |
| US11334324B2 (en) | 2019-11-08 | 2022-05-17 | Software Ag | Systems and/or methods for error-free implementation of non-java program code on special purpose processors |
| US11748074B2 (en) | 2021-05-28 | 2023-09-05 | Software Ag | User exit daemon for use with special-purpose processor, mainframe including user exit daemon, and associated methods |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62216040A (ja) * | 1986-03-04 | 1987-09-22 | Fujitsu Ltd | プリコンパイラ・コンパイラ呼出し制御方式 |
| JPS63280335A (ja) * | 1987-05-13 | 1988-11-17 | Mitsubishi Electric Corp | 言語処理システム |
Family Cites Families (12)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH0630066B2 (ja) * | 1983-10-24 | 1994-04-20 | 株式会社日立製作所 | テーブル型言語翻訳方法 |
| US4604686A (en) * | 1984-01-27 | 1986-08-05 | Martin Marietta Corporation | Associative data access method (ADAM) and its means of implementation |
| US4742467A (en) * | 1984-05-04 | 1988-05-03 | Analysts International Corporation | Automated programming system for machine creation of applications program source code from non-procedural terminal input |
| US4829427A (en) * | 1984-05-25 | 1989-05-09 | Data General Corporation | Database query code generation and optimization based on the cost of alternate access methods |
| US4667290A (en) * | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
| US4791550A (en) * | 1985-02-13 | 1988-12-13 | Rational | Higher order language-directed computer |
| US4734854A (en) * | 1985-10-08 | 1988-03-29 | American Telephone And Telegraph Company | System for generating software source code components |
| JP2602205B2 (ja) * | 1986-01-16 | 1997-04-23 | 株式会社日立製作所 | データベース・アクセス制御方法 |
| US4864503A (en) * | 1987-02-05 | 1989-09-05 | Toltran, Ltd. | Method of using a created international language as an intermediate pathway in translation between two national languages |
| US4791558A (en) * | 1987-02-13 | 1988-12-13 | International Business Machines Corporation | System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer |
| US4809170A (en) * | 1987-04-22 | 1989-02-28 | Apollo Computer, Inc. | Computer device for aiding in the development of software system |
| JPH01162979A (ja) * | 1987-12-19 | 1989-06-27 | Ricoh Co Ltd | データベース管理システムの機能拡張装置 |
-
1988
- 1988-11-29 US US07/277,367 patent/US5230049A/en not_active Expired - Fee Related
-
1989
- 1989-11-27 EP EP19890850418 patent/EP0373132A3/en not_active Ceased
- 1989-11-29 BR BR898906000A patent/BR8906000A/pt not_active Application Discontinuation
- 1989-11-29 JP JP1307802A patent/JPH02201652A/ja active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS62216040A (ja) * | 1986-03-04 | 1987-09-22 | Fujitsu Ltd | プリコンパイラ・コンパイラ呼出し制御方式 |
| JPS63280335A (ja) * | 1987-05-13 | 1988-11-17 | Mitsubishi Electric Corp | 言語処理システム |
Also Published As
| Publication number | Publication date |
|---|---|
| EP0373132A2 (en) | 1990-06-13 |
| US5230049A (en) | 1993-07-20 |
| EP0373132A3 (en) | 1991-11-21 |
| BR8906000A (pt) | 1990-06-19 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JPH02201652A (ja) | プログラム・ソース・コードを変換するシステム | |
| US5675804A (en) | System and method for enabling a compiled computer program to invoke an interpretive computer program | |
| US7346897B2 (en) | System for translating programming languages | |
| EP0789875B1 (en) | Method of translating source code from one high-level computer language to another | |
| JP5851396B2 (ja) | 処理方法 | |
| US5247678A (en) | Load time linker for software used with a multiprocessor system | |
| US7162709B2 (en) | System and method for common code generation | |
| US6063133A (en) | No preprocessor for embedded SQL in a 3GL | |
| US8707278B2 (en) | Embedding class hierarchy into object models for multiple class inheritance | |
| US20080216060A1 (en) | System for translating diverse programming languages | |
| Lauer et al. | The Impact of Mesa on System Design. | |
| US20050065953A1 (en) | System and method for changing defined elements in a previously compiled program using a description file | |
| US20020016864A1 (en) | System and method for generating an object structure at run time in an object-oriented programming language | |
| US20030115571A1 (en) | Construction of a software application from a plurality of programming languages | |
| Tenma et al. | A system for generating language-oriented editors | |
| Pautet et al. | CORBA & DSA: Divorce or marriage? | |
| Squyres et al. | The design and evolution of the MPI-2 C++ interface | |
| Davis et al. | Talking about modules and delivery | |
| Seiwald | Jam-Make (1) Redux. | |
| Rekunen | Autogenerating Language Bindings for a Codebase | |
| Goos et al. | Towards a compiler front-end for Ada | |
| Österberg et al. | Rethinking software updating: Concepts for improved updatability | |
| Babich et al. | Design considerations in language processing tools for Ada | |
| Trudel | Automatic translation and object-oriented reengineering of legacy code | |
| Burow | DRAFT: Task System and Item Architecture (TSIA) |