(57)【要約】      （修正有）【課題】ソースコード中にif文等を用いることなく、所定の分岐条件に基づいてコンピュータの処理を複数に振り分ける。【解決手段】分岐条件と分岐後に実行されるべき処理との対応関係が定義された分岐ルールコードと、分岐条件が与えられた場合に分岐ルールコードに従って処理内容を特定する処理内容決定部と、特定された処理を実行する処理実行部を備えたプログラム実行システムであって、分岐ルールコードには、各要素毎にその値によって２方向に振り分ける分岐部が設けられ、各分岐部には２つの設定値が記述され、各設定値には(1)次の要素に係る特定の分岐部、(2)具体的な処理の何れか一方が関連付けられ、処理内容決定部が、分岐条件値を分岐部に対して要素の配列順に適用し、ある分岐条件値が(1)に関連付けられた設定値に該当する場合には対応の分岐部に次の分岐条件値を適用し、 (2)に関連付けられた設定値に該当する場合には対応の処理を特定する。【選択図】図１
2008140288.tif 000002
【特許請求の範囲】
【請求項１】
複数の値の配列よりなる分岐条件と、分岐後に実行されるべき処理との対応関係が定義された分岐ルールコードと、
分岐条件が与えられた場合に、上記分岐ルールコードに従って処理内容を特定する処理決定手段と、
特定された処理を実行する処理実行手段とを備えたプログラム実行システムであって、
上記分岐ルールコードには、分岐条件値の配列を構成する各要素毎に、その値によって分岐先を２方向に振り分ける分岐部が設けられており、
各分岐部には、２つの設定値が記述されており、
各設定値には、(1)次の要素に係る特定の分岐部、(2)具体的な処理、の何れか一方が関連付けられており、
上記処理決定手段は、与えられた分岐条件値を上記分岐ルールコードの分岐部に対して要素の配列順に適用し、ある分岐条件値が(1)に関連付けられた設定値に該当する場合には対応の分岐部に次の分岐条件値を適用し、 (2)に関連付けられた設定値に該当する場合には対応の処理を特定することを特徴とするプログラム実行システム。
【請求項２】
入力される状態値と出力すべき分岐条件値との関係が複数規定された分岐条件値生成コードと、
入力された複数の状態値を上記の分岐条件値生成コードに適用し、その結果を分岐条件値の配列として出力する分岐条件値生成手段とを備え、
上記分岐条件値生成コードには、少なくとも一つの評価式が記述されており、
上記分岐条件値生成手段は、入力された特定の状態値を上記の評価式に代入し、その結果をブーリアンのtrueまたはfalseで返す処理を実行し、
上記分岐ルールコードの何れかの分岐部には、設定値としてブーリアンのtrue及びfalseが記述されていることを特徴とする請求項１に記載のプログラム実行システム。
【請求項３】
上記分岐ルールコードにおける特定の分岐部において、次の要素に係る特定の分岐部または具体的な処理と関連付けられた２つの設定値を記述する代わりに、必要な定義がなされた他の分岐部を特定するコードが記述されていることを特徴とする請求項１または２に記載のプログラム実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はプログラム実行システムに係り、特に、分岐処理のためのif文やswitch文等を用いることなく、必要な分岐処理を実行可能なシステムに関する。
【背景技術】
【０００２】
これまで、コンピュータに複雑な分岐処理を実行させるためには、いわゆるif文やelse if文、switch文等の分岐制御文を用いてソースコードを記述する必要があった。
【非特許文献１】C#によるプログラム入門／条件分岐  ［平成１８年７月１５日検索］  インターネットURL:http://ufcpp.net/study/csharp/st_branch.html
【０００３】
図８はその一例を示すものであり、以下の分岐処理が規定されている。
(1) ページオブジェクトが存在しない場合には、「disable（無効）」の処理を実行する。
(2) ページオブジェクトが存在し、ページのサイズが０行であれば、「enableNew（新規入力可）」の処理を実行する。
(3) ページオブジェクトが存在し、ページのサイズが10行で、ページサイズとリストサイズが等しい場合には、「enableLine（次行挿入可）」の処理を実行する。
(4) ページがオブジェクト存在し、ページのサイズが10行で、ページサイズとリストサイズが等しくなく、ページサイズよりもリストサイズの方が大きい場合には、「enableNext（次頁移動可）」の処理を実行する。
(5) ページオブジェクトが存在し、ページのサイズが10行で、ページサイズとリストサイズが等しくなく、ページサイズよりもリストサイズの方が小さい場合には、「exception（例外）」の処理を実行する。
【０００４】
このソースコードは、次のような画面制御に係るプログラムである。
すなわち、図９に示すように、端末装置の画面50上に設けられたテキスト入力欄52に文字列を入力するに際し、テキスト入力欄52に表示可能な行数範囲（ここでは最大10行）をページ（page）と称し、入力された文書全体の行数範囲をリスト（list）と称する。
【０００５】
ここで、何らかの理由により、端末装置上にページオブジェクトそのものが存在しない場合、端末装置は上記の(1)に従い「disable（無効）」の処理、例えば画面50上のテキスト入力欄52をグレー表示化し、テキストの入力を拒絶する。
【０００６】
これに対し、ページオブジェクトが存在し、ページサイズ（行数）が０の場合、端末装置は上記の(2)に従い「enableNew（新規入力可）」の処理、例えばテキスト入力欄52を活性化し、新規入力を受け付ける。
【０００７】
また、ページサイズが10行に達した段階で、ページサイズとリストサイズが等しい場合、端末装置は上記の(3)に従い「enableLine（次行挿入可）」の処理、例えばテキスト入力欄52の右横に設けられた次行挿入ボタン54を活性化し、次行の入力を受け付ける。
【０００８】
さらに、ページサイズが10行で、ページサイズよりもリストサイズが大きい場合、端末装置は上記の(4)に従い「enableNext（次頁移動可）」の処理、例えばテキスト入力欄の右横に設けられた次頁移動ボタン56を活性化し、次頁の表示を可能となす。
【０００９】
これに対し、ページサイズが10行で、ページサイズよりもリストサイズが小さい場合、端末装置は上記の(5)に従い「exception（例外）」の処理、例えば画面上にエラーメッセージを表示する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
上記のようにif文やif else文等を用いることにより、分岐条件に応じてコンピュータの処理を切り替えることが可能となる利点があるが、その一方で分岐条件が上記のように複数の状態の組み合わせで与えられる場合や、分岐の包含関係が繰り返されてネスト構造が深化する場合などには、分岐構造の全体像を把握することが困難となり、プログラムの保守作業の非効率化やプログラムの品質低下の要因となっていた。また、大規模システムにおいては、同一の分岐ルールが複数の箇所で繰り返されることがあるが、これまでは当該分岐ルールをそれぞれの箇所に重複して記述せざるを得ず、既存プログラムの再利用を図れないという問題があった。
【００１１】
この発明は、コンピュータの分岐処理に纏わる従来の上記問題を解決するために案出されたものであり、ソースコード中にif文等の分岐制御文を用いることなく、所定の分岐条件に基づいてコンピュータの処理を複数に振り分け可能であり、既存プログラムの再利用性を高めることも可能なシステムの実現を目的としている。
【課題を解決するための手段】
【００１２】
上記の目的を達成するため、請求項１に記載したプログラム実行システムは、複数の値の配列よりなる分岐条件と、分岐後に実行されるべき処理との対応関係が定義された分岐ルールコードと、分岐条件が与えられた場合に、上記分岐ルールコードに従って処理内容を特定する処理決定手段と、特定された処理を実行する処理実行手段とを備えたプログラム実行システムであって、上記分岐ルールコードには、分岐条件値の配列を構成する各要素毎に、その値によって分岐先を２方向に振り分ける分岐部が設けられており、各分岐部には、２つの設定値が記述されており、各設定値には、(1)次の要素に係る特定の分岐部、(2)具体的な処理、の何れか一方が関連付けられており、上記処理決定手段は、与えられた分岐条件値を上記分岐ルールコードの分岐部に対して要素の配列順に適用し、ある分岐条件値が(1)に関連付けられた設定値に該当する場合には対応の分岐部に次の分岐条件値を適用し、 (2)に関連付けられた設定値に該当する場合には対応の処理を特定することを特徴としている。
【００１３】
請求項２に記載したプログラム実行システムは、請求項１のシステムであって、さらに、入力される状態値と出力すべき分岐条件値との関係が複数規定された分岐条件値生成コードと、入力された複数の状態値を上記の分岐条件値生成コードに適用し、その結果を分岐条件値の配列として出力する分岐条件値生成手段とを備え、上記分岐条件値生成コードには少なくとも一つの評価式（等号式／不等号式）が記述されており、上記分岐条件値生成手段は、入力された特定の状態値を上記の評価式に代入し、その結果をブーリアンのtrueまたはfalseで返す処理を実行し、上記分岐ルールコードの何れかの分岐部には、設定値としてブーリアンのtrue及びfalseが記述されていることを特徴としている。
【００１４】
請求項３に記載したプログラム実行システムは、請求項１または２のシステムであって、さらに上記分岐ルールコードにおける特定の分岐部において、次の要素に係る特定の分岐部または具体的な処理と関連付けられた２つの設定値を定義する代わりに、必要な定義がなされた他の分岐部を特定するコードが記述されていることを特徴としている。
【発明の効果】
【００１５】
請求項１に記載したプログラム実行システムにあっては、分岐ルールコード中に複数の分岐部が設けられ、処理決定手段が各分岐部に記述された２つの設定値と与えられた分岐条件値とを比較して具体的な処理または次の分岐条件値の判定を振り分ける仕組みを備えているため、従来のようにif文やelse if文、switch文をコーディングすることなく、コンピュータの処理を２方向に分岐させることが可能となる。この結果、分岐ルールコード中の各分岐部の記述に着目することにより、分岐ルールの全体構造を容易に把握可能となり、プログラムの保守性を著しく向上させることができる。
【００１６】
請求項２に記載したプログラム実行システムにあっては、分岐条件値生成コードに２以上の状態値を比較する評価式（等号式、不等号式）を記述しておき、分岐ルールコードの分岐部にブーリアンのtrue及びfalseを記述しておくことにより、処理決定手段は評価式の判定結果に基づいて処理内容を２方向に分岐させることが可能となり、より高度な分岐処理を容易に実現できるようになる。
【００１７】
請求項３に記載したプログラム実行システムによれば、分岐ルールコード上に新たな分岐部の定義を記述する代わりに、同様の定義がなされた既存の分岐部を引用することが可能となり、分岐ルールコードの作成を容易化することができる。
【発明を実施するための最良の形態】
【００１８】
図１は、この発明に係るプログラム実行システム10の機能構成を示すブロック図であり、処理内容決定部12と、分岐条件値生成コード14と、分岐ルールコード16と、処理実行部18と、キーボードやマウス等の入力装置20と、表示装置22とを備えている。
【００１９】
上記の処理内容決定部12及び処理実行部18は、コンピュータ（PC等）のCPUが、専用のプログラムに従って必要な処理を実行することによって実現される。この処理内容決定部12は、後述の通り、分岐条件値生成手段及び処理内容決定手段としての役割を果たすものである。
上記分岐条件値生成コード14及び分岐ルールコード16は、同コンピュータのハードディスクに格納されている。
上記処理実行部18は、図９に示したように、表示装置22上にテキスト入力欄を備えた画面50を表示させると共に、入力装置20を通じた入力動作を受け付け、それに対応した表示を画面50上に反映させる機能を果たす。また、処理内容決定部12からの指令に従い、ボタン54,56の表示／非表示等の制御を実行する。
【００２０】
図２は、分岐条件値生成コードの一例を示すものであり、以下の４つの値を分岐条件値として抽出すべきことが規定されている。
(1) ページオブジェクトの存在の有無（nullまたは"obj"）
(2) ページのサイズ（０〜10）
(3) 「ページサイズ＝リストサイズ」の評価式に対するブーリアン値（trueまたはfalse）
(4) 「ページサイズ＜リストサイズ」の評価式に対するブーリアン値（trueまたはfalse）
ただし、(1)がnullである場合、(2) 〜(4) に関しては以下の記述により、自動的にN/A（not applicable）の値が生成される。
「new DecisionTree.IConditionBuilder() {
public Object build() throws NullPointerException」
【００２１】
図３は、分岐ルールコード16の一例を示すものであり、上記の分岐条件値に対応する４つの分岐部が設けられている。
（第１の分岐部）
ここには、第１の分岐条件値がnullの場合、「disable（無効）」の処理を特定し、null以外の場合には、第２の分岐部において第２の分岐条件値について判断する旨が規定されている。
（第２の分岐部）
ここには、第２の分岐条件値が０の場合、「enableNew（新規入力可）」の処理を特定し、10の場合には、第３の分岐部において第３の分岐条件値について判断する旨が規定されている。
（第３の分岐部）
ここには、第３の分岐条件値がブーリアンのtrueの場合、「enableLine（次行挿入可）」の処理を特定し、falseの場合には、第４の分岐部において第４の分岐条件値について判断する旨が規定されている。
（第４の分岐部）
ここには、第４の分岐条件値がブーリアンのtrueの場合、「enableNext（次頁移動可）」の処理を特定し、falseの場合には「exception（例外）」の処理を特定する旨が規定されている。
【００２２】
上記のように、分岐ルールコード16の各分岐部においては、分岐条件値の配列を構成する各要素の値に応じて、二者択一式に分岐先を振り分ける分岐ルールが規定されている。図４は、この分岐ルールコード16に記述された分岐ルールを図示したものであり、第１の分岐部から第４の分岐部までが階層構造を形成していることを表している。
【００２３】
因みに、分岐ルールコード16における「DecisionTree」は、各分岐部を実現するためのプログラム部品を意味しており、最初の「DecisionTree root = new DecisionTree()」によって第１の分岐部が生成され、以降の各「new DecisionTree()」によって第２の分岐部、第３の分岐部、第４の分岐部がそれぞれ生成される。
このように、この分岐ルールコード16においては、「new DecisionTree」を各レベルにおいて再帰的に呼び出すことにより、図４に示した分岐ルールの木構造を生成することが規定されている。
【００２４】
以下、図５のフローチャートに従い、このシステム10の処理手順を説明する。
まず事前に、分岐条件値生成コード14及び分岐ルールコード16がメモリにロードされると共に、処理内容決定部12及び処理実行部18の領域がメモリ上に確保される（Ｓ10〜Ｓ14）。このＳ10〜Ｓ14の処理が一旦実行された後は、その状態がメモリ上にキャッシュされるため、以下の処理が繰り返される度に再実行される必要はない。
【００２５】
つぎに、処理実行部18、処理内容決定部12、分岐条件値生成コード14、分岐ルールコード16がメモリから取り出される（Ｓ16〜Ｓ22）。
ここで処理内容決定部12は、処理実行部18から画面50上における表示状態を示すデータ（状態値）を取得すると（Ｓ24）、「Object[]」の領域をメモリ上に確保し、分岐条件値生成コード14中の処理コード（(1)〜(4)の部分）を代入する（Ｓ26）。
つぎに処理内容決定部12は、上記の状態値を処理コードに当てはめて分岐条件値の配列を生成する（Ｓ28）。
【００２６】
つぎに処理内容決定部12は、Object[]に格納された分岐条件値の配列を分岐ルールコード16に記述された分岐ルールに当てはめて処理内容を特定し（Ｓ30）、処理実行部18に出力する。
これに対し処理実行部18は、対応の処理を実行する（Ｓ32）。
【００２７】
例えば、ページオブジェクトが存在しないことを示すデータを取得した場合、処理内容決定部12は「null, N/A, N/A, N/A」の分岐条件値を生成すると共に、これを分岐ルールコード16に記述された分岐ルールに当てはめて「disable」の処理内容を特定し、処理実行部18に出力する。
これを受けた処理実行部18は、テキスト入力欄をグレー表示化し、テキストの入力を拒絶する。
【００２８】
これに対し、ページオブジェクトが存在している場合、処理内容決定部12はオブジェクトが存在していること、現在のページサイズ、ページサイズがリストサイズと等しいか否か、ページサイズよりもリストサイズの方が大きいか否かを内容とする分岐条件、例えば「"obj", 0, true, false」からなる分岐条件値の配列を生成すると共に、これを分岐ルールコード16に当てはめて「enableNew」の処理内容を特定し、処理実行部18に出力する。
これを受けた処理実行部18は、テキスト入力欄を活性化させ、テキストの新規入力を許可する。
【００２９】
また、Ｓ28において「"obj", 10, true, true」からなる分岐条件値の配列が生成された場合、処理内容決定部12はこれを分岐ルールコード16に当てはめて「enableLine」の処理内容を特定し、処理実行部18に出力する。
これを受けた処理実行部18は、テキスト入力欄52の次行挿入ボタン54を活性化させ、次行入力を許可する。
【００３０】
また、Ｓ28において「"obj", 10, false, true」からなる分岐条件の配列が生成された場合、処理内容決定部12はこれを分岐ルールコード16に当てはめて「enableNext」の処理内容を特定し、処理実行部18に出力する。
これを受けた処理実行部18は、テキスト入力欄の次頁移動ボタン56を活性化させ、次頁表示を許可する。
【００３１】
さらに、Ｓ28において「"obj", 10, false, false」からなる分岐条件の配列が生成された場合、処理内容決定部12はこれを分岐ルールコード16に当てはめて「exception」の処理内容を特定し、処理実行部18に出力する。
これを受けた処理実行部18は、「例外処理」等のエラーメッセージを画面上に表示させ、プログラムを強制終了する。
【００３２】
上記のように、このプログラム実行システム10によれば、分岐ルールコード16に第１の分岐部〜第４の分岐部が設けられ、処理内容決定部12が分岐条件値の配列を各分岐部に記述された２つの設定値と比較して具体的な処理または次の分岐条件値の判定を振り分ける仕組みを備えているため、従来のようにif文やelse if文、switch文をコーディングすることなく、コンピュータの処理を２方向に分岐させることが可能となる。この結果、分岐ルールコード16中の各分岐部の記述に着目することにより、分岐ルールの全体構造を容易に把握可能となり、プログラムの保守性を著しく向上させることができる。
【００３３】
また、分岐条件値生成コード14に２以上の値を比較する評価式（等号式、不等号式）を記述しておき、分岐ルールコード16の分岐部にブーリアンのtrueまたはfalseを記述しておくことにより、処理内容決定部12は評価式の判定結果に基づいて処理内容を２方向に分岐させることが可能となり、より高度な分岐処理を容易に実現できるようになる。
【００３４】
つぎに、分岐ルールコード16に含まれる一部の分岐部を再利用する方法について説明する。
例えば、図６に示すように、分岐ルールコード16における第４の分岐部（分岐条件値がブーリアンのtrueの場合に「enableNext」を指定し、falseの場合に「exception」を指定するもの）と同じ機能を備えた分岐部σが、他の分岐ルールコード16中に既に存在している場合、図７に示すように、分岐ルールコード16中において分岐部σを示すコード「subTreeσ」を記述し、これを引用することにより、改めて第４の分岐部について定義する作業を省略することができる。
【図面の簡単な説明】
【００３５】
【図１】この発明に係るプログラム実行システムの機能構成を示すブロック図である。
【図２】分岐条件値生成コードの一例を示す説明図である。
【図３】分岐ルールコードの一例を示す説明図である。
【図４】分岐ルールの階層構造を示す説明図である。
【図５】このシステムの処理手順を示すフローチャートである。
【図６】既存の分岐部を再利用する例を示す説明図である。
【図７】既存の分岐部を再利用する場合の分岐ルールコードを示す説明図である。
【図８】従来のソースコードの一例を示す説明図である。
【図９】プログラム実行の具体例を示す概念図である。
【符号の説明】
【００３６】
10 プログラム実行システム
12 処理内容決定部
14 分岐条件値生成コード
16 分岐ルールコード
18 処理実行部
20 入力装置
22 表示装置
50 画面
52 テキスト入力欄
54 次行挿入ボタン
56 次頁移動ボタン
【図１】
2008140288.tif 000003
【図２】
2008140288.tif 000004
【図３】
2008140288.tif 000005
【図４】
2008140288.tif 000006
【図５】
2008140288.tif 000007
【図６】
2008140288.tif 000008
【図７】
2008140288.tif 000009
【図８】
2008140288.tif 000010
【図９】
2008140288.tif 000011