JP2007004503A - プログラム変換方式およびプログラム変換方法およびコード変換プログラム - Google Patents

プログラム変換方式およびプログラム変換方法およびコード変換プログラム Download PDF

Info

Publication number
JP2007004503A
JP2007004503A JP2005184222A JP2005184222A JP2007004503A JP 2007004503 A JP2007004503 A JP 2007004503A JP 2005184222 A JP2005184222 A JP 2005184222A JP 2005184222 A JP2005184222 A JP 2005184222A JP 2007004503 A JP2007004503 A JP 2007004503A
Authority
JP
Japan
Prior art keywords
code
data access
source
program
dao
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
Application number
JP2005184222A
Other languages
English (en)
Inventor
Takashi Tsuchiya
隆 土屋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP2005184222A priority Critical patent/JP2007004503A/ja
Publication of JP2007004503A publication Critical patent/JP2007004503A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

【課題】 プログラムに埋込まれたSQL文などに代表されるデータアクセスコードを、業務ロジックから機械的に分割することを目的とする。同時に、業務ロジックからデータにアクセスする手段を隠蔽することを目的とする。
【解決手段】 まず、データアクセスコード抽出部31は、ソースコードからデータアクセスコードを抽出する。次に、データアクセス情報生成部33は、抽出したデータアクセスコードを分析し、データアクセスコードの種別、パラメータ、条件などを有するデータアクセス情報を生成する。コード生成部35は、データアクセスコード抽出部31により抽出分解されたソースコード及びデータアクセスコードと、データアクセス情報生成部33により生成されたデータアクセス情報とに基づき、機械的にデータアクセスコードと業務ロジックとを分割する。また、同時に、コード生成部35は、データアクセスコードに対してDAOパターンを適用する。
【選択図】 図2

Description

