(57)【要約】【課題】ソースコード中にif文やswitch文等を用いた分岐ルールと処理ロジックとを混在させることなく、所望の分岐条件に基づいてコンピュータの処理を複数に振り分け可能であり、分岐ルールの一元管理も可能なシステムの実現。【解決手段】分岐条件となる複数の値と、分岐後に実行されるべき処理との対応関係が定義されたプロセスマップ16と、分岐条件x,y,zが入力された場合にプロセスマップ16を参照し、具体的な処理を特定する処理内容決定部12と、特定された処理を実行する処理実行部14とを備えたプログラム実行システム10。【選択図】図１
2008041000.tif 000002
【特許請求の範囲】
【請求項１】
分岐条件となる複数の値と、分岐後に実行されるべき処理との対応関係が定義されたプロセスマップと、
分岐条件が入力された場合に、上記プロセスマップを参照し、具体的な処理を特定する処理決定手段と、
特定された処理を実行する手段と、
を備えたことを特徴とするプログラム実行システム。
【請求項２】
上記プロセスマップには、それぞれ複数の値の配列よりなる分岐条件と、分岐後に実行されるべき処理との対応関係が複数組定義されており、
上記の処理決定手段は、分岐条件として複数の値が連続して入力された場合に、各値の配列と上記プロセスマップに記述された分岐条件と比較することにより、実行すべき処理を特定することを特徴とする請求項１に記載のプログラム実行システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はプログラム実行システムに係り、特に、分岐処理のためのif文やswitch文を用いることなく、必要な分岐処理を実行可能なシステムに関する。
【背景技術】
【０００２】
これまで、コンピュータに複雑な分岐処理を実行させるためには、いわゆるif文やelse if文、switch文を用いてソースコードを記述する必要があった。
図６はその一例を示すものであり、以下の分岐処理が規定されている。
(1) 分岐条件であるx,y,zの値がそれぞれ1,20,100である場合には、αの入力に対してprocessAの処理を実行し、その処理結果であるβの値が０よりも大きい場合には、βを入力としてprocessAAの処理を実行し、γを出力する。
(2) 分岐条件であるx,y,zの中、x,yの値がそれぞれ1,30である場合には、zの値を問わずαの入力に対してprocessBの処理を実行し、その処理結果であるβの値が０よりも大きい場合には、βを入力としてprocessBBの処理を実行し、γを出力する。
(3) 上記以外の場合には、αの入力に対してprocessXの処理を実行し、その処理結果であるβの値が０よりも大きい場合には、βを入力としてprocessXXの処理を実行し、γを出力する。
【非特許文献１】C#によるプログラム入門／条件分岐  ［平成１８年７月１５日検索］  インターネットURL:http://ufcpp.net/study/csharp/st_branch.html
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のようにif文等を用いることにより、分岐条件に応じてコンピュータの処理を切り替えることが可能となる利点があるが、その一方で同じプログラム中に分岐のルールと処理ロジックが混在する結果となるため、分岐条件が上記x,y,zのように複数の値の組み合わせで与えられる場合（複合条件）や、分岐の包含関係が繰り返されてネスト構造が深化する場合などにはプログラムの動作を把握することが困難となり、プログラムの保守作業の非効率化やプログラムの品質低下の要因ともなっていた。
【０００４】
この発明は、コンピュータの分岐処理に纏わる従来の上記問題を解決するために案出されたものであり、ソースコード中にif文やswitch文等を用いた分岐ルールと処理ロジックを混在させることなく、所望の分岐条件に基づいてコンピュータの処理を複数に振り分け可能なシステムを実現することを目的としている。
【課題を解決するための手段】
【０００５】
上記の目的を達成するため、請求項１に記載したプログラム実行システムは、  分岐条件となる複数の値と、分岐後に実行されるべき処理との対応関係が定義されたプロセスマップと、分岐条件が入力された場合に、上記プロセスマップを参照し、具体的な処理を特定する処理決定手段と、特定された処理を実行する手段とを備えたことを特徴としている。
【０００６】
請求項２に記載したプログラム実行システムは、請求項１のシステムであって、さらに、上記プロセスマップにはそれぞれ複数の値の配列よりなる分岐条件と分岐後に実行されるべき処理との対応関係が複数組定義されており、上記の処理決定手段が、分岐条件として複数の値が連続して入力された場合に、各値の配列と上記プロセスマップに記述された分岐条件と比較することにより、実行すべき処理を特定することを特徴としている。
【発明の効果】
【０００７】
請求項１に記載したプログラム実行システムにあっては、複数の分岐条件と分岐後の処理内容との対応関係がプロセスマップにまとめて記述されており、処理決定手段が入力された分岐条件をこのプロセスマップに当てはめて分岐後の処理内容を特定し、この結果に基づいて具体的処理が実行される仕組みを備えている。
この結果、処理ロジックと分岐ルールを、ソースコードの段階で明確に分離できるようになり、従来のようにソースコード中に処理ロジックとif文やswitch文からなる分岐ルールを混在させる場合に比べ、分岐ルールの把握が容易となり、保守作業の効率化や品質の維持・向上が可能となる。
【０００８】
請求項２に記載したプログラム実行システムにあっては、分岐条件が複数の値の組合せとして与えられる場合であっても、予めプロセスマップに各組合せと特定処理との対応関係を規定しておけば処理決定手段によって目的の処理が特定されるため、より複雑な制御が可能となる。
【発明を実施するための最良の形態】
【０００９】
図１は、この発明に係るプログラム実行システム10の機能構成を示すブロック図であり、処理内容決定部12と、処理実行部14と、分岐ルールを記述したプロセスマップ16とを備えている。
上記の処理内容決定部12は、コンピュータのCPUが、専用のプログラムに従って必要な処理を実行することによって実現される。
また、処理実行部14は、コンピュータのCPUが、専用のプログラムに従って必要な処理を実行することによって実現される。
上記プロセスマップ16は、コンピュータのハードディスクに格納されている。
【００１０】
図２の(a)は、このシステム10全体の処理の流れを制御するシナリオプログラムの一例を示すものであり、以下の処理ロジックが規定されている。
(1) 分岐条件の配列を管理するための「ObjectArray」を初期化する。
(2) プロセスマップを取得する。
(3) 入力αに基づいてメインプロセスを実行し、βを出力する。
(4) βが０より大きい場合には、入力βに基づいてオプションプロセスを実行し、γを出力する。
【００１１】
図３は、分岐ルールの一例を示すテーブルであり、分岐条件がＸ（１または２）、Ｙ（20、30または50）、Ｚ（０、50または100）の３つの値の組み合わせで与えられる場合に、実行されるべき処理の内容が「結論」として規定されている。
ここで例えば、「Ｘ＝１、Ｙ＝20、Ｚ＝100」の複合条件が与えられた場合、コンピュータは「ProcessA、ProcessAA」の処理を実行すべきこととなる。
【００１２】
図２の(b)は、上記のプロセスマップ16のコーディング例を示すものであり、図３に示した分岐ルールを反映させた記述となっている。
例えば、分岐条件として（1,20,100）の配列が与えられた場合、ProcessA_AAが特定されることが規定されている。
また、分岐条件として（1,30,0）、（1,30,50）、（1,30,100）の各配列が与えられた場合、ProcessB_BBが特定されることが規定されている。
さらに、分岐条件として上記以外の配列が与えられた場合にはdefaultProcess、すなわちProcessX_XXが特定されることが規定されている。
【００１３】
図４は、処理実行部14を実現するための処理プログラムの一例を示すものであり、(d-1)はProcessA_AAに、(d-2)はProcessB_BBに、(d-3)はProcessX_XXにそれぞれ対応している。
また、図２の(c)はjava言語特有のインターフェイスを示しており、シナリオプログラム18において抽象的に記述されたメインプロセス及びオプションプロセスを、具体的なProcessA_AA、ProcessB_BB、ProcessX_XXに繋げる役割を果たしている。
【００１４】
以下、図５のフローチャートに従い、このシステム10の処理手順を説明する。
まず事前に、シナリオプログラム及びプロセスマップ16がメモリにロードされると共に、処理内容決定部12及び処理実行部14の領域がメモリ上に確保される（Ｓ10〜Ｓ14）。このＳ10〜Ｓ14の処理が一旦実行された後は、その状態がメモリ上にキャッシュされるため、以下の処理が繰り返される度に再実行される必要はない。
つぎに、シナリオプログラムが実行されると（Ｓ16）、上記処理内容決定部12をメモリから取り出す（Ｓ18）。この際、生成済のプロセスマップ16もメモリから同時に取り出される（Ｓ20）。
つぎに、キーボード等の入力装置を介して分岐条件x,y,zが入力されると（Ｓ22）、「ObjectArray」の領域がメモリ上に確保され、上記の条件値が代入される（Ｓ24）。
つぎに処理内容決定部12は、ObjectArrayに格納された条件値をプロセスマップ16に記述された分岐ルールに当てはめ、実行すべき処理プログラムを特定する（Ｓ26）。
ここで例えば、「1,20,100」が分岐条件として与えられると、処理内容決定部12はProcessA_AAを処理内容として特定する。この際、上記ObjectArray内においては、x,y,zそれぞれの配列における順序が保持されているため、処理内容決定部12は「1,20,100」を「X=1, Y=20, Z=100」と正しく認識することができる。
【００１５】
以上の結果、図４(d-1)の処理プログラムに対応した処理実行部14がメモリから取り出され（Ｓ28）、必要な処理を実行する。具体的には、コンピュータのキーボードから入力されたαに基づいてメイン処理（ProcessA）を実行し、βを出力する（Ｓ30）。
つぎにシナリオプログラムは、このβが０よりも大きいか否かを判定し（Ｓ32）、Noの場合にはそのままβを処理結果として外部に出力させる（Ｓ34）。
これに対しYesの場合、シナリオプログラムはβを入力値として処理実行部14に与えてオプション処理（ProcessAA）を実行させ、最終的な処理結果であるγを外部に出力させる（Ｓ36）。
【００１６】
上記のように、このシステム10によれば、分岐ルールがプロセスマップ16にまとめて規定され、処理ロジックを規定するシナリオプログラム及び処理プログラムと分離されているため、if文やswitch文を用いて処理ロジックと分岐ルールとを混在させる場合に比べてソースコードの記述が簡素化される。この結果、プログラム全体の動作を正確に把握することが可能となり、保守作業の容易化が実現でき、改修に際してプログラムの品質が低下することを防止できる。
【図面の簡単な説明】
【００１７】
【図１】この発明に係るプログラム実行システムの機能構成図である。
【図２】シナリオプログラム、プロセスマップ、インターフェイスの一例を示す説明図である。
【図３】プロセスマップの元になる分岐ルールの一例を示すテーブルである。
【図４】分岐後に実行される処理プログラムの一例を示する説明図である。
【図５】このシステムの処理手順を示すフローチャートである。
【図６】従来のソースコードの一例を示す説明図である。
【符号の説明】
【００１８】
10 プログラム実行システム
12 処理内容決定部
14 処理実行部
16 プロセスマップ
x,y,z 分岐条件
α 入力
β 出力／入力
γ 出力
【図１】
2008041000.tif 000003
【図２】
2008041000.tif 000004
【図３】
2008041000.tif 000005
【図４】
2008041000.tif 000006
【図５】
2008041000.tif 000007
【図６】
2008041000.tif 000008