(57)【特許請求の範囲】
【請求項１】
所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得する規格内ソースプログラム取得部と、
前記規格内プログラミング言語の文法規則にしたがって、前記規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出部と、
前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の前記規格内ソースプログラムにおける関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成部と、
ユーザによりいずれかのモデル要素が編集対象として選択されたとき、そのモデル要素にアクセスするための前記所定のインタフェースを介して、前記モデル要素に対応づけられている規格内ソース要素を編集対象として特定する編集部と、
前記所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得する規格外ソースプログラム取得部と、
前記規格外プログラミング言語の文法規則にしたがって、前記規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出部と、
各規格外ソース要素に相当する規格内ソース要素を特定し、前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、前記関係に基づいて、各規格外ソース要素および各規格内ソース要素に対応づけられるモデル要素を前記所定の構造化規則により構造化し、モデル要素を介して前記規格外ソース要素にアクセスするための前記所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成部と、
を備え、
前記編集部は、前記規格外ソースプログラムに基づいて生成された擬装データモデルであっても、ユーザによりいずれかのモデル要素が編集対象として選択されたときには、そのモデル要素にアクセスするための前記所定のインタフェースを介して、前記モデル要素に対応づけられている規格外ソース要素を編集対象として特定することにより、規格内ソースプログラムに加えて、規格外ソースプログラムのコーディングも前記データモデルを介して支援することを特徴とするコーディング支援装置。
【請求項２】
前記編集部は、前記規格内ソースプログラムの規格内ソース要素を表示させるときには、表示対象となるモデル要素に対応づけられた前記規格内ソース要素に応じて前記表示の態様を決定し、前記所定のインタフェースを介して取得した前記規格内ソース要素を前記決定した表示の態様にて表示させ、前記規格外ソースプログラムの規格外ソース要素を表示させるときには、表示対象となるモデル要素に対応づけられた前記規格内ソース要素に応じて前記表示の態様を決定し、前記所定のインタフェースを介して取得した前記規格外ソース要素を前記決定した表示の態様にて表示させることを特徴とする請求項１に記載のコーディング支援装置。
【請求項３】
前記擬装データモデル生成部は、前記規格外ソース要素が規格外ソースプログラムにおける他の規格外ソース要素と文法上の依存関係を有しているときには、前記規格外ソース要素に対応づけられる前記モデル要素に前記依存関係を示す依存関係情報を対応づけ、
前記編集部は、前記規格外ソース要素が変更されたとき、当該規格外ソース要素に対応づけられたモデル要素の依存関係情報を参照し、前記変更された規格外ソース要素と依存関係を有する規格外ソース要素も併せて変更することを特徴とする請求項１または２に記載のコーディング支援装置。
【請求項４】
前記規格外プログラミング言語特有の規格外ソース要素を所定の関数に対応づけるためのライブラリ情報を保持する言語対応情報保持部をさらに備え、
前記擬装データモデル生成部は、前記特有の規格外ソース要素に相当する規格内ソース要素を特定するとき、前記特有の規格外ソース要素に相当する所定の関数を前記ライブラリ情報から特定し、前記特定した関数を規格内ソース要素として前記モデル要素に対応づけることを特徴とする請求項１に記載のコーディング支援装置。
【請求項５】
前記所定のインタフェースを介して、擬装データモデルのモデル要素に対応づけられた前記規格内ソース要素を取得し、前記擬装データモデルの構造にしたがって前記取得した規格内ソース要素を組み合わせることにより規格内ソースプログラムを生成するソースプログラム生成部をさらに備えることを特徴とする請求項１または４に記載のコーディング支援装置。
【請求項６】
所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得する規格内ソースプログラム取得機能と、
前記規格内プログラミング言語の文法規則にしたがって、前記規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出機能と、
前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の前記規格内ソースプログラムにおける関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成機能と、
ユーザによりいずれかのモデル要素が編集対象として選択されたとき、そのモデル要素にアクセスするための前記所定のインタフェースを介して、前記モデル要素に対応づけられている規格内ソース要素を編集対象として特定する編集機能と、
前記所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得する規格外ソースプログラム取得機能と、
前記規格外プログラミング言語の文法規則にしたがって、前記規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出機能と、
各規格外ソース要素に相当する規格内ソース要素を特定し、前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、前記関係に基づいて、各規格外ソース要素および各規格内ソース要素に対応づけられるモデル要素を前記所定の構造化規則により構造化し、モデル要素を介して前記規格外ソース要素にアクセスするための前記所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成機能と、
をコンピュータに実現させ、
前記編集機能は、前記規格外ソースプログラムに基づいて生成された擬装データモデルであっても、ユーザによりいずれかのモデル要素が編集対象として選択されたときには、そのモデル要素にアクセスするための前記所定のインタフェースを介して、前記モデル要素に対応づけられている規格外ソース要素を編集対象として特定することにより、規格内ソースプログラムに加えて、規格外ソースプログラムのコーディングも前記データモデルを介して支援することを特徴とするコンピュータプログラム。
【請求項７】
コーディング支援装置に追加導入されることにより前記コーディング支援装置に機能を追加するコンピュータプログラムであって、
前記コーディング支援装置は、
所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得するソースプログラム取得部と、
前記規格内プログラミング言語の文法規則にしたがって、前記規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出部と、
前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の前記規格内ソースプログラムにおける関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成部と、
ユーザによりいずれかのモデル要素が編集対象として選択されたとき、そのモデル要素にアクセスするための前記所定のインタフェースを介して、前記モデル要素に対応づけられている規格内ソース要素を編集対象として特定する編集部と、
を備え、
前記コンピュータプログラムは、
前記ソースプログラム取得部が、前記所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得するとき、
前記規格外プログラミング言語の文法規則にしたがって、前記規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出機能と、
各規格外ソース要素に相当する規格内ソース要素を特定し、前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、前記関係に基づいて、各規格外ソース要素および各規格内ソース要素に対応づけられるモデル要素を前記所定の構造化規則により構造化し、モデル要素を介して前記規格外ソース要素にアクセスするための前記所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成機能と、
を前記コーディング支援装置に実現させ、
前記編集部は、前記規格外ソースプログラムに基づいて生成された擬装データモデルであっても、ユーザによりいずれかのモデル要素が編集対象として選択されたときには、そのモデル要素にアクセスするための前記所定のインタフェースを介して、前記モデル要素に対応づけられている規格外ソース要素を編集対象として特定することにより、規格内ソースプログラムに加えて、規格外ソースプログラムのコーディングも前記データモデルを
介して支援することを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理技術に関し、特に、ソースプログラムのデータを処理することで、ユーザのコーディング作業を支援する技術に関する。
【背景技術】
【０００２】
情報通信技術が発達した現在、社会のいたるところにコンピュータが導入され、コンピュータを制御するプログラムも大規模化・複雑化している。大規模化・複雑化したプログラムをコーディングするユーザの多くは、ＩＤＥ（Integrated Development Environment：統合開発環境）を使用してコーディングすることで、その効率を高めている。
【特許文献１】特開平０９−０２２３４４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
多くのコーディング支援機能を備えるＩＤＥ（以下、「多機能ＩＤＥ」と呼ぶ。）でコーディングが支援されるプログラミング言語（以下、「規格内プログラミング言語」と呼ぶ。）の典型として、ＪＡＶＡ（登録商標）がある。ＪＡＶＡ（登録商標）によるコーディングを支援するＩＤＥ（以下、「ＪＡＶＡ（登録商標）用ＩＤＥ」と呼ぶ。）は、編集機能・検索機能・整形機能等多くのコーディング支援機能を備えている。ＪＡＶＡ（登録商標）用ＩＤＥを使用することで、ユーザのコーディング作業は大幅に効率化される。
【０００４】
一方で、エンタープライズシステムの構築においては、ＣＯＢＯＬ（COmmon Business Oriented Language）が広く採用されおり、今後もＣＯＢＯＬでのコーディングは数多く行われる。しかし、ＪＡＶＡ（登録商標）用ＩＤＥのように多くのコーディング支援機能を備えるＣＯＢＯＬ用のＩＤＥはなく、ＣＯＢＯＬによるコーディング作業の効率化は困難な状況がある。多機能ＩＤＥでコーディングが支援されないＣＯＢＯＬ等のプログラミング言語を、以下、「規格外プログラミング言語」と呼ぶことにする。
【０００５】
このような背景から、ユーザが、規格外プログラミング言語でコーディングする際に、多機能ＩＤＥが備えるコーディング支援機能を利用できれば、ユーザのコーディング作業を効率化できると本発明者は考えた。
【０００６】
本発明は、本発明者による上記着目に基づいて完成された発明であり、その主たる目的は、規格外プログラミング言語によるコーディングの際にも、多機能ＩＤＥが備えるコーディング支援機能を利用するための技術を提供することである。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある態様のコーディング支援装置は、所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得する規格内ソースプログラム取得部と、規格内プログラミング言語の文法規則にしたがって、規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出部と、規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の規格内ソースプログラムにおける関係を特定し、関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成部と、ユーザによりいずれかのモデル要素が編集対象として選択されたとき、そのモデル要素にアクセスするための所定のインタフェースを介して、モデル要素に対応づけられている規格内ソース要素を編集対象として特定する編集部と、所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得する規格外ソースプログラム取得部と、規格外プログラミング言語の文法規則にしたがって、規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出部と、各規格外ソース要素に相当する規格内ソース要素を特定し、規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、関係に基づいて、各規格外ソース要素および各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して規格外ソース要素にアクセスするための所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成部と、を備える。編集部は、規格外ソースプログラムに基づいて生成された擬装データモデルであっても、ユーザによりいずれかのモデル要素が編集対象として選択されたときには、そのモデル要素にアクセスするための所定のインタフェースを介して、モデル要素に対応づけられている規格外ソース要素を編集対象として特定することにより、規格内ソースプログラムに加えて、規格外ソースプログラムのコーディングもデータモデルを介して支援する。
【０００８】
なお、以上の構成要素の任意の組合せ、本発明の表現を装置、方法、システム、プログラム、プログラムを格納した記録媒体などの間で変換したものもまた、本発明の態様として有効である。
【発明の効果】
【０００９】
本発明によれば、規格外プログラミング言語によるコーディングの際にも、多機能ＩＤＥが備えるコーディング支援機能を利用できる。
【発明を実施するための最良の形態】
【００１０】
本発明の実施の形態について説明する前に、まず、実施の形態の概要について説明する。
現在のシステム開発におけるソースプログラムは大規模化・複雑化の一途をたどっている。ソースプログラムをコーディングするユーザは、コーディング作業を効率化させるため、ＩＤＥのコーディング支援機能を利用してコーディングを行うのが一般的である。代表的なＩＤＥとして、「Ｅｃｌｉｐｓｅ（登録商標）」がある。Ｅｃｌｉｐｓｅ（登録商標）は、ソースプログラムが公開されたＩＤＥであり、標準でＪＡＶＡ（登録商標）のコーディングに対する多数の支援機能を備える多機能ＩＤＥである。
【００１１】
一方で、規格外プログラミング言語によるコーディング作業の効率化は困難な状況がある。この課題を解決するために、規格外プログラミング言語用の多機能ＩＤＥを開発することも考えられる。しかし、新規に多機能ＩＤＥを開発することは、多大な開発コストを要し現実的ではない。本発明者は、多機能ＩＤＥが備える既存のコーディング支援機能を規格外プログラミング言語のコーディングに利用することにより、少ない開発コストで、規格外プログラミング言語のコーディングを効率化できると考えた。以下の説明では、多機能ＩＤＥとしてＪＡＶＡ（登録商標）用ＩＤＥを、規格外プログラミング言語としてＣＯＢＯＬを具体的に示して説明する。次に、ＪＡＶＡ（登録商標）用ＩＤＥの機能構成を示しつつ、上述した本発明者の知見をさらに説明する。
【００１２】
図１（ａ）は、ＪＡＶＡ（登録商標）のコーディングを支援するＩＤＥ１００の機能構成を模式的に示す。データモデル処理機能８０４は、ＪＡＶＡ（登録商標）ソースプログラム８０２を取得し、メモリ上にデータモデル８０６として展開する。データモデルは、ＪＡＶＡ（登録商標）ソースプログラム８０２の構造を示すＪＡＶＡ（登録商標）オブジェクトである。編集機能８０８、検索機能８１０および整形機能８１２はそれぞれ、ＪＡＶＡ（登録商標）ソースプログラムを編集し、検索し、自動整形するための機能であり、データモデル８０６にアクセスすることでコーディング支援機能をユーザに提供する。
【００１３】
図１（ｂ）は、ＣＯＢＯＬ用のコーディング支援機能を新規作成した場合のＩＤＥ１００の機能構成を模式的に示す。新規データモデル処理機能８２４は、ＣＯＢＯＬソースプログラム８２２を取得し、メモリ上に新規データモデル８２６として展開する。新規編集機能８２８、新規検索機能８３０および新規整形機能８３２はそれぞれ、新規データモデル８２６にアクセスすることでコーディング支援機能をユーザに提供する。
【００１４】
図１（ｂ）において斜線のパターンで示した機能は、ＩＤＥ１００上に新規作成する機能を示している。すなわち、新規データモデル処理機能８２４、新規編集機能８２８、新規検索機能８３０および新規整形機能８３２を新規作成する必要がある。同図では、コーディング支援機能として３機能を示しているが、実際には多数のコーディング支援機能が必要とされるため、膨大な数の機能を開発することとなる。
【００１５】
図１（ｃ）は、本実施の形態におけるＩＤＥ１００の機能構成を模式的に示す。同図における新規作成機能は擬装データモデル処理機能８４４のみである。擬装データモデル処理機能８４４は、ＣＯＢＯＬソースプログラム８２２を取得し、データモデル８０６と同じインタフェースを備える擬装データモデル８４６をメモリ上に展開する。既存の編集機能８０８、検索機能８１０および整形機能８１２は、データモデル８０６と擬装データモデル８４６との違いを意識することなく、擬装データモデル８４６にアクセスしてコーディング支援機能をユーザに提供する。これにより、少ない開発コストで、ＩＤＥ１００によるＣＯＢＯＬのコーディング支援を実現する。以下、実施の形態を説明する。
【００１６】
図２は、本実施の形態のＩＤＥ１００における基本的な機能構成を示すブロック図である。本明細書のブロック図において示される各ブロックは、ハードウェア的には、コンピュータのＣＰＵをはじめとする素子や機械装置で実現でき、ソフトウェア的にはコンピュータプログラム等によって実現されるが、ここでは、それらの連携によって実現される機能ブロックを描いている。したがって、これらの機能ブロックはハードウェア、ソフトウェアの組合せによっていろいろなかたちで実現できることは、当業者には理解されるところである。
【００１７】
ＩＤＥ１００は、ソースプログラム２００を取得して、ユーザ４００によるコーディングを支援し、また、ソースプログラム２００からオブジェクトプログラム３００を生成する。ソースプログラム２００は、ＪＡＶＡ（登録商標）言語もしくはＣＯＢＯＬ言語で記述され、オブジェクトプログラム３００は、ＪＡＶＡ（登録商標）バイトコードである。ＩＤＥ１００は、典型的には、ユーザ４００の端末にインストールされるソフトウェアであるが、当該端末とは別のコーディング支援サーバにインストールされてもよい。
【００１８】
ＩＤＥ１００は、ユーザインタフェース処理部１０と、データ記憶部２０と、データ処理部３０とを備える。各種のデータ処理を行うデータ処理部３０は、ＪＡＶＡ（登録商標）処理部４０と、ＣＯＢＯＬ処理部６０とを有する。ユーザ４００からのＪＡＶＡ（登録商標）ソースプログラムの編集要求をユーザインタフェース処理部１０が検出すると、ＪＡＶＡ（登録商標）処理部４０は、ＪＡＶＡ（登録商標）ソースプログラムをもとにデータモデルを生成して、データ記憶部２０に記録する。ＪＡＶＡ（登録商標）処理部４０は、当該データモデルにアクセスすることでユーザ４００に対しコーディング支援機能を提供する。また、ユーザ４００からのコンパイル要求をユーザインタフェース処理部１０が検出すると、ＪＡＶＡ（登録商標）処理部４０は、データモデルからオブジェクトプログラム３００を生成する。
【００１９】
ユーザ４００からのＣＯＢＯＬソースプログラムの編集要求をユーザインタフェース処理部１０が検出すると、ＣＯＢＯＬ処理部６０は、ＣＯＢＯＬソースプログラムをもとに擬装データモデルを生成して、データ記憶部２０に記録する。ＪＡＶＡ（登録商標）処理部４０は、データモデルと同様のインタフェースを介して擬装データモデルにアクセスして、ＪＡＶＡ（登録商標）の場合と同様のコーディング支援機能をユーザ４００に提供する。また、ユーザ４００からのコンパイル要求をユーザインタフェース処理部１０が検出すると、ＪＡＶＡ（登録商標）処理部は、擬装データモデルからオブジェクトプログラム３００を生成する。
【００２０】
図３は、図２のＩＤＥ１００の詳細な機能構成を示すブロック図である。
ユーザインタフェース処理部：
ユーザインタフェース処理部１０は、要求受付部１２と表示部１４とを含む。要求受付部１２は、ユーザ４００からの各種要求、例えば、ソースプログラム２００の読み込み要求、ソースプログラム２００の変更要求、オブジェクトプログラム３００の生成要求等を検出する。表示部１４は、ユーザ４００からの要求に基づく、データ処理部３０による処理結果をユーザ４００の端末画面に表示させる。
【００２１】
データ記憶部：
データ記憶部２０は、各種データをメモリまたはその他の記録媒体に記憶させる。データ記憶部２０は、データモデル保持部２２と言語対応情報保持部２４とを含む。データモデル保持部２２は、データモデルおよび擬装データモデルを保持する。
【００２２】
図４は、データモデル保持部２２が保持するデータモデルおよび擬装データモデルを模式的に示す。まずデータモデルについて説明する。データモデルは、複数のモデル要素をＪＡＶＡ（登録商標）ソースプログラムの構造にしたがって木構造に構造化したものである。データモデルは、木構造を管理するＪＡＶＡ（登録商標）オブジェクトであり、例えば、「java.util.TreeMap」のオブジェクトである。データモデルの各モデル要素は、ＪＡＶＡ（登録商標）ソースプログラムの個々の要素（以下、「ＪＡＶＡ（登録商標）ソース要素」と呼ぶ。）、例えばクラス宣言やメソッド宣言等に対応づけられたＪＡＶＡ（登録商標）オブジェクトである。データモデルの具体的な生成方法については後述する。
【００２３】
次に擬装データモデルについて説明する。擬装データモデルは、複数のモデル要素をＣＯＢＯＬソースプログラムに対応するＪＡＶＡ（登録商標）言語のプログラムコードの構造にしたがって木構造に構造化したものである。擬装データモデルも、木構造を管理するＪＡＶＡ（登録商標）オブジェクトであり、例えば、「java.util.TreeMap」のオブジェクトである。擬装データモデルの各モデル要素は、ＣＯＢＯＬソースプログラムの個々の要素（以下、「ＣＯＢＯＬソース要素」と呼ぶ。）および各ＣＯＢＯＬソース要素に相当するＪＡＶＡ（登録商標）ソース要素に対応づけられたＪＡＶＡ（登録商標）オブジェクトである。擬装データモデルの具体的な生成方法については後述する。
【００２４】
図５は、データモデルの各モデル要素が保持する属性を示す。モデル要素欄６０２は、各モデル要素の識別情報を記録する。同図では、モデル要素の識別情報を図４の符号で示しているが、個々のモデル要素を特定できる情報であればよい。例えば、データモデルにおいて各モデル要素を特定するためのキー情報が記録されてもよく、モデル要素のオブジェクトリファレンスそのものが記録されてもよい。後述する親モデル要素欄６０４および依存元モデル要素欄６０８についても同様である。親モデル要素欄６０４は、各モデル要素に対する親モデル要素の識別情報を記録する。
【００２５】
ＪＡＶＡ（登録商標）ソース要素欄６０６は、各モデル要素に対応するＪＡＶＡ（登録商標）ソース要素を記録する。例えば、図４のモデル要素５４２はクラス宣言であるので、当該モデル要素に対応するＪＡＶＡ（登録商標）ソース要素として、「public class JAVASAMPLE」が記録されている。ここで記録されるＪＡＶＡ（登録商標）ソース要素は、そのＪＡＶＡ（登録商標）ソース要素の文字列およびＪＡＶＡ（登録商標）ソースプログラムにおける当該ＪＡＶＡ（登録商標）ソース要素の位置を示すファイルポインタまたはファイルオフセット情報である。
【００２６】
依存元モデル要素欄６０８は、モデル要素間のデータ同期処理を実現するために、各モデル要素に依存する依存元モデル要素を記録する。データ同期処理とは、依存元モデル要素に依存先モデル要素の変更を反映する処理である。同図では、モデル要素５５４の依存元モデル要素欄６０８に、依存元モデル要素であるモデル要素５５６およびモデル要素５５８が記録されている。データ同期処理については後述する。
【００２７】
図６は、擬装データモデルの各モデル要素が保持する属性を示す。以下、上述した図５との差分を説明する。ＣＯＢＯＬソース要素欄６１０は、各モデル要素に対応するＣＯＢＯＬソース要素を記録する。ここで記録されるＣＯＢＯＬソース要素は、そのＣＯＢＯＬソース要素の文字列およびＣＯＢＯＬソースプログラムにおける当該ＣＯＢＯＬソース要素の位置を示すファイルポインタまたはファイルオフセット情報である。
【００２８】
モデル生成用ＪＡＶＡ（登録商標）ソース要素欄６１２は、ＣＯＢＯＬソース要素に対応するＪＡＶＡ（登録商標）ソース要素であって、擬装データモデルを生成する際に使用されるモデル生成用ＪＡＶＡ（登録商標）ソース要素を記録する。コンパイル用ＪＡＶＡ（登録商標）ソース要素欄６１４は、ＣＯＢＯＬソース要素に対応するＪＡＶＡ（登録商標）ソース要素であって、オブジェクトプログラムを生成する際に使用されるコンパイル用ＪＡＶＡ（登録商標）ソース要素を記録する。
【００２９】
また、ＪＡＶＡ（登録商標）ソースプログラムから生成された「データモデル」と、ＣＯＢＯＬソースプログラムから生成された「擬装データモデル」とは、同じ３つのインタフェースを備える。第１のインタフェースは、「参照用インタフェース」である。参照用インタフェースは、ソースプログラムを表示する際に使用される。第２のインタフェースは「更新用インタフェース」である。更新用インタフェースは、ソースプログラムを変更する際に使用される。第３のインタフェースは、「コンパイル用インタフェース」である。コンパイル用インタフェースは、オブジェクトプログラムを生成する際に使用される。いずれのインタフェースへのアクセスにおいても、１以上のモデル要素が指定される。
【００３０】
データモデルは、参照用インタフェースでアクセスされると、指定されたモデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素を返す。また、更新用インタフェースでアクセスされると、指定されたモデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素を変更する。また、コンパイル用インタフェースでアクセスされると、指定されたモデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素を返す。
【００３１】
一方で、擬装データモデルは、参照用インタフェースでアクセスされると、指定されたモデル要素に対応づけられたＣＯＢＯＬソース要素を返す。また、更新用インタフェースでアクセスされると、指定されたモデル要素に対応づけられたＣＯＢＯＬソース要素を変更する。また、コンパイル用インタフェースでアクセスされると、指定されたモデル要素に対応づけられたコンパイル用ＪＡＶＡ（登録商標）ソース要素を返す。図３に戻る。
【００３２】
言語対応情報保持部２４は、ＣＯＢＯＬ言語とＪＡＶＡ（登録商標）言語との対応関係を保持する。この対応関係には、ソースプログラムの構造レベルの対応関係から個々の命令語の対応関係まで広く含まれる。図７（ａ）は、ＣＯＢＯＬソース要素と共通ＪＡＶＡ（登録商標）ソース要素との対応関係を示す。ＣＯＢＯＬソース要素欄６２２は、ＣＯＢＯＬソース要素を記録する。共通ＪＡＶＡ（登録商標）ソース要素欄６２４は、モデル生成用ＪＡＶＡ（登録商標）ソース要素およびコンパイル用ＪＡＶＡ（登録商標）ソース要素の両方に共通して適用されるＪＡＶＡ（登録商標）ソース要素を記録する。例えば、ＣＯＢＯＬソース要素の「PROGRAM-ID」は、ＪＡＶＡ（登録商標）ソース要素の「class」に対応することを示している。
【００３３】
図７（ｂ）は、ＣＯＢＯＬソース要素と、モデル生成用ＪＡＶＡ（登録商標）ソース要素と、コンパイル用ＪＡＶＡ（登録商標）ソース要素との対応関係を示す。モデル生成用ＪＡＶＡ（登録商標）ソース要素欄６２６は、モデル生成用ＪＡＶＡ（登録商標）ソース要素を記録し、コンパイル用ＪＡＶＡ（登録商標）ソース要素欄６２８は、編集用ＪＡＶＡ（登録商標）ソース要素を記録する。例えば、ＣＯＢＯＬソース要素の「PIC 9(length)」は、編集用ＪＡＶＡ（登録商標）ソース要素の「int」に対応し、また、コンパイル用ＪＡＶＡ（登録商標）ソース要素の「COBOLDecimal.getLiteral(length,0)」に対応することを示している。
【００３４】
図７（ｂ）において示すように、言語対応情報保持部２４は、各ＣＯＢＯＬソース要素に対応するモデル生成用ＪＡＶＡ（登録商標）ソース要素とコンパイル用ＪＡＶＡ（登録商標）ソース要素とを区別して保持している。これは以下の理由による。すなわち、ユーザ４００によるＣＯＢＯＬソースプログラムの編集を実現するために生成されるデータモデルでは、その構造がＣＯＢＯＬソースプログラムの構造に近いことが重要である。一方で、オブジェクトプログラムの生成においては、各ＣＯＢＯＬソース要素と同等の動作を実現するＪＡＶＡ（登録商標）ソース要素が対応づけられることが重要だからである。
【００３５】
また、図７（ｂ）のコンパイル用ＪＡＶＡ（登録商標）ソース要素に含まれる「CobolLang」「CobolDecimal」「CobolMethod」等のクラスおよびそれらのメソッドは、ＣＯＢＯＬ言語とＪＡＶＡ（登録商標）言語との対応付けのために用意されたライブラリに含まれる。例えば、「CobolLang.getLiteral」メソッドは、文字数を指定して文字列を生成する関数である。また、「CobolDecimal.getLiteral」メソッドは、桁数を指定して数値を生成する関数である。これらは例えば、プリミティブ型「char」の配列等で実装されている。
【００３６】
ＣＯＢＯＬは事務処理用に開発された経緯から事務処理用の関数が充実している。一方で、ＪＡＶＡ（登録商標）は多目的に使用できる汎用的なプログラミング言語として開発されたものであるため、両言語間において一対一で対応できない命令語もある。上述したライブラリはこの差異を埋めるためのものであり、ＣＯＢＯＬ言語特有の命令語の動作を実現するクラスおよびメソッドがあらかじめ実装され、データ記憶部２０にライブラリとして記憶されている。後述する擬装データモデル生成部６６は、このライブラリを参照して、コンパイル用ＪＡＶＡ（登録商標）ソース要素欄６２８に設定する。図３に戻る。
【００３７】
ＪＡＶＡ（登録商標）処理部：
ＪＡＶＡ（登録商標）処理部４０は、ＪＡＶＡ（登録商標）ソースプログラムからデータモデルを生成し、当該データモデルを介して、ユーザのコーディング作業を支援する。ＪＡＶＡ（登録商標）処理部４０は、ソースプログラム取得部４２と、ソース要素抽出部４４と、データモデル生成部４６と、編集部４８と、ソースプログラム更新部５０と、オブジェクトプログラム生成部５２と、コンパイルエラー通知部５４とを含む。ソースプログラム取得部４２は、ユーザ４００により指定されたＪＡＶＡ（登録商標）ソースプログラムを取得する。
【００３８】
ソース要素抽出部４４は、ＪＡＶＡ（登録商標）言語の文法規則にしたがって、取得されたＪＡＶＡ（登録商標）ソースプログラムを構成するプログラムコードの要素をＪＡＶＡ（登録商標）ソース要素として抽出する。図８は、ＪＡＶＡ（登録商標）ソースプログラムを示す。ソース要素抽出部４４は、例えば、図８で示すＪＡＶＡ（登録商標）ソースプログラムから、キーワードマッチングや他の要素との位置関係に基づき、図５のＪＡＶＡ（登録商標）ソース要素欄６０６で示すＪＡＶＡ（登録商標）ソース要素を抽出する。図５のモデル要素欄６０２に設定されたモデル要素５４２から５５８は、図８のＪＡＶＡ（登録商標）ソース要素５０２から５１８にそれぞれ対応づけられている。
【００３９】
データモデル生成部４６は、ＪＡＶＡ（登録商標）言語の文法規則にしたがって、ＪＡＶＡ（登録商標）ソース要素それぞれのＪＡＶＡ（登録商標）ソースプログラムにおける関係を特定する。データモデル生成部４６は、この関係に基づいて、ＪＡＶＡ（登録商標）ソース要素に対応づけられるモデル要素を所定の構造化規則に基づいて構造化してデータモデルを生成し、データモデル保持部２２に記録する。
【００４０】
データモデルの生成における所定の構造化規則とはＩＤＥ１００において決められている構造化規則であり、Ｅｃｌｉｐｓｅにおける「Java Model」生成規則であってもよい。この規則は、例えば、クラスに対応するモデル要素を頂点とする木構造であること。メソッドはメソッド宣言が親モデル要素となり、メソッド情報とメソッド本体が子モデル要素となること。メソッド内部のデータ要素を示すモデル要素は、メソッド本体を示すモデル要素の子要素となること等、データモデルの構造を決定する規則である。この構造化規則にしたがって、データモデル生成部４６は、例えば、図８のＪＡＶＡ（登録商標）ソース要素５０２から５１８のそれぞれを図４のモデル要素５４２から５５８に対応づけてデータモデルを生成する。
【００４１】
また、データモデル生成部４６は、データモデルの各モデル要素に、図５で示した各種属性を設定する。なお、依存元モデル要素の設定の際には、データモデル生成部４６は、ＪＡＶＡ（登録商標）ソースプログラムの構造にしたがって、モデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素の文字列比較をして、モデル要素間の依存関係を判定する。例えば、あるメソッドの中で宣言された変数があり、同一のメソッドの中でその変数と同一の文字列を使った変数の代入処理がある場合、後者の変数文字列は前者の変数文字列に依存していると判定し、前者の依存元モデル要素欄６０８に後者を設定する。さらに、データモデル生成部４６は、各モデル要素にアクセスさせるための参照用インタフェース、更新用インタフェースおよびコンパイル用インタフェースをデータモデルに設定する。
【００４２】
編集部４８は、データモデルにアクセスすることにより、コーディング支援機能をユーザ４００に提供する。例えば、ＪＡＶＡ（登録商標）ソースプログラムを表示させる際には、データモデルの参照用インタフェースにアクセスして、各モデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素の文字列を取得し、表示部１４を介して、ユーザ４００の端末に画面表示させる。また、ユーザ４００により、あるモデル要素が編集対象として指定されたとき、編集部４８は、参照用インタフェースを介して、指定されたモデル要素に対応づけられているＪＡＶＡ（登録商標）ソース要素の文字列を取得する。編集部４８は、取得したＪＡＶＡ（登録商標）ソース要素の文字列をユーザ４００の端末に画面表示させる。
【００４３】
また、モデル要素がＪＡＶＡ（登録商標）のキーワード、例えば「class」や「int」等を示すモデル要素であるとき、編集部４８は、取得したＪＡＶＡ（登録商標）ソース要素を色づけする等して表示態様を変更する。また、あるモデル要素が、ＪＡＶＡ（登録商標）文法規則における特定の位置に存在する場合、例えば「ｆｏｒ」キーワードを示すモデル要素の後ろに存在するときには、当該ＪＡＶＡ（登録商標）ソース要素をインデントさせる等して表示態様を変更する。
【００４４】
また、ユーザ４００が画面表示されたＪＡＶＡ（登録商標）ソースプログラムを変更したとき、編集部４８は、変更にかかるモデル要素を特定し、変更用インタフェースを介して当該モデル要素にアクセスして、その変更をＪＡＶＡ（登録商標）ソース要素に反映させる。
【００４５】
また、データモデルのモデル要素間に既述した依存関係があるとき、編集部４８は、依存先のモデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素の変更に併せて、依存元のモデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素を変更する。例えば、図５のモデル要素５４４のＪＡＶＡ（登録商標）ソース要素が、「ＴＯＴＡＬ」から「ＲＥＳＵＬＴ」に変更されたとする。このとき、編集部４８は、モデル要素５５６およびモデル要素５５８のＪＡＶＡ（登録商標）ソース要素の「ＴＯＴＡＬ」も「ＲＥＳＵＬＴ」に変更する。
【００４６】
ソースプログラム更新部５０は、編集部４８によるＪＡＶＡ（登録商標）ソース要素の変更を検出して、当該変更をＪＡＶＡ（登録商標）ソースプログラムに反映する。ソースプログラム更新部５０は、データモデルの各モデル要素にリスナを登録しておくことで、各モデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素の変更を検出する。ソースプログラム更新部５０は、モデル要素に対応づけられたＪＡＶＡ（登録商標）ソースプログラムの位置を示すファイルポインタを介してＪＡＶＡ（登録商標）ソースプログラムにアクセスし、当該ファイルポインタが示す位置のプログラムコードを変更する。
【００４７】
オブジェクトプログラム生成部５２は、データモデルのコンパイル用インタフェースにアクセスして、各モデル要素に対応づけられたＪＡＶＡ（登録商標）ソース要素を取得する。続いて、このＪＡＶＡ（登録商標）ソース要素をコンパイルして、オブジェクトプログラム３００を生成する。オブジェクトプログラム生成部５２は、取得したＪＡＶＡ（登録商標）ソース要素をデータモデルの構造にしたがって組みあわせることで、ＪＡＶＡ（登録商標）ソースプログラムを一旦生成し、当該ＪＡＶＡ（登録商標）ソースプログラムをコンパイルしてもよい。
【００４８】
コンパイルエラー通知部５４は、オブジェクトプログラム生成部５２のコンパイル処理においてエラーが発生したとき、当該エラーを検出する。続いて、エラーを発生させたＪＡＶＡ（登録商標）ソース要素に対応づけられているモデル要素を特定して、ユーザ４００にＪＡＶＡ（登録商標）ソースプログラム上での位置を通知する。
【００４９】
ＣＯＢＯＬ処理部：
ＣＯＢＯＬ処理部６０は、ＣＯＢＯＬソースプログラムから擬装データモデルを生成し、当該擬装データモデルを介して、ＪＡＶＡ（登録商標）処理部４０にユーザのコーディング作業を支援させる。ＣＯＢＯＬ処理部６０は、ＣＯＢＯＬソースプログラム取得部６２と、ＣＯＢＯＬソース要素抽出部６４と、擬装データモデル生成部６６と、ＣＯＢＯＬソースプログラム更新部６８と、ソースプログラム生成部７０とを含む。ＣＯＢＯＬソースプログラム取得部６２は、ユーザにより指定されたＣＯＢＯＬソースプログラムを取得する。
【００５０】
ＣＯＢＯＬソース要素抽出部６４は、ＣＯＢＯＬ言語の文法規則にしたがって、取得されたＣＯＢＯＬソースプログラムを構成するプログラムコードの要素をＣＯＢＯＬソース要素として抽出する。図９は、ＣＯＢＯＬソースプログラムを示す。ソース要素抽出部４４は、例えば、図９で示すＣＯＢＯＬソースプログラムから、キーワードマッチングや他の要素との位置関係に基づき、図６のＣＯＢＯＬソース要素欄６１０で示すＣＯＢＯＬソース要素を抽出する。図６のモデル要素欄６０２に設定されたモデル要素５４２から５５８は、図９のＣＯＢＯＬソース要素５２２から５３８にそれぞれ対応づけられている。
【００５１】
擬装データモデル生成部６６は、言語対応情報保持部２４に記録されたＣＯＢＯＬソース要素とＪＡＶＡ（登録商標）ソース要素との対応関係を参照し、ＣＯＢＯＬソース要素に相当するモデル生成用ＪＡＶＡ（登録商標）ソース要素およびコンパイル用ＪＡＶＡ（登録商標）ソース要素を生成する。
【００５２】
例えば、擬装データモデル生成部６６は、図９のＣＯＢＯＬソース要素５２２「PROGRAM-ID COBOLSAMPLE」に対し、図７（ａ）のレコード６３０を参照して、共通ＪＡＶＡ（登録商標）ソース要素「class COBOLSAMPLE」を生成する。別の例として、図９のＣＯＢＯＬソース要素５３８「DISPLAY TOTAL」に対し、図７（ｂ）のレコード６３２を参照して、モデル生成用ＪＡＶＡ（登録商標）ソース要素「System.out.println(TOTAL)」を生成する。また、コンパイル用ＪＡＶＡ（登録商標）ソース要素「COBOLMethod.display(TOTAL)」も併せて生成する。
【００５３】
擬装データモデル生成部６６は、ＣＯＢＯＬソース要素と、モデル生成用ＪＡＶＡ（登録商標）ソース要素と、コンパイル用ＪＡＶＡ（登録商標）ソース要素を対応づける。これにより、図９のＣＯＢＯＬソースプログラムから図６のＣＯＢＯＬソース要素欄６１０、モデル生成用ＪＡＶＡ（登録商標）ソース要素欄６１２およびコンパイル用ＪＡＶＡ（登録商標）ソース要素欄６１４で示す対応関係を生成する。
【００５４】
擬装データモデル生成部６６は、ＪＡＶＡ（登録商標）言語の文法規則にしたがって、モデル生成用ＪＡＶＡ（登録商標）ソース要素間の関係を特定する。この関係に基づいて、ＣＯＢＯＬソース要素、モデル生成用ＪＡＶＡ（登録商標）ソース要素およびコンパイル用ＪＡＶＡ（登録商標）ソース要素に対応づけられるモデル要素を所定の構造化規則に基づいて構造化してデータモデルを生成し、データモデル保持部２２に記録する。擬装データモデルにおける所定の構造化規則は、データモデル生成部４６で既述した規則に従う。
【００５５】
また、擬装データモデル生成部６６は、擬装データモデルの各モデル要素に、図６で示した各種属性を設定する。なお、依存元モデル要素の設定は、データモデル生成部４６で説明した処理と同様である。さらに、擬装データモデル生成部６６は、各モデル要素にアクセスさせるための参照用インタフェース、更新用インタフェースおよびコンパイル用インタフェースを擬装データモデルに設定する。このようにして、擬装データモデル生成部６６は、例えば、図９のＣＯＢＯＬソース要素５２２から５３８のそれぞれを図４のモデル要素５４２から５５８に対応づけて擬装データモデルを生成する。
【００５６】
ＣＯＢＯＬソースプログラム更新部６８は、編集部４８によるＣＯＢＯＬソース要素の変更を検出して、当該変更をＣＯＢＯＬソースプログラムに反映する。ＣＯＢＯＬソースプログラム更新部６８は、擬装データモデルの各モデル要素にリスナを登録しておくことで、各モデル要素に対応づけられたＣＯＢＯＬソース要素の変更を検出する。ＣＯＢＯＬソースプログラム更新部６８は、モデル要素に対応づけられたＣＯＢＯＬソースプログラムの位置を示すファイルポインタを介してＣＯＢＯＬソースプログラムにアクセスし、当該ファイルポインタが示す位置のプログラムコードを変更する。
【００５７】
ソースプログラム生成部７０は、擬装データモデルにおける各モデル要素のコンパイル用インタフェースにアクセスして、モデル要素に対応づけられたコンパイル用ＪＡＶＡ（登録商標）ソース要素を取得する。ソースプログラム生成部７０は、擬装データモデルの構造にしたがって、取得したコンパイル用ＪＡＶＡ（登録商標）ソース要素を組み合わせて、ＪＡＶＡ（登録商標）ソースプログラムを生成する。擬装データモデルは木構造であるため、ソースプログラム生成部７０は、根から子へ左回りにモデル要素をたどって、各モデル要素に対応づけられたコンパイル用ＪＡＶＡ（登録商標）ソース要素を順次出力することにより、ＪＡＶＡ（登録商標）ソースプログラムを生成してもよい。なお、ここで生成されるＪＡＶＡ（登録商標）ソースプログラムは、擬装データモデルのもととなったＣＯＢＯＬソースプログラムと同様の動作をする。
【００５８】
なお、擬装データモデル生成部６６は、擬装データモデルの生成において、ＪＡＶＡ（登録商標）ソース要素に対応付けできないＣＯＢＯＬソース要素を検出したときには、コンパイル用ＪＡＶＡ（登録商標）ソース要素として、所定の文字列を設定してもよい。この文字列は、ユーザにコーディングするよう注意喚起を促す文字列であればよく、ＣＯＢＯＬソース要素そのものでもよい。コンパイル用ＪＡＶＡ（登録商標）ソース要素に当該文字列されているとき、ソースプログラム生成部７０は、取得したコンパイル用ＪＡＶＡ（登録商標）ソース要素をそのままもしくはコメントアウトして出力してもよい。これにより、ユーザは出力されたＪＡＶＡ（登録商標）ソースプログラムの中で、さらに実装すべき部分を認識できる。
【００５９】
次に、擬装データモデルに対する編集部４８、オブジェクトプログラム生成部５２およびコンパイルエラー通知部５４の動作を説明する。
【００６０】
編集部４８は、擬装データモデルにアクセスすることにより、コーディング支援機能をユーザ４００に提供する。例えば、ＣＯＢＯＬソースプログラムを表示させる際には、擬装データモデルの参照用インタフェースにアクセスして、各モデル要素に対応づけられたＣＯＢＯＬソース要素の文字列を取得し、表示部１４を介して、ユーザ４００の端末に画面表示させる。また、ユーザ４００により、あるモデル要素が編集対象として指定されたとき、編集部４８は、参照用インタフェースを介して、指定されたモデル要素に対応づけられているＣＯＢＯＬソース要素の文字列を取得する。編集部４８は、取得したＣＯＢＯＬソース要素の文字列をユーザ４００の端末に画面表示させる。
【００６１】
また、モデル要素がＪＡＶＡ（登録商標）のキーワード、例えば「class」や「int」等を示すモデル要素であるとき、編集部４８は、当該モデル要素に対応づけられたＣＯＢＯＬソース要素を色づけする等して表示態様を変更する。また、あるモデル要素が、ＪＡＶＡ（登録商標）文法規則における特定の位置に存在する場合、例えば「ｆｏｒ」キーワードを示すモデル要素の後ろに存在するときには、当該モデル要素に対応づけられたＣＯＢＯＬソース要素をインデントさせる等して表示態様を変更する。
【００６２】
また、ユーザ４００が画面表示されたＣＯＢＯＬソースプログラムを変更したとき、編集部４８は、変更にかかるモデル要素を特定し、変更用インタフェースを介して当該モデル要素にアクセスして、その変更をＣＯＢＯＬソース要素に反映させる。
【００６３】
また、擬装データモデルのモデル要素間に既述した依存関係があるとき、編集部４８は、依存先のモデル要素に対応づけられたＣＯＢＯＬソース要素の変更に併せて、依存元のモデル要素に対応づけられたＣＯＢＯＬソース要素を変更する。例えば、図６のモデル要素５４４のＣＯＢＯＬソース要素が、「ＴＯＴＡＬ」から「ＲＥＳＵＬＴ」に変更されたとする。このとき、編集部４８は、モデル要素５５６およびモデル要素５５８のＣＯＢＯＬソース要素の「ＴＯＴＡＬ」も「ＲＥＳＵＬＴ」に変更する。
【００６４】
オブジェクトプログラム生成部５２は、擬装データモデルのコンパイル用インタフェースにアクセスして、各モデル要素に対応づけられたコンパイル用ＪＡＶＡ（登録商標）ソース要素を取得する。続いて、このコンパイル用ＪＡＶＡ（登録商標）ソース要素をコンパイルして、オブジェクトプログラム３００を生成する。オブジェクトプログラム生成部５２は、取得したコンパイル用ＪＡＶＡ（登録商標）ソース要素をデータモデルの構造にしたがって組みあわせることで、ＪＡＶＡ（登録商標）ソースプログラムを一旦生成し、当該ＪＡＶＡ（登録商標）ソースプログラムをコンパイルしてもよい。
【００６５】
コンパイルエラー通知部５４は、オブジェクトプログラム生成部５２のコンパイル処理においてエラーが発生したとき、当該エラーを検出する。続いて、エラーを発生させたコンパイル用ＪＡＶＡ（登録商標）ソース要素に対応づけられているモデル要素を特定して、そのモデル要素からＣＯＢＯＬソース要素を特定することにより、ユーザ４００にＣＯＢＯＬソースプログラム上での位置を通知する。例えば、当該ＣＯＢＯＬソース要素を含むプログラムコードを画面表示させる。
【００６６】
このように、編集部４８、オブジェクトプログラム生成部５２およびコンパイルエラー通知部５４は、データモデルにアクセスする場合と同様のインタフェースで擬装データモデルにアクセスできる。その結果、ＪＡＶＡ（登録商標）ソースプログラムに対するコーディング支援機能をＣＯＢＯＬソースプログラムに対しても提供できる。
【００６７】
次に、ＣＯＢＯＬソースプログラムに対してＩＤＥ１００が実行するコーディング支援処理の流れを説明する。
図１０（ａ）は、ＩＤＥ１００におけるコーディング支援処理の流れを示すフローチャートである。要求受付部１２は、ユーザ４００からのＣＯＢＯＬソースプログラムの指定を検出する（Ｓ１２）。ＣＯＢＯＬソースプログラム取得部６２は、ＣＯＢＯＬソースプログラムを取得し（Ｓ１４）、ＣＯＢＯＬソース要素抽出部６４は、ＣＯＢＯＬソース要素を抽出する（Ｓ１６）。擬装データモデル生成部６６は、通常のデータモデルと同様のインタフェースを備える擬装データモデルを生成する（Ｓ１８）。
【００６８】
図１０（ｂ）は、図１０（ａ）の擬装データモデル生成処理の詳細を示すフローチャートである。擬装データモデル生成部６６は、ＣＯＢＯＬソース要素抽出部６４により抽出されたＣＯＢＯＬソース要素を取得する（Ｓ１０２）。擬装データモデル生成部６６は、言語対応情報保持部２４を参照して、ＣＯＢＯＬソース要素に対応するモデル生成用ＪＡＶＡ（登録商標）ソース要素およびコンパイル用ＪＡＶＡ（登録商標）ソース要素を特定する（Ｓ１０４）。続いて、ＣＯＢＯＬソース要素、モデル生成用ＪＡＶＡ（登録商標）ソース要素およびコンパイル用ＪＡＶＡ（登録商標）ソース要素を対応づけてモデル要素を生成する（Ｓ１０６）。擬装データモデル生成部６６は、モデル要素を構造化して擬装データモデルを生成する（Ｓ１０８）。図１０（ａ）に戻る。
【００６９】
編集部４８は、モデル要素の属性に基づき、編集用インタフェースを介して取得したＣＯＢＯＬソース要素の表示態様を決定する（Ｓ２０）。表示部１４は、決定された表示態様にて、ＣＯＢＯＬソースプログラムを画面表示させる（Ｓ２２）。ユーザ４００から編集対象の指定を要求受付部１２が検出すると（Ｓ２４のＹ）、編集部４８は、編集対象として指定されたモデル要素に対応づけられたＣＯＢＯＬソース要素を特定する（Ｓ２６）。表示部１４は、当該ＣＯＢＯＬソース要素を含むプログラムコードを画面表示させる（Ｓ２８）。ユーザから編集対象の指定がなければ（Ｓ２４のＮ）、Ｓ２６およびＳ２８の処理はスキップされる。
【００７０】
図１０（ｃ）は、図１０（ａ）の続きを示すフローチャートである。ユーザ４００からのＣＯＢＯＬソース要素の変更要求を要求受付部１２が検出すると（Ｓ３０のＹ）、編集部４８は、編集にかかるモデル要素を特定して、当該モデル要素に対応づけられたＣＯＢＯＬソース要素を変更する（Ｓ３２）。モデル要素間に依存関係が設定されているとき（Ｓ３４のＹ）、編集部４８は、ＣＯＢＯＬソース要素の同期処理を行う（Ｓ３６）。依存関係の設定がないとき（Ｓ３４のＮ）、Ｓ３６の処理はスキップされる。ＣＯＢＯＬソースプログラム更新部６８は、ＣＯＢＯＬソース要素の変更を検出して、ＣＯＢＯＬソースプログラムを変更する（Ｓ３８）。ユーザからＣＯＢＯＬソース要素の変更要求がないとき（Ｓ３０のＮ）、Ｓ３２からＳ３８の処理はスキップされる。
【００７１】
ユーザ４００からＪＡＶＡ（登録商標）ソースプログラムの生成指示があると（Ｓ４０のＹ）、要求受付部１２は当該生成指示を検出する。このとき、ソースプログラム生成部７０は、擬装データモデルのコンパイル用インタフェースを介して、コンパイル用ＪＡＶＡ（登録商標）ソース要素を取得する。ソースプログラム生成部７０は、取得したコンパイル用ＪＡＶＡ（登録商標）ソース要素を擬装データモデルの構造にしたがって組み合わせることでＪＡＶＡ（登録商標）ソースプログラムを生成して出力する（Ｓ４２）。ユーザからＪＡＶＡ（登録商標）ソースプログラムの生成指示がないときには（Ｓ４０のＮ）、Ｓ４２の処理はスキップされる。
【００７２】
図１０（ｄ）は、図１０（ｃ）の続きを示すフローチャートである。ユーザからコンパイル実行指示があると（Ｓ４４のＹ）、要求受付部１２は当該実行指示を検出する。このとき、オブジェクトプログラム生成部５２は、擬装データモデルのコンパイル用インタフェースを介して取得したコンパイル用ＪＡＶＡ（登録商標）ソース要素をコンパイルする（Ｓ４６）。コンパイルエラーが発生しなければ（Ｓ４８のＮ）、オブジェクトプログラム生成部５２は、オブジェクトプログラムを出力する（Ｓ５０）。
【００７３】
コンパイルエラーが発生したときには（Ｓ４８のＹ）、コンパイルエラー通知部５４は、当該エラーの原因箇所となったＣＯＢＯＬソースプログラムの位置をユーザ４００に通知する（Ｓ５２）。ユーザからのコンパイル指示がないときには（Ｓ４４のＮ）、Ｓ４６からＳ５０の処理はスキップされる。ユーザからの終了指示を要求受付部１２が検出すると（Ｓ５４のＹ）、ＩＤＥ１００は処理を終了する。当該終了指示がなければ（Ｓ５４のＮ）、Ｓ２０の処理に戻り、ＣＯＢＯＬソース要素の表示態様が決定されて、ＣＯＢＯＬソースプログラムのプログラムコードが画面表示される。
【００７４】
次に、本発明者による実験結果であって、本実施の形態のＩＤＥ１００によりＣＯＢＯＬソースプログラムに対応づけられる編集用ＪＡＶＡ（登録商標）ソースプログラムおよびコンパイル用ＪＡＶＡ（登録商標）ソースプログラムを示す。編集用ＪＡＶＡ（登録商標）ソースプログラムは、ＣＯＢＯＬソース要素に対応づけられるモデル生成用ＪＡＶＡ（登録商標）ソース要素を組み合わせたＪＡＶＡ（登録商標）ソースプログラムである。また、コンパイル用ＪＡＶＡ（登録商標）ソースプログラムは、ＣＯＢＯＬソース要素に対応づけられるコンパイル用ＪＡＶＡ（登録商標）ソース要素を組み合わせたＪＡＶＡ（登録商標）ソースプログラムである。なお、ソースプログラム生成部７０により生成されるＪＡＶＡ（登録商標）ソースプログラムは、ここで示すコンパイル用ＪＡＶＡ（登録商標）ソースプログラムである。なお、ここで示すソースプログラムは、図７（ａ）および図７（ｂ）で示したソース要素間の対応関係をもとに対応付けされたものである。
【００７５】
第１の例として、ＣＯＢＯＬ言語の複雑な集団項目のマッピング例を示す。図１１（ａ）は、集団項目を含むＣＯＢＯＬソースプログラムを示す。ＣＯＢＯＬソース要素７００の「DEPARTMENT」は集団項目であり、内部に文字列「DEPARTMENT_NAME」とＣＯＢＯＬソース要素７０２「STAFFS」を含む。この「STAFFS」も集団項目であり、その内部には文字列と数値を有する。また、「OCCURS」キーワードにより１０回の繰り返しが指定されている。なお、ＣＯＢＯＬソース要素７０４では、文字列が転記されている。
【００７６】
図１１（ｂ）は、図１１（ａ）に対応する編集用ＪＡＶＡ（登録商標）ソースプログラムを示す。同図のＣＯＢＯＬソース要素７００の集団項目は、インナークラスにマッピングされており、ＪＡＶＡ（登録商標）ソース要素７１０でクラスが定義され、ＪＡＶＡ（登録商標）ソース要素７１６でインスタンス化されている。ＣＯＢＯＬソース要素７０２の集団項目も、インナークラスにマッピングされており、ＪＡＶＡ（登録商標）ソース要素７１２でクラスが定義されている。また「OCCURS」の繰り返し指定は、ＪＡＶＡ（登録商標）ソース要素７１４で示すように配列にマッピングされている。また、ＣＯＢＯＬソース要素７０４の文字列の転記は、ＪＡＶＡ（登録商標）ソース要素７１８の代入文にマッピングされている。
【００７７】
第２の例として、ＣＯＢＯＬ言語の数値要素のマッピング例を示す。図１２（ａ）は、数値を取り扱うＣＯＢＯＬソースプログラムを示す。ＣＯＢＯＬソース要素７２０で２桁の数値項目を宣言し、ＣＯＢＯＬソース要素７２２で当該数値項目に１０を加算し、ＣＯＢＯＬソース要素７２４で当該数値項目を表示させている。
【００７８】
図１２（ｂ）は、図１２（ａ）に対応する編集用ＪＡＶＡ（登録商標）ソースプログラムを示す。ＣＯＢＯＬソース要素７２０は、ＪＡＶＡ（登録商標）ソース要素７３０で「int」にマッピングされている。ＣＯＢＯＬソース要素７２２は、ＪＡＶＡ（登録商標）ソース要素７３２で標準的な数値加算関数にマッピングされている。また、ＣＯＢＯＬソース要素７２４は、ＪＡＶＡ（登録商標）ソース要素７３４で標準的な出力関数にマッピングされている。
【００７９】
図１２（ｃ）は、図１２（ａ）に対応するコンパイル用ＪＡＶＡ（登録商標）ソースプログラムを示す。ＣＯＢＯＬソース要素７２０、７２２および７２４はいずれも、ＪＡＶＡ（登録商標）ソース要素７４０、７４２および７４４において、標準ではない外部ライブラリが備える関数の呼び出しにマッピングされている。これは、モデル生成用ＪＡＶＡ（登録商標）ソース要素にマッピングする際には、ＣＯＢＯＬソースプログラムの構造を示す擬装データモデルが作成できればよいため、ＣＯＢＯＬソース要素の構造を踏襲しつつ、簡易な関数へマッピングすればよい。これに対し、コンパイル用ＪＡＶＡ（登録商標）ソース要素にマッピングする際には、各ＣＯＢＯＬソース要素と同様の動作を実現するＪＡＶＡ（登録商標）ソース要素へマッピングされる必要があるからである。
【００８０】
例えば、ＣＯＢＯＬソース要素７２０の「PIC 9(2)」は、２桁の数値項目を示すが、これに対応する標準的なＪＡＶＡ（登録商標）ソース要素はない。図１２（ｂ）のＪＡＶＡ（登録商標）ソース要素７３０で示すように、モデル生成用ＪＡＶＡ（登録商標）ソース要素としては、数値を示すプリミティブ型の「int」にマッピングされている。これに対し、図１２（ｃ）のＪＡＶＡ（登録商標）ソース要素７４０で示すように、コンパイル用ＪＡＶＡ（登録商標）ソース要素としては、桁数を扱えるように新規で作成されたクラスの「CobolDecimal」にマッピングされている。
【００８１】
第３の例として、ＣＯＢＯＬ言語のＳＥＣＴＩＯＮ呼び出しのマッピング例を示す。図１３（ａ）は、ＳＥＣＴＩＯＮ呼び出しを含むＣＯＢＯＬソースプログラムを示す。同図には、ＣＯＢＯＬソース要素７５０で示す「HOGE SECTION」をはじめ、「FOO SECTION」、「BAR SECTION」、「BAZ SECTION」が含まれている。また、ＣＯＢＯＬソース要素７５２で示すように、ＧＯＴＯ命令によるＳＥＣＴＩＯＮ呼び出しが行われている。
【００８２】
図１３（ｂ）は、図１３（ａ）に対応する編集用ＪＡＶＡ（登録商標）ソースプログラムを示す。ＣＯＢＯＬソースプログラムの各ＳＥＣＴＩＯＮはメソッドにマッピングされるため、ＣＯＢＯＬソース要素７５０は、ＪＡＶＡ（登録商標）ソース要素７６０にマッピングされる。また、ＧＯＴＯ命令は、メソッド呼び出しにマッピングされるため、ＣＯＢＯＬソース要素７５２は、ＪＡＶＡ（登録商標）ソース要素７６２にマッピングされる。
【００８３】
なお、図１３（ｂ）の編集用ＪＡＶＡ（登録商標）ソースプログラムは、図１３（ａ）ＣＯＢＯＬソースプログラムと動作が異なる。すなわち、ＣＯＢＯＬソースプログラムでは表示されない「This is NONDISPLAY.」がＪＡＶＡ（登録商標）ソースプログラムでは表示されることになる。しかし、上述したように、モデルを生成する観点からは、よりＣＯＢＯＬソースプログラムの構造と近い方が望ましいため、図１３（ｂ）のような編集用ＪＡＶＡ（登録商標）ソースプログラムとなる。
【００８４】
図１３（ｃ）は、図１３（ａ）に対応するコンパイル用ＪＡＶＡ（登録商標）ソースプログラムを示す。ＣＯＢＯＬソースプログラムの各ＳＥＣＴＩＯＮはメソッドにマッピングされるため、ＣＯＢＯＬソース要素７５０は、ＪＡＶＡ（登録商標）ソース要素７７０にマッピングされる。ただし、ＣＯＢＯＬ言語の順次実行を実現するため、メソッドの最後に次メソッド、つまりソースプログラムにおける位置として次に記述されているメソッドの呼び出しが追加される。このため、図１３（ｃ）では、ＪＡＶＡ（登録商標）ソース要素７７２が追加されている。
【００８５】
また図１３（ｃ）において、ＧＯＴＯ命令は、メソッド呼び出しに加え、「Ｒｅｔｕｒｎ」キーワードが追加されている。ＧＯＴＯ命令を実行すると、呼び出し元に制御は戻らない。メソッド呼び出しに「Ｒｅｔｕｒｎ」を加えることで、呼び出し先から制御が戻ったときにも、すぐに自身の呼び出し元に制御を返し、最終的にＪＡＶＡ（登録商標）ＶＭまで制御を返すことにより、ＧＯＴＯ命令と同様の動作を実現する。このため、図１３（ｃ）では、ＪＡＶＡ（登録商標）ソース要素７７４および７７６が追加されている。
【００８６】
多くのプログラミング言語において、プログラムは、順次実行、条件分岐、繰り返しの３要素を基本として構成されている。図７（ａ）、図７（ｂ）および上記の実験結果で示したように、本実施の形態のＩＤＥ１００では、ＣＯＢＯＬ言語とＪＡＶＡ（登録商標）言語の間でいずれの３要素についてもマッピングができている。また、ＣＯＢＯＬ特有のＳＥＣＴＩＯＮ構造やＧＯＴＯ命令にも対応ができ、その他のＣＯＢＯＬ特有の関数についても、既述したように、外部ライブラリをあらかじめ準備することでマッピングを実現する。言い換えれば、ＩＤＥ１００は、いずれのＣＯＢＯＬソースプログラムについても擬装データモデルを生成でき、コーディング支援を実現する。
【００８７】
本実施の形態によれば、ＪＡＶＡ（登録商標）ソースプログラムに基づくデータモデルと同様のインタフェースを備える擬装データモデルをＣＯＢＯＬソースプログラムから生成する。これにより、データモデルにアクセスしてコーディングを支援する編集機能等各種機能を新規開発、もしくは大幅に修正することなく、既存の編集機能等にデータモデルと擬装データモデルとを同様に取り扱わせることができる。すなわち、ユーザは、ＪＡＶＡ（登録商標）用ＩＤＥのコーディング支援機能をＣＯＢＯＬソースプログラムのコーディングにおいても享受できる。
【００８８】
ＣＯＢＯＬソースプログラムのコーディングにおいてＪＡＶＡ（登録商標）用ＩＤＥから享受できるコーディング支援機能の例を示す。例えば、ユーザによるＣＯＢＯＬソース要素の指定に対応して、当該ＣＯＢＯＬソース要素を含むプログラムコードの特定および表示ができる。また、ＪＡＶＡ（登録商標）言語のキーワードに対応するＣＯＢＯＬソース要素に対する色づけやインデント等の表示態様の変更ができる。また、依存元のソース要素を依存先のソース要素の変更に同期させることができる。これらのコーディング支援機能を享受できることで、大規模化・複雑化したＣＯＢＯＬソースプログラムのコーディングにおいて、その効率を高めるとともにコーディングミスを低減できる。
【００８９】
また、本実施の形態によれば、ＣＯＢＯＬソースプログラムからＪＡＶＡ（登録商標）ソースプログラムを生成できる。これにより、例えばメインフレームの更改にあたり、Ｗｉｎｄｏｗｓ（登録商標）やＵＮＩＸ（登録商標）等、オープンシステムへのリホストも容易となる。さらに、ＪＡＶＡ（登録商標）言語は理解しているものの、ＣＯＢＯＬ言語は十分に理解していない開発者に対しても、ＪＡＶＡ（登録商標）ソースプログラムを提示できることで、ＣＯＢＯＬソースプログラムの内容の理解を容易にする。
【００９０】
さらに、本実施の形態によれば、ＣＯＢＯＬソースプログラムに基づく擬装データモデルからコンパイル用ＪＡＶＡ（登録商標）ソース要素を取得しコンパイルして、ＪＡＶＡ（登録商標）バイトコードを生成できる。これにより、当該バイトコードをＪＡＶＡ（登録商標）ＶＭ上で動作させることで、ＣＯＢＯＬ言語用の実行環境が無くても、ＣＯＢＯＬソースプログラムの動作を確認できる。また、コンパイルエラーが発生した際には、エラーの原因となったモデル要素を介して、ＣＯＢＯＬソースプログラムの問題位置をユーザに通知できる。つまり、疑似データモデルを生成することにより、オブジェクトプログラム生成におけるコーディング支援機能についても享受できる。
【００９１】
ＣＯＢＯＬソースプログラムからＪＡＶＡ（登録商標）バイトコードが生成されることで、例えば、メインフレームからオープンシステムへの移行を実施する開発者に求められるＪＡＶＡ（登録商標）言語スキルが低減される。すなわち、ＪＡＶＡ（登録商標）を十分に理解できていない開発者であっても、ＪＡＶＡ（登録商標）ソースプログラムをコーディングすることなく、ＣＯＢＯＬソースプログラムのＪＡＶＡ（登録商標）ＶＭ上での動きを確認できる。
【００９２】
なお、ＣＯＢＯＬソース要素とＪＡＶＡ（登録商標）ソース要素とを対応づけるライブラリを充実させることで、ＣＯＢＯＬソースプログラムから疑似データモデルを介して生成されるＪＡＶＡ（登録商標）ソースプログラムの精度が高めることができる。これは、ＪＡＶＡ（登録商標）バイトコードを生成する場合にも同様である。言い換えれば、アプリケーションがＣＯＢＯＬで実装されたメインフレームから、アプリケーションがＪＡＶＡ（登録商標）で実装されるオープンシステムへの移行を容易に実現できる。
【００９３】
以上、本発明を実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００９４】
上述した実施の形態では、擬装データモデルは、モデル作成用ＪＡＶＡ（登録商標）ソース要素をもとに生成されたが、コーディング支援用の擬装データモデルと、コンパイル用の擬装データモデルとが別に生成されてもよい。この場合、コンパイル用の擬装データモデルは、コンパイル用ＪＡＶＡ（登録商標）ソース要素をもとに生成され、コンパイル用インタフェースを備える。
【００９５】
また、上述した実施の形態では、ソースプログラム生成部７０は、コンパイル用ＪＡＶＡ（登録商標）ソース要素をもとに、ＪＡＶＡ（登録商標）ソースプログラムを生成した。変形例として、モデル生成用ＪＡＶＡ（登録商標）ソース要素をもとに、ＪＡＶＡ（登録商標）ソースプログラムを生成してもよい。ＣＯＢＯＬ特有の命令語に対応するためのライブラリがない場合にも、ＣＯＢＯＬソースプログラムに対応するＪＡＶＡ（登録商標）ソースプログラムをユーザに提供でき、ユーザのコーディング作業を支援できる。
【００９６】
さらにまた、ＪＡＶＡ（登録商標）処理部４０は、図３に図示しないステップ実行部を含んでもよく、オブジェクトプログラム生成部５２は、擬装モデルの各モデル要素にブレークポイントを対応づけた上でコンパイルし、オブジェクトプログラムを生成してもよい。ステップ実行部は、オブジェクトプログラムの実行において、各ブレークポイントまでステップ的に実行し、また、ブレークポイントごとにデバッグ情報を出力する。このとき、ステップ実行部は、モデル要素に対応づけられたＣＯＢＯＬソース要素とともにデバッグ情報を出力することで、ＣＯＢＯＬのコーディングを支援する。
【００９７】
さらにまた、上述した実施の形態では、ＪＡＶＡ（登録商標）用ＩＤＥのコーディング支援機能をＣＯＢＯＬソースプログラムのコーディングに利用する技術を提案したが、本発明の技術思想はこれに限定されない。すなわち、本発明の技術思想は、ＩＤＥがコーディング支援できる領域を様々な規格外プログラミング言語に拡大する場合全般に適用できる。
【００９８】
以上の実施の形態および変形例から把握される発明のいろいろな態様を既に特許請求の範囲に記載したものも含む形にて以下に例示する。
【００９９】
Ａ１．所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得する規格内ソースプログラム取得部と、
前記規格内プログラミング言語の文法規則にしたがって、前記規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出部と、
前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の前記規格内ソースプログラムにおける関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成部と、
前記所定のインタフェースを介して、前記データモデルの各モデル要素に対応づけられている規格内ソース要素を取得し、それら規格内ソース要素をコンパイルすることで、前記規格内ソースプログラムに基づくオブジェクトプログラムを前記データモデルから生成するオブジェクトプログラム生成部と、
前記所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得する規格外ソースプログラム取得部と、
前記規格外プログラミング言語の文法規則にしたがって、前記規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出部と、
各規格外ソース要素に相当する規格内ソース要素を特定し、前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を前記所定の構造化規則により構造化し、モデル要素を介して前記規格外ソース要素にアクセスするための前記所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成部と、
を備え、
前記オブジェクトプログラム生成部は、前記擬装データモデルが有する前記所定のインタフェースを介して、各モデル要素に対応づけられている規格内ソース要素を取得し、それら規格内ソース要素をコンパイルすることで、前記規格外ソースプログラムに基づいて生成された擬装データモデルから前記規格内プログラミング言語のオブジェクトプログラムを生成することを特徴とするコーディング支援装置。
【０１００】
Ａ２．前記擬装データモデルから前記規格内プログラミング言語のオブジェクトプログラムを生成するための前記オブジェクトプログラム生成部によるコンパイル処理でエラーが発生したとき、前記コンパイル処理のエラーを検出してユーザに通知するコンパイルエラー通知部をさらに備え、
前記擬装データモデル生成部は、擬装データモデルの各モデル要素に前記規格外ソース要素をさらに対応づけて擬装データモデルを生成し、
前記コンパイルエラー通知部は、前記コンパイル処理のエラーを検出したとき、当該エラーを発生させた規格内ソース要素に対応づけられているモデル要素を特定し、そのモデル要素に対応づけられている規格外ソース要素を特定して、その規格外ソース要素をユーザに通知することを特徴とするＡ１に記載のコーディング支援装置。
【０１０１】
Ａ３．所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得する規格内ソースプログラム取得機能と、
前記規格内プログラミング言語の文法規則にしたがって、前記規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出機能と、
前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の前記規格内ソースプログラムにおける関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成機能と、
前記所定のインタフェースを介して、前記データモデルの各モデル要素に対応づけられている規格内ソース要素を取得し、それら規格内ソース要素をコンパイルすることで、前記規格内ソースプログラムに基づくオブジェクトプログラムを前記データモデルから生成するオブジェクトプログラム生成機能と、
前記所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得する規格外ソースプログラム取得機能と、
前記規格外プログラミング言語の文法規則にしたがって、前記規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出機能と、
各規格外ソース要素に相当する規格内ソース要素を特定し、前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を前記所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための前記所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成機能と、
をコンピュータに実現させ、
前記オブジェクトプログラム生成機能は、前記擬装データモデルが有する前記所定のインタフェースを介して、各モデル要素に対応づけられている規格内ソース要素を取得し、それら規格内ソース要素をコンパイルすることで、前記規格外ソースプログラムに基づいて生成された擬装データモデルから前記規格内プログラミング言語のオブジェクトプログラムを生成することを特徴とするコンピュータプログラム。
【０１０２】
Ａ４．コーディング支援装置に追加導入されることにより前記コーディング支援装置に機能を追加するコンピュータプログラムであって、
前記コーディング支援装置は、
所定の規格内プログラミング言語で記述されたソースプログラムを規格内ソースプログラムとして取得するソースプログラム取得部と、
前記規格内プログラミング言語の文法規則にしたがって、前記規格内ソースプログラムを構成するプログラムコードの要素を規格内ソース要素として抽出する規格内ソース要素抽出部と、
前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素の前記規格内ソースプログラムにおける関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための所定のインタフェースを有するデータモデルを生成するデータモデル生成部と、
前記所定のインタフェースを介して、前記データモデルの各モデル要素に対応づけられている規格内ソース要素を取得し、それら規格内ソース要素をコンパイルすることで、前記規格内ソースプログラムに基づくオブジェクトプログラムを前記データモデルから生成するオブジェクトプログラム生成部と、
を備え、
前記コンピュータプログラムは、
前記ソースプログラム取得部が、前記所定の規格内プログラミング言語とは異なる規格外プログラミング言語で記述されたソースプログラムを規格外ソースプログラムとして取得したとき、
前記規格外プログラミング言語の文法規則にしたがって、前記規格外ソースプログラムを構成するプログラムコードの要素を規格外ソース要素として抽出する規格外ソース要素抽出機能と、
各規格外ソース要素に相当する規格内ソース要素を特定し、前記規格内プログラミング言語の文法規則にしたがって各規格内ソース要素間の関係を特定し、前記関係に基づいて、各規格内ソース要素に対応づけられるモデル要素を前記所定の構造化規則により構造化し、モデル要素を介して前記規格内ソース要素にアクセスするための前記所定のインタフェースを有する擬装データモデルを生成する擬装データモデル生成機能と、
を前記コーディング支援装置に実現させ、
前記オブジェクトプログラム生成部は、前記擬装データモデルが有する前記所定のインタフェースを介して、各モデル要素に対応づけられている規格内ソース要素を取得し、それら規格内ソース要素をコンパイルすることで、前記規格外ソースプログラムに基づいて生成された擬装データモデルから前記規格内プログラミング言語のオブジェクトプログラムを生成することを特徴とするコンピュータプログラム。
【図面の簡単な説明】
【０１０３】
【図１（ａ）】ＪＡＶＡ（登録商標）のコーディングを支援するＩＤＥの機能構成を模式的に示す図である。
【図１（ｂ）】ＣＯＢＯＬ用のコーディング支援機能を新規作成した場合のＩＤＥ１００の機能構成を模式的に示す図である。
【図１（ｃ）】本実施の形態におけるＩＤＥ１００の機能構成を模式的に示す図である。
【図２】本実施の形態のＩＤＥ１００における基本的な機能構成を示すブロック図である。
【図３】図２のＩＤＥ１００の詳細な機能構成を示すブロック図である。
【図４】データモデル保持部２２が保持するデータモデルおよび擬装データモデルを模式的に示す図である。
【図５】データモデルの各モデル要素が保持する属性を示す図である。
【図６】擬装データモデルの各モデル要素が保持する属性を示す図である。
【図７（ａ）】ＣＯＢＯＬソース要素と共通ＪＡＶＡ（登録商標）ソース要素との対応関係を示す図である。
【図７（ｂ）】ＣＯＢＯＬソース要素と、モデル生成用ＪＡＶＡ（登録商標）ソース要素と、コンパイル用ＪＡＶＡ（登録商標）ソース要素との対応関係を示す図である。
【図８】ＪＡＶＡ（登録商標）ソースプログラムを示す図である。
【図９】ＣＯＢＯＬソースプログラムを示す図である。
【図１０（ａ）】ＩＤＥ１００におけるコーディング支援処理の流れを示すフローチャートである。
【図１０（ｂ）】図１０（ａ）の擬装データモデル生成処理の詳細を示すフローチャートである。
【図１０（ｃ）】図１０（ａ）の続きを示すフローチャートである。
【図１０（ｄ）】図１０（ａ）の続きを示すフローチャートである。
【図１１（ａ）】集団項目を含むＣＯＢＯＬソースプログラムを示す図である。
【図１１（ｂ）】図１１（ａ）に対応する編集用ＪＡＶＡ（登録商標）ソースプログラムを示す図である。
【図１２（ａ）】数値を取り扱うＣＯＢＯＬソースプログラムを示す図である。
【図１２（ｂ）】図１２（ａ）に対応する編集用ＪＡＶＡ（登録商標）ソースプログラムを示す図である。
【図１２（ｃ）】図１２（ａ）に対応するコンパイル用ＪＡＶＡ（登録商標）ソースプログラムを示す図である。
【図１３（ａ）】ＳＥＣＴＩＯＮ呼び出しを含むＣＯＢＯＬソースプログラムを示す図である。
【図１３（ｂ）】図１３（ａ）に対応する編集用ＪＡＶＡ（登録商標）ソースプログラムを示す図である。
【図１３（ｃ）】図１３（ａ）に対応するコンパイル用ＪＡＶＡ（登録商標）ソースプログラムを示す図である。
【符号の説明】
【０１０４】
１０  ユーザインタフェース処理部、１２  要求受付部、１４  表示部、２０  データ記憶部、２２  データモデル保持部、２４  言語対応情報保持部、３０  データ処理部、４０  ＪＡＶＡ（登録商標）処理部、４２  ソースプログラム取得部、４４  ソース要素抽出部、４６  データモデル生成部、４８  編集部、５０  ソースプログラム更新部、５２  オブジェクトプログラム生成部、５４  コンパイルエラー通知部、６０  ＣＯＢＯＬ処理部、６２  ＣＯＢＯＬソースプログラム取得部、６４  ＣＯＢＯＬソース要素抽出部、６６  擬装データモデル生成部、６８  ＣＯＢＯＬソースプログラム更新部、７０  ソースプログラム生成部、１００  ＩＤＥ、２００  ソースプログラム、３００  オブジェクトプログラム、４００  ユーザ、６０２  モデル要素欄、６０４  親モデル要素欄、６０６  ＪＡＶＡ（登録商標）ソース要素欄、６０８  依存元モデル要素欄、６１０  ＣＯＢＯＬソース要素欄、６１２  モデル生成用ＪＡＶＡ（登録商標）ソース要素欄、６１４  コンパイル用ＪＡＶＡ（登録商標）ソース要素欄、６２２  ＣＯＢＯＬソース要素欄、６２４  共通ＪＡＶＡ（登録商標）ソース要素欄、６２６  モデル生成用ＪＡＶＡ（登録商標）ソース要素欄、６２８  コンパイル用ＪＡＶＡ（登録商標）ソース要素欄、８０２  ＪＡＶＡ（登録商標）ソースプログラム、８０４  データモデル処理機能、８０６  データモデル、８０８  編集機能、８１０  検索機能、８１２  整形機能、８２２  ＣＯＢＯＬソースプログラム、８２４  新規データモデル処理機能、８２６  新規データモデル、８２８  新規編集機能、８３０  新規検索機能、８３２  新規整形機能、８４４  擬装データモデル処理機能、８４６  擬装データモデル。
【図１（ａ）】
0004971095.tif 000002
【図１（ｂ）】
0004971095.tif 000003
【図１（ｃ）】
0004971095.tif 000004
【図２】
0004971095.tif 000005
【図３】
0004971095.tif 000006
【図４】
0004971095.tif 000007
【図５】
0004971095.tif 000008
【図６】
0004971095.tif 000009
【図７（ａ）】
0004971095.tif 000010
【図７（ｂ）】
0004971095.tif 000011
【図８】
0004971095.tif 000012
【図９】
0004971095.tif 000013
【図１０（ａ）】
0004971095.tif 000014
【図１０（ｂ）】
0004971095.tif 000015
【図１０（ｃ）】
0004971095.tif 000016
【図１０（ｄ）】
0004971095.tif 000017
【図１１（ａ）】
0004971095.tif 000018
【図１１（ｂ）】
0004971095.tif 000019
【図１２（ａ）】
0004971095.tif 000020
【図１２（ｂ）】
0004971095.tif 000021
【図１２（ｃ）】
0004971095.tif 000022
【図１３（ａ）】
0004971095.tif 000023
【図１３（ｂ）】
0004971095.tif 000024
【図１３（ｃ）】
0004971095.tif 000025