本発明は、データベースなどが記憶するデータにアクセスするデータアクセスコードを有するプログラムコードの変換に関するものである。
従来は、まず、プリプロセッサによって、プログラムに埋込まれたSQL(structured query language)文を対応するプログラム言語のSQLを実行するAPIの呼出し文に変換する。次に、従来は、埋め込みSQL文以外のロジックが記述された業務ロジックと、API(Application Program Interface)の呼出し文とをマージしたソースプログラムに変換する。そして、従来は、マージしたソースプログラムを使用して処理していた。
一方、特開2000−347910号公報では、業務ロジックを実行するプログラムからSQL文を分離して管理することにより、データベースシステムが変更された場合のSQL文の修正をしやすくする方法が開示されている。
また、非特許文献1では、データベースが記憶するデータにアクセスする手段を、業務ロジックを実行するプログラムから隠蔽するためのプログラム構成が開示されている。非特許文献1において、上記のプログラム構成をDAO(Data Access Object)パターンという呼び名で提案されている。
特開2000−347910号公報 ディーパック・アラー、ジョン・クルーピ、ダン・マークス著,「J2EEパターン」,ピアソン・エデュケーション,2002年8月,373−390頁
従来のSQL文などで記述されたデータアクセスコードが埋込まれたプログラムによるデータベースアクセス方式では、データベースシステムが変更されることによってSQL文の変更が必要になる場合などに、手作業によってプログラムからSQL文を探し出し修正および変更をしなければならないという課題があった。
また、特開2000−347910号公報では、業務ロジックを実行するプログラムからSQL文を分離して管理するが、SQL文が埋め込まれたプログラムからSQL文を分離するには、手作業によらなければならないという課題があった。
本発明は、上記のような課題を解決するためになされたもので、プログラムに埋込まれたSQL文などに代表されるデータアクセスコードを、業務ロジックから機械的に分割することを目的とする。本発明は、特に上記DAOパターンなどを適用した形に機械的に変換することにより、業務ロジックからデータにアクセスする手段を隠蔽することを目的とする。
本発明にかかるプログラム変換方式は、データソースを操作するデータアクセスコードを有するソースコードを記憶装置に記憶するソースコード記憶部と、上記ソースコード記憶部が記憶装置に記憶したソースコードを読込むソースコード読込部と、上記ソースコード読込部が読込んだソースコードに基づいて、データアクセスコードを実行するAPI(Application Program Interface)を呼出すメソッドを有するDAO(Data Access Object)コードと、データアクセスコードの代わりに、上記DAOコードのメソッドを呼出すことによりデータソースを操作するコードを実行するソースコードであるロジックコードと、上記DAOコードと上記ロジックコードとの間のインターフェースに使用する変数を有するDTO(Data Transfer Object)コードとを処理装置を用いて生成するプログラム生成部と、上記プログラム生成部が生成したDAOコードとロジックコードとDTOコードとを記憶装置に記憶する生成コード記憶部とを備えることを特徴とする。
本発明にかかるプログラム変換方式によれば、ソースコードからDAOコードとロジックコードとDTOコードとを生成するプログラム生成部を備えるため、機械的にデータアクセスコードと業務ロジックとを分割することが可能である。したがって、データアクセスコードを有するソースコードをデータアクセスコードと業務ロジックとに分割して管理することが可能である。
以下、本発明を図面に示す実施の形態に基づいて説明する。
図1は、実施の形態1におけるプログラム変換方式100のハードウェア構成の一例を示す図である。
図1において、プログラム変換方式100は、プログラムを実行するCPU(Central Processing Unit)911を備えている。CPU911は、バス912を介してROM913、RAM914、通信ボード915、CRT表示装置901、K/B(キーボード)902、マウス903、FDD(Flexible Disk Drive)904、磁気ディスク装置920、CDD905と接続されている。
CPU911は、処理装置の一例である。
RAM914は、揮発性メモリの一例である。ROM913、FDD904、CDD905、磁気ディスク装置920は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード915は、LAN、無線アンテナ等に接続されている。
例えば、通信ボード915、K/B902、FDD904、CDD905などは、入力装置の一例である。
また、例えば、通信ボード915、CRT表示装置901などは、出力装置の一例である。
ここで、通信ボード915は、LANに限らず、直接、インターネット、或いはISDN等のWAN(ワイドエリアネットワーク)に接続されていても構わない。
磁気ディスク装置920には、オペレーティングシステム(OS)921、ウィンドウシステム922、プログラム群923、ファイル群924が記憶されている。プログラム群923は、CPU911、OS921、ウィンドウシステム922により実行される。
上記プログラム群923には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、CPU911により読み出され実行される。
ファイル群924には、以下に述べる実施の形態の説明において、「〜の判定」として説明するものが、「〜ファイル」として記憶されている。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータの入出力を示し、そのデータの入出力のためにデータは、磁気ディスク装置920、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体に記録される。あるいは、信号線やその他の伝送媒体により伝送される。
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ROM913に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置920、FD(Flexible Disk)、光ディスク、CD(コンパクトディスク)、MD(ミニディスク)、DVD(Digital Versatile Disk)等のその他の記録媒体による記録装置を用いて記憶されても構わない。
実施の形態1.
実施の形態1では、SQLなどで記述されたデータアクセスコードを有するソースコードを、データアクセスコードと業務ロジックとに分割する方法について説明する。特に、上記DAOパターンなどを適用した形のコードを生成する方法について説明する。
図2は、実施の形態1におけるプログラム変換方式100の機能を示す機能ブロック図である。図2に基づき、実施の形態1におけるプログラム変換方式100の機能について説明する。
プログラム変換方式100は、ソースコード記憶部10、ソースコード読込部20、プログラム生成部30、生成コード記憶部40、アクセスコード識別情報記憶部50を備える。
ソースコード記憶部10は、図1に示す入力装置などが入力したSQLなどで記述されたデータアクセスコードを有するソースコードを記憶装置に記憶する。ここでは、データアクセスコードは、SQLで記述されているものとする。しかし、データアクセスコードは、SQLで記述されていることに限定されず、データベースへアクセスするためのプログラムであれば他のものでも構わない。
ソースコード読込部20は、ソースコード記憶部10が記憶装置に記憶したソースコードを読込む。また、ソースコード読込部20は、読込んだソースコードをプログラム生成部30へ入力する。
プログラム生成部30は、ソースコード読込部20が入力したソースコードに基づいて、アクセス実行コードとロジックコードとインターフェースコードとを処理装置によって生成する。ここでは、アクセス実行コードは、DAOコードであるとする。また、インターフェースコードは、DTOコードであるとする。アクセス実行コードとロジックコードとインターフェースコード、およびDAOコードとDTOコードとについては後述する。プログラム生成部30は、データアクセスコード抽出部31、データアクセスコード記憶部32、データアクセス情報生成部33、データアクセス情報記憶部34、コード生成部35を備える。データアクセスコード抽出部31は、データアクセスコードを処理装置によって識別する。そして、データアクセスコード抽出部31は、ソースコード読込部20が入力したソースコードが有するデータアクセスコードを識別して、抽出する。つまり、ここでは、データアクセスコード抽出部31は、ソースコードからデータアクセスコードとしてSQL文を抽出する。データアクセスコード記憶部32は、データアクセスコード抽出部31が抽出したデータアクセスコードを記憶装置に記憶する。データアクセス情報生成部33は、データアクセスコード記憶部32が記憶装置に記憶したデータアクセスコードを解析し、データアクセス情報200を生成する。データアクセス情報生成部33は、データアクセス情報200を生成する場合に、アクセスコード識別情報記憶部50が記憶する情報を参照する。データアクセス情報200の構成を図3に示す。データアクセス情報200については後述する。データアクセス情報記憶部34は、データアクセス情報生成部33が生成したデータアクセス情報200を記憶装置に記憶する。コード生成部35は、データアクセスコード記憶部32が記憶装置に記憶したデータアクセスコードとデータアクセス情報記憶部34が記憶装置に記憶したデータアクセス情報200とに基づいて、アクセス実行コードとロジックコードとインターフェースコードとを処理装置によって生成する。つまり、ここでは、コード生成部35は、DAOコードとロジックコードとDTOコードとを生成する。コード生成部35は、オブジェクト生成部36、ロジックコード生成部37を備える。オブジェクト生成部36は、データアクセス情報記憶部34が記憶装置に記憶したデータアクセス情報200に基づいて、ソースコード読込部20が入力したソースコードからアクセス実行コードとインターフェースコードと生成する。つまり、ここでは、オブジェクト生成部36は、DAOコードとDTOコードとを生成する。ロジックコード生成部37は、データアクセス情報記憶部34が記憶装置に記憶したデータアクセス情報200に基づいて、ソースコード読込部20が入力したソースコードから、ロジックコードを生成する。
生成コード記憶部40は、プログラム生成部30が生成したDAOコードとロジックコードとDTOコードと記憶装置に記憶する。
アクセスコード識別情報記憶部50は、データアクセス情報生成部33においてデータアクセス情報200の生成に使用するデータアクセスコードの情報を記憶装置に記憶する。
次に、アクセス実行コードとロジックコードとインターフェースコード、およびDAOコードとDTOコードとについて説明する。
アクセス実行コードは、データアクセスコードを実行する処理を呼出すコードを有する。つまり、他のプログラムなどからアクセス実行コードが呼出されることにより、データアクセスコードが実行される。
ロジックコードは、データアクセスコードの代わりに、上記アクセス実行コードを呼出すことによりデータソースを操作するコードを有するソースコードである。つまり、ロジックコードは、業務ロジックが記述されており、データアクセスの処理に関しては、アクセス実行コードを呼出すことにより実現する。つまり、ロジックコードは、ソースコードが有するデータアクセスコードが記述されていた部分を、アクセス実行コードと、インターフェースコードとソースコードが備える変数とのインターフェースに置換したプログラムである。
インターフェースコードは、アクセス実行コードとロジックコードとの間のインターフェースに使用する変数を有する。
DAOコードは、アクセス実行コードの一例である。DAOコードは、非特許文献1にて開示されているデータベースが記憶するデータにアクセスする手段を、業務ロジックを実行するプログラムから隠蔽するためのプログラム構成なども持ったプログラムである。DAOコードは、データアクセスコードを実行するAPIを呼出すメソッドを有するプログラムである。つまり、ここでは、DAOコードは、SQL文を実行するAPIを呼出すメソッドを有するプログラムである。
DTOコードは、インターフェースコードの一例である。DTOコードは、DAOコードとロジックコードとの間のインターフェースに使用する変数を有するプログラムである。つまり、ロジックコードは、DAOコードへ値を渡す場合、またはDAOコードから値を受取る場合に、DTOコードを経由する。
以下、アクセス実行コードはDAOコード、インターフェースコードはDTOコード、データアクセスコードはSQL文であるものとして説明する。また、アクセスするデータベースはRDB(Relational DataBase)であるものとする。
次に、データアクセス情報200について説明する。図3は、データアクセス情報200の構成の示す。
データアクセス情報200は、SQL文認識情報210、DAO生成情報220、DTO生成情報230を備える。
SQL文認識情報210は、ソース識別子211、表名組212、操作種別213、カーソル名214、付帯条件215、パラメータ216、メソッド名217を備える。
ソース識別子211は、プログラムソースを一意に識別する。ソースコードの名前と変換が実行された日時となどから生成する。ソース識別子211に日時を含める理由は、同じプログラムを2度以上変換した場合、変換後の各プログラムを別のものとして扱うためである。同じ名称のソースコードを入力されたとしても、プログラムの内容が異なる可能性があるのためである。また1つのソースコードが有するSQL文の中で宣言される変数名の名前空間が異なる場合は、それぞれ異なるソース識別子211を生成する。ここで、SQL文の中で宣言される変数名とは、例えば、カーソル名である。
表名組212は、SQL文が操作する表の名前である。データアクセス情報生成部33は、SQLの構文にしたがって表名を認識する。図4は、SQLの構文の一例を示す。表名組212は、例えば、図4に示すSELECT文310などで表名が複数指定されたときは、表名の組を区切り文字、例えば「,」で区切ったものをSQL文認識情報210の表名組212とする。この場合に表名は、文字順序の大小順で、あるいは変換するプログラムにおいて設定された順序などで並び替える。このように並び替えることで、SQL文認識情報210の表名の比較を行うときに、元のSQL文で表名の指定順序が違っている場合にも、含んでいる表名が一致するものは同一であるとみなすことが可能となる。
操作種別213は、SELECT、INSERT、UPDATE、DELETEなどのSQL文の種別である。
カーソル名214は、SQL文のDECLARE CURSOR文350やFETCH文370などで使用するカーソル名である。カーソルを使用しない文では空欄とする。
付帯条件215は、SQL文の操作条件を示すものである。図4に示すSQLの構文を例にして説明する。付帯条件215は、例えば、SELECT文310、DELETE文340ではWHERE句以降に示す内容である。INSERT文320では列名以降に示す内容である。UPDATE文330ではSET句およびWHERE句以降に示す内容である。DECLARE CURSOR文350ではそれに含まれるSELECT文310の付帯条件215である。FETCH文370の付帯条件215は空欄とする。ただし、付帯条件215の中に、ホスト変数または定数が指定されたときは、それを代替文字に置き換える。代替文字とは、例えば、「?」などである。
パラメータ216は、付帯条件215の中で置き換えられたホスト変数または定数を、付帯条件215の中に現れた順序で区切り文字で区切って並べたものである。区切り文字とは、例えば、「,」などである。
メソッド名217は、SQL文を実行するDAOコードのメソッドを呼出すときのメソッド名である。メソッド名217は、操作種別213、WHERE句に現れる列名、SQL文の認識を行ったときの出現順序などを組み合わせて生成される。メソッド名217は、SQL文認識情報210の中の、表名組212、操作種別213、付帯条件215の組に対して一意になるようにデータアクセス情報生成部33によって生成される。
DAO生成情報220は、表名組221、DAO名222、メソッド名223、パラメータ宣言224、戻り値宣言225、SQL文226、DTO名227、生成フラグ228を備える。
表名組221は、SQL文認識情報210が備える表名組212と同様である。
DAO名222は、表名組221に対して生成するDAOコードのクラスの名前である。DAO名222は、表名組221より生成する。表名組221が複数の表名からなるときは、出力するプログラム言語のクラス名に許される区切り文字、例えば「_」などで表名を区切って生成する。出力するプログラム言語がクラス名の大文字小文字を許す場合、表名の先頭を大文字、それ以外を小文字にして並べてもよい。またDAOコードであることを表す接尾語、例えば「DAO」をつけてもよい。つまり、DAOコードのクラスは、表名組221ごとに生成される。
メソッド名223は、SQL文認識情報210が備えるメソッド名217と同様である。
パラメータ宣言224は、DAOコードのメソッド毎に指定するパラメータのデータ型と変数名との組である。パラメータ宣言224は、DAOコードが有するメソッド毎に、DTOコードのクラスの変数、または付帯条件215の中で置き換えられるホスト変数または定数の値を受け取る変数、またはその両方などのうちのどれかとする。変数名は、付帯条件215の中で置き換えられるホスト変数または定数と比較または転記の対象となる列名から生成する。あるいはパラメータ216の中の出現順序を使用してデータアクセス情報生成部33が任意に生成しても構わない。
戻り値宣言225は、DAOコードが有するメソッドの戻り値のデータ型である。戻り値宣言225は、例えば、SELECT文310の場合はDTOコードのクラス、OPEN CURSOR文360の場合は、DTOコードのクラスのリストまたは配列、INSERT文320、UPDATE文330、DELETE文340の場合は整数型または戻り値なしとする。
SQL文226は、DAOコードが有するメソッドを呼出すことにより実行されるSQL文全体である。SQL文226は、ソースコードが有するSQL文から生成する。ただし、付帯条件215の中のホスト変数または定数は、代替文字で置き換えられたものである。また、SQL文226は、SELECT文310のINTO句などの埋め込みSQLに特有の部分は取り除かれている。また、SQL文226は、例えば、DECLARE CURSOR文350の場合、SELECT文310以降からSQL文を生成などとする。つまり、SQL文226は、DAOパターンを適用しやすい形に変換されたSQL文である。SQL文226の変換については、上述したものに限定されるわけではなく、システムの仕様などによって変更しても構わない。
DTO名227は、DAOコードが有するメソッドが使用するDTOコードのクラス名である。DTO名227は、DAO名222にDTOコードであることを表す接尾語、例えば「DTO」を付ける。または、DTO名227は、DAO名222の接尾語を「DTO」に置き換えたものとする。DTO名227は、例えば、DELETE文340のように、DTOコードを使用しないメソッドでは空欄とする。
生成フラグ228は、メソッドをDAOコードにすでに生成したかどうかを示す真偽値である。
DTO生成情報230は、DTO名231、変数名232、データ型233、生成フラグ234を備える。
DTO名231は、DAO生成情報220のDTO名227と同様である。
変数名232は、DTOコードに格納される変数の名前である。変数名232は、SQL文に現れる列名やホスト変数名から生成する。変数名232は、例えば、SELECT文310の場合、「<選択>」部分に記載される列名である。変数名232は、例えば、「<選択>」が「*」であった場合、INTO句に指定されたホスト変数名とする。変数名232は、「<選択>」部分に記載される列が列名ではなくSQL関数であった場合、SQL文に列の別名が指定されていればその名前とし、別名がなければINTO句に指定されたホスト変数名とする。変数名232は、列名によらずホスト変数名や別名などから生成した場合は、変数名にホスト変数などを表す接頭語または接尾語をつける。変数名232は、INSERT文320の文の場合、列名が指定されていればその名前とする。また、変数名232は、INSERT文320の場合、列名が指定されていなければ、変数名の生成を行わない。変数名232は、UPDATE文330では、SET句の更新式に現れる列名を変数名として生成する。また、変数名232は、DELETE文340ではDTOコードを使用しないので変数名の生成も行わない。変数名の生成については、上述した方法に限定されるわけではなく、プログラムやシステムの仕様によって変更しても構わない。
データ型233は、変数のデータ型である。データ型233は、例えば、整数、浮動小数点数、文字列、日時などの種別を表す。データ型233は、SQL文に現れるホスト変数や定数の型より生成される。
生成フラグ234は、DTOコードのクラスの変数をすでに生成したかどうかを示す真偽値である。
次に、プログラム変換方式100の動作について説明する。図5は、プログラム変換方式100の動作を示すフローチャートである。図5に基づきプログラム変換方式100の動作について説明する。
ソースコード入力ステップS10では、入力装置は、ソースコードを入力する。入力装置がソースコードを入力するとは、例えば、図1に示す、FDD904やCDD905などからソースコードを読込むことなどを意味する。
ソースコード記憶ステップS20では、ソースコード記憶部10は、入力装置が入力したソースコードを記憶装置に記憶する。
ソースコード読込ステップS30では、ソースコード読込部20は、記憶装置からソースコードを読込む。
ソースコード取込ステップS40では、ソースコード読込部20は、読込んだソースコードをプログラム生成部30へ入力する。
プログラム生成ステップS50では、プログラム生成部30は、DAOコード、ロジックコード、DTOコードを生成する。
生成コード記憶部ステップS60では、生成コード記憶部40は、生成されたDAOコード、ロジックコード、DTOコードを記憶装置に記憶する。
次に、プログラム生成ステップS50について詳細に説明する。プログラム生成ステップS50の動作は、大きくデータアクセスコード抽出部31の動作と、データアクセス情報生成部33の動作と、コード生成部35の動作とを備える。
まず、データアクセスコード抽出部31の動作について説明する。図6は、データアクセスコード抽出部31の動作であるデータアクセスコード抽出処理を示すフローチャートである。図6に基づいて、データアクセスコード抽出処理について説明する。データアクセスコード抽出処理では、データアクセスコード抽出部31は、ソースコードからデータアクセスコードを抽出する。
ステップS101では、データアクセスコード抽出部31は、プログラム生成部30に入力されたソースコードから1つずつ語句を取り出す。
ステップS102では、データアクセスコード抽出部31は、ソースコードの終わりを認識したら、データアクセスコード抽出処理を終了し、ソースコードが終わりでないならステップS103へ進む。
ステップS103では、データアクセスコード抽出部31は、SQL文の始まりかどうかを判定する。データアクセスコード抽出部31は、SQL文の始まりであると判定した場合、ステップS104へ進み、SQL文の始まりでないと判定した場合、ステップS107へ進む。SQL文の始まりであるかどうかの判定方法については後述する。
ステップS104では、データアクセスコード抽出部31は、ソースコードから1つずつ語句を取り出す。
ステップS105では、データアクセスコード抽出部31は、SQL文の終わりかどうかを判定する。データアクセスコード抽出部31は、SQL文が終わりである場合、ステップS106へ進み、SQL文が終わりでない場合、ステップS104へ進む。つまり、ステップS104とステップS105とでは、SQL文の終わりまでを読み取る。SQL文の終わりかどうかの判定方法については後述する。
ステップS106では、データアクセスコード抽出部31は、読み取ったSQL文をデータアクセスコード記憶部32に渡す。データアクセスコード記憶部32は、SQL文を記憶する。データアクセスコード抽出部31は、SQL文をデータアクセスコード記憶部32に記憶させることなくデータアクセス情報生成部33とコード生成部35とへ渡しても構わない。
ステップS107では、データアクセスコード抽出部31は、取込んだ語句がSQL文でなかった場合、語句をSQL文と区別してデータアクセスコード記憶部32に渡す。データアクセスコード記憶部32は、受け取った語句をSQL文と区別して記憶する。または、データアクセスコード抽出部31は、取込んだ語句がSQL文でなかった場合、語句をコード生成部35へ渡しても構わない。
ここで、データアクセスコード抽出部31がSQL文の始まりかどうか、終わりかどうかを判定する方法の一例について説明する。データアクセスコード抽出部31がSQL文の始まりかどうかを判定する方法は、SQL言語の仕様によって異なる。データアクセスコード抽出部31は、例えば、「EXEC SQL」のようなSQL文の始まりを表す語句であるかを判定する。他にも、データアクセスコード抽出部31は、SELECT、INSERT、UPDATE、DELETEのような特定の語句をSQL文の始まりとする。同様に、データアクセスコード抽出部31は、SQL文の終わりを、例えば、「END EXEC」のようなSQL文の終わりを表す語句であるかによって判定する。また、同様に、データアクセスコード抽出部31は、SELECT、INSERT、UPDATE、DELETEのような特定の語句で始まるSQL文に対して文法が許す終わりの語句によって認識する。
次に、データアクセス情報生成部33の動作について説明する。図7は、データアクセス情報生成部33の動作であるデータアクセス情報生成処理を示すフローチャートである。図7に基づいて、データアクセス情報生成処理について説明する。データアクセス情報生成処理では、データアクセス情報生成部33は、データアクセス情報200を生成する。
ステップS201では、データアクセス情報生成部33は、データアクセスコード記憶部32が記憶したSQL文を取込む。または、データアクセスコード抽出部31が抽出したSQL文を直接受け取っても構わない。
ステップS202とステップS203とでは、SQL文認識情報210を生成する。
ステップS202では、データアクセス情報生成部33は、取込んだSQL文からSQL文認識情報210の、表名組212、操作種別213、カーソル名214、付帯条件215、パラメータ216を生成する。データアクセス情報生成部33は、例えば、アクセスコード識別情報記憶部50が記憶したデータアクセスコードの情報を参照しても構わない。
ステップS203では、データアクセス情報生成部33は、生成した表名組212、操作種別213、付帯条件215の組をデータアクセス情報記憶部34が記憶する表名組212、操作種別213、付帯条件215の組と比較する。
ステップS204では、データアクセス情報生成部33は、表名組212、操作種別213、付帯条件215の組が一致するSQL文認識情報210をデータアクセス情報記憶部34が記憶している場合、ステップS205へ進み、記憶していない場合、ステップS206へ進む。
ステップS205では、データアクセス情報生成部33は、生成したSQL文認識情報210をデータアクセス情報記憶部34へ渡す。データアクセス情報記憶部34は、SQL文認識情報210を記憶する。データアクセス情報生成部33は、コード生成部35へSQL文認識情報210を渡しても構わない。
ステップS206からステップS208まででは、データアクセス情報生成部33は、DAO生成情報220を生成する。
ステップS206では、データアクセス情報生成部33は、メソッド名217を生成する。そして、データアクセス情報生成部33は、SQL文認識情報210をデータアクセス情報記憶部34へ渡す。データアクセス情報記憶部34は、SQL文認識情報210を記憶する。
ステップS207では、データアクセス情報生成部33は、DAO生成情報220を生成する。そして、データアクセス情報生成部33は、DAO生成情報220をデータアクセス情報記憶部34へ渡す。データアクセス情報記憶部34は、DAO生成情報220を記憶する。
ステップS208では、データアクセス情報生成部33は、生成したメソッド名217とDAO生成情報220とを追加したSQL文認識情報210をデータアクセス情報記憶部34へ渡す。データアクセス情報記憶部34は、SQL文認識情報210を記憶する。データアクセス情報生成部33は、コード生成部35へSQL文認識情報210を渡しても構わない。
データアクセス情報生成部33は、ステップS204の場合分けを行うことで、同じSQL文を実行するメソッドの情報を複数生成しない。このことにより、後述するオブジェクトコード、ロジックコード生成処理において、同じSQL文を実行するDAOコードのメソッドを複数生成しない。
ここで、ステップS202からステップS208まででは、データアクセス情報生成部33は、例えば、図4に示すOPEN CURSOR文360、FETCH文370、CLOSE CURSOR文380については、表名組212、操作種別213、付帯条件215の組の比較を行わない。データアクセス情報生成部33は、図4に示すOPEN CURSOR文360、FETCH文370、CLOSE CURSOR文380については、ソース識別子211とカーソル名214とをキーとしてDECLARE CURSOR文350を検索する。そして、データアクセス情報生成部33は、検索したDECLARE CURSOR文350に対応するSQL文認識情報210をデータアクセス情報記憶部34へ渡す。データアクセス情報記憶部34は、DECLARE CURSOR文350を記憶する。または、データアクセス情報生成部33は、コード生成部35へ検索したDECLARE CURSOR文350を渡しても構わない。
ステップS209からステップS214まででは、データアクセス情報生成部33は、DTO生成情報230を生成する。
ステップS209では、データアクセス情報生成部33は、SQL文に現れる0個以上のDTO生成情報230の変数名232を生成する。
ステップS210では、データアクセス情報生成部33は、生成したDTO生成情報230の変数名232のそれぞれに注目する。
ステップS211では、データアクセス情報生成部33は、生成したDTO生成情報230の変数でステップS212以降の処理していないものがないかどうかを判定する。データアクセス情報生成部33は、処理していないものがある場合、ステップS212へ進み、処理していないものがない場合、処理を終了する。
ステップS212では、データアクセス情報生成部33は、生成した変数とデータアクセス情報記憶部34が記憶するDTO生成情報230とを比較する。
ステップS213では、データアクセス情報生成部33は、生成した変数と一致するDTO生成情報230をデータアクセス情報記憶部34が記憶しているかを判定する。データアクセス情報生成部33は、記憶していると判定した場合、ステップS210へ進み、記憶していないと判定した場合、ステップS214へ進む。
ステップS214では、データアクセス情報生成部33は、DTO生成情報230を生成する。そして、データアクセス情報生成部33は、DTO生成情報230をデータアクセス情報記憶部34へ渡す。データアクセス情報記憶部34は、DTO生成情報230を記憶する。
次に、コード生成部35の動作について説明する。図8は、コード生成部35の動作であるオブジェクトコード、ロジックコード生成処理を示すフローチャートである。図8に基づいて、オブジェクトコード、ロジックコード生成処理について説明する。オブジェクトコード、ロジックコード生成処理では、コード生成部35は、データアクセスコード抽出部31がデータアクセスコード記憶部32に記憶したソースコードの語句とデータアクセス情報生成部33がデータアクセス情報記憶部34に記憶したデータアクセス情報200とに基づいて、DAOコード、ロジックコード、DTOコードを生成する。
ステップS301では、コード生成部35は、データアクセスコード抽出部31がデータアクセスコード記憶部32に記憶した語句を取り出す。または、データアクセスコード抽出部31は、データアクセスコード抽出部31から受け取った語句を取り出す。
ステップS302では、コード生成部35は、ソースコードの終わりを認識したら、ステップS320へ進み、ソースコードが終わりでないならステップS303へ進む。
ステップS303では、コード生成部35は、SQL文かどうかを判定する。コード生成部35は、SQL文でないと判定した場合、ステップS304へ進み、SQL文であると判定した場合、ステップS305へ進む。コード生成部35は、図6に示すデータアクセスコード抽出処理において、SQL文かどうかを区別してデータアクセスコード記憶部32へコードを記憶しているため、その情報に基づきSQL文かどうかを判定することが可能である。
ステップS304では、ロジックコード生成部37は、ロジックコードを記憶するファイルなどへSQL文以外の語句を出力する。
ステップS305では、ロジックコード生成部37は、SQL文に基づきSQL文認識情報210を取得する。そして、ロジックコード生成部37は、SQL文認識情報210の表名組212とメソッド名217とをキーとしてDAO生成情報を取得する。
ステップS306では、ロジックコード生成部37は、DAOコードの変数の宣言がロジックコードへ未出力かどうかを判定する。ロジックコード生成部37は、未出力であると判定した場合、ステップS307へ進み、出力済であると判定した場合、ステップS308へ進む。
ステップS307では、ロジックコード生成部37は、ロジックコードの変数宣言部に、DAOコードのクラスの変数を宣言するコードと、DAOコードのクラスの変数にオブジェクトを割り当てるコードを出力する。ここで、DAOコードのクラス名は、例えば、DAO生成情報220のDAO名222とする。また、ロジックコード生成部37は、DAOコードのクラスの変数名は、例えば、DAOコードのクラス名に適当な接頭語または接尾語をつけたものとする。DAOコードのクラスの変数名は、例えば、変数名の大文字小文字を区別するプログラム言語であれば、クラス名の先頭を大文字とし、それを小文字にしたものを変数名としてもよい。
ステップS308では、ロジックコード生成部37は、ソースコードのSQL文が書かれていた箇所を、DAOコードのメソッドの呼出しと、ホスト変数とDTOコードとの間の値を転記するコードとに置き換えてロジックコードへ出力する。
ステップS307とステップS308との処理について、各SQL文での動作の一例を説明する。
SELECT文310の場合、まず、ロジックコード生成部37は、例えば、ロジックコードにはDAOコードのメソッドを呼出すコードを出力する。ここで、DAOコードのメソッドのパラメータは、SQL文認識情報210のパラメータ216である。また、メソッドの戻り値は、DAO生成情報220で指定されたDTOコードのクラスである。戻り値を格納する変数名は、変数名を一意にするため、例えば、DTO名227にソースコードでの出現順序などを付加したものとする。次に、ロジックコード生成部37は、戻り値のDTOクラスから、INTO句のホスト変数に値を転記するコードを出力する。
INSERT文320およびUPDATE文330の場合、まず、ロジックコード生成部37は、ロジックコードに、DTOコードのクラスの変数を宣言するコードと、DAOコードのクラスの変数にオブジェクトを割り当てるコードを出力する。次に、ロジックコード生成部37は、付帯条件215の中で指定されたホスト変数および定数の値をDTOコードのクラスの変数に転記するコードを生成し、次にDAOメソッドを呼出すコードを出力する。DAOコードのメソッドのパラメータは、DTOクラスの変数と、SQL文認識情報210のパラメータの両方である。
DELETE文340の場合、ロジックコード生成部37は、ロジックコードに、DAOメソッドを呼出すコードを出力する。メソッドのパラメータは、SQL文認識情報210のパラメータである。
DECLARE CURSOR文350の場合、ロジックコード生成部37は、ロジックコードにコードの出力は行わない。
OPEN CURSOR文360の場合、ロジックコード生成部37は、ロジックコードにDAOコードのメソッドを呼出すコードを出力する。メソッドのパラメータは、SQL文認識情報210のパラメータ216である。メソッドの戻り値はDAO生成情報220で指定されたDAOクラスのオブジェクトのリストまたは配列である。戻り値を格納する変数名は、カーソル名から生成する。
FETCH文370の場合、ロジックコード生成部37は、OPEN CURSOR文360に対応して生成したメソッドの戻り値から、1つのDTOオブジェクトを取り出すコードと、INTO句のホスト変数に値を転記するコードと、次にFETCH文370が実行された場合にリストまたは配列から取り出されるDTOオブジェクトの位置指示子を1つ進めるコードを出力する。
CLOSE CURSOR文380の場合、ロジックコード生成部37は、OPEN CURSOR文に対応して生成した戻り値を格納する変数を無効化するコードを生成する。ロジックコード生成部37は、例えば、変数を無効化するコードとして空オブジェクトを代入するコードを生成する。
次に、ステップS309からステップS312では、オブジェクト生成部36は、DAO生成情報220にしたがってDAOクラスのコードを出力する。
ステップS309では、オブジェクト生成部36は、DAO生成情報220の生成フラグ228が未生成を示すかどうかを判定する。オブジェクト生成部36は、生成フラグ228が未生成を示す場合、ステップS310へ進み、生成フラグ228が未生成を示さない場合、ステップS313へ進む。
ステップS310では、オブジェクト生成部36は、DAO名222で指定されたDAOコードのクラスが未生成であるかどうかを判定する。オブジェクト生成部36は、DAOコードが未生成である場合、ステップS311へ進み、DAOコードが未生成でない場合、ステップS312へ進む。
ステップS311では、オブジェクト生成部36は、DAOコードのクラスを宣言するコードを、DAOコードを記憶するファイルなどへ出力する。
ここで、ステップS310での判定の対象となったDAO名222は、表名組221に基づき付けられている。また、表名組221は、SQL文が操作する表の組に基づき生成されている。つまり、ステップS310とステップS311とでは、SQL文が操作する表の組に対して、DAOコードのクラスが未生成である場合はDAOコードのクラスを宣言するコードを生成し、DAOコードのクラスが未生成でない場合はDAOコードのクラスを宣言するコードを生成しない。従って、DAOコードのクラスは、SQL文が操作する表の組ごとに生成され、同じ表の組に対して重複して生成されることはない。
ステップS312では、オブジェクト生成部36は、DAOコードを記憶するファイルなどに新規に生成するDAOコード、または生成済みのDAOコードの中に、メソッドのコードを追加出力する。そして、オブジェクト生成部36は、DAO生成情報220の生成フラグ228を生成済に変更する。ここで、メソッドの名前、パラメータ、戻り値は、DAO生成情報220のメソッド名223、パラメータ宣言224、戻り値宣言225に従う。
オブジェクト生成部36は、ステップS309とステップS310との場合分けを行うことで、同じSQL文を実行するメソッドを複数生成することを防ぐ。つまり、オブジェクト生成部36は、同じデータアクセスコードを実行するメソッドを複数生成することを防ぐ。
次に、ステップS313からステップS319では、オブジェクト生成部36は、DTO生成情報230に従って、DTOコードのクラスのコードを出力する。
ステップS313では、オブジェクト生成部36は、DAO生成情報220の中のDTO名227をキーにしてDTO生成情報230を取得する。
ステップS314では、オブジェクト生成部36は、取得したDTO生成情報230の変数名232のそれぞれに注目する。
ステップS315では、オブジェクト生成部36は、取得したDTO生成情報230の変数でステップS316以降の処理していないものがないかどうかを判定する。オブジェクト生成部36は、処理していないものがある場合、ステップS316へ進み、処理していないものがない場合、ステップS301へ進む。
ステップS316では、オブジェクト生成部36は、DTO生成情報230の生成フラグ234が未生成を示すかどうかを判定する。オブジェクト生成部36は、生成フラグ234が未生成を示す場合、ステップS317へ進み、生成フラグ234が未生成を示さない場合、ステップS314へ進む。
ステップS317では、オブジェクト生成部36は、DTOコードが未生成であるかどうかを判定する。オブジェクト生成部36は、DTOコードが未生成である場合、ステップS318へ進み、DTOコードが未生成でない場合、ステップS319へ進む。
ステップS318では、オブジェクト生成部36は、DTOコードのクラスを宣言するコードを、DTOコードを記憶するファイルなどへ出力する。
ステップS319では、オブジェクト生成部36は、DTOコードを記憶するファイルなどに新規に生成するDTOコード、または生成済みのDTOコードの中に、変数を宣言するコードと、変数の値を取得するメソッドのコードと、変数の値を設定するメソッドのコードとを追加出力する。そして、オブジェクト生成部36は、DTO生成情報230の生成フラグ234を生成済に変更する。
ステップS320では、コード生成部35は、処理を終了する。コード生成部35は、生成したロジックコード、DAOコード、DTOコードを出力したファイルファイルを閉じ、処理を終了する。
なお、図8において、ステップS304とステップS306からステップS308までとは、ロジックコード生成ステップである。また、ステップS309からステップS312までは、DAOコード生成ステップである。また、ステップS313からステップS319までは、DTOコード生成ステップである。図8では、ロジックコード生成ステップのステップS306からステップS308まで、DAOコード生成ステップ、DTOコード生成ステップの順に実行するように示した。しかし、実行順序はこれに限られず、ロジックコード生成ステップのステップS306からステップS308まで、DAOコード生成ステップ、DTOコード生成ステップの実行順序を入れ替えてもよいし、並行に実行してもよい。
また、上記のDAOコード生成ステップとDTOコード生成ステップとを合わせたものがオブジェクト生成ステップである。
以上のように、実施の形態1では、SQL文を含んだソースコードを、コード生成部35が分割変換し、業務ロジックを実行するプログラムからSQL文を実行するプログラムを分離させている。実施の形態1では、コード生成部35が機械的に上述した処理を行うため、作業時間を短くし、人為的な誤りを排除することができる。
また、変換されたソースコードは、DAOパターンが適用されているので、データベースの実装が変更されても、業務ロジックへの影響を及ぼさないようにすることも可能である。したがって、実施の形態1によれば、プログラムの移植性および保守性が向上する。
また、実施の形態1では、同じ表、または表の組を操作するメソッドを1つのDAOコードのクラスにまとめることによって、1クラス1メソッドとする場合と比較して生成するDAOコードのクラスの数を減らすことができる。そのため、実施の形態1では、ソース管理が容易になる。また、実施の形態1では、データベースの1つの表について変更があった場合、影響がおよぶDAOコードのクラスの数が少なくなる。従って、実施の形態1では、保守作業が容易になる。
また、実施の形態1では、SQL文認識情報210の比較を行うことによって、同じSQL文を実行するメソッドの重複生成を防ぐ。従って、実施の形態1では、変換後のソースのコード量を少なくすることができる。さらに、実施の形態1では、1つのSQL文について変更があった場合、影響がおよぶメソッドの数が1つで済む。従って、実施の形態1では、保守作業が容易となる。
実施の形態1をまとめると次のようになる。
実施の形態1に示すプログラム変換方式100は、ソースコード中の埋め込みSQL文を、SQL実行APIの呼出し文に変換する方法において、業務ロジックと、SQL実行API呼出し文を出力するDAOコードと、業務ロジックとDAOコードの間で受け渡す変数の集合を格納するDTOコードに分割することを特徴とする。
また、実施の形態1に示すプログラム変換方式100は、SQL文が操作する表の組が同じメソッドを、1つのDAOコードの中に出力することを特徴とする。
さらに、実施の形態1に示すプログラム変換方式100は、SELECT文310で表の組を選択するときに、表の指定順序が違っていても組合せが同じであれば、同じ表の組とみなすことを特徴とする。
また、さらに、実施の形態1に示すプログラム変換方式100は、実行するSQLが同じメソッドがあっても、DAOコードに重複して出力しないことを特徴とする。
実施の形態2.
次に、実施の形態2について説明する。実施の形態2では、ソースコードにおいて、SQL文以外のコードを記述するプログラム言語を変更する機能を実施の形態1に示すプログラム変換方式100に追加する。
図9は、実施の形態1におけるプログラム変換方式100の機能を示す機能ブロック図である。図9に基づき、実施の形態2におけるプログラム変換方式100の機能について説明する。
図9に示すプログラム変換方式100は、図2に示すプログラム変換方式100にプログラム言語変換部38が追加されている。図9に示すプログラム変換方式100は、その他の機能については、図2に示すプログラム変換方式100と同様である。プログラム言語変換部38は、ロジックコードを生成する場合、目的のプログラム言語にソースコードを処理装置によって変換する。また、プログラム言語変換部38は、DAOコードやDTOコードの宣言、変数宣言、メソッドのパラメータや戻り値に現れるデータ型の宣言も、目的言語のソースコードに変換してから出力する。
つまり、プログラム言語変換部38は、図8に示すフローチャートのステップS304、ステップS307、ステップS308において、目的のプログラム言語にソースコードなどを変換する。
プログラム言語の変換は、上述した処理で行うことに限定するわけではない。例えば、データアクセス情報生成部33は、DAO生成情報220のパラメータ宣言224と戻り値宣言225、およびDTO生成情報230のデータ型233に書き込むデータの型は、DAOクラスソースとDTOクラスソースの出力する場合に、プログラム言語変換部38が変換しても構わない。他にも、プログラム言語の変換は、データアクセス情報生成部33がDAO生成情報220やDTO生成情報230を書き込む場合に、プログラム言語変換部38を通すことにより、変換して書き込んでも構わない。
以上により、実施の形態2では、レガシーなSQL文を有するプログラムが、新規に導入されるシステムのソフトウェア開発環境に対応していない場合に、新しいソフトウェア開発環境に対応するプログラムのソースに機械的に変換することができる。従って、実施の形態2では、システムの環境の仕様を変更する場合などにも、移行が容易である。
つまり、実施の形態2に示すプログラム変換方式100は、変換前の埋め込みSQL文以外のコードを記述するプログラム言語と、変換後のプログラム言語が異なることを特徴とする。
実施の形態1におけるプログラム変換方式100のハードウェア構成の一例を示す図である。 実施の形態1におけるプログラム変換方式100の機能を示す機能ブロック図である。 データアクセス情報200の構成の示す。 SQLの構文の一例を示す。 プログラム変換方式100の動作を示すフローチャートである。 データアクセスコード抽出部31の動作であるデータアクセスコード抽出処理を示すフローチャートである。 データアクセス情報生成部33の動作であるデータアクセス情報生成処理を示すフローチャートである。 コード生成部35の動作であるオブジェクトコード、ロジックコード生成処理を示すフローチャートである。 実施の形態2におけるプログラム変換方式100の機能を示す機能ブロック図である。
符号の説明
10 ソースコード記憶部、20 ソースコード読込部、30 プログラム生成部、31 データアクセスコード抽出部、32 データアクセスコード記憶部、33 データアクセス情報生成部、34 データアクセス情報記憶部、35 コード生成部、36 オブジェクト生成部、37 ロジックコード生成部、38 プログラム言語変換部、40 生成コード記憶部、50 アクセスコード識別情報記憶部、100 プログラム変換方式、200 データアクセス情報、211 ソース識別子、212 表名組、213 操作種別、214 カーソル名、215 付帯条件、216 パラメータ、217 メソッド名、220 DAO生成情報、221 表名組、222 DAO名、223 メソッド名、224 パラメータ宣言、225 戻り値宣言、226 SQL文、227 DTO名、228 生成フラグ、230 DTO生成情報、231 DTO名、232 変数名、233 データ型、234 生成フラグ、300 SQL文の構文、310 SELECT文、320 INSERT文、330 UPDATE文、340 DELETE文、350 DECLARE CURSOR文、360 OPEN CURSOR文、370 FETCH文、380 CLOSE CURSOR文、901 CRT表示装置、902 K/B、903 マウス、904 FDD、905 CDD、911 CPU、912 バス、913 ROM、914 RAM、915 通信ボード、920 磁気ディスク装置、921 OS、922 ウィンドウシステム、923 プログラム群、924 ファイル群、940 インターネット、941 ゲートウェイ、942 LAN。

