JPH08278887A - オブジェクト定義自動生成装置 - Google Patents
オブジェクト定義自動生成装置Info
- Publication number
- JPH08278887A JPH08278887A JP8228495A JP8228495A JPH08278887A JP H08278887 A JPH08278887 A JP H08278887A JP 8228495 A JP8228495 A JP 8228495A JP 8228495 A JP8228495 A JP 8228495A JP H08278887 A JPH08278887 A JP H08278887A
- Authority
- JP
- Japan
- Prior art keywords
- definition
- class
- record
- data
- class definition
- 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
Landscapes
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
(57)【要約】
【目的】COBOL言語で作成されている既存のプログ
ラム資産を、オブジェクト指向プログラミングで今後、
OOCOBOLを用いて作成するプログラムから再利用
することができるようにする。 【構成】利用者が入力したレコード定義を分析し、レコ
ードの生成要素それぞれがクラスの属性であるとするク
ラス定義と、レコード全体をメソッドのデータとして取
り扱うクラス定義の2種類のクラス定義を同時に生成
し、生成した2つのクラス同士でメッセージを送る。
ラム資産を、オブジェクト指向プログラミングで今後、
OOCOBOLを用いて作成するプログラムから再利用
することができるようにする。 【構成】利用者が入力したレコード定義を分析し、レコ
ードの生成要素それぞれがクラスの属性であるとするク
ラス定義と、レコード全体をメソッドのデータとして取
り扱うクラス定義の2種類のクラス定義を同時に生成
し、生成した2つのクラス同士でメッセージを送る。
Description
【0001】
【産業上の利用分野】本発明は計算機ソフトウェアでの
既存プログラム資産の再利用に関わる。
既存プログラム資産の再利用に関わる。
【0002】とりわけ、オブジェクト指向プログラミン
グと構造化プログラミングで作成されたプログラム資産
同士の再利用に関わる。
グと構造化プログラミングで作成されたプログラム資産
同士の再利用に関わる。
【0003】
【従来の技術】構造化手法で構築されている従来のCO
BOL言語を利用して作成したプログラム資産を再利用
する方法として、予め複数の抽象部品を準備しておき、
プログラム中に部品呼出しの記述を行うことで、要求仕
様に合致する抽象部品を検索しソースコードの置換を行
う手法がある。しかしオブジェクト指向プログラミング
が一般化するにつれ、抽象部品を新規プログラムにコピ
ーするという従来の方式は、もはや過去の技術となっ
た。
BOL言語を利用して作成したプログラム資産を再利用
する方法として、予め複数の抽象部品を準備しておき、
プログラム中に部品呼出しの記述を行うことで、要求仕
様に合致する抽象部品を検索しソースコードの置換を行
う手法がある。しかしオブジェクト指向プログラミング
が一般化するにつれ、抽象部品を新規プログラムにコピ
ーするという従来の方式は、もはや過去の技術となっ
た。
【0004】何故ならばオブジェクト指向プログラミン
グにおいては、コードの再利用は継承(inherit
ance)によって実現するためである。継承とは新規
クラスの属性とふるまいを別のクラス(親クラスまたは
スーパークラス)とその増分差として作成することをい
う。この時親クラスを構成するソースコードは新規クラ
スにおいて再利用されている。ところが、オブジェクト
指向プログラミングにおいてもプログラムの自動生成を
行う装置は存在する。
グにおいては、コードの再利用は継承(inherit
ance)によって実現するためである。継承とは新規
クラスの属性とふるまいを別のクラス(親クラスまたは
スーパークラス)とその増分差として作成することをい
う。この時親クラスを構成するソースコードは新規クラ
スにおいて再利用されている。ところが、オブジェクト
指向プログラミングにおいてもプログラムの自動生成を
行う装置は存在する。
【0005】特開平5−241845では、例えば、S
malltalkで開発されたオブジェクト定義をC+
+を使用しているプログラマが有効に活用するために、
言語に依存しないオブジェクト定義として再定義する生
成装置のことが述べられている。
malltalkで開発されたオブジェクト定義をC+
+を使用しているプログラマが有効に活用するために、
言語に依存しないオブジェクト定義として再定義する生
成装置のことが述べられている。
【0006】上記の明細書によれば、言語中立のオブジ
ェクトインターフェース定義言語がコンパイラに入力さ
れると、コンパイラはこれを中間形式に変換し、発行プ
ログラムに中間形式を入力すると特定の言語に適合する
ような束縛ファイルを作成して、さらにこの束縛ファイ
ルを特定の言語のコンパイラに入力するとオブジェクト
モジュールを得ることができる。
ェクトインターフェース定義言語がコンパイラに入力さ
れると、コンパイラはこれを中間形式に変換し、発行プ
ログラムに中間形式を入力すると特定の言語に適合する
ような束縛ファイルを作成して、さらにこの束縛ファイ
ルを特定の言語のコンパイラに入力するとオブジェクト
モジュールを得ることができる。
【0007】この明細書ではオブジェクト指向言語同士
のソースコードを再利用するための装置のことが述べら
れており構造化手法で作成された既存のプログラム資産
をオブジェクト指向プログラミング中で再利用する方式
のことは述べられていない。
のソースコードを再利用するための装置のことが述べら
れており構造化手法で作成された既存のプログラム資産
をオブジェクト指向プログラミング中で再利用する方式
のことは述べられていない。
【0008】
【発明が解決しようとする課題】上記従来技術では、構
造化手法で作成されているプログラム資産の再利用には
抽象部品を用いて、複数のプログラムに抽象部品のソー
スコードを展開するという方法があり、オブジェクト指
向プログラミングで作成するプログラム資産の再利用は
多くの場合、言語がもつ継承機能を使用し、また他言語
間でのコードの再利用の方式も考えられている。
造化手法で作成されているプログラム資産の再利用には
抽象部品を用いて、複数のプログラムに抽象部品のソー
スコードを展開するという方法があり、オブジェクト指
向プログラミングで作成するプログラム資産の再利用は
多くの場合、言語がもつ継承機能を使用し、また他言語
間でのコードの再利用の方式も考えられている。
【0009】ところが、COBOL言語で今までに作成
されていた莫大な資産は全て構造化手法で記述されてい
るため、こうした既存のプログラム資産をオブジェクト
指向COBOL言語(以下OOCOBOL:Objec
t Oriented COBOLと記す)でこれから
構築するクラス群で再利用しようと考えた場合、既存の
プログラム定義で使用されているレコード定義をOOC
OBOLでも意識する必要がある。
されていた莫大な資産は全て構造化手法で記述されてい
るため、こうした既存のプログラム資産をオブジェクト
指向COBOL言語(以下OOCOBOL:Objec
t Oriented COBOLと記す)でこれから
構築するクラス群で再利用しようと考えた場合、既存の
プログラム定義で使用されているレコード定義をOOC
OBOLでも意識する必要がある。
【0010】OOCOBOLにおけるレコード定義はレ
コードを構成する要素の数や長さを親となるクラスで一
端定義すると、親クラスを継承した子のクラスでレコー
ド全体を再定義する場合を除き、要素を追加したりレコ
ードの長さを可変にすることはできない。このため、オ
ブジェクト指向プログラミングの重要な要件であコード
の再利用性を低下させる原因となる。
コードを構成する要素の数や長さを親となるクラスで一
端定義すると、親クラスを継承した子のクラスでレコー
ド全体を再定義する場合を除き、要素を追加したりレコ
ードの長さを可変にすることはできない。このため、オ
ブジェクト指向プログラミングの重要な要件であコード
の再利用性を低下させる原因となる。
【0011】本発明の目的は、上記のレコード定義を継
承できる機構を設け、既存のプログラム資産を有効に再
利用することにある。
承できる機構を設け、既存のプログラム資産を有効に再
利用することにある。
【0012】
【課題を解決するための手段】上記の課題を解決するた
めの手段を説明する。通常のCOBOL言語で用いられ
ているレコードフォーマットが入力になる。生成装置に
は入力されたレコードフォーマットをデータ項目ごとに
分解し、クラス属性の集まりとする。同時に生成装置に
あらかじめ準備されたメソッド用のテンプレートを利用
して、データ項目をクラス属性とするオブジェクト指向
型のメソッドとレコード全体を1つのメソッドで取り扱
うことが可能な、従来の構造化手法型のメソッドを生成
する。
めの手段を説明する。通常のCOBOL言語で用いられ
ているレコードフォーマットが入力になる。生成装置に
は入力されたレコードフォーマットをデータ項目ごとに
分解し、クラス属性の集まりとする。同時に生成装置に
あらかじめ準備されたメソッド用のテンプレートを利用
して、データ項目をクラス属性とするオブジェクト指向
型のメソッドとレコード全体を1つのメソッドで取り扱
うことが可能な、従来の構造化手法型のメソッドを生成
する。
【0013】生成装置内にはクラス定義のテンプレート
がさらに準備されており、作成したクラス属性の集まり
とオブジェクト指向型のメソッドをクラス定義のテンプ
レートにセットすることでオブジェクト指向型のクラス
定義が生成される。また、構造化手法型のメソッドをク
ラス定義のテンプレートにセットすると構造化手法型の
クラス定義を生成する。
がさらに準備されており、作成したクラス属性の集まり
とオブジェクト指向型のメソッドをクラス定義のテンプ
レートにセットすることでオブジェクト指向型のクラス
定義が生成される。また、構造化手法型のメソッドをク
ラス定義のテンプレートにセットすると構造化手法型の
クラス定義を生成する。
【0014】
【作用】上記の手段により、次のことができるようにな
る。
る。
【0015】オブジェクト指向型のクラス定義を生成す
る手段の働きにより、生成されたクラス定義は純粋なオ
ブジェクト指向プログラミングで構成されているのでこ
のクラス定義を継承することでレコード定義を再利用す
ることができるようになる。構造化手法型のクラス定義
を生成する手段の働きにより生成されたクラス定義は構
造化手法で構築された従来のプログラムと融合性をもつ
ため、プログラム資産を再利用することが可能になる。
る手段の働きにより、生成されたクラス定義は純粋なオ
ブジェクト指向プログラミングで構成されているのでこ
のクラス定義を継承することでレコード定義を再利用す
ることができるようになる。構造化手法型のクラス定義
を生成する手段の働きにより生成されたクラス定義は構
造化手法で構築された従来のプログラムと融合性をもつ
ため、プログラム資産を再利用することが可能になる。
【0016】これによりCOBOLで作成されている従
来のプログラム資産の一部再利用とCOBOL言語で一
般的に用いられているレコード入出力機能をオブジェク
ト指向プログラミング環境で継承可能な形で利用できる
ようになるので、上記課題を解決できる。
来のプログラム資産の一部再利用とCOBOL言語で一
般的に用いられているレコード入出力機能をオブジェク
ト指向プログラミング環境で継承可能な形で利用できる
ようになるので、上記課題を解決できる。
【0017】
【実施例】本発明の一実施例を、図1を用いて説明す
る。また本実施例で使用する自動生成システムを図2に
示す。図3はOOCOBOL言語で記述したクラス定義
の構成例であり、図4はクラス定義生成エディタ内にあ
らかじめ準備されているテンプレートであり、図5、図
6、図7、図9は図1の詳細を示すフローチャートであ
る。また、図8はメソッド呼び出しの例である。
る。また本実施例で使用する自動生成システムを図2に
示す。図3はOOCOBOL言語で記述したクラス定義
の構成例であり、図4はクラス定義生成エディタ内にあ
らかじめ準備されているテンプレートであり、図5、図
6、図7、図9は図1の詳細を示すフローチャートであ
る。また、図8はメソッド呼び出しの例である。
【0018】自動生成システム10は、CPU11、メ
モリ12、入出力アダプタ13、ユーザーインタフェー
スアダプタ14、表示装置アダプタ15、キーボード1
6、マウス17、ディスプレイ18で構成される。メモ
リ12には、クラス定義生成エディタ1が搭載される。
クラス定義生成エディタ1は、図1に示す属性情報の設
定部131、メソッド定義部品の作成部132、クラス
定義作成部品の作成部133を有するものであり、オブ
ジェクト指向型のクラス定義6と構造化手法型のクラス
定義7を生成する。
モリ12、入出力アダプタ13、ユーザーインタフェー
スアダプタ14、表示装置アダプタ15、キーボード1
6、マウス17、ディスプレイ18で構成される。メモ
リ12には、クラス定義生成エディタ1が搭載される。
クラス定義生成エディタ1は、図1に示す属性情報の設
定部131、メソッド定義部品の作成部132、クラス
定義作成部品の作成部133を有するものであり、オブ
ジェクト指向型のクラス定義6と構造化手法型のクラス
定義7を生成する。
【0019】次に本発明に対する理解を助けるため、O
OCOBOLで記述したクラス定義の構成を図3に示
す。クラス定義は、クラス定義部30、クラスオブジェ
クト定義部31、クラスメソッド定義部32、オブジェ
クト定義部33、オブジェクトメソッド定義部34から
なる。クラス定義部30は、クラスを定義しそれに名前
を付ける機能を持つ。クラス定義部での設定はクラス定
義全体で有効になる。クラスオブジェクト定義部31
は、クラス定義中で共通のデータを定義する機能を持
つ。クラスオブジェクト定義部で設定したデータは、ク
ラスオブジェクト定義部とクラスメソッド定義部32で
有効になる。クラスメソッド定義部32は、クラスデー
タを操作するためのメソッドを定義する。メソッド中の
データは局所的に領域を確保するので、クラスメソッド
定義部で設定したデータはクラスメソッド内でのみ有効
になる。オブジェクト定義部33は、実行時に生成の対
象となるデータを定義する。オブジェクト定義部で設定
したデータはオブジェクト定義部とオブジェクトメソッ
ド定義部34で有効になる。なお、オブジェクト定義部
33に設定したデータのことをOOCOBOLではオブ
ジェクトデータと呼ぶが、理解を助けるため、本明細書
では、クラス属性と記述することにする。オブジェクト
メソッド定義部34は、クラス属性を操作するためのメ
ソッドを定義する。メソッド中のデータは局所的に領域
を確保するのでオブジェクトメソッド定義部で設定した
データはオブジェクトメソッド内でのみ有効になる。
OCOBOLで記述したクラス定義の構成を図3に示
す。クラス定義は、クラス定義部30、クラスオブジェ
クト定義部31、クラスメソッド定義部32、オブジェ
クト定義部33、オブジェクトメソッド定義部34から
なる。クラス定義部30は、クラスを定義しそれに名前
を付ける機能を持つ。クラス定義部での設定はクラス定
義全体で有効になる。クラスオブジェクト定義部31
は、クラス定義中で共通のデータを定義する機能を持
つ。クラスオブジェクト定義部で設定したデータは、ク
ラスオブジェクト定義部とクラスメソッド定義部32で
有効になる。クラスメソッド定義部32は、クラスデー
タを操作するためのメソッドを定義する。メソッド中の
データは局所的に領域を確保するので、クラスメソッド
定義部で設定したデータはクラスメソッド内でのみ有効
になる。オブジェクト定義部33は、実行時に生成の対
象となるデータを定義する。オブジェクト定義部で設定
したデータはオブジェクト定義部とオブジェクトメソッ
ド定義部34で有効になる。なお、オブジェクト定義部
33に設定したデータのことをOOCOBOLではオブ
ジェクトデータと呼ぶが、理解を助けるため、本明細書
では、クラス属性と記述することにする。オブジェクト
メソッド定義部34は、クラス属性を操作するためのメ
ソッドを定義する。メソッド中のデータは局所的に領域
を確保するのでオブジェクトメソッド定義部で設定した
データはオブジェクトメソッド内でのみ有効になる。
【0020】オブジェクト同士でメッセージをやりとり
するにはINVOKE文を用いる。INVOKE文の代
表的な形態を以下に示す。
するにはINVOKE文を用いる。INVOKE文の代
表的な形態を以下に示す。
【0021】INVOKE 呼び起こし対象 メソッド
名 USING パラメタRETURNING 結果 呼び起こし対象には、メソッド名が定義されているクラ
スかオブジェクトを参照するために定義したハンドルを
指定する。
名 USING パラメタRETURNING 結果 呼び起こし対象には、メソッド名が定義されているクラ
スかオブジェクトを参照するために定義したハンドルを
指定する。
【0022】クラス定義生成エディタ内に準備されてい
るテンプレートを図4に示し、図5にクラス定義作成部
分の処理手順を示すフローチャートを示す。
るテンプレートを図4に示し、図5にクラス定義作成部
分の処理手順を示すフローチャートを示す。
【0023】以下、図5のフローチャートに基づいてク
ラス定義生成エディタの処理手順を説明する。
ラス定義生成エディタの処理手順を説明する。
【0024】ユーザーが定義したレコード定義40を入
力とし(ステップ510)、レコード定義をデータ項目
ごとに1センテンスづつ読み取る(ステップ520)、
データ項目のレベル番号を参照し(ステップ530)、
レベル番号が’01’ならばデータ項目名をクラス名称
として認識する(ステップ535)。次にデータ項目に
PICTURE句が存在するかどうかを判定し(ステッ
プ540)PICTURE句が存在する場合、処理中の
データ項目をクラスの属性として登録する。その際、デ
ータ項目のレベル番号は’01’とする。PICTUR
E句が存在しないデータ項目であった場合はオブジェク
トデータとして登録しない(ステップ550)。PIC
TURE句が存在するデータ項目に対してのみテンプレ
ート41を利用して、オブジェクトメソッドパーツ2を
作成する(ステップ560)。これをユーザが定義した
クラス定義40のデータ項目1センテンスづつに対して
順番に行い、最後のデータ項目を処理するまで繰り返す
(ステップ565)。
力とし(ステップ510)、レコード定義をデータ項目
ごとに1センテンスづつ読み取る(ステップ520)、
データ項目のレベル番号を参照し(ステップ530)、
レベル番号が’01’ならばデータ項目名をクラス名称
として認識する(ステップ535)。次にデータ項目に
PICTURE句が存在するかどうかを判定し(ステッ
プ540)PICTURE句が存在する場合、処理中の
データ項目をクラスの属性として登録する。その際、デ
ータ項目のレベル番号は’01’とする。PICTUR
E句が存在しないデータ項目であった場合はオブジェク
トデータとして登録しない(ステップ550)。PIC
TURE句が存在するデータ項目に対してのみテンプレ
ート41を利用して、オブジェクトメソッドパーツ2を
作成する(ステップ560)。これをユーザが定義した
クラス定義40のデータ項目1センテンスづつに対して
順番に行い、最後のデータ項目を処理するまで繰り返す
(ステップ565)。
【0025】ユーザにより定義されたクラス定義中にP
ICTURE句を持つデータ項目が1センテンスでもあ
れば(ステップ570)、テンプレート42を利用して
レコードメソッドパーツ3を作成する(ステップ58
0)。最後にオブジェクトメソッドパーツ2をクラス定
義プログラムのテンプレート43にセットすることでオ
ブジェクト指向型のクラス定義6を生成しレコードメソ
ッドパーツ3をクラス定義のプログラムのテンプレート
43にセットすることで構造化手法型のクラス定義7を
生成する。
ICTURE句を持つデータ項目が1センテンスでもあ
れば(ステップ570)、テンプレート42を利用して
レコードメソッドパーツ3を作成する(ステップ58
0)。最後にオブジェクトメソッドパーツ2をクラス定
義プログラムのテンプレート43にセットすることでオ
ブジェクト指向型のクラス定義6を生成しレコードメソ
ッドパーツ3をクラス定義のプログラムのテンプレート
43にセットすることで構造化手法型のクラス定義7を
生成する。
【0026】図6は図5のフローチャート中のステップ
560で示すオブジェクトメソッドパーツ2作成の詳細
な処理手順を示すフローチャートである。
560で示すオブジェクトメソッドパーツ2作成の詳細
な処理手順を示すフローチャートである。
【0027】以下、図6のフローチャートに基づいて、
オブジェクトメソッドパーツの処理手順を説明する。
オブジェクトメソッドパーツの処理手順を説明する。
【0028】オブジェクトメソッドはオブジェクトデー
タを設定するメソッド(以下SETメソッドと記す)と
オブジェクトデータを取得するメソッド(以下GETメ
ソッドと記す)の2種類を対象となったデータ項目に対
して1件づつ生成するので、カウンタ値Xの働きにより
2度繰り返す(ステップ680)。最初にカウンタ値X
をクリアしておき(ステップ605)、生成を行う寸前
にカウントアップする(ステップ610)。オブジェク
トメソッド作成時に使用するテンプレート41を読み込
み(ステップ615)、テンプレート41中の連絡節4
12に処理中のデータ項目名と’LNK’を連結した文
字列をセットし、データ項目内のPICTURE句は加
工せずそのままセットする。レベル番号は無条件に’0
1’がセットされる(ステップ620)。
タを設定するメソッド(以下SETメソッドと記す)と
オブジェクトデータを取得するメソッド(以下GETメ
ソッドと記す)の2種類を対象となったデータ項目に対
して1件づつ生成するので、カウンタ値Xの働きにより
2度繰り返す(ステップ680)。最初にカウンタ値X
をクリアしておき(ステップ605)、生成を行う寸前
にカウントアップする(ステップ610)。オブジェク
トメソッド作成時に使用するテンプレート41を読み込
み(ステップ615)、テンプレート41中の連絡節4
12に処理中のデータ項目名と’LNK’を連結した文
字列をセットし、データ項目内のPICTURE句は加
工せずそのままセットする。レベル番号は無条件に’0
1’がセットされる(ステップ620)。
【0029】カウンタ値Xが1の時は(ステップ63
0)、テンプレート41中のメソッド名411及びメソ
ッド定義終了時のメソッド名の記述415に処理中のデ
ータ項目名と’SET’を連結した文字列をセットする
(ステップ635)。
0)、テンプレート41中のメソッド名411及びメソ
ッド定義終了時のメソッド名の記述415に処理中のデ
ータ項目名と’SET’を連結した文字列をセットする
(ステップ635)。
【0030】引き数節413には’USING△’と連
絡節に設定した文字列を連結しセットする(ステップ6
45)。更に手続部414には’MOVE△’及び連絡
節に設定した連絡データ名と’△TO△’と処理中のデ
ータ項目のデータ名を連結した文字列によるMOVE文
を作成しセットする(ステップ655)。
絡節に設定した文字列を連結しセットする(ステップ6
45)。更に手続部414には’MOVE△’及び連絡
節に設定した連絡データ名と’△TO△’と処理中のデ
ータ項目のデータ名を連結した文字列によるMOVE文
を作成しセットする(ステップ655)。
【0031】カウンタ値Xが2の時は、テンプレート4
1中のメソッド名411及びメソッド定義終了時のメソ
ッド名の記述415に処理中のデータ項目名と’GE
T’を連結した文字列をセットする(ステップ64
0)。
1中のメソッド名411及びメソッド定義終了時のメソ
ッド名の記述415に処理中のデータ項目名と’GE
T’を連結した文字列をセットする(ステップ64
0)。
【0032】引き数節413には’RETURNING
△’と連絡節に設定した文字列を連結しセットする(ス
テップ650)。更に手続部414には’MOVE△’
及びデータ項目のデータ名と’△TO△’と、更に連絡
節に設定した連絡データ名を連結した文字列によるMO
VE文を作成しセットする(ステップ660)。
△’と連絡節に設定した文字列を連結しセットする(ス
テップ650)。更に手続部414には’MOVE△’
及びデータ項目のデータ名と’△TO△’と、更に連絡
節に設定した連絡データ名を連結した文字列によるMO
VE文を作成しセットする(ステップ660)。
【0033】生成したオブジェクトメソッドパーツ2は
クラス定義文の自動生成の際に使用するのでメモリ内に
展開しておく(ステップ670)。
クラス定義文の自動生成の際に使用するのでメモリ内に
展開しておく(ステップ670)。
【0034】図7は図5のフローチャート中のステップ
580で示すレコードメソッドパーツ3作成の詳細な処
理手順を示すフローチャートである。
580で示すレコードメソッドパーツ3作成の詳細な処
理手順を示すフローチャートである。
【0035】以下図7のフローチャートに基づいてレコ
ードメソッドパーツ3の生成手順を示す。
ードメソッドパーツ3の生成手順を示す。
【0036】オブジェクトメソッドは、SETメソッド
とGETメソッドの2種類を1つづつ生成するのでこの
処理は、カウンタ値Yの働きにより、2度繰り返す(ス
テップ785)。最初にカウンタ値Yをクリアしておき
(ステップ705)、生成を行う寸前にカウントアップ
する(ステップ710)。テンプレート42を読み込み
(ステップ715)、テンプレート42中の作業領域4
22にユーザにより定義されたレコード定義文を加工す
ることなくそのままセットする(ステップ720)。
とGETメソッドの2種類を1つづつ生成するのでこの
処理は、カウンタ値Yの働きにより、2度繰り返す(ス
テップ785)。最初にカウンタ値Yをクリアしておき
(ステップ705)、生成を行う寸前にカウントアップ
する(ステップ710)。テンプレート42を読み込み
(ステップ715)、テンプレート42中の作業領域4
22にユーザにより定義されたレコード定義文を加工す
ることなくそのままセットする(ステップ720)。
【0037】次にテンプレート42中の連絡節423に
レベル番号01のデータ項目名と’LNK’を連結した
文字列をセットしデータ項目内のPICTURE句を参
照してレコード全体の長さを算出して連絡節のデータ項
目のPICTURE句としてセットする(ステップ73
0)。
レベル番号01のデータ項目名と’LNK’を連結した
文字列をセットしデータ項目内のPICTURE句を参
照してレコード全体の長さを算出して連絡節のデータ項
目のPICTURE句としてセットする(ステップ73
0)。
【0038】カウンタ値Yが1の時は(ステップ73
5)、テンプレート42中のメソッド名421及びメソ
ッド定義終了時のメソッド名の記述426にレベル番号
01のデータ項目名と’SET’を連結した文字列をセ
ットする(ステップ740)。引き数節424には’U
SING△’と連絡節に設定した連絡データ名を連結し
た文字列をセットする(ステップ750)。更に手続部
425には’MOVE△’及び連絡節に設定した連絡デ
ータ名と’△TO△’とレベル番号01のデータ名を連
結した文字列によるMOVE文を作成しセットする(ス
テップ760)。
5)、テンプレート42中のメソッド名421及びメソ
ッド定義終了時のメソッド名の記述426にレベル番号
01のデータ項目名と’SET’を連結した文字列をセ
ットする(ステップ740)。引き数節424には’U
SING△’と連絡節に設定した連絡データ名を連結し
た文字列をセットする(ステップ750)。更に手続部
425には’MOVE△’及び連絡節に設定した連絡デ
ータ名と’△TO△’とレベル番号01のデータ名を連
結した文字列によるMOVE文を作成しセットする(ス
テップ760)。
【0039】更にレコード定義中の記述を参照しPIC
TURE句が存在するセンテンスのデータ項目に対して
オブジェクト指向型のクラス定義6にメッセージを送る
ためのINVOKE文を対象となったデータ項目全てに
対応するように自動生成する(ステップ770)。生成
したINVOKE分は手続部425にセットする。
TURE句が存在するセンテンスのデータ項目に対して
オブジェクト指向型のクラス定義6にメッセージを送る
ためのINVOKE文を対象となったデータ項目全てに
対応するように自動生成する(ステップ770)。生成
したINVOKE分は手続部425にセットする。
【0040】カウンタ値Yが2の時はテンプレート42
中のメソッド名421及びメソッド定義終了時のメソッ
ド名の記述426にレベル番号01のデータ項目名と’
GET’を連結した文字列をセットする(ステップ74
5)。引き数節424には’RETURNING△’と
連絡節に設定した連絡データ名を連結した文字列をセッ
トする(ステップ755)。更に手続部425には’M
OVE△’及びレベル番号01のデータ名と’△TO
△’、更に連絡節に設定した連絡データ名を連結した文
字列によるMOVE文を作成しセットする(ステップ7
65)。
中のメソッド名421及びメソッド定義終了時のメソッ
ド名の記述426にレベル番号01のデータ項目名と’
GET’を連結した文字列をセットする(ステップ74
5)。引き数節424には’RETURNING△’と
連絡節に設定した連絡データ名を連結した文字列をセッ
トする(ステップ755)。更に手続部425には’M
OVE△’及びレベル番号01のデータ名と’△TO
△’、更に連絡節に設定した連絡データ名を連結した文
字列によるMOVE文を作成しセットする(ステップ7
65)。
【0041】更にレコード定義40中の記述を参照しP
ICTURE句が存在するセンテンスのデータ項目に対
して、オブジェクト指向型のクラス定義6にメッセージ
を送るためのINVOKE文を対象となったデータ項目
全てに対応するように自動生成する(ステップ77
5)。生成したINVOKE文は手続部425にセット
する。
ICTURE句が存在するセンテンスのデータ項目に対
して、オブジェクト指向型のクラス定義6にメッセージ
を送るためのINVOKE文を対象となったデータ項目
全てに対応するように自動生成する(ステップ77
5)。生成したINVOKE文は手続部425にセット
する。
【0042】生成したオブジェクトメソッドパーツ3は
クラス定義文の自動生成の際に使用するのでメモリ内に
展開しておく(ステップ780)。
クラス定義文の自動生成の際に使用するのでメモリ内に
展開しておく(ステップ780)。
【0043】レコードメソッドパーツ中にINVOKE
文を生成しておくとプログラム実行時には、次のように
使用することができる。図8を用いて説明する。図8中
の801と851は図4の43でありクラス定義のテン
プレートである。図4の432はクラス定義中のオブジ
ェクト定義部及びオブジェクトメソッド部であるがクラ
ス定義のテンプレート801には、オブジェクト定義部
802及びいくつかのオブジェクトメソッド部803が
セットされているためクラス定義80はオブジェクト指
向型のクラス定義6である。OOCOBOLで今後作成
するクラス群804はクラス定義80とデータのやりと
りをINVOKE文を用いて行うこともできるし、クラ
ス定義80を継承して再利用することもできる。
文を生成しておくとプログラム実行時には、次のように
使用することができる。図8を用いて説明する。図8中
の801と851は図4の43でありクラス定義のテン
プレートである。図4の432はクラス定義中のオブジ
ェクト定義部及びオブジェクトメソッド部であるがクラ
ス定義のテンプレート801には、オブジェクト定義部
802及びいくつかのオブジェクトメソッド部803が
セットされているためクラス定義80はオブジェクト指
向型のクラス定義6である。OOCOBOLで今後作成
するクラス群804はクラス定義80とデータのやりと
りをINVOKE文を用いて行うこともできるし、クラ
ス定義80を継承して再利用することもできる。
【0044】一方、クラス定義85は構造化手法型のク
ラス定義である。既存資産のプログラム群854とクラ
ス定義85の間のデータのやりとりをCALL文を使用
してレコード形式でのやりとりとすることができる。
ラス定義である。既存資産のプログラム群854とクラ
ス定義85の間のデータのやりとりをCALL文を使用
してレコード形式でのやりとりとすることができる。
【0045】クラス定義85からINVOKE文を用い
てクラス定義80にメッセージを送る仕組みを組み込ん
でおくと、既存資産のプログラム群854からクラス属
性の更新を行うことができるようになる。つまり、従来
のレコードを使用してのプログラムからクラス属性にア
クセスできるので、OOCOBOLで作成するクラス群
804から見た場合、既存ロジックにより更新されたデ
ータを再利用できる。
てクラス定義80にメッセージを送る仕組みを組み込ん
でおくと、既存資産のプログラム群854からクラス属
性の更新を行うことができるようになる。つまり、従来
のレコードを使用してのプログラムからクラス属性にア
クセスできるので、OOCOBOLで作成するクラス群
804から見た場合、既存ロジックにより更新されたデ
ータを再利用できる。
【0046】図9は図5のフローチャート中のステップ
585で示すクラス定義プログラム生成の詳細な処理手
順を示すフローチャートである。
585で示すクラス定義プログラム生成の詳細な処理手
順を示すフローチャートである。
【0047】以下図9のフローチャートに基づきクラス
定義プログラムの生成手順を示す。クラス定義プログラ
ムのテンプレート43を利用して、まずオブジェクト指
向型のクラス定義6を作成する(ステップ910)。テ
ンプレート43中のメソッド名431及びメソッド定義
終了時のメソッド名の記述433にレベル番号01のデ
ータ項目名と’OBJ’を連結した文字列をセットする
(ステップ911)。クラス定義プログラムにはクラス
メソッドは存在しない。オブジェクトデータ部とオブジ
ェクトメソッド部が格納される432には作成したクラ
ス属性の集まりを先にセットし(ステップ912)、こ
こまでに作成したオブジェクトメソッドパーツ2を1件
づつ順に読んでセットする(ステップ914)。オブジ
ェクトメソッドパーツ2を全てセットすると(ステップ
915)、オブジェクト指向型のクラス定義6が完成す
る(ステップ916)。
定義プログラムの生成手順を示す。クラス定義プログラ
ムのテンプレート43を利用して、まずオブジェクト指
向型のクラス定義6を作成する(ステップ910)。テ
ンプレート43中のメソッド名431及びメソッド定義
終了時のメソッド名の記述433にレベル番号01のデ
ータ項目名と’OBJ’を連結した文字列をセットする
(ステップ911)。クラス定義プログラムにはクラス
メソッドは存在しない。オブジェクトデータ部とオブジ
ェクトメソッド部が格納される432には作成したクラ
ス属性の集まりを先にセットし(ステップ912)、こ
こまでに作成したオブジェクトメソッドパーツ2を1件
づつ順に読んでセットする(ステップ914)。オブジ
ェクトメソッドパーツ2を全てセットすると(ステップ
915)、オブジェクト指向型のクラス定義6が完成す
る(ステップ916)。
【0048】次に、構造化手法型のクラス定義7を作成
する(ステップ920)。テンプレート43中のメソッ
ド名431及びメソッド定義終了時のメソッド名の記述
433にレベル番号01のデータ項目名と’MDL’を
連結した文字列をセットする(ステップ921)クラス
定義プログラム7にはクラスメソッドは存在しない。オ
ブジェクトデータ部にセットすべきクラス属性の集まり
も存在しない。オブジェクトメソッド部432にセット
すべきオブジェクトメソッドパーツ3はすでに2つ作成
されているので順次セットする(ステップ923)。オ
ブジェクトメソッドパーツを2つともセットすると(ス
テップ924)、構造化手法型のクラス定義7が完成す
る(ステップ925)。
する(ステップ920)。テンプレート43中のメソッ
ド名431及びメソッド定義終了時のメソッド名の記述
433にレベル番号01のデータ項目名と’MDL’を
連結した文字列をセットする(ステップ921)クラス
定義プログラム7にはクラスメソッドは存在しない。オ
ブジェクトデータ部にセットすべきクラス属性の集まり
も存在しない。オブジェクトメソッド部432にセット
すべきオブジェクトメソッドパーツ3はすでに2つ作成
されているので順次セットする(ステップ923)。オ
ブジェクトメソッドパーツを2つともセットすると(ス
テップ924)、構造化手法型のクラス定義7が完成す
る(ステップ925)。
【0049】
【発明の効果】以上述べたように、本発明によれば、レ
コード定義をそのまま扱うメソッドにINVOKE文を
自動生成するので、メッセージをオブジェクト指向型の
クラス定義に送ることにより、構造化手法型のクラス定
義を通してレコード定義をオブジェクトに分割できる。
これにより、従来の構造化手法で作成されている既存の
プログラム資産の再利用が容易になる。
コード定義をそのまま扱うメソッドにINVOKE文を
自動生成するので、メッセージをオブジェクト指向型の
クラス定義に送ることにより、構造化手法型のクラス定
義を通してレコード定義をオブジェクトに分割できる。
これにより、従来の構造化手法で作成されている既存の
プログラム資産の再利用が容易になる。
【図1】本発明による、オブジェクト定義自動生成の仕
組みを示すブロック図である。
組みを示すブロック図である。
【図2】自動生成システムを構成するコンピュータシス
テムのブロック図である。
テムのブロック図である。
【図3】オブジェクト指向COBOL言語によるクラス
定義の例を示す構成図である。
定義の例を示す構成図である。
【図4】本発明による、新規なクラス定義を作成する時
に使用するテンプレートの初期状態を示す構造図であ
る。
に使用するテンプレートの初期状態を示す構造図であ
る。
【図5】本発明の一実施例の手段を示す流れ図である。
【図6】本発明による新規な第1のオブジェクトメソッ
ドパーツを自動生成する手段の詳細を示す流れ図であ
る。
ドパーツを自動生成する手段の詳細を示す流れ図であ
る。
【図7】本発明による新規な第2のオブジェクトメソッ
ドパーツを自動生成する手段の詳細を示す流れ図であ
る。
ドパーツを自動生成する手段の詳細を示す流れ図であ
る。
【図8】本発明によるメソッド呼び出しの例を示すクラ
ス間の構成図である。
ス間の構成図である。
【図9】本発明による新規なクラス定義を自動生成した
パーツを用いて作成する手段の詳細を示す流れ図であ
る。
パーツを用いて作成する手段の詳細を示す流れ図であ
る。
1…クラス定義生成エディタ、2…第1のオブジェクト
メソッドパーツ、3…第2のオブジェクトメソッドパー
ツ、6…オブジェクト指向型のクラス定義、7…構造化
手法型のクラス定義、10…オブジェクト定義自動生成
装置、40…レコード定義、41…オブジェクトメソッ
ド定義の第1のテンプレート、42…オブジェクトメソ
ッド定義の第2のテンプレート、43…クラス定義のテ
ンプレート。
メソッドパーツ、3…第2のオブジェクトメソッドパー
ツ、6…オブジェクト指向型のクラス定義、7…構造化
手法型のクラス定義、10…オブジェクト定義自動生成
装置、40…レコード定義、41…オブジェクトメソッ
ド定義の第1のテンプレート、42…オブジェクトメソ
ッド定義の第2のテンプレート、43…クラス定義のテ
ンプレート。
Claims (3)
- 【請求項1】COBOL言語でのレコード定義イメージ
で作成したデータの入力機能を有し該データをレコード
定義の生成要素ごとに分解し、それぞれをオブジェクト
データとする第一のクラス定義を自動生成する手段と該
データを分解せず、レコード定義全体を1つの固まりと
して処理する機能を持つ第二のクラス定義を自動生成す
る手段と二通りの該クラス定義を同時に自動生成する手
段とからなることを特徴とするオブジェクト定義自動生
成装置。 - 【請求項2】該レコード定義を構成要素に分割する機能
を有し、レコードの構成要素のデータ内容を更新した時
に、該データに対応するクラス属性を管理するクラスに
対しメッセージを送る手段からなるオブジェクト定義を
自動生成し、該レコード定義と該クラス属性を関連して
記憶することを特徴とする、請求項1に記載のオブジェ
クト定義自動生成装置。 - 【請求項3】オブジェクト指向型COBOL言語で記述
されたソースコードからなるオブジェクトメソッド定義
の第1のテンプレートと第2のテンプレートと、該言語
で記述されたクラス定義のテンプレートを有し、該レコ
ード定義を分析して該言語でのソースコードに変換して
抽象部品を作成する手段と該抽象部品を該クラス定義に
展開し、該言語によるオブジェクト定義のソースコード
を自動生成する手段とからなるプログラム自動生成方式
において、該言語によるクラス定義を作成することを特
徴とする、請求項1に記載のオブジェクト定義自動生成
装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8228495A JPH08278887A (ja) | 1995-04-07 | 1995-04-07 | オブジェクト定義自動生成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8228495A JPH08278887A (ja) | 1995-04-07 | 1995-04-07 | オブジェクト定義自動生成装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH08278887A true JPH08278887A (ja) | 1996-10-22 |
Family
ID=13770228
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8228495A Pending JPH08278887A (ja) | 1995-04-07 | 1995-04-07 | オブジェクト定義自動生成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH08278887A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012181849A (ja) * | 1999-11-02 | 2012-09-20 | Thomson Licensing | グラフィックオブジェクトの表示 |
-
1995
- 1995-04-07 JP JP8228495A patent/JPH08278887A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012181849A (ja) * | 1999-11-02 | 2012-09-20 | Thomson Licensing | グラフィックオブジェクトの表示 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6769095B1 (en) | Hierarchically structured control information editor | |
US6141792A (en) | Object oriented framework for specifying the format of compiler output with a template facility | |
US7739665B2 (en) | Dynamic conversion of object-oriented programs to tag-based procedural code | |
US5953526A (en) | Object oriented programming system with displayable natural language documentation through dual translation of program source code | |
US7159185B1 (en) | Function objects | |
Clark1 et al. | Engineering modelling languages: A precise meta-modelling approach | |
US10379817B2 (en) | Computer-applied method for displaying software-type applications based on design specifications | |
US20040015834A1 (en) | Method and apparatus for generating serialization code for representing a model in different type systems | |
US20040107414A1 (en) | Method, a language and a system for the definition and implementation of software solutions | |
US20040111702A1 (en) | Method and apparatus for visual programming | |
US5911076A (en) | Object oriented framework for creating new emitters for a compiler | |
JPH08202545A (ja) | ターゲット言語コードを生成するためのオブジェクト指向システム及びその方法 | |
CN108595171B (zh) | 对象的模型生成方法、装置、设备及存储介质 | |
US5715460A (en) | Template based facility for formatting compiler output | |
CN111880784A (zh) | 一种面向simscript语言的离散事件仿真图形化建模方法 | |
JP2006202308A (ja) | グラフィカルユーザインターフェース方法、グラフィカルユーザインターフェース装置、及び記録媒体 | |
US6785880B1 (en) | Tooling framework system and method for code generation | |
Arps et al. | A parser for LTAG and frame semantics | |
US20050177818A1 (en) | Integration of external tools into an existing design environment | |
Sawprakhon et al. | Sequence diagram generation with model transformation technology | |
JPH064280A (ja) | ウィズィウィグ式エディターでオブジェクトをユーザ制御する機能を備えたグラフィカル・ユーザ・インターフェース | |
KR100576941B1 (ko) | 메타모델에 기반한 모델 변환 지원 시스템 | |
JPH08278887A (ja) | オブジェクト定義自動生成装置 | |
WO2001008002A2 (en) | Hierarchically structured control information editor | |
JPH0683594A (ja) | ウィズィウィグ式エディターとコンパイラーとを統合したグラフィカル・ユーザ・インターフェース |