JPH05165616A - プログラムソースコードの最適化方式 - Google Patents
プログラムソースコードの最適化方式Info
- Publication number
- JPH05165616A JPH05165616A JP35387391A JP35387391A JPH05165616A JP H05165616 A JPH05165616 A JP H05165616A JP 35387391 A JP35387391 A JP 35387391A JP 35387391 A JP35387391 A JP 35387391A JP H05165616 A JPH05165616 A JP H05165616A
- Authority
- JP
- Japan
- Prior art keywords
- source code
- program source
- file
- optimization
- read
- 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
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
【目的】 作成されたプログラムソースコードを読みや
すいプログラムソースコードに自動的に変換する。 【構成】 最適化処理部12のAND変換部121は、
ファイル11から最適化を行う前のプログラムソースコ
ードを読み出して、IF文を検索し、検索されたIF文
をANDで結合して、ファイル13に変換出力する。O
R変換部122は、ファイル13からIF文を検索し、
検索されたIF文をORで結合して、ファイル14に変
換出力する。SELECT変換部123は、ファイル1
4からIF文を検索し、IFをWHENに変換して、フ
ァイル15に出力する。
すいプログラムソースコードに自動的に変換する。 【構成】 最適化処理部12のAND変換部121は、
ファイル11から最適化を行う前のプログラムソースコ
ードを読み出して、IF文を検索し、検索されたIF文
をANDで結合して、ファイル13に変換出力する。O
R変換部122は、ファイル13からIF文を検索し、
検索されたIF文をORで結合して、ファイル14に変
換出力する。SELECT変換部123は、ファイル1
4からIF文を検索し、IFをWHENに変換して、フ
ァイル15に出力する。
Description
【0001】
【産業上の利用分野】本発明は、作成されたプログラム
ソースコードを第三者に読みやすいプログラムソースコ
ードに変換する最適化方式に関する。
ソースコードを第三者に読みやすいプログラムソースコ
ードに変換する最適化方式に関する。
【0002】
【従来の技術】従来からプログラム最適化のための種々
の技法がある。斯るプログラム最適化の目的は、出来る
だけ高速に実行されると共に、使用される記憶域の量を
出来るだけ少なくすることにあり、もっぱらプログラム
の動作性能にのみ着目した最適化であった。なお、この
種の関連する先行技術としては、例えば特開平2−18
617号公報に記載の技術等が挙げられる。
の技法がある。斯るプログラム最適化の目的は、出来る
だけ高速に実行されると共に、使用される記憶域の量を
出来るだけ少なくすることにあり、もっぱらプログラム
の動作性能にのみ着目した最適化であった。なお、この
種の関連する先行技術としては、例えば特開平2−18
617号公報に記載の技術等が挙げられる。
【0003】
【発明が解決しようとする課題】ところで、作成される
プログラムソースコードは、作成者の言語に対する習熟
度等によって、様々なレベルのものがある。そして、他
人が作成したプログラムを解析して、修正することは、
極めて困難を伴う作業となり、その結果プログラムの修
正、変更に多大な時間を要していた。
プログラムソースコードは、作成者の言語に対する習熟
度等によって、様々なレベルのものがある。そして、他
人が作成したプログラムを解析して、修正することは、
極めて困難を伴う作業となり、その結果プログラムの修
正、変更に多大な時間を要していた。
【0004】このため、作成されるプログラムソースコ
ードが第三者にとって、読みやすく、分かりやすいこと
が要求されるが、しかしながら、従来の最適化の技法で
は、第三者に読みやすいプログラムソースコードを生成
することができないという問題があった。
ードが第三者にとって、読みやすく、分かりやすいこと
が要求されるが、しかしながら、従来の最適化の技法で
は、第三者に読みやすいプログラムソースコードを生成
することができないという問題があった。
【0005】本発明の目的は、作成されたプログラムソ
ースコードを読みやすいプログラムソースコードに自動
的に変換する最適化方式を提供することにある。
ースコードを読みやすいプログラムソースコードに自動
的に変換する最適化方式を提供することにある。
【0006】
【課題を解決するための手段】前記目的を達成するため
に、本発明では、入力されたプログラムソースコードか
らIF文を検索する手段と、該検索された複数のIF文
を、IF(AND条件)THEN形式に変換する手段
と、IF(OR条件)THEN形式に変換する手段と、
複数のWHEN−DO形式に変換する手段を備えたこと
を特徴としている。
に、本発明では、入力されたプログラムソースコードか
らIF文を検索する手段と、該検索された複数のIF文
を、IF(AND条件)THEN形式に変換する手段
と、IF(OR条件)THEN形式に変換する手段と、
複数のWHEN−DO形式に変換する手段を備えたこと
を特徴としている。
【0007】
【作用】最適化処理部のAND変換部は、ファイルから
最適化を行う前のプログラムソースコードを読み出し
て、IF文を検索し、検索されたIF文をANDで結合
して、AND変換された最適化後のプログラムソースコ
ードを出力する。OR変換部は、AND変換された最適
化後のファイルからIF文を検索し、検索されたIF文
をORで結合して、OR変換された最適化後のプログラ
ムソースコードを出力する。SELECT変換部は、O
R変換された最適化後のファイルからIF文を検索し、
IFをWHENに変換して、最適化後のプログラムソー
スコードを出力する。このようにして最適化された後の
プログラムソースコードは、そのロジックが単純化さ
れ、読みやすいソースコードに変換される。
最適化を行う前のプログラムソースコードを読み出し
て、IF文を検索し、検索されたIF文をANDで結合
して、AND変換された最適化後のプログラムソースコ
ードを出力する。OR変換部は、AND変換された最適
化後のファイルからIF文を検索し、検索されたIF文
をORで結合して、OR変換された最適化後のプログラ
ムソースコードを出力する。SELECT変換部は、O
R変換された最適化後のファイルからIF文を検索し、
IFをWHENに変換して、最適化後のプログラムソー
スコードを出力する。このようにして最適化された後の
プログラムソースコードは、そのロジックが単純化さ
れ、読みやすいソースコードに変換される。
【0008】
【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。図1は、本発明の実施例の機能ブロック
図である。言語として、例えばPL/Iを用いた場合の
実施例について以下、説明する。図1において、11
は、最適化を行う前のプログラムソースコードが格納さ
れたファイル、12は、最適化処理部で、AND変換部
121と、OR変換部122と、SELECT変換部1
23から構成されている。13は、AND変換の最適化
処理を行ったプログラムソースコードを格納したファイ
ル、14は、OR変換の最適化処理を行ったプログラム
ソースコードを格納したファイル、15は、AND変
換、OR変換、SELECT変換の最適化処理を行った
プログラムソースコードを格納したファイルである。
的に説明する。図1は、本発明の実施例の機能ブロック
図である。言語として、例えばPL/Iを用いた場合の
実施例について以下、説明する。図1において、11
は、最適化を行う前のプログラムソースコードが格納さ
れたファイル、12は、最適化処理部で、AND変換部
121と、OR変換部122と、SELECT変換部1
23から構成されている。13は、AND変換の最適化
処理を行ったプログラムソースコードを格納したファイ
ル、14は、OR変換の最適化処理を行ったプログラム
ソースコードを格納したファイル、15は、AND変
換、OR変換、SELECT変換の最適化処理を行った
プログラムソースコードを格納したファイルである。
【0009】図2(a)は、本実施例のAND変換の最
適化処理を行う前のプログラムソースコードを示す図、
図2(b)は、本実施例のAND変換の最適化処理を行
ったプログラムソースコードを示す図、図2(c)、
(d)は、それぞれ最適化前後のフローチャートであ
る。本実施例のAND変換の最適化処理によって、図2
(a)のIF文群21、22、23が、図2(b)に示
すように、IFのAND条件(&)にまとめられて最適
化される。
適化処理を行う前のプログラムソースコードを示す図、
図2(b)は、本実施例のAND変換の最適化処理を行
ったプログラムソースコードを示す図、図2(c)、
(d)は、それぞれ最適化前後のフローチャートであ
る。本実施例のAND変換の最適化処理によって、図2
(a)のIF文群21、22、23が、図2(b)に示
すように、IFのAND条件(&)にまとめられて最適
化される。
【0010】図3(a)は、本実施例のOR変換の最適
化処理を行う前のプログラムソースコードを示す図、図
3(b)は、本実施例のOR変換の最適化処理を行った
プログラムソースコードを示す図、図3(c)、(d)
は、それぞれ最適化前後のフローチャートである。本実
施例のOR変換の最適化処理によって、図3(a)のI
F文群31、32、33が、図3(b)に示すように、
IFのOR条件(|)にまとめられて最適化される。
化処理を行う前のプログラムソースコードを示す図、図
3(b)は、本実施例のOR変換の最適化処理を行った
プログラムソースコードを示す図、図3(c)、(d)
は、それぞれ最適化前後のフローチャートである。本実
施例のOR変換の最適化処理によって、図3(a)のI
F文群31、32、33が、図3(b)に示すように、
IFのOR条件(|)にまとめられて最適化される。
【0011】図4(a)は、本実施例のSELECT変
換の最適化処理を行う前のプログラムソースコードを示
す図、図4(b)は、本実施例のSELECT変換の最
適化処理を行ったプログラムソースコードを示す図、図
4(c)、(d)は、それぞれ最適化前後のフローチャ
ートである。本実施例のSELECT変換の最適化処理
によって、図4(a)のIF文群41、42、43が、
図4(b)に示すように、WHEN−DOに変換されて
最適化される。
換の最適化処理を行う前のプログラムソースコードを示
す図、図4(b)は、本実施例のSELECT変換の最
適化処理を行ったプログラムソースコードを示す図、図
4(c)、(d)は、それぞれ最適化前後のフローチャ
ートである。本実施例のSELECT変換の最適化処理
によって、図4(a)のIF文群41、42、43が、
図4(b)に示すように、WHEN−DOに変換されて
最適化される。
【0012】以下に、本実施例のAND変換、OR変
換、SELECT変換の最適化処理を詳細に説明する。
換、SELECT変換の最適化処理を詳細に説明する。
【0013】図5から図8は、AND変換部121の処
理フローチャートである。最適化処理部12内の図示し
ない行数カウンタを0にした後(ステップ101)、プ
ログラムソースコードが格納されたファイル11から最
適化処理すべきプログラムソースコードを、行数をカウ
ントしながら1行分読み込む(ステップ102)。読み
込んだ行に文字列「IF」があるか否かを検索し(ステ
ップ103)、文字列「IF」があるときには、このと
きの行数カウンタの値を先頭行数として退避し、図示し
ないIFカウンタに1を代入する(ステップ104)。
理フローチャートである。最適化処理部12内の図示し
ない行数カウンタを0にした後(ステップ101)、プ
ログラムソースコードが格納されたファイル11から最
適化処理すべきプログラムソースコードを、行数をカウ
ントしながら1行分読み込む(ステップ102)。読み
込んだ行に文字列「IF」があるか否かを検索し(ステ
ップ103)、文字列「IF」があるときには、このと
きの行数カウンタの値を先頭行数として退避し、図示し
ないIFカウンタに1を代入する(ステップ104)。
【0014】引き続いて、行数をカウントしながら1行
分読み込み(ステップ105)、文字列「DO;」を除
いて(ステップ106)、最初に現われる文字列が「I
F」か否かを調べ、「IF」であるときは、IFカウン
タに1を加算し(ステップ108)、ステップ105か
らステップ108を繰り返して、文字列「IF」をカウ
ントする。
分読み込み(ステップ105)、文字列「DO;」を除
いて(ステップ106)、最初に現われる文字列が「I
F」か否かを調べ、「IF」であるときは、IFカウン
タに1を加算し(ステップ108)、ステップ105か
らステップ108を繰り返して、文字列「IF」をカウ
ントする。
【0015】文字列「IF」を検索後、最初に現われる
文字列が「ELSE」か否かを調べ(ステップ10
9)、「ELSE」以外であれば、ステップ102に戻
り、「ELSE」であれば、文字列「DO;」を除いて
最初に現われる文字から文字列「END;」までを全て
退避する。すなわち、ステップ110、111で文字列
「DO;」を除いて、退避カウンタ(t)を0にし(ス
テップ112)、読み込んだ文字行が文字列「EN
D;」以外であれば(ステップ113、114)、退避
カウンタ(t)に1を加算して(ステップ115)、読
み込んだ文字行をt番目の退避エリアに退避する(ステ
ップ116)。
文字列が「ELSE」か否かを調べ(ステップ10
9)、「ELSE」以外であれば、ステップ102に戻
り、「ELSE」であれば、文字列「DO;」を除いて
最初に現われる文字から文字列「END;」までを全て
退避する。すなわち、ステップ110、111で文字列
「DO;」を除いて、退避カウンタ(t)を0にし(ス
テップ112)、読み込んだ文字行が文字列「EN
D;」以外であれば(ステップ113、114)、退避
カウンタ(t)に1を加算して(ステップ115)、読
み込んだ文字行をt番目の退避エリアに退避する(ステ
ップ116)。
【0016】次いで、行数をカウントしながら1行分読
み込み(ステップ117)、文字列「END;」を除い
て(ステップ118)、最初に現われる文字列が「EL
SE」か否かを調べ(ステップ119)、「ELSE」
でなければ、ステップ102に戻る。「ELSE」のと
き、文字列「DO;」を除いて(ステップ120、12
1)、最初に現われる文字から文字列「END;」まで
と、先に退避した文字列群とを比較する。すなわち、制
御カウンタ(i)に1を代入し(ステップ122)、行
数をカウントしながら1行分読み込み(ステップ12
3)、先に退避した退避エリアのi番目の内容と読み込
んだ文字行とを比較し(ステップ124)、等しくなけ
れば、ステップ102に戻り、同一ならば、制御カウン
タ(i)に1を加算し(ステップ125)、退避した行
数分の比較を行う(ステップ126)。そして、IFカ
ウンタを1減算し(ステップ127)、(IF文の数−
1)回、ステップ117以下の処理を繰り返す(ステッ
プ128)。
み込み(ステップ117)、文字列「END;」を除い
て(ステップ118)、最初に現われる文字列が「EL
SE」か否かを調べ(ステップ119)、「ELSE」
でなければ、ステップ102に戻る。「ELSE」のと
き、文字列「DO;」を除いて(ステップ120、12
1)、最初に現われる文字から文字列「END;」まで
と、先に退避した文字列群とを比較する。すなわち、制
御カウンタ(i)に1を代入し(ステップ122)、行
数をカウントしながら1行分読み込み(ステップ12
3)、先に退避した退避エリアのi番目の内容と読み込
んだ文字行とを比較し(ステップ124)、等しくなけ
れば、ステップ102に戻り、同一ならば、制御カウン
タ(i)に1を加算し(ステップ125)、退避した行
数分の比較を行う(ステップ126)。そして、IFカ
ウンタを1減算し(ステップ127)、(IF文の数−
1)回、ステップ117以下の処理を繰り返す(ステッ
プ128)。
【0017】ステップ128まで完了したら、行数カウ
ンタの値を最終行数とし(ステップ129)、先頭行数
と最終行数を行数ファイルに出力する(ステップ13
0)。そして、プログラムソースコードが終わりになる
まで、ステップ102以下の処理を繰返し、プログラム
ソースコードが終了したら、以下の処理を行う(ステッ
プ131)。
ンタの値を最終行数とし(ステップ129)、先頭行数
と最終行数を行数ファイルに出力する(ステップ13
0)。そして、プログラムソースコードが終わりになる
まで、ステップ102以下の処理を繰返し、プログラム
ソースコードが終了したら、以下の処理を行う(ステッ
プ131)。
【0018】再び、プログラムソースコードを、行数を
カウントしながら読み込み、行数ファイル中の先頭行数
と、読み込んだプログラムソースコードの行数が一致す
るまで(ステップ132、133、134、135)、
読み込んだプログラムソースコードをそのまま最適化後
プログラムソースコードファイル13に出力する(ステ
ップ136)。一致したときは、以下の処理を行う。
カウントしながら読み込み、行数ファイル中の先頭行数
と、読み込んだプログラムソースコードの行数が一致す
るまで(ステップ132、133、134、135)、
読み込んだプログラムソースコードをそのまま最適化後
プログラムソースコードファイル13に出力する(ステ
ップ136)。一致したときは、以下の処理を行う。
【0019】一番目のIF文は、文字列「THEN」を
削除して最適化後プログラムソースコードファイル13
に出力する(ステップ137)。「DO;」は、最適化
後プログラムソースコードファイル13に出力しない
(ステップ138、139)。
削除して最適化後プログラムソースコードファイル13
に出力する(ステップ137)。「DO;」は、最適化
後プログラムソースコードファイル13に出力しない
(ステップ138、139)。
【0020】二番目以降のIF文は、文字列「IF」と
「THEN」を削除し、先頭に「&」を付けて最適化後
プログラムソースコードファイル13に出力し、「D
O;」は、ファイルに出力しない(ステップ140、1
41)。
「THEN」を削除し、先頭に「&」を付けて最適化後
プログラムソースコードファイル13に出力し、「D
O;」は、ファイルに出力しない(ステップ140、1
41)。
【0021】文字列「IF」と「THEN」が読み込ま
れたら(ステップ142)、文字列「IF」を「& 」
に置き換えて、最適化後プログラムソースコードファイ
ル13に出力する(ステップ142、143)。
れたら(ステップ142)、文字列「IF」を「& 」
に置き換えて、最適化後プログラムソースコードファイ
ル13に出力する(ステップ142、143)。
【0022】次の「END;」が読みだされるまで、そ
のまま最適化後プログラムソースコードファイル13に
出力する(ステップ144、145、146)。そし
て、「END;」を出力し(ステップ147)、行数フ
ァイルの最終行数になるまで、最適化後プログラムソー
スコードファイル13に出力しない(ステップ148、
149)。ステップ133からステップ149までの処
理を、プログラムソースコードの終わりまで繰り返す
(ステップ150)。行数ファイルにデータがなくなっ
たら、プログラムソースコードをそのまま最適化後プロ
グラムソースコードファイル13に出力する。
のまま最適化後プログラムソースコードファイル13に
出力する(ステップ144、145、146)。そし
て、「END;」を出力し(ステップ147)、行数フ
ァイルの最終行数になるまで、最適化後プログラムソー
スコードファイル13に出力しない(ステップ148、
149)。ステップ133からステップ149までの処
理を、プログラムソースコードの終わりまで繰り返す
(ステップ150)。行数ファイルにデータがなくなっ
たら、プログラムソースコードをそのまま最適化後プロ
グラムソースコードファイル13に出力する。
【0023】以上で説明した処理によって、図2(a)
のIF文群を、図2(b)のIFのAND条件で最適化
することができ、より単純で且つ読みやすいプログラム
ソースコードに変換される。
のIF文群を、図2(b)のIFのAND条件で最適化
することができ、より単純で且つ読みやすいプログラム
ソースコードに変換される。
【0024】図9から図12は、OR変換部122の処
理フローチャートである。OR変換部122は、ファイ
ル13の内容に対して最適化処理を行って、ファイル1
4に出力する。
理フローチャートである。OR変換部122は、ファイ
ル13の内容に対して最適化処理を行って、ファイル1
4に出力する。
【0025】最適化処理部12内の図示しない行数カウ
ンタを0にした後(ステップ201)、プログラムソー
スコードが格納されたファイル13から最適化処理すべ
きプログラムソースコードを、行数をカウントしながら
1行分読み込む(ステップ202)。読み込んだ行に文
字列「IF」があるか否かを検索し(ステップ20
3)、文字列「IF」があるときには、このときの行数
カウンタの値を先頭行数として退避し、図示しないIF
カウンタに1を代入する(ステップ204)。
ンタを0にした後(ステップ201)、プログラムソー
スコードが格納されたファイル13から最適化処理すべ
きプログラムソースコードを、行数をカウントしながら
1行分読み込む(ステップ202)。読み込んだ行に文
字列「IF」があるか否かを検索し(ステップ20
3)、文字列「IF」があるときには、このときの行数
カウンタの値を先頭行数として退避し、図示しないIF
カウンタに1を代入する(ステップ204)。
【0026】引き続いて、行数をカウントしながら1行
分読み込み(ステップ205)、最初に現われる文字列
が「ELSE」か否かを調べる(ステップ206)。
「ELSE」以外のときは、ステップ202に戻る。
「ELSE」であれば(ステップ206)、文字列「D
O;」を除いて(ステップ207、208)、最初に現
われる文字が「IF」で(ステップ209)、次の文字
が「ELSE」であるときは(ステップ210、21
1)、IFカウンタに1を加算する(ステップ21
2)。ステップ209で、「IF」以外のときは、ステ
ップ202に戻り、ステップ211で「ELSE」以外
のときは、ステップ202に戻る。
分読み込み(ステップ205)、最初に現われる文字列
が「ELSE」か否かを調べる(ステップ206)。
「ELSE」以外のときは、ステップ202に戻る。
「ELSE」であれば(ステップ206)、文字列「D
O;」を除いて(ステップ207、208)、最初に現
われる文字が「IF」で(ステップ209)、次の文字
が「ELSE」であるときは(ステップ210、21
1)、IFカウンタに1を加算する(ステップ21
2)。ステップ209で、「IF」以外のときは、ステ
ップ202に戻り、ステップ211で「ELSE」以外
のときは、ステップ202に戻る。
【0027】次いで、文字列「DO;」を除いて(ステ
ップ213、214)、最初に現われる文字が「IF」
で(ステップ215)、次の行が「ELSE」であると
きは(ステップ216、217)、IFカウンタに1を
加算して(ステップ218)、ステップ213に戻る。
ステップ215で「IF」以外のときは、ステップ21
9に進み、文字列が「END;」になるまで読み込む
(ステップ220)。ステップ217で、「ELSE」
以外のときは、ステップ202に戻る。
ップ213、214)、最初に現われる文字が「IF」
で(ステップ215)、次の行が「ELSE」であると
きは(ステップ216、217)、IFカウンタに1を
加算して(ステップ218)、ステップ213に戻る。
ステップ215で「IF」以外のときは、ステップ21
9に進み、文字列が「END;」になるまで読み込む
(ステップ220)。ステップ217で、「ELSE」
以外のときは、ステップ202に戻る。
【0028】続いて、IFカウンタを1減算し(ステッ
プ221)、次の行を読み込み(ステップ222)、最
初に現われる文字列が「END;」か否かを調べる(ス
テップ223)。「END;」以外であれば、ステップ
202に戻り、「END;」であれば、IFカウンタを
1減算し(ステップ224)、IFカウンタが0になる
まで、ステップ222からステップ224の処理を繰り
返す(ステップ225)。
プ221)、次の行を読み込み(ステップ222)、最
初に現われる文字列が「END;」か否かを調べる(ス
テップ223)。「END;」以外であれば、ステップ
202に戻り、「END;」であれば、IFカウンタを
1減算し(ステップ224)、IFカウンタが0になる
まで、ステップ222からステップ224の処理を繰り
返す(ステップ225)。
【0029】ステップ225まで完了したら、行数カウ
ンタの値を最終行数とし(ステップ226)、先頭行数
と最終行数を行数ファイルに出力する(ステップ22
7)。そして、プログラムソースコードが終わりになる
まで、ステップ202以下の処理を繰返し、プログラム
ソースコードが終了したら、以下の処理を行う(ステッ
プ228)。
ンタの値を最終行数とし(ステップ226)、先頭行数
と最終行数を行数ファイルに出力する(ステップ22
7)。そして、プログラムソースコードが終わりになる
まで、ステップ202以下の処理を繰返し、プログラム
ソースコードが終了したら、以下の処理を行う(ステッ
プ228)。
【0030】再び、プログラムソースコードを、行数を
カウントしながら読み込み、行数ファイル中の先頭行数
と、読み込んだプログラムソースコードの行数が一致す
るまで(ステップ229、230、231、232)、
読み込んだプログラムソースコードをそのまま最適化後
プログラムソースコードファイル14に出力する(ステ
ップ233)。一致したときは、以下の処理を行う。
カウントしながら読み込み、行数ファイル中の先頭行数
と、読み込んだプログラムソースコードの行数が一致す
るまで(ステップ229、230、231、232)、
読み込んだプログラムソースコードをそのまま最適化後
プログラムソースコードファイル14に出力する(ステ
ップ233)。一致したときは、以下の処理を行う。
【0031】一番目のIF文は、文字列「THEN;」
を削除して最適化後プログラムソースコードファイル1
4に出力する(ステップ234)。「DO;」と「EL
SE」は、最適化後プログラムソースコードファイル1
4に出力しない(ステップ235、236)。
を削除して最適化後プログラムソースコードファイル1
4に出力する(ステップ234)。「DO;」と「EL
SE」は、最適化後プログラムソースコードファイル1
4に出力しない(ステップ235、236)。
【0032】二番目以降のIF文は、文字列「IF」と
「THEN;」を削除し、先頭に「|」を付けて最適化
後プログラムソースコードファイル14に出力する(ス
テップ237、238)。
「THEN;」を削除し、先頭に「|」を付けて最適化
後プログラムソースコードファイル14に出力する(ス
テップ237、238)。
【0033】文字列「IF」以外の文字が読み込まれた
ら(ステップ237)、「THEN;」と「ELSE」
と「DO;」を最適化後プログラムソースコードファイ
ル14に出力する(ステップ239)。
ら(ステップ237)、「THEN;」と「ELSE」
と「DO;」を最適化後プログラムソースコードファイ
ル14に出力する(ステップ239)。
【0034】そして、行数ファイルの最終行数になるま
で、最適化後プログラムソースコードファイル14にそ
のまま出力する(ステップ240、241、242)。
ステップ230からステップ241までの処理を、プロ
グラムソースコードファイルの終わりまで繰り返す(ス
テップ243)。行数ファイルにデータがなくなった
ら、プログラムソースコードをそのまま最適化後プログ
ラムソースコードファイル14に出力する。
で、最適化後プログラムソースコードファイル14にそ
のまま出力する(ステップ240、241、242)。
ステップ230からステップ241までの処理を、プロ
グラムソースコードファイルの終わりまで繰り返す(ス
テップ243)。行数ファイルにデータがなくなった
ら、プログラムソースコードをそのまま最適化後プログ
ラムソースコードファイル14に出力する。
【0035】以上で説明した処理によって、図3(a)
のIF文群を、図3(b)のIFのOR条件で最適化す
ることができ、より読みやすいプログラムソースコード
に変換される。なお、図2、図3に示した実施例では、
AND条件、OR条件がそれぞれ3個である場合につい
て説明したが、条件の数が3個以上の場合についても同
様に自動的に変換を行うことができる。
のIF文群を、図3(b)のIFのOR条件で最適化す
ることができ、より読みやすいプログラムソースコード
に変換される。なお、図2、図3に示した実施例では、
AND条件、OR条件がそれぞれ3個である場合につい
て説明したが、条件の数が3個以上の場合についても同
様に自動的に変換を行うことができる。
【0036】図13から図16は、SELECT変換部
123の処理フローチャートである。SELECT変換
部123は、ファイル14の内容に対して最適化処理を
行って、最終的には、AND、OR、SELECT変換
されたプログラムソースコードがファイル15に出力さ
れる。
123の処理フローチャートである。SELECT変換
部123は、ファイル14の内容に対して最適化処理を
行って、最終的には、AND、OR、SELECT変換
されたプログラムソースコードがファイル15に出力さ
れる。
【0037】最適化処理部12内の図示しない行数カウ
ンタを0にした後(ステップ301)、プログラムソー
スコードが格納されたファイル14から最適化処理すべ
きプログラムソースコードを、行数をカウントしながら
1行分読み込む(ステップ302)。読み込んだ行に文
字列「IF」があるか否かを検索し(ステップ30
3)、文字列「IF」があるときには、このときの行数
カウンタの値を先頭行数として退避し、図示しないIF
カウンタに1を代入する(ステップ304)。
ンタを0にした後(ステップ301)、プログラムソー
スコードが格納されたファイル14から最適化処理すべ
きプログラムソースコードを、行数をカウントしながら
1行分読み込む(ステップ302)。読み込んだ行に文
字列「IF」があるか否かを検索し(ステップ30
3)、文字列「IF」があるときには、このときの行数
カウンタの値を先頭行数として退避し、図示しないIF
カウンタに1を代入する(ステップ304)。
【0038】引き続いて、行数をカウントしながら「E
ND;」まで読み込む(ステップ305、306)。文
字列「DO;」と「ELSE」を除いて(ステップ30
7、308)、最初に現われる文字列が「IF」のとき
は(ステップ309)、ステップ310に進み、「I
F」以外のときは、ステップ302に戻る。
ND;」まで読み込む(ステップ305、306)。文
字列「DO;」と「ELSE」を除いて(ステップ30
7、308)、最初に現われる文字列が「IF」のとき
は(ステップ309)、ステップ310に進み、「I
F」以外のときは、ステップ302に戻る。
【0039】最初に現われる文字列が「IF」のときは
(ステップ309)、IFカウンタに1を加算する(ス
テップ310)。そして、「END;」まで読み込み
(ステップ311、312)、文字列「DO;」と「E
LSE」を除いて(ステップ313、314)、最初に
現われる文字が「IF」であれば(ステップ315)、
ステップ310に戻り、「IF」以外のときは、ステッ
プ316に進む。
(ステップ309)、IFカウンタに1を加算する(ス
テップ310)。そして、「END;」まで読み込み
(ステップ311、312)、文字列「DO;」と「E
LSE」を除いて(ステップ313、314)、最初に
現われる文字が「IF」であれば(ステップ315)、
ステップ310に戻り、「IF」以外のときは、ステッ
プ316に進む。
【0040】ステップ316に進み、文字列が「EN
D;」になるまで読み込む(ステップ317)。続い
て、IFカウンタを1減算し(ステップ318)、次の
行を読み込み(ステップ319)、最初に現われる文字
列が「END」か否かを調べる(ステップ320)。
「END」以外であれば、ステップ302に戻り、「E
ND」であれば、IFカウンタを1減算し(ステップ3
21)、IFカウンタが0になるまで、ステップ319
からステップ321の処理を繰り返す(ステップ32
2)。
D;」になるまで読み込む(ステップ317)。続い
て、IFカウンタを1減算し(ステップ318)、次の
行を読み込み(ステップ319)、最初に現われる文字
列が「END」か否かを調べる(ステップ320)。
「END」以外であれば、ステップ302に戻り、「E
ND」であれば、IFカウンタを1減算し(ステップ3
21)、IFカウンタが0になるまで、ステップ319
からステップ321の処理を繰り返す(ステップ32
2)。
【0041】ステップ322まで完了したら、行数カウ
ンタの値を最終行数とし(ステップ323)、先頭行数
と最終行数を行数ファイルに出力する(ステップ32
4)。そして、プログラムソースコードが終わりになる
まで、ステップ302以下の処理を繰返し、プログラム
ソースコードが終了したら、以下の処理を行う(ステッ
プ325)。
ンタの値を最終行数とし(ステップ323)、先頭行数
と最終行数を行数ファイルに出力する(ステップ32
4)。そして、プログラムソースコードが終わりになる
まで、ステップ302以下の処理を繰返し、プログラム
ソースコードが終了したら、以下の処理を行う(ステッ
プ325)。
【0042】再び、プログラムソースコードを、行数を
カウントしながら読み込み、行数ファイル中の先頭行数
と、読み込んだプログラムソースコードの行数が一致す
るまで(ステップ326、327、328、329)、
読み込んだプログラムソースコードをそのまま最適化後
プログラムソースコードファイル15に出力する(ステ
ップ330)。一致したときは、以下の処理を行う。
カウントしながら読み込み、行数ファイル中の先頭行数
と、読み込んだプログラムソースコードの行数が一致す
るまで(ステップ326、327、328、329)、
読み込んだプログラムソースコードをそのまま最適化後
プログラムソースコードファイル15に出力する(ステ
ップ330)。一致したときは、以下の処理を行う。
【0043】「SELECT;」を最適化後プログラム
ソースコードファイル15に出力する(ステップ33
1)。文字列が「IF」であれば(ステップ332)、
文字列「IF」を「WHEN(」に、「THEN」
を「)」に置き換えて最適化後プログラムソースコード
ファイル15に出力する(ステップ333)。
ソースコードファイル15に出力する(ステップ33
1)。文字列が「IF」であれば(ステップ332)、
文字列「IF」を「WHEN(」に、「THEN」
を「)」に置き換えて最適化後プログラムソースコード
ファイル15に出力する(ステップ333)。
【0044】「END;」が読みだされるまで、そのま
ま最適化後プログラムソースコードファイル15に出力
する(ステップ334、335、336)。そして、
「END;」を出力する(ステップ337)。
ま最適化後プログラムソースコードファイル15に出力
する(ステップ334、335、336)。そして、
「END;」を出力する(ステップ337)。
【0045】続いて、「ELSE」と「DO;」の行を
削除し(ステップ338、339)、文字列が「IF」
であれば(ステップ340)、文字列「IF」を「WH
EN(」に、「THEN」を「)」に置き換えて最適化
後プログラムソースコードファイル15に出力し(ステ
ップ342)、「IF」でなければ、「OTHER」と
「DO;」を最適化後プログラムソースコードファイル
15に出力する(ステップ341)。そして、「EN
D;」までを最適化後プログラムソースコードファイル
15に出力し(ステップ343、344、345、34
6)、最後の「END;」を除いて(ステップ347、
348)、行数ファイルの最終行数になるまで、ステッ
プ338から348までの処理を繰返し、最適化後プロ
グラムソースコードファイル15にそのまま出力する
(ステップ349)。
削除し(ステップ338、339)、文字列が「IF」
であれば(ステップ340)、文字列「IF」を「WH
EN(」に、「THEN」を「)」に置き換えて最適化
後プログラムソースコードファイル15に出力し(ステ
ップ342)、「IF」でなければ、「OTHER」と
「DO;」を最適化後プログラムソースコードファイル
15に出力する(ステップ341)。そして、「EN
D;」までを最適化後プログラムソースコードファイル
15に出力し(ステップ343、344、345、34
6)、最後の「END;」を除いて(ステップ347、
348)、行数ファイルの最終行数になるまで、ステッ
プ338から348までの処理を繰返し、最適化後プロ
グラムソースコードファイル15にそのまま出力する
(ステップ349)。
【0046】ステップ327からステップ349までの
処理を、プログラムソースコードファイルの終わりまで
繰り返す(ステップ350)。行数ファイルにデータが
なくなったら、プログラムソースコードをそのまま最適
化後プログラムソースコードファイル15に出力する。
処理を、プログラムソースコードファイルの終わりまで
繰り返す(ステップ350)。行数ファイルにデータが
なくなったら、プログラムソースコードをそのまま最適
化後プログラムソースコードファイル15に出力する。
【0047】以上で説明した処理によって、図4(a)
のIF文群を、図4(b)のSELECT文に変換して
最適化することができる。すなわち、IF文が多重構造
になっている場合は、SELECT文に変換することに
よって、より単純な構造に変換され、分かり易いプログ
ラムロジックにすることができる。
のIF文群を、図4(b)のSELECT文に変換して
最適化することができる。すなわち、IF文が多重構造
になっている場合は、SELECT文に変換することに
よって、より単純な構造に変換され、分かり易いプログ
ラムロジックにすることができる。
【0048】このように、本実施例では、プログラムソ
ースコードを文字列として処理し、最適化可能な文字列
のパターンに合致したIF文群を、IFのAND、IF
のORあるいはSELECT文に変換することにより、
最適化が行われる。なお、上記した実施例は、PL/I
言語を用いた場合のものであるが、本実施例は、該言語
に限定されるものではなく、他の言語を用いた場合にも
容易に適用することができる。
ースコードを文字列として処理し、最適化可能な文字列
のパターンに合致したIF文群を、IFのAND、IF
のORあるいはSELECT文に変換することにより、
最適化が行われる。なお、上記した実施例は、PL/I
言語を用いた場合のものであるが、本実施例は、該言語
に限定されるものではなく、他の言語を用いた場合にも
容易に適用することができる。
【0049】
【発明の効果】以上、説明したように、本発明によれ
ば、IF文を検索する手段と、複数のIF文をIFのA
ND条件、OR条件に変換する手段と、WHEN−DO
形式に変換する手段とを設けているので、複雑な構造の
プログラムソースコードをより簡単な構造で、読みやす
いプログラムソースコードに自動的に変換することがで
き、プログラムソースコードの解析、修正作業をより一
層容易に行うことが可能となる。
ば、IF文を検索する手段と、複数のIF文をIFのA
ND条件、OR条件に変換する手段と、WHEN−DO
形式に変換する手段とを設けているので、複雑な構造の
プログラムソースコードをより簡単な構造で、読みやす
いプログラムソースコードに自動的に変換することがで
き、プログラムソースコードの解析、修正作業をより一
層容易に行うことが可能となる。
【図1】本発明の実施例の機能ブロック図である。
【図2】(a)は、本実施例のAND変換の最適化処理
を行う前のプログラムソースコードを示す図である。
(b)は、本実施例のAND変換の最適化処理を行った
プログラムソースコードを示す図である。(c)は、最
適化前のフローチャートである。(d)は、最適化後の
フローチャートである。
を行う前のプログラムソースコードを示す図である。
(b)は、本実施例のAND変換の最適化処理を行った
プログラムソースコードを示す図である。(c)は、最
適化前のフローチャートである。(d)は、最適化後の
フローチャートである。
【図3】(a)は、本実施例のOR変換の最適化処理を
行う前のプログラムソースコードを示す図である。
(b)は、本実施例のOR変換の最適化処理を行ったプ
ログラムソースコードを示す図である。(c)は、最適
化前のフローチャートである。(d)は、最適化後のフ
ローチャートである。
行う前のプログラムソースコードを示す図である。
(b)は、本実施例のOR変換の最適化処理を行ったプ
ログラムソースコードを示す図である。(c)は、最適
化前のフローチャートである。(d)は、最適化後のフ
ローチャートである。
【図4】(a)は、本実施例のSELECT変換の最適
化処理を行う前のプログラムソースコードを示す図であ
る。(b)は、本実施例のSELECT変換の最適化処
理を行ったプログラムソースコードを示す図である。
(c)は、最適化前のフローチャートである。(d)
は、最適化後のフローチャートである。
化処理を行う前のプログラムソースコードを示す図であ
る。(b)は、本実施例のSELECT変換の最適化処
理を行ったプログラムソースコードを示す図である。
(c)は、最適化前のフローチャートである。(d)
は、最適化後のフローチャートである。
【図5】AND変換部の処理フローチャートである。
【図6】図5の続きのフローチャートである。
【図7】図5の続きのフローチャートである。
【図8】図5の続きのフローチャートである。
【図9】OR変換部の処理フローチャートである。
【図10】図9の続きのフローチャートである。
【図11】図9の続きのフローチャートである。
【図12】図9の続きのフローチャートである。
【図13】SELECT変換部の処理フローチャートで
ある。
ある。
【図14】図13の続きのフローチャートである。
【図15】図13の続きのフローチャートである。
【図16】図13の続きのフローチャートである。
11 プログラムソースコード格納ファイル 12 最適化処理部 121 AND変換部 122 OR変換部 123 SELECT変換部 13 AND変換最適化処理後のプログラムソースコー
ド格納ファイル 14 OR変換最適化処理後のプログラムソースコード
格納ファイル 15 最適化処理後のプログラムソースコード格納ファ
イル
ド格納ファイル 14 OR変換最適化処理後のプログラムソースコード
格納ファイル 15 最適化処理後のプログラムソースコード格納ファ
イル
Claims (1)
- 【請求項1】 プログラムソースコードの最適化方式に
おいて、入力されたプログラムソースコードからIF文
を検索する手段と、該検索された複数のIF文を、IF
(AND条件)THEN形式に変換する手段と、IF
(OR条件)THEN形式に変換する手段と、複数のW
HEN−DO形式に変換する手段を備えたことを特徴と
するプログラムソースコードの最適化方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35387391A JPH05165616A (ja) | 1991-12-18 | 1991-12-18 | プログラムソースコードの最適化方式 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP35387391A JPH05165616A (ja) | 1991-12-18 | 1991-12-18 | プログラムソースコードの最適化方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH05165616A true JPH05165616A (ja) | 1993-07-02 |
Family
ID=18433801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP35387391A Pending JPH05165616A (ja) | 1991-12-18 | 1991-12-18 | プログラムソースコードの最適化方式 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH05165616A (ja) |
-
1991
- 1991-12-18 JP JP35387391A patent/JPH05165616A/ja active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6965856B1 (en) | Process for the automatic generation of a textual expression from a semantic representation using a computer system | |
JP3251203B2 (ja) | Jclプログラム変換装置、jclプログラム変換方法、および、記録媒体 | |
JPH05165616A (ja) | プログラムソースコードの最適化方式 | |
JPH0652222A (ja) | 情報検索処理装置 | |
JP2967275B2 (ja) | 仮名漢字変換装置 | |
JPH05135102A (ja) | 文書検索方式 | |
JPH0752450B2 (ja) | 辞書デ−タ検索装置 | |
US5241623A (en) | Method and system for delineation of structure and linkages between knowledge base modules | |
JP3087699B2 (ja) | 定型情報簡易入力システム及び定型情報簡易入力方法 | |
JPH1021192A (ja) | 操作抽出方式およびマクロ作成方式 | |
JP2722684B2 (ja) | ファイルシステムの検索装置 | |
JPH1115845A (ja) | 情報検索方法および装置と情報検索プログラムを格納した記録媒体 | |
JP2835065B2 (ja) | 文字列検索方法 | |
JP2847985B2 (ja) | かな漢字変換装置における文節区切り学習情報検索方式 | |
JP3353769B2 (ja) | 文字認識装置、文字認識方法、文字認識プログラム記録媒体 | |
JPH0540638A (ja) | 語彙解析編集方式 | |
JPH09330322A (ja) | データ検索装置 | |
JPH04236630A (ja) | 知識ベース編集装置 | |
JPH0452967A (ja) | 集合ファイルに対する論理積演算処理方式 | |
JPH02219176A (ja) | 文字列検索方式 | |
JPH05313971A (ja) | リレーショナル・データベースにおけるキーワード管理方式 | |
JPH1097542A (ja) | 全文検索装置及び全文検索方法 | |
JPH1063675A (ja) | データ探索方法及びそれを適用したデータ探索装置 | |
JPH01297768A (ja) | 文書処理装置 | |
JPS62298869A (ja) | 文尾変換方式 |