Claims (10)

  1. データソースを操作するデータアクセスコードを有するソースコードを記憶装置に記憶するソースコード記憶部と、
    上記ソースコード記憶部が記憶装置に記憶したソースコードを読込むソースコード読込部と、
    上記ソースコード読込部が読込んだソースコードに基づいて、
    データアクセスコードを実行するAPI(Application Program Interface)を呼出すメソッドを有するDAO(Data Access Object)コードと、
    データアクセスコードの代わりに、上記DAOコードのメソッドを呼出すことによりデータソースを操作するコードを実行するソースコードであるロジックコードと、
    上記DAOコードと上記ロジックコードとの間のインターフェースに使用する変数を有するDTO(Data Transfer Object)コードと
    を処理装置を用いて生成するプログラム生成部と、
    上記プログラム生成部が生成したDAOコードとロジックコードとDTOコードとを記憶装置に記憶する生成コード記憶部と
    を備えることを特徴とするプログラム変換方式。
  2. 上記プログラム生成部は、
    処理装置を用いて、データアクセスコードを識別し、ソースコードからデータアクセスコードを抽出するデータアクセスコード抽出部と、
    上記データアクセスコード抽出部が抽出したデータアクセスコードを記憶装置に記憶するデータアクセスコード記憶部と、
    処理装置を用いて、上記データアクセスコード記憶部が記憶装置に記憶したデータアクセスコードを読込み、上記データアクセスコードを解析することによりデータアクセスコードを構成する情報であるデータアクセス情報を生成するデータアクセス情報生成部と、
    上記データアクセス情報生成部が生成したデータアクセス情報を記憶装置に記憶するデータアクセス情報記憶部と、
    処理装置を用いて、上記データアクセス情報記憶部が記憶装置に記憶したデータアクセス情報を読込み、データアクセス情報に基づいてDAOコードとDTOコードとを生成するオブジェクト生成部と、
    処理装置を用いて、ソースコードにおけるデータアクセスコードを、上記オブジェクト生成部が生成したDAOコードが有する、上記データアクセスコードを実行するメソッドを呼出す呼出しコードと、上記オブジェクト生成部が生成したDTOコードの変数と上記データアクセスコードが使用するホスト変数とのインターフェースとに置換することによりロジックコードを生成するロジックコード生成部と
    を備えることを特徴とする請求項1記載のプログラム変換方式。
  3. 上記プログラム生成部は、上記DAOコードとして、操作するデータソースの単位が同じデータアクセスコードを実行するAPIの呼出し文を出力するメソッドを同じクラスに有するDAOコードを生成する
    ことを特徴とする請求項1記載のプログラム変換方式。
  4. 上記ソースコード記憶部は、データソースとしてRDB(Relational DataBase)を操作するデータアクセスコードを有するソースコードを記憶装置に記憶し、
    上記プログラム生成部は、上記DAOコードとして、操作する表の組が同じデータアクセスコードを実行するAPIの呼出し文を出力するメソッドを同じクラスに有するDAOコードを生成する
    ことを特徴とする請求項1記載のプログラム変換方式。
  5. 上記プログラム生成部は、ソースコードに同じデータアクセスコードが存在した場合、上記データアクセスコードを実行するAPIの呼出し文を出力するメソッドを1つのみ有するDAOコードを生成する
    ことを特徴とする請求項1記載のプログラム変換方式。
  6. 上記プログラム生成部は、さらに、
    ソースコードを記述するプログラム言語を、処理装置を用いて他のプログラム言語へ変換するプログラム言語変換部
    を備えることを特徴とする請求項1記載のプログラム変換方式。
  7. 上記ソースコード記憶部は、データアクセスコードとしてSQL(Structured Query Language)で記述されたデータアクセスコードを有するソースコードを記憶することを特徴とする請求項1記載のプログラム変換方式。
  8. データソースを操作するデータアクセスコードを有するソースコードを記憶装置に記憶するソースコード記憶部と、
    上記ソースコード記憶部が記憶装置に記憶したソースコードを読込むソースコード読込部と、
    上記ソースコード読込部が読込んだソースコードに基づいて、
    データアクセスコードを実行する処理を呼出すコードを有するアクセス実行コードと、
    データアクセスコードの代わりに、上記アクセス実行コードを呼出すことによりデータソースを操作するコード実行するソースコードであるロジックコードと、
    上記アクセス実行コードと上記ロジックコードとの間のインターフェースに使用する変数を有するインターフェースコードと
    を処理装置を用いて生成するプログラム生成部と、
    上記プログラム生成部が生成したアクセス実行コードとロジックコードとインターフェースコードとを記憶装置に記憶する生成コード記憶部と
    を備えることを特徴とするプログラム変換方式。
  9. データソースを操作するデータアクセスコードを有するソースコードを記憶装置に記憶するソースコード記憶ステップと、
    上記ソースコード記憶ステップで記憶装置に記憶したソースコードを読込むソースコード読込ステップと、
    上記ソースコード読込ステップで読込んだソースコードに基づいて、
    データアクセスコードを実行するAPI(Application Program Interface)を呼出すメソッドを有するDAO(Data Access Object)コードと、
    データアクセスコードの代わりに、上記DAOコードのメソッドを呼出すことによりデータソースを操作するコード実行するソースコードであるロジックコードと、
    上記DAOコードと上記ロジックコードとの間のインターフェースに使用する変数を有するDTO(Data Transfer Object)コードと
    を処理装置を用いて生成するプログラム生成ステップと、
    上記プログラム生成ステップで生成したDAOコードとロジックコードとDTOコードとを記憶装置に記憶する生成コード記憶ステップと
    をコンピュータに実行させることを特徴とするコード変換プログラム。
  10. データソースを操作するデータアクセスコードを有するソースコードを記憶装置に記憶するソースコード記憶ステップと、
    上記ソースコード記憶ステップで記憶装置に記憶したソースコードを読込むソースコード読込ステップと、
    上記ソースコード読込ステップで読込んだソースコードに基づいて、
    データアクセスコードを実行するAPI(Application Program Interface)を呼出すメソッドを有するDAO(Data Access Object)コードと、
    データアクセスコードの代わりに、上記DAOコードのメソッドを呼出すことによりデータソースを操作するコード実行するソースコードであるロジックコードと、
    上記DAOコードと上記ロジックコードとの間のインターフェースに使用する変数を有するDTO(Data Transfer Object)コードと
    を処理装置を用いて生成するプログラム生成ステップと、
    上記プログラム生成ステップで生成したDAOコードとロジックコードとDTOコードとを記憶装置に記憶する生成コード記憶ステップと
    を備えることを特徴とするプログラム変換方法。
