(57)【要約】【課題】  COBOLファイルアクセスプログラムでデータベース管理システムにアクセスする、またはSQL埋込みCOBOLプログラムでファイル管理システムにアクセスする方法を提供することを目的とする。【解決手段】  COBOLプログラムの入出力命令や埋込みSQL文の実行の契機で他プログラムの呼び出しを有するCOBOLコンパイラを使用して、データアクセス先を任意に変更できる変換ライブラリを起動する。変換ライブラリは、変換ルールを記述した変換定義ファイルを読み込み、変換ルールを決定し、入出力命令またはSQL文を解析し、アクセス種別の意味付けを行い、変換ルールに従ってアクセス先を決定し、データベース管理システムの当該データベース、またはファイル管理システムの当該ファイルへのアクセスを行う。【選択図】  図１
2006127337.tif 000002
【特許請求の範囲】
【請求項１】
COBOL言語プログラムから所定のデータにアクセスするデータアクセス制御方法であって、
コンピュータが備える変換定義読み込み手段が、変換定義を読み込み、COBOL言語プログラムに記述された入出力命令または埋込みSQL文の実行の契機で実行すべきアクセス先とアクセス方法を決定するステップと、
コンピュータが備えるアクセス先決定手段が、COBOL言語プログラムに記述された入出力命令または埋込みSQL文の意味を解析し、前記変換定義の変換ルールに従い、入出力命令または埋込みSQL文でアクセスすべきアクセス先とアクセス方法を決定するステップと、
コンピュータが備えるアクセス手段が、前記アクセス先のデータベース管理システムまたはファイル管理システムに、前記アクセス方法で、アクセスするステップと
を備えたことを特徴とするCOBOLプログラムのデータアクセス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、COBOLプログラムの入出力命令、または埋込みSQL文によるデータアクセス制御方法に関する。
【背景技術】
【０００２】
従来、COBOLの入出力命令実行によりデータベースにアクセスする方式として、例えば、下記特許文献１および特許文献２に記載の技術が知られている。
【０００３】
下記特許文献１に記載の技術は、COBOLプログラムの入出力命令をデータベースに対するアクセス命令(SQL文)に変換するデータベースアクセス変換機構に関するものである。これは、データベース化対象ファイル管理テーブルに従い、入出力命令でデータベースにアクセスする対象ファイルを特定し、入出力命令をSQL文に変換するルールなどを変換情報ファイルに持ち、これに従いSQL変換／制御処理部で入出力命令をSQL文に変換してデータベースにアクセスするという構成となっている。具体的には、COBOL入出力命令の実行要求により、対象ファイルが見つからない場合、データベース化対象ファイル管理テーブルを参照し、当該ファイルが登録されていれば、SQL変換／制御処理部を起動する。SQL変換／制御処理部では、変換情報ファイルの内容を参照して、データベースとのアクセスを実現するようにしたものである。
【０００４】
また、下記特許文献２に記載の技術は、下記特許文献１で対象ファイルが相対編成ファイルの場合に相対レコード番号によるアクセス方法を実現するようにしたものである。
【特許文献１】特開平７−１４１２３７号公報
【特許文献２】特開平１１−２５９２９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に記載の技術は、主にCOBOL入出力命令をSQL変換する構成を示しており、特に、順呼び出し(ACCESS MODE IS SEQUENTIAL)での入出力命令からSQL変換するアクセスの実現方法については知ることができるものの、順呼び出し以外での入出力命令に対するSQL変換については示されていない。
【０００６】
また、上記特許文献２に記載の技術は、上記特許文献１に記載の技術で相対編成ファイルの相対レコード番号によるアクセス方法を実現するものであり、相対編成ファイル以外の入出力命令に対するSQL変換については示されていない。
【０００７】
本発明の目的は、ファイル編成や呼び出し方法を特定せずに、COBOL入出力命令からSQL変換するアクセスの実現と埋込みSQL文からファイルアクセスする方法を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明は、COBOL言語プログラムから所定のデータにアクセスするアクセス制御方法であって、コンピュータが備える変換定義読み込み手段が、変換定義を読み込み、COBOL言語プログラムに記述された入出力命令または埋込みSQL文の実行の契機で実行すべきアクセス先とアクセス方法を決定するための変換ルールを決定するステップと、コンピュータが備えるアクセス先決定手段が、COBOL言語プログラムに記述された入出力命令または埋込みSQL文の意味解析を実行し、前記変換ルールに従い、入出力命令または埋込みSQL文でアクセスすべきアクセス先とアクセス方法を決定するステップと、コンピュータが備えるアクセス手段が、前記アクセス先のデータベース管理システムまたはファイル管理システムに、前記アクセス方法で、アクセスするステップとを備えたことを特徴とする。
【０００９】
データベース管理システムの当該データベース、またはファイル管理システムの当該ファイルから読み出したデータを、COBOL言語プログラムに記述された入出力命令のレコード領域やSQL文の変数領域に格納する。また、データアクセスでエラーを検知した場合は、ファイルステータスまたは、SQLCODEに該当コードを格納することでCOBOLプログラムにエラー検知を通知することができる。
【００１０】
また、異なるデータアクセスへの変換だけを用意するのではなく、変換の不要なデータアクセスのパターンにも対応できるので、例えば、複数のファイルアクセスで特定のファイルに対する入出力命令だけを変換対象とすることができる。
【００１１】
なお、変換ライブラリでデフォルトの変換ルールを規定しておけば、変換定義ファイルを記述しなくてもデータアクセスを変更でき、変換定義ファイルを記述するだけでアクセス先を極めて容易に変更することができる。
【００１２】
更に、変換定義ファイルの記述を変更するだけでアクセス先を容易に変更することができるので、開発環境ではファイル管理システムへのアクセスに変換し、運用環境ではデータベース管理システムへのアクセスに変換するというように、システム環境に応じてアクセス先を変更することにより開発効率を向上させることができる。
【００１３】
また、変換定義ファイルに記述する変換ルールにバックアップ機能やトレース出力機能を組み込むことにより、データ保全や参照／更新のアクセス状態を時系列的に把握することが可能になる。
【発明の効果】
【００１４】
以上、説明したように、本発明によれば、変換ルールを記述した変換定義ファイルを読出し、入出力命令またはSQL文を解析し、その意味解析を行い、変換ルールに従ってアクセス先を決定すると共に、そのアクセス方法も決定するようにしているので、ファイル編成や呼び出し方法を特定せずに、COBOL入出力命令からデータベースにアクセスすることや、埋込みSQL文からファイル管理システムのファイルにアクセスすることが可能になる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施する場合の一形態を、図面を参照しながら具体的に説明する。
【００１６】
図１は、本発明の実施の一形態のデータアクセス変換機構の概要構成を示すブロック図である。データアクセス変換機構は、図１に示すように、COBOLプログラム１０１におけるファイル入出力命令またはSQL文実行の契機で、変換ライブラリ１０２が呼び出され、変換ライブラリ１０２は変換ルールが記述された変換定義ファイル１０３を読み込み、データベース管理システム１０４の当該データベースまたはファイル管理システム１０５の当該ファイルのデータにアクセスする構成となっている。
【００１７】
図２は、入出力命令／SQL文変換の機能構成例を示したもので、図１に示す変換ライブラリ１０２の機能を説明するためのブロック図である。本変換ライブラリ１０２は、図２に示すように、COBOLプログラム１０１におけるファイル入出力命令またはSQL文実行の契機で呼び出されると、入出力命令／SQL文解析の振分け制御部２０１で各機能の振分け制御を行う。各機能としては、変換定義ファイル読み込み認識機能２０２、入出力命令意味解析変換機能２０３、SQL文意味解析変換機能２０４、データベース管理システムアクセス機能２０５、ファイル管理システムアクセス機能２０６、読み込みデータ通知機能２０７、およびエラー情報通知機能２０８を有する。変換定義ファイル読み込み認識機能２０２は、変換定義ファイル１０３を読み込み、利用する変換ルールを決定（取得）する。入出力命令意味解析変換機能２０３は、ファイル入出力命令実行の契機で呼び出された場合に、その入出力命令を解析し、変換ルールに従いアクセス先を規定する。SQL文意味解析変換機能２０４は、SQL文実行の契機で呼び出された場合に、そのSQL文を解析し、変換ルールに従いアクセス先を規定する。データベース管理システムアクセス機能２０５は、データベース管理システム１０４の当該データベースにアクセスし、データの参照更新を行う。ファイル管理システムアクセス機能２０６は、ファイル管理システム１０５の当該ファイルにアクセスし、データの参照更新を行う。読み込みデータ通知機能２０７は、ファイル管理システム１０５のデータまたはデータベース管理システム１０４のデータを参照した場合、これをCOBOLプログラム１０１に通知する。エラー情報通知機能２０８は、データアクセスでエラーを認識した場合、エラー情報をCOBOLプログラム１０１に通知する。
【００１８】
次に、変換ライブラリ１０２の機能について詳しく説明する。
【００１９】
図３(a)および(b)は、変換ライブラリ１０２の各機能の制御処理をフロ−チャ−トで示した図である。この処理は、COBOLプログラム１０１の実行時、変換ライブラリ１０２が呼び出される契機となる入出力命令またはSQL文の文種別などが実行されるときに、開始される。この処理が開始されると、変換ライブラリ１０２は、入出力命令／SQL文解析の振分け制御部２０１で制御しながら処理を進めていく。
【００２０】
まず、ステップ３０１で、変換定義ファイル読み込み認識機能２０２により、変換定義ファイル１０３を読み込み変換ルールを決定（取得）する。変換定義ファイル１０３の読み込みは、変換ライブラリ１０２が最初に呼び出されるときにのみ行い、それ以降は既に取得されている変換ルールを用いる。あるいは、例えば順編成ファイルのアクセス時に用いる変換ルール、相対編成ファイルのアクセス時に用いる変換ルール、というように変換ルールを分けておき、必要に応じて変換定義ファイル１０３から変換ルールを決定（取得）するようにしてもよい。
【００２１】
次に、ステップ３０２で、呼び出される契機となった文が入出力命令かSQL文かを判別する。入出力命令のときは、ステップ３０３で、入出力命令意味解析変換機能２０３により、当該入出力命令の意味解析を行い、更に変換ルールに従いアクセス先を決定する。SQL文のときは、ステップ３０４で、SQL文意味解析変換機能２０４により、当該SQL文の意味解析を行い、更に変換ルールに従いアクセス先を決定する。次に、ステップ３０５で、当該入出力命令またはSQL文のアクセス先がデータベースか否か判定する。データベースであるときは、ステップ３０６で、データベース管理システムアクセス機能２０５により、変換ルールに従って、アクセス先のデータベース管理システム１０４にアクセスする。データベースでないときは、ファイル管理システム１０５へのアクセスであるから、ステップ３０７で、ファイル管理システムアクセス機能２０６により、変換ルールに従って、アクセス先のファイル管理システム１０５にアクセスする。次に、ステップ３０８で、データアクセスでエラーを検知したか否か判定する。エラー検知していなければステップ３１３へ、検知していたらステップ３１０へ進む。
【００２２】
ステップ３０９は、エラー情報通知機能２０８による処理である。まずステップ３１０で、処理対象の文が入出力命令かSQL文かを判別する。入出力命令のときは、ステップ３１１で、エラー情報を解析し、ファイルステータスを格納する。SQL文のときは、ステップ３１２で、エラー情報を解析し、SQLCODE変数を格納する。ただし、ファイルステータスの格納が指示されていない場合や、変換ルールでエラー発生時の動作が規定されている場合は、処理を続行させずに異常終了させることもできる。ステップ３１１，３１２の後はリターンする。
【００２３】
データアクセスが成功した場合は、ステップ３１３で、データの読み込み（参照）か否かを判定する。データの読み込み（参照）の場合は、ステップ３１４に示す読み込みデータ通知機能２０７による処理に進む。この処理は、ステップ３１５で呼び出される契機となった文種別が入出力命令かSQL文かを判別し、入出力命令のときは、ステップ３１６でREAD文のレコード領域に読み込んだ(参照した)データを格納し、SQL文のときは、ステップ３１７でFETCH/SELECTの変数領域に読み込んだ(参照した)データを格納するものである。ステップ３１６，３１７の後はリターンする。ステップ３１３でデータの読み込み（参照）でないときもリターンする。
【００２４】
なお、変換定義ファイル読み込み認識機能２０２は、変換定義ファイル１０３に記述されていないデフォルトの変換ルールをも規定する。入出力命令意味解析変換機能２０３では、変換ライブラリ１０２が呼び出される契機が入出力命令の場合に、ファイル編成、呼び出し方法、および入出力命令の種別などをパラメタなどのインタフェース領域から認識し、変換ルールに従ってアクセス先やアクセス方法を決定する。SQL文意味解析変換機能２０４も同様にして、接続データベース、表名、およびSQL文の種別などを認識し、変換ルールに従ってアクセス先やアクセス方法を決定する。データベース管理システムアクセス機能２０５、またはファイル管理システムアクセス機能２０６は、データベース管理システム１０４やファイル管理システム１０５、またはCOBOLコンパイラから提供されているアクセス関数やサービスルーチン、またはODBCなどのCLI(Call Level Interface)によるアクセス、またはDAO、ADOなどのOLEインタフェースでアクセス処理を行う。
【００２５】
次に、図４を参照して、基本的な変換例である順編成ファイルアクセスの入出力命令でデータベースをアクセスする例を説明する。図４(a)において、COBOLプログラム１０１は、順編成ファイルに対するOPEN文（１）、READ文（２）、およびCLOSE文（３）を含んでいる。FILE01に対するSEQ-FILEファイルのOPEN文（１）の実行によって、変換ライブラリ１０２が呼び出され上述の図３の処理が実行される。すなわち、まず変換ライブラリ１０２は、変更定義ファイル１０３を読み込み、順編成ファイルFILE01に対するアクセスは、データベースDBM1の表ATBLに対するアクセスに変換する、と認識する。認識した変換ルールに従い、４０１の（１）に示すPREPARE("SELECT・・・")とOPENのSQL文を実行する。４０１は変換定義ファイル１０３を読み込むことにより決定（取得）した変換ルールであり、４０１の（１）は、COBOLプログラム１０１内のOPEN文（１）に対応して実行するSQL文である。同様にして、COBOLプログラム１０１内のREAD文（２）の実行で４０１の（２）に示すFETCH文を、COBOLプログラム１０１内のCLOSE文（３）の実行で４０１の（３）に示すCLOSE文を、それぞれ実行することにより、入出力命令でデータベースをアクセスする。
【００２６】
上述の変換方法は、相対編成ファイルおよび索引編成ファイルの順呼び出し方法時のアクセスにも適用できる。図４(b)は、その変換ルールを示す。４１１がCOBOLプログラムの入出力命令、４１２が各入出力命令に対応するSQL文である。相対編成ファイルあるいは索引編成ファイルの場合のSTART文でも、上記OPEN文（１）の変換と同様にPREPARE-OPEN文を実行するが、実行する動的SQLのSELECTのWHERE句にSTART文のKEY条件に従った相対キー番号またはレコードキーに対する行位置指定または探索条件を付加する。DELETE文、REWRITE文は、カーソル指定のDELETEやUPDATEのSQL文を実行してデータベースにアクセスする。WRITE文は、INSERTのSQL文を実行する。また、変更定義ファイル１０３には、アクセス先や変換ルールをセクションやエントリで示すことで、将来的な追加変更に対しても極めて柔軟に対応できるようにしてある。
【００２７】
次に、図５を参照して、乱呼び出し方法(ACCESS MODE IS RANDOM)の入出力命令でデータベースにアクセスする例を説明する。図５において、COBOLプログラム１０１は、相対編成ファイルに対するOPEN文（１）、READ文（２）、およびCLOSE文（３）を含んでいる。FILE02に対するRAN-FILEファイルのOPEN文（１）の実行によって、変換ライブラリ１０２が呼び出され上述の図３の処理が実行される。すなわち、まず変換ライブラリ１０２は、変更定義ファイル１０３を読み込み、相対編成ファイルFILE02に対するアクセスは、データベースDBM1の表BTBLに対するアクセスに変換するものとし、列B1をキーとする、と認識する。認識した変換ルールに従い、入出力命令に対応するSQL文を実行していくが、OPEN文（１）に対しては５０１の（１）に示すようにデータベースDBM1の表BTBLに対するアクセスは行わない。COBOLプログラム１０１内のKEY指定のREAD文（２）の実行によって、５０１の（２）に示すKEY条件に従った相対キー番号に対する行位置指定の探索条件を付加したSELECT文を準備するPREPARE ("SELECT・・・WHERE・・・")と、OPENおよびFETCHのSQL文を実行する。また、CLOSE文（３）の実行で、５０１の（３）に示すようにCLOSEのSQL文を実行する。以上のようにして、乱呼び出し方法の入出力命令でデータベースをアクセスする。
【００２８】
この変換方法は、索引編成ファイルの乱呼び出し方法にも適用できる。動的呼び出し方法(ACCESS MODE IS DYNAMIC)の相対編成ファイルや索引編成ファイルでは、これらの順呼び出し方法と乱呼び出し方法の両方の変換方法を使用してデータベースにアクセスする。また、順編成ファイルアクセスの入出力命令で相対編成ファイルや索引編成ファイルにアクセスする場合は、順呼び出し方法で各ファイルにアクセスし、乱呼び出しや動的呼び出しの相対編成ファイルアクセスの入出力命令で索引編成ファイルにアクセスする場合は、同じ呼び出し方法でアクセスすることで対応できる。この場合、相対レコード番号に対応するレコードキーを用意しておく。
【００２９】
次に、同様の方式を用いて、埋込みSQL文でファイル管理システムの当該ファイルにアクセスする方法について説明する。
【００３０】
図６(a)は、埋込みSQL文でファイル管理システム１０５をアクセスする変換方法を示す説明図である。基本的に図４および図５において説明した変換を逆に行う。つまりCOBOLプログラム１０１中にデータベース(DBM1)の表(CTBL)アクセスのOPENカーソル(SELECT)の埋込みSQL文（１）があるとき、このSQL文（１）の実行時に、変換ライブラリ１０２が呼び出される。変換ライブラリ１０２は、変更定義ファイル１０３を読み込み、データベース(DBM1)の表(CTBL)アクセスは、索引編成ファイル(C:\FILE03)に対するアクセスに変換する、と認識する。認識した変換ルールに従い、６０１の（１）に示すように索引編成ファイルアクセス関数のオープン関数(isopen)を実行する。
【００３１】
図６(b)は、上述したように埋込みSQL文からファイル管理システムのファイルをアクセスする変換ルールを示す。６１１がCOBOLプログラム中の埋込みSQL文、６１２が各埋込みSQL文に対応するファイルアクセス文である。図６(b)に示すように、FETCHのSQL文は順読み込み(READ AT END)の関数を、CLOSEのSQL文はファイルクローズ(CLOSE)の関数を、SELECTのSQL文は乱読み込み(READ KEY)、または位置付け(START)て、順読み込み(READ ATEND)の関数を、UPDATEのSQL文はレコードの書き換え(REWRITE)の関数を、DELETEのSQL文はレコードの削除(DELETE)の関数を、INSERTのSQL文はレコードの書き出し(WRITE)の関数を、それぞれ実行する。
【００３２】
埋込みSQL文には、データアクセスを行うデータ操作のSQL文のほかにCONNECT, DISCONNECT, COMMIT, ROLLBACKなどデータ操作以外のSQL文がある。次に、図７及び図８を用いて、そのようなデータ操作以外の埋込みSQL(制御系)文とファイルのオープンクローズについて説明する。
【００３３】
図７は、CONNECT, DISCONNECT文でファイルのオープン/クローズを行う例を示す。変換定義ファイル１０３で、CONNECT=OPEN INPUT CTBL, DTBL…と指定することにより、CONNECT文（１）で、７０１の（１）に示すように、指定された全てのファイルをオープンすることができる。指定が無い場合は、データ操作のSQLで最初に表に対するファイルアクセスが為されたときにファイルオープンを行う。また、DISCONNECT文（２）で、７０１の（２）に示すようにファイルクローズする。上記とは逆に、OPEN/CLOSE文の実行でCONNECT/DISCONNECTの制御系SQLの処理を行うことも、変換定義ファイル１０３で指示することができる。この機能により、COBOLプログラムの外(COBOLプログラムを呼び出す親プログラム)でデータベースの接続を行い、COBOLプログラムでは操作系のSQLのみを実行するなどプログラムの機能分担が、プログラムの変更なしで適用することが可能である。
【００３４】
図８は、SQL埋込みCOBOLプログラム１０１で埋込みSQL文のCOMMIT, ROLLBACK文の実行をバックアップファイルの使用で実現する例を示す。変換定義ファイル１０３に、BACKUPFILE=C:\FILE01_bkと指定することでバックアップファイルを作成することを指示する。この指定がある場合、COBOLプログラム１０１内のCONNECT文（１）の実行で、バックアップファイル(C:\FILE01_bk)をオープンし、順編成ファイル(C:\FILE01)の内容を当該バックアップファイル８０２に書き込む。また、COMMIT文（２）の実行で、バックアップファイル８０２の内容で順編成ファイル(C:\FILE01)を更新する。ROLLBACK文（３）の実行では順編成ファイル(C:\FILE01)の内容でバックアップファイル８０２の内容を更新する。DISCONNECT文（４）の実行で、バックアップファイル８０２のクローズを行う。変換定義ファイル１０３にBACKUPFILEの指示が無い場合で機能が不足する場合(例えば、索引編成ファイルアクセスで順編成ファイルにアクセスなど)は、メモリまたは、一時ファイルを作成しアクセス方式の変換を行う。
【図面の簡単な説明】
【００３５】
【図１】本発明の実施の一形態のデータアクセス変換機構の概略構成を示すブロック図、
【図２】変換ライブラリを説明するためのブロック図、
【図３（ａ）】変換ライブラリの各機能の制御処理をフロ−チャ−ト（その１）で示す図、
【図３（ｂ）】変換ライブラリの各機能の制御処理をフロ−チャ−ト（その２）で示す図、
【図４】順編成ファイルアクセスでデータベースをアクセスするための説明図、
【図５】乱呼び出し方法でデータベースをアクセスするための説明図、
【図６】埋込みSQL文でファイル管理システムにアクセスするための説明図、
【図７】接続(CONNECT文)とファイルオープン(OPEN)の変換についての説明図、
【図８】変換におけるバックアップファイルについての説明図である。
【符号の説明】
【００３６】
１０１…COBOLプログラム、１０２…変換ライブラリ、１０３…変換定義ファイル、１０４…データベース管理システムの当該データベース、１０５…ファイル管理システムの当該ファイル、２０１…入出力命令／SQL文解析の振分け制御部、２０２…変換定義ファイル読み込み認識機能、２０３…入出力命令意味解析変換機能、２０４…SQL文意味解析変換機能、２０５…データベース管理システムアクセス機能、２０６…ファイル管理システムアクセス機能、２０７…読み込みデータ通知機能、２０８…エラー情報通知機能、４０１，５０１…データベースアクセスのSQL文への変換例、６０１，７０１，８０１…埋込みSQL文からファイルアクセスへの変換例、８０２…バックアップファイル。
【図１】
2006127337.tif 000003
【図２】
2006127337.tif 000004
【図３（ａ）】
2006127337.tif 000005
【図３（ｂ）】
2006127337.tif 000006
【図４】
2006127337.tif 000007
【図５】
2006127337.tif 000008
【図６】
2006127337.tif 000009
【図７】
2006127337.tif 000010
【図８】
2006127337.tif 000011