JP2005184222A 2005-06-24 2005-06-24 プログラム変換方式およびプログラム変換方法およびコード変換プログラム Pending JP2007004503A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005184222A JP2007004503A (ja) 2005-06-24 2005-06-24 プログラム変換方式およびプログラム変換方法およびコード変換プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005184222A JP2007004503A (ja) 2005-06-24 2005-06-24 プログラム変換方式およびプログラム変換方法およびコード変換プログラム

Publications (1)

Publication Number Publication Date
JP2007004503A true JP2007004503A (ja) 2007-01-11

Family

ID=37690070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005184222A Pending JP2007004503A (ja) 2005-06-24 2005-06-24 プログラム変換方式およびプログラム変換方法およびコード変換プログラム

Country Status (1)

Country Link
JP (1) JP2007004503A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5405684B1 (ja) * 2013-03-28 2014-02-05 株式会社バリュー ソースプログラムのプログラミング言語変換装置
KR20140060299A (ko) * 2011-09-07 2014-05-19 마이크로소프트 코포레이션 변형 컨텍스트-인식 데이터 소스 관리

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150377A (ja) * 2001-11-16 2003-05-23 Nec Corp 画面出力モジュール開発システム、画面出力モジュール開発方法及びプログラム並びに記録媒体

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003150377A (ja) * 2001-11-16 2003-05-23 Nec Corp 画面出力モジュール開発システム、画面出力モジュール開発方法及びプログラム並びに記録媒体

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140060299A (ko) * 2011-09-07 2014-05-19 마이크로소프트 코포레이션 변형 컨텍스트-인식 데이터 소스 관리
KR101944570B1 (ko) 2011-09-07 2019-01-31 마이크로소프트 테크놀로지 라이센싱, 엘엘씨 변형 컨텍스트-인식 데이터 소스 관리
JP5405684B1 (ja) * 2013-03-28 2014-02-05 株式会社バリュー ソースプログラムのプログラミング言語変換装置
JP2014191738A (ja) * 2013-03-28 2014-10-06 Value:Kk ソースプログラムのプログラミング言語変換装置

Similar Documents

Publication Publication Date Title
CN100470480C (zh) 分析程序加速器装置以及更新其的方法
US7958133B2 (en) Application conversion of source data
JP2009266244A (ja) 簡潔言語学データを生成かつ使用するシステムおよび方法
JP2009237762A (ja) プログラム解析装置、プログラム解析方法および解析プログラム
JP2011034246A (ja) データ変換装置、データ変換方法、およびデータ変換プログラム
US20020026632A1 (en) Universal computer code generator
JP3372532B2 (ja) 感情情報抽出方法および感情情報抽出プログラムの計算機読み取り可能な記録媒体
JP2019191900A (ja) 言語特徴の抽出装置、固有表現の抽出装置、抽出方法、及びプログラム
JP6805720B2 (ja) データ検索プログラム、データ検索装置およびデータ検索方法
JP6651974B2 (ja) 情報処理装置、コンパイル方法及びコンパイラプログラム
JP2007004503A (ja) プログラム変換方式およびプログラム変換方法およびコード変換プログラム
JP2000201080A (ja) 付加コ―ドを用いたデ―タ圧縮/復元装置および方法
JP2006146613A (ja) プログラム変換方法
JP4734400B2 (ja) 文書検索装置およびプログラム
EP3255558A1 (en) Syntax analyzing device, learning device, machine translation device and recording medium
JP4791205B2 (ja) 差分生成装置及び差分適用装置及び差分生成プログラム及び差分適用プログラム
JP7096634B2 (ja) 音声認識支援装置、音声認識支援方法及び音声認識支援プログラム
JP4311327B2 (ja) ソースコード自動生成装置、ソースコード自動生成方法、プログラムおよび記録媒体
JP7083473B2 (ja) 入力支援装置
JPS59736A (ja) 構文解析方式
JP7200474B2 (ja) 変換補助装置、変換補助システム、変換補助方法及びコンピュータプログラム
JP4399154B2 (ja) 翻訳装置、及び翻訳プログラム
JP4061283B2 (ja) 字句をデータに変換する装置、方法及びプログラム
Wiedenhoeft et al. Using HaMMLET for Bayesian Segmentation of WGS Read-Depth Data
JP2016134754A (ja) 変換処理プログラム、情報処理装置および変換処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080404

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100426

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110315

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110425

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110524