米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> 東芝テック株式会社

発明の名称 プログラミング支援プログラム
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−330714(P2003−330714A)
公開日 平成15年11月21日(2003.11.21)
出願番号 特願2002−142472(P2002−142472)
出願日 平成14年5月17日(2002.5.17)
代理人 【識別番号】100058479
【弁理士】
【氏名又は名称】鈴江 武彦 (外6名)
【テーマコード(参考)】
5B076
【Fターム(参考)】
5B076 DB04 DC01 DC09 
発明者 佐藤 祐子 / 村上 知隆 / 晝間 明男
要約 課題
プログラミング作業を初心者でも簡単にミスなく行えるようにする。

解決手段
ソースファイルの識別名となるメソッド名と、実行時の動作の違いによって区別されたスレッドタイプとの設定を促すGUI画面をコンピュータのディスプレイに表示させる。コンピュータは、GUI画面を介してメソッド名とスレッドタイプとが設定されると、設定されたスレッドタイプのソースコードテンプレートを読込んで1つのソースファイル3を作成し、このソースファイルのソースコードテンプレートに設定されたメソッド名を反映させるとともに、この設定されたメソッド名及びスレッドタイプを当該メソッド名で識別されるソースファイルのスレッド定義情報として定義ファイルに反映させる。
特許請求の範囲
【請求項1】 コンピュータ上において、スレッドの実行内容を示すソースコードを記述したソースファイルを少なくとも1つ作成するとともに、前記ソースファイルのスレッド実行条件等を定義するスレッド定義情報を記述した定義ファイルを作成し、前記ソースファイルと定義ファイルとをコンパイルしてオブジェクトプログラムを生成するプログラミングの支援プログラムであって、前記コンピュータに、前記ソースファイルの識別名となるメソッド名と、実行時の動作の違いによって区別されたスレッドタイプとの設定を促すGUI(Graphical User Interface)画面を表示させる機能と、前記GUI画面を介して前記メソッド名と前記スレッドタイプとが設定されると、設定されたスレッドタイプのソースコードテンプレートを読込んで1つのソースファイルを作成し、このソースファイルのソースコードテンプレートに設定されたメソッド名を反映させるとともに、この設定されたメソッド名及びスレッドタイプを当該メソッド名で識別されるソースファイルのスレッド定義情報として前記定義ファイルに反映させる機能と、を実現させることを特徴とするプログラミング支援プログラム。
【請求項2】 前記GUI画面から、設定されたメソッド名で識別されるソースファイルのスレッドに対して、同時に実行できるスレッドの最大数である同時実行数を設定可能とし、前記GUI画面を介して前記メソッド名及びスレッドタイプとともに前記同時実行数が設定されると、この同時実行数に関する情報を、同じく設定されたメソッド名及びスレッドタイプとともに前記定義ファイルに反映させることを特徴とする請求項1記載のプログラミング支援プログラム。
【請求項3】 前記GUI画面から、設定されたメソッド名で識別されるソースファイルのスレッドに対して、ビジーになった受信メッセージをキューに格納して順次実行させるメッセージキューイングを設定可能とし、前記GUI画面を介して前記メソッド名及びスレッドタイプとともに前記メッセージキューイングが設定されると、このメッセージキューイングに関する情報を、同じく設定されたメソッド名及びスレッドタイプとともに前記定義ファイルに反映させることを特徴とするプログラミング支援プログラム。
【請求項4】 前記GUI画面から、設定されたメソッド名で識別されるソースファイルのスレッドに対して、排他制御される他のスレッドを設定可能とし、前記GUI画面を介して前記メソッド名及びスレッドタイプとともに排他制御される他のスレッドが設定されると、この設定された他のスレッドに関する情報を、同じく設定されたメソッド名及びスレッドタイプとともに前記定義ファイルに反映させることを特徴とするプログラミング支援プログラム。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は、マルチスレッド対応のオブジェクトプログラムをコンピュータ上で効率よく開発できるように支援するプログラミング支援プログラムに関する。
【0002】
【従来の技術】スレッドと呼ばれる最小単位の処理を複数並行して実行することができるマルチスレッド対応のアプリケーションソフト,ユーティリティソフト等のオブジェクトプログラムをコンピュータ上で開発(プログラミング)するには、スレッドの実行内容を示すソースコードを記述したソースファイルをスレッド毎に作成するとともに、各ソースファイルのスレッド実行条件等を定義するスレッド定義情報を記述した定義ファイルを作成する必要がある。ソースファイルと定義ファイルとが誤りなく作成されると、所定のコンパイラを起動して当該ソースファイルと定義ファイルとをコンパイルすることによって、マルチスレッド対応のオブジェクトプログラムが生成される。
【0003】そこで従来は、プログラミング作業者がエディタと呼ばれるテキストファイル編集用のソフトウェアを利用してソースコードをテキストデータでコンピュータに入力することにより、ソースファイルと定義ファイルとをコンピュータ上に作成していた。このため、プログラミング作業者は、ソースコードの意味及び使い方を一つ一つ理解し、ソースファイル及び定義ファイルの適切な場所に該当するソースコードを記述して、ソースファイルと定義ファイルとを作り上げていた。
【0004】
【発明が解決しようとする課題】このように、プログラミング作業には、ソースコードの意味及び使い方を一つ一つ理解しなければならなかったので、プログラミング初心者がプログラムを作り上げるには、学習する時間も含めると多くの時間を要していた。また、ソースコードを入力する作業自体にも時間を要する上、入力ミスによってコンパイルできないこともあった。
【0005】本発明はこのような事情に基づいてなされたもので、その目的とするところは、プログラミング作業を初心者でも簡単にミスなく行うことができるプログラミング支援プログラムを提供しようとするものである。
【0006】
【課題を解決するための手段】本発明のプログラミング支援プログラムは、コンピュータに、ソースファイルの識別名となるメソッド名と、実行時の動作の違いによって区別されたスレッドタイプとの設定を促すGUI画面を表示させる機能と、GUI画面を介してメソッド名とスレッドタイプとが設定されると、設定されたスレッドタイプのソースコードテンプレートを読込んで1つのソースファイルを作成し、このソースファイルのソースコードテンプレートに設定されたメソッド名を反映させるとともに、この設定されたメソッド名及びスレッドタイプを当該メソッド名で識別されるソースファイルのスレッド定義情報として定義ファイルに反映させる機能とを実現させるものである。
【0007】本発明のプログラミング支援プログラムをコンピュータ上で起動すると、当該コンピュータのディスプレイにGUI画面が表示される。そこで、この画面を介してメソッド名とスレッドタイプとを設定すると、当該スレッドタイプのソースコードテンプレートを含むソースファイルが自動的に作成され、このソースコードテンプレートの所定場所に設定されたメソッド名が反映される。また、設定されたメソッド名及びスレッドタイプが当該メソッド名で識別されるソースファイルのスレッド定義情報として定義ファイルに反映される。
【0008】
【発明の実施の形態】以下、本発明の一実施の形態を図面を用いて説明する。なお、この実施の形態は、マルチスレッド対応のオブジェクトプログラムをコンピュータ上でプログラミングするのを支援するプログラミング支援プログラムに関するものである。因みに、1つのオブジェクトプログラムが並行して複数の処理を行うことをマルチスレッドと称し、1つ1つの処理単位をスレッドと称している。
【0009】はじめに、本実施の形態におけるプログラミングの概略について、図1を用いて説明する。同図において、符号1はプログラミングを行うコンピュータ,例えばパソコン,ワークステーション等を示している。プログラミングは、コンピュータ1上にソースプログラム2を作成する。ソースプログラム2は、スレッド毎にその実行内容を示すソースコードを記述したN(N≧1)個のソースファイル3と、各ソースファイル3のスレッド実行条件等を定義するスレッド定義情報を記述した定義ファイル4とからなる。ソースプログラム2が作成されると、このソースプログラム2のソースファイル3及び定義ファイル4の記述をコンパイラ言語とするコンパイラ5でソースプログラム2をコンパイル(翻訳)することによって、所期の目的であるオブジェクトプログラム6が生成される。
【0010】本実施の形態は、コンピュータ1上で動作し、ソースプログラム2の作成作業を簡易化するべく支援するプログラミング支援プログラム7にある。
【0011】図2は前記コンピュータ1の主要なハードウェア構成を示すブロック図である。コンピュータ1は、主制御部を構成するCPU(Central Processing Unit)11と、主記憶部を構成するROM(Read Only Memory)12及びRAM(Random Access Memory)13と、補助記憶装置を構成するHDD(Hard Disk Drive)装置14と、キーボードインタフェース15,マウスインタフェース16,ディスプレイインタフェース17、記憶媒体インタフェース18等の各種入出力インタフェースとから構成されている。CPU11と、ROM12,RAM13,HDD装置14及び各種入出力インタフェース15,16,17,18とは、アドレスバス,データバス等のバスライン19によって接続されている。
【0012】キーボードインタフェース15には、文字キー,数字キー,スペースキー,エンターキー,カーソルキー,ファンクションキー等が配設されたキーボード15aが接続される。ディスプレイインタフェース17には、液晶ディスプレイ,CRTディスプレイ等のディスプレイ装置17aが接続される。マウスインタフェース16には、ディスプレイ装置17aの画面上に表示されるポインタを移動させるポインティングデバイスとしてのマウス17aが接続される。記憶媒体インタフェース18には、フレキシブルディスク,CD−ROM等の記憶媒体19が接続される。
【0013】プログラミング支援プログラム7は記憶媒体19に記憶されており、記憶媒体インタフェース18を介してコンピュータに読取られ、HDD装置14にインストールされて使用される。なお、図示しないが、有線または無線の通信インタフェースを有するコンピュータ1に対しては、インターネット等の通信媒体を介してプログラミング支援プログラム7をHDD装置14にイントールすることによって、使用してもよい。
【0014】しかして、上記プログラミング支援プログラム7がインストールされたコンピュータ1においては、CPU11が図3乃至図11の流れ図に示す処理を実行するものとなっている。
【0015】すなわち、上記プログラミング支援プログラム7が起動されると、CPU11は図3に示すメイン処理を開始する。先ず、ST(ステップ)1としてディスプレイインタフェース17に接続されているディスプレイ装置17aに、GUI(Graphical User Interface)を利用してスレッド作成画面を表示させる。
【0016】スレッド作成画面の一例を図13に示す。このスレッド作成画面30には、メソッドエリア31,スレッドタイプエリア32,スレッドプールエリア33,キューエリア34,排他テーブルエリア35及びスレッド同時実行数エリア36が割り当てられているとともに、OKボタン37とキャンセルボタン38とが配置されている。
【0017】メソッドエリア31には、前記ソースファイル3の識別名となるメソッド名,クラス名及びソースファイル名の表示欄31a,31b,31cが形成されている。そして、画面上のポインタでメソッド名表示欄31aを指定することにより、任意のメソッド名をキー入力できる。また、クラス名表示欄31bを指定することにより、任意のクラス名をキー入力できる。
【0018】スレッドタイプエリア32には、実行時の動作の違いによって区別された3種類のスレッドタイプ(「ダイナミック」,「レジデンス」,「シングルトン」)の選択子32a,32b,32cが形成されており、いずれかの選択子32a,32b,32cを指定することにより、対応するスレッドタイプが設定される。因みに、スレッドタイプ「ダイナミック」は非常駐のスレッドであり、処理要求メッセージを受信すると、動的にスレッドを生成して処理を実行させるものである。スレッドタイプ「レジデンス」は常駐のスレッドであり、プロセス起動時に全てのスレッドをメモリにマッピング(生成/初期化)しておき、処理要求メッセージに応じて業務ロジック部を実行させるものである。スレッドタイプ「シングルトン」は常駐のスレッドであり、常駐させる単一のインスタンスのスレッドを継続して実行させるものである。
【0019】スレッドプールエリア33には、メソッドエリア31のソースファイル名表示欄31cに表示されているソースファイル名が付されたソースファイルのスレッドに対してスレッドプール管理を使用するか否かを選択するための選択子33a,33bが形成されている。スレッドタイプが「ダイナミック」のスレッドに対してスレッドプール管理を使用するか否かを選択可能であり、「レジデンス」のスレッドに対してはスレッドプール管理を必ず使用し、「シングルトン」のスレッドに対してはスレッドプール管理を使用しない。
【0020】キューエリア34には、同スレッドに対して、ビジーになった受信メッセージ(処理要求)をキューに格納して順次実行させるメッセージキューイングを使用するか否かを選択するための選択子34a,34bが形成されている。また、キューの名称がプルダウン表示される表示欄34cと、キューの作成を指令するキュー作成ボタン34dとが形成されている。スレッドタイプが「ダイナミック」または「レジデンス」のスレッドに対してメッセージキューイングを使用するか否かを選択可能であり、「シングルトン」のスレッド対してはメッセージキューイングを使用しない。
【0021】排他テーブルエリア35には、同スレッドに対して、排他制御を行うか否かを選択するための選択子35a,35bが表示されている。また、排他制御を行うスレッド名が登録される排他テーブルの名称がプルダウン表示される表示欄35cと、排他テーブルの作成を指令するテーブル作成ボタン35dとが形成されている。スレッドタイプが「ダイナミック」または「レジデンス」のスレッドに対して排他制御を行うか否かを選択可能であり、「シングルトン」のスレッドに対しては排他制御を行わない。
【0022】スレッド同時実行数エリア36には、同スレッドに対して同時に実行できるスレッドの最大数、いわゆる同時実行数を制限するか否かを選択するための選択子36a,36bが表示されている。また、同時実行数を制限する場合において、その実行数を表示する表示欄36cが形成されている。この表示欄36cをポインタで指定することによって、任意の同時実行数をキー入力できる。スレッドタイプが「ダイナミック」または「レジデンス」のスレッドに対して同時実行数を制限するか否かを選択可能であり、「シングルトン」のスレッドに対しては同時実行数が固定(1)である。
【0023】CPU11は、上記スレッド作成画面30をディスプレイ装置17aに表示させることによって、メソッド名やスレッドタイプの設定を促す。また、スレッドプール管理,メッセージキューイング,排他制御,同時実行数等のスレッド実行条件の設定を促す。この状態で、ST2としてメソッドエリア31のメソッド名表示欄31aまたはクラス名表示欄31bへの入力が行われたか否かを判断する。入力が行われていない場合には、ST3の処理に進む。
【0024】これに対し、メソッドエリア31のメソッド名表示欄31aまたはクラス名表示欄31bへの入力が行われた場合には、図4に具体的に示すメソッド入力処理を実行する。先ず、ST21としてメソッド名表示欄31aにメソッド名が表示されているか否かを判断する。メソッド名が表示されていない場合には、ST22としてメソッド名表示欄31aへの入力が行われたか否かを確認する。メソッド名表示欄31aでなくクラス名表示欄31bへの入力が行われた場合には、メソッド名より先にクラス名を入力しようとする誤操作なので、ST3の処理に進む。
【0025】ST22にてメソッド名表示欄31aへの入力が行われた場合には、新規スレッドのメソッド名が入力されたので、ST23としてキー入力されたテキスト情報をメソッド名としてRAM13に記憶する。また、ST24としてこのメソッド名に基づいてクラス名及びソースファイル名を自動的に作成してRAM13に記憶する。しかる後、ST25としてメソッド名,クラス名及びソースファイル名をメソッドエリア31の各表示欄31a,31b,31cに表示させたならば、ST3の処理に進む。
【0026】一方、ST21にてメソッド名が表示されている場合には、ST26として入力が行われた表示欄を確認する。ここで、メソッド名表示欄31aへの入力が行われた場合には、メソッド名が変更されたので、前記ST23〜ST25の処理を実行する。つまり、RAM13に記憶していたメソッド名を破棄し、キー入力されたメソッド名を変更後のメソッド名として記憶する。また、変更後のメソッド名に基づいてクラス名及びソースファイル名を自動的に作成してRAM13に記憶する。しかる後、変更後のメソッド名,クラス名及びソースファイル名をメソッドエリア31の各表示欄31a,31b,31cに表示させたならば、ST3の処理に進む。
【0027】これに対し、クラス名表示欄31bへの入力が行われた場合には、クラス名が変更されたので、ST27としてRAM13に記憶していたクラス名を破棄し、キー入力されたテキスト情報を変更後のクラス名として記憶する。しかる後、前記ST25の処理に進み、メソッド名,変更後のクラス名及びソースファイル名をメソッドエリア31の各表示欄31a,31b,31cに表示させたならば、ST3の処理に進む。
【0028】ST3では、スレッドタイプエリア32のいずれかの選択子32a,32b,32cが選択されたか否かを判断する。選択されていない場合には、ST4の処理に進む。
【0029】スレッドタイプエリア32のいずれかの選択子32a,32b,32cが選択されたことを検知した場合には、図4の流れ図に示すスレッドタイプ選択処理を実行する。先ず、ST31として選択された選択子がどのスレッドタイプに対応するものかを判断する。ここで、スレッドタイプ「ダイナミック」に対応する選択子32aが選択されたことを確認した場合には、RAM13に記憶しているスレッドタイプ識別データを[DYNAMIC]に更新し、スレッドタイプ「レジデンス」に対応する選択子32bが選択されたことを確認した場合には、スレッドタイプ識別データを[RESIDENCE]に更新し、スレッドタイプ「シングルトン」に対応する選択子32bが選択されたことを確認した場合には、スレッドタイプ識別データを[SINGLETON]に更新する。しかる後、ST4の処理に進む。
【0030】因みに、この実施の形態では、デフォルトとしてスレッドタイプ「ダイナミック」が選択されており、スレッドタイプ識別データとして[DYNAMIC]が予めRAM13に格納されている。なお、デフォルトとしてスレッドタイプ「レジデンス」が選択され、スレッドタイプ識別データとして[RESIDENCE]が予め格納されていてもよいし、スレッドタイプ「シングルトン」が選択され、スレッドタイプ識別データとして[SINGLETON]が予め格納されていてもよい。
【0031】ST4では、スレッドプールエリア33においてどちらの選択子33a,33bが選択されているか否かを判断する。ここで、「スレッドプール管理を使用しない」に対応する選択子33aが選択されていた場合には、RAM13上のスレッドプールフラグSPFを“0”に設定する。これに対し、「スレッドプール管理を使用する」に対応する選択子33bが選択されていた場合には、同スレッドプールフラグSPFを“1”に設定する。しかる後、ST5の処理に進む。
【0032】なお、スレッドプールフラグSPFは、デフォルト値として“1”が設定されている。また、スレッドプールエリア33の選択子33a,33bは、ST3にて選択されたスレッドタイプが「ダイナミック」または「レジデンス」のときに選択可能であり、「シングルトン」のときには選択することができないようになっている。
【0033】ST5では、キューエリア34に対する入力の有無を判断する。そして、入力無しの場合には、ST6の処理に進む。
【0034】これに対し、「メッセージキューイングを使用しない」に対応する選択子34aが選択された場合には、RAM13上のキューフラグQUFを“0”に設定して、ST6の処理に進む。
【0035】また、キュー作成ボタン34dが入力された場合には、図6の流れ図に示すキュー作成処理を実行する。先ず、ST51としてディスプレイ装置17aにGUIを利用してキュー作成画面を表示させる。
【0036】キュー作成画面の一例を図14に示す。このキュー作成画面40は、キュー名入力欄41,キューサイズ入力欄42及び優先度入力欄43と、保存フラグを保存するか否かの選択子44a,44bが設けられた保存フラグエリア44と、OKボタン45及びキャンセルボタン46が配置されている。
【0037】CPU11は、キュー作成画面40を表示させることによって、キュー名,キューサイズ,優先度,保存フラグの設定を促す。なお、キュー名は、キューの識別名である。キューサイズは、キューに格納できるメッセージ数[1〜99999]である。優先度は、キューの優先度であり、10段階で設定する。優先度1が最優先である。下位のキューは、上位のキュー全てが処理されるまで実行されない。保存フラグを「保存する」とした場合、キューが残ったままプロセスを終了したとき、未処理のキューがファイルに保存される。そして、保存されたキューは、次にプロセスが起動したとき読込まれて処理される。
【0038】CPU11は、ST52としてキュー作成画面40のキュー名入力欄41にキュー名がキー入力されたことを検知すると、そのキュー名データをRAM13に記憶する。また、ST53としてキューサイズ入力欄42に1〜99999の範囲でキューサイズデータが入力されると、そのキューサイズをRAM13に記憶する。また、ST54として優先度入力欄43に1〜10の優先度が入力されると、その優先度データをRAM13に記憶する。また、ST55として保存フラグエリア44の「保存フラグを保存しない」に対応する選択子44aが入力されると、キュー保存フラグQPFを“0”に設定し、「保存フラグを保存する」に対応する選択子44bが入力されると、キュー保存フラグQPFを“1”に設定する。
【0039】また、ST56としてOKボタン45が入力された場合には、ディスプレイ装置17aの画面を前記スレッド作成画面30に戻す。そして、この画面30のキューエリア34における表示欄34cに、RAM13に記憶したキュー名を表示させる。その後、キューフラグQUFを“1”に設定したならば、ST6の処理に進む。
【0040】なお、OKボタン45でなく、ST57としてキャンセルボタン46が入力された場合には、ディスプレイ装置17aの画面を前記スレッド作成画面30に戻した後、RAM13に記憶したメッセージキューイングに関するデータ(キュー名,キューサイズ,優先度,保存フラグ)をクリアする。また、キューフラグQUFが“1”に設定されていた場合には“0”に設定する。しかる後、ST6の処理に進む。
【0041】ST6では、排他テーブルエリア35に対する入力の有無を判断する。そして、入力無しの場合には、ST7の処理に進む。
【0042】これに対し、「排他テーブルを使用しない(排他制御を行わない)」に対応する選択子35aが選択された場合には、RAM13上の排他テーブルフラグEXFを“0”に設定して、ST7の処理に進む。
【0043】また、排他テーブル作成ボタン35dが入力された場合には、図7の流れ図に示す排他テーブル作成処理を実行する。先ず、ST61としてディスプレイ装置17aにGUIを利用して排他テーブル作成画面を表示させる。
【0044】排他テーブル作成画面の一例を図15に示す。この排他テーブル作成画面50は、テーブル名入力欄51、対象スレッドのメソッド名一覧表示欄52、排他スレッドのメソッド名一覧表示欄53及び新規メソッド名の入力欄54と、排他スレッド追加ボタン55、排他スレッド削除ボタン56、全追加ボタン57、全削除ボタン58、新規メソッド名追加ボタン59、OKボタン60及びキャンセルボタン61とが配置されている。
【0045】CPU11は、排他テーブル作成画面50を表示させることによって、排他制御する他のスレッドの選択を促す。さて、CPU11は、排他テーブル作成画面50を表示させると、次に、ST62としてRAM13に排他テーブルを記憶しているか否かを判断する。排他テーブルを記憶していない場合には、ST63として排他テーブル名が入力されるのを待機する。この待機状態において、ST64としてキャンセルボタン61が入力された場合には、ディスプレイ装置17aの画面を前記スレッド作成画面30に戻して、ST7の処理に進む。
【0046】ST63にてテーブル名入力欄51への入力が行われた場合には、待機テーブル名が入力されたので、ST65としてこのキー入力されたテーブル名の排他テーブルをRAM13に作成する。そして、ST66として対象スレッドのメソッド名一覧表示欄52に、RAM13に記憶している全てのメソッド名を表示させる。このとき、排他テーブルには排他制御するスレッドのメソッド名が格納されていないので、排他スレッドのメソッド名一覧表示欄53には何も表示しない。
【0047】一方、ST62にてRAM13に排他テーブルを記憶している場合には、前記ST66の処理に進む。そして、この排他テーブルに格納されているスレッド名を排他スレッドのメソッド名一覧表示欄53に表示する。また、RAM13に記憶している残りのメソッド名を対象スレッドのメソッド名一覧表示欄52に表示させる。
【0048】しかる後、CPU11は、各ボタン55〜61が入力されるのを待機する。ここで、ST67として新規メソッド名追加ボタン59が入力された場合には、新規メソッド名入力欄54に入力されているメソッド名をRAM13に記憶するとともに、対象スレッドのメソッド名一覧表示欄52に追加する。
【0049】一方、ST68として排他スレッド追加ボタン55が入力された場合には、対象スレッドのメソッド名一覧表示欄52にて選択されているメソッド名をRAM13の排他テーブルに複写する。また、ST69として排他スレッド削除ボタン56が入力された場合には、排他スレッドのメソッド名一覧表示欄53にて選択されているメソッド名を排他テーブルから削除する。また、ST70として全追加ボタン57が入力された場合には、対象スレッドのメソッド名一覧表示欄52に表示されているメソッド名をRAM13の排他テーブルに全て複写する。また、ST71として全削除ボタン58の入力を検知した場合には、排他スレッドのメソッド名一覧表示欄53に表示されているメソッド名を排他テーブルから全て削除する。しかる後、ST66の処理に戻って、各メソッド名一覧表示欄52,53の表示内容を更新する。
【0050】また、ST72としてOKボタン60が入力された場合には、ディスプレイ装置17aの画面を前記スレッド作成画面30に戻す。そして、この画面の排他テーブルエリア35における表示欄35cに、RAM13に記憶した排他テーブル名を表示させる。その後、排他テーブルフラグEXFを“1”に設定したならば、ST7の処理に進む。
【0051】なお、OKボタン45でなく、ST73としてキャンセルボタン61が入力された場合には、ディスプレイ装置17aの画面を前記スレッド作成画面30に戻した後、RAM13に記憶していた排他テーブルを削除する。また、排他テーブルフラグEXFが“1”に設定されていた場合には“0”に設定する。しかる後、ST7の処理に進む。
【0052】ST7では、同時実行数エリア36に対する入力有無を判断する。そして、入力無しの場合には、ST8の処理に進む。
【0053】これに対し、「同時実行数制限無し」に対応する選択子36aが選択された場合には、RAM13上の同時実行数フラグPRFを“0”に設定して、ST8の処理に進む。
【0054】また、「同時実行数制限有り」に対応する選択子36bが選択された場合には、図8の流れ図に示す同時実行数制限処理を実行する。先ず、ST81として同時実行数エリア36の表示欄36cに同時実行数(≧0)が入力されるのを待機する。そして、同時実行数がキー入力されたならば、ST82として入力された同時実行数が“0”より大きいか否かを判断する。そして、同時実行数が“0”より大きい場合には、この同時実行数をRAM13に記憶するとともに、表示欄36cに表示させる。その後、同時実行数フラグPRFを“1”に設定したならば、ST8の処理に進む。
【0055】一方、同時実行数として“0”が入力された場合には、同時実行数制限無しと認識する。そして、同時実行数フラグPRFが“1”に設定されていた場合には“0”に設定して、ST8の処理に進む。
【0056】ST8では、スレッド作成画面30のOKボタン37が入力されたか否かを判断する。OKボタン37が入力されていない場合には、ST9としてキャンセルボタン38が入力されたか否かを判断する。キャンセルボタン38も入力されていない場合には、ST2の処理に戻る。
【0057】スレッド作成画面30のOKボタン37が入力された場合には、図9の流れ図に示すスレッド定義記憶処理を実行する。先ず、ST91としてメソッドエリア31のメソッド名表示欄31aにメソッド名が入力されているか否かを判断する。メソッド名が入力されていない場合、つまりRAM13にメソッド名が格納されていない場合には、ST10の処理に進む。
【0058】メソッド名が入力されている場合、つまりRAM13にメソッド名が格納されている場合には、図16(c)に示すフォーマットのスレッド定義レコード(ON_JOB)の第1パラメータ及び第2パラメータに、RAM13に記憶しているメソッド名及びクラス名をセットする。
【0059】次に、ST92としてスレッドタイプエリア32にて選択されているスレッドタイプを判断する。ここで、RAM13にスレッドタイプ識別データ[SINGLETON]を記憶している場合には、スレッドタイプ「シングルトン」が選択されているので、以下の処理を実行する。先ず、前記スレッド定義レコード(ON_JOB)の第3パラメータにスレッドタイプ識別データ[SINGLETON]をセットする。次に、第4パラメータに同時実行数[1]をセットする。次に、第5パラメータに排他テーブル,メッセージキューイング及びスレッドプール管理を行わないことを示すデータ「null」をセットする。しかる後、ST97としてこのスレッド定義レコード(ON_JOB)をソースプログラム2の定義ファイル4に反映させたならば、ST10の処理に進む。
【0060】一方、ST92にてRAM13にスレッドタイプ識別データ[RASIDENCE]を記憶している場合には、スレッドタイプ「レジデンス」が選択されているので、以下の処理を実行する。先ず、前記スレッド定義レコード(ON_JOB)の第3パラメータにスレッドタイプ識別データ[RASIDENCE]をセットする。次に、第7パラメータにスレッドプール管理を使用することを示すデータ「UseMsThreadPool」をセットする。
【0061】次に、ST94としてRAM13に記憶している同時実行数フラグPRFを調べる。そして、同時実行数フラグPRFが“0”に設定されていた場合には、前記スレッド定義レコード(ON_JOB)の第4パラメータに同時実行数[0]をセットする。これに対し、同時実行数フラグPRFが“1”に設定されていた場合には、RAM13に記憶している同時実行数を前記第4パラメータにセットする。
【0062】次に、ST95としてRAM13に記憶している排他テーブルフラグEXFを調べる。そして、排他テーブルフラグEXFが“0”に設定されていた場合には、前記スレッド定義レコード(ON_JOB)の第5パラメータに排他制御を行わないことを示すデータ「null」をセットする。これに対し、排他テーブルフラグEXFが“1”に設定されていた場合には、RAM13に記憶している排他テーブル名を前記第5パラメータにセットするとともに、後述する排他テーブル定義記憶処理を実行する。
【0063】次に、ST96としてRAM13に記憶しているキューフラグQUFを調べる。そして、キューフラグQUFが“0”に設定されていた場合には、前記スレッド定義レコード(ON_JOB)の第6パラメータを省略する。このとき、第7パラメータに挿入されたにデータ「UseMsThreadPool」は、第6パラメータに移される。これに対し、キューフラグQUFが“1”に設定されていた場合には、RAM13に記憶しているキュー名を前記第6パラメータにセットするとともに、後述するキュー定義記憶処理を実行する。
【0064】しかる後、ST97としてこのスレッド定義レコード(ON_JOB)をソースプログラム2の定義ファイル4に反映させたならば、ST10の処理に進む。
【0065】また、ST92にてRAM13にスレッドタイプ識別データ[DYNAMIC]を記憶している場合には、スレッドタイプ「ダイナミック」が選択されているので、以下の処理を実行する。先ず、前記スレッド定義レコード(ON_JOB)の第3パラメータにスレッドタイプ識別データ[DYNAMIC]をセットする。次に、ST93としてRAM13に記憶しているスレッドプールフラグSPFを調べる。そして、スレッドプールフラグSPFが“0”に設定されていた場合には、前記スレッド定義レコード(ON_JOB)の第7パラメータを省略する。これに対し、スレッドプールフラグSPFが“1”に設定されていた場合には、第7パラメータにスレッドプール管理を使用することを示すデータ「UseMsThreadPool」をセットする。
【0066】その後、前記スレッドタイプ「レジデンス」が選択されていた場合と同様に、ST94〜ST97の処理を順次実行して、スレッド定義レコード(ON_JOB)をソースプログラム2の定義ファイル4に反映させたならば、ST10の処理に進む。
【0067】図10は、前記排他テーブル記憶処理を示す流れ図である。CPU11は先ず、図16(b)に示すフォーマットの排他テーブル定義レコード(EXCLUSIVE_JOB)の第1パラメータに、RAM13に記憶している排他テーブル名をセットする。次に、RAM13上の排他テーブルに排他制御するスレッドのメソッド名が格納されているか否かを判断する。そして、格納されている場合には、このスレッド名を前記排他テーブル定義レコード(EXCLUSIVE_JOB)の第2パラメータ以降に順次セットする。排他テーブルに排他制御するスレッドのメソッド名が格納されていない場合には、第2パラメータ以降を省略する。しかる後、この排他テーブル定義レコード(EXCLUSIVE_JOB)を前記定義ファイル4に反映させたならば、ST96の処理に進む。
【0068】図11は、前記キュー定義記憶処理を示す流れ図である。CPU11は先ず、図16(a)に示すフォーマットのキュー定義レコード(THREAD_QUE)の第1〜第3パラメータに、RAM13に記憶しているキュー名,キューサイズ及び優先度をそれぞれセットする。次に、RAM13上のキュー保存フラグQPFを調べる。そして、キュー保存フラグQPFが“1”に設定されていた場合には、キュー定義レコード(THREAD_QUE)の第4パラメータに、保存フラグを保存することを示すデータ「QueSaveFile」をセットする。キュー保存フラグQPFが“0”に設定されていた場合には、第4パラメータを省略する。しかる後、このキュー定義レコード(THREAD_QUE)を前記定義ファイル4に反映させたならば、ST97の処理に進む。
【0069】定義ファイル4の一例を図17に示す。同図中、ソースコード「protected override void QUEMAP」の次の行に、キュー定義レコード(THREAD_QUE)が順次反映(挿入)され、ソースコード「protected override void EXCLUSIVEMAP」の次の行に、排他テーブル定義レコード(EXCLUSIVE_JOB)が順次反映(挿入)され、ソースコード「protected override void JOBMAP」の次の行に、スレッド定義レコード(ON_JOB)が順次反映(挿入)される。
【0070】ST10では、図12に示すソースファイル保存処理を実行する。先ず、ST101としてメソッドエリア31のメソッド名表示欄31aにメソッド名が入力されているか否かを判断する。メソッド名が入力されていない場合、つまりRAM13にメソッド名が格納されていない場合には、ST11の処理に進む。
【0071】メソッド名が入力されている場合、つまりRAM13にメソッド名が格納されている場合には、ST102としてスレッドタイプエリア32にて選択されているスレッドタイプを判断する。ここで、RAM13にスレッドタイプ識別データ[SINGLETON]を記憶している場合には、スレッドタイプ「シングルトン」が選択されているので、テンプレートファイル[SINGLETON]を読込む。そして、このテンプレートファイル[SINGLETON]にメソッド名等を反映させる。
【0072】これに対し、RAM13にスレッドタイプ識別データ[RASIDENCE]を記憶している場合には、スレッドタイプ「レジデンス」が選択されているので、テンプレートファイル[RASIDENCE]を読込む。そして、このテンプレートファイル[RASIDENCE]にメソッド名等を反映させる。
【0073】また、RAM13にスレッドタイプ識別データ[DYNAMIC]を記憶している場合には、スレッドタイプ「ダイナミック」が選択されているので、テンプレートファイル[DYNAMIC]を読込む。そして、このテンプレートファイル[DYNAMIC]にメソッド名等を反映させる。
【0074】なお、各テンプレートファイルは、対応するスレッドタイプの動作に応じたソースコードのテンプレートを記述したもので、プログラミング支援プログラム7に予め用意されている。テンプレートファイル[DYNAMIC]の一例を図18に示す。同図中ソースコード「FUNC_NAME」の個所に、メソッド名が反映(挿入)される。
【0075】しかる後、CPU11は、ST103として上記テンプレートファイルをソースファイル3としてソースプログラムに保存したならば、RAM13に記憶しているデータ(スレッド名,クラス名,ソースファイル名,スレッド識別データ,排他テーブル,キューデータ,各種フラグ等)をクリアして、ST11の処理に進む。
【0076】ST11では、プログラミング支援プログラム7を終了させる。
【0077】このように、本実施の形態のプログラミング支援プログラム7をコンピュータ1にインストールして起動させることにより、コンピュータ1のディスプレイ装置17aにはGUIを利用したスレッド作成画面30が表示される。そこで、プログラミング作業者は、メソッドエリア31のメソッド名表示欄31aに任意のメソッド名を設定入力する。そうすると、このメソッド名に基づいてクラス名及びソースファイル名が自動的に生成される。
【0078】次に、プログラミング作業者は、作成すべきソースファイル3のスレッドタイプをスレッドタイプエリア32の中から選択する。ここで、スレッドタイプが「ダイナミック」のときには、当該ソースファイル3のスレッドに対してスレッドプール管理を使用するか否かを決める。そして、使用する場合には、スレッドプールエリア33の選択子33bを選択する。
【0079】また、スレッドタイプが「ダイナミック」または「レジデンス」のときには、当該スレッドに対してメッセージキューイングを使用するか否か、排他制御を行うか否か、同時執行数を制限するか否かを決める。そして、メッセージキューイングを使用する場合には、キューエリア34のキュー作成ボタン34dを入力する。そうすると、ディスプレイ装置17aにキュー作成画面40が表示される。そこで、プログラミング作業者は、所望するキュー名,キューサイズ,優先度,保存フラグの有無を当該キュー作成画面40に入力する。
【0080】また、排他制御を行う場合には、排他テーブルエリア35の排他テーブル作成ボタン35dを入力する。そうすると、ディスプレイ装置17aに排他テーブル作成画面50が表示される。そこでプログラミング作業者は、対象スレッドのメソッド名一覧表示欄52の中から排他制御するスレッドのメソッド名を選択し、排他スレッド追加ボタン55を入力する。そうすると、排他制御するスレッドのメソッド名が排他スレッドのメソッド名一覧表示欄53に移される。
【0081】また、同時実効数を制限する場合には、同時実行数エリア36の選択子36bを選択した後、表示欄36cに制限する同時実行数を入力する。
【0082】その後、スレッド作成画面30のOKボタン37を入力する。そうすると、メソッド名,クラス名,スレッドタイプ識別データ,同時実行数,排他テーブル名,キュー名及びスレッドプール管理有無データの各パラメータからなるスレッド定義レコード(ON_JOB)が、ソースプログラム2の定義ファイル4に反映される。また、排他制御を行う場合には、排他テーブル名及び排他スレッドのメソッド名の各パラメータからなる排他テーブル定義レコード(EXCLUSIVE_JOB)が、ソースプログラム2の定義ファイル4に反映される。また、メッセージキューイングを使用する場合には、キュー名,キューサイズ,優先度及び保存フラグの各パラメータからなるキュー定義レコード(THREAD_QUE)がソースプログラム2の定義ファイル4に反映される。
【0083】しかる後、当該スレッドタイプの動作に応じたソースコードのテンプレートが記述されたテンプレートファイルが読込まれる。そして、このテンプレートファイルに当該スレッド名が反映され、ソースファイル3としてソースプログラム2に保存される。
【0084】このように、プログラミング作業者は、ディスプレイ装置17aに表示されるGUI画面30,40,50に必要最小限の項目の情報を入力するだけで、所望するソースファイル3や定義ファイル4を保存したソースプログラム2を作成することができる。そして、このソースプログラム2を所定のコンパイラ5でコンパイルすることによって、所期の目的であるオブジェクトプログラム6が作成される。したがって、ソースコードの意味及び使い方を一つ一つ理解していなくてもプログラミングできる上、ソースコードの入力ミスも発生しないので、プログミング作業を初心者でも簡単にミスなく行うことができる効果を奏する。
【0085】なお、本発明の他の実施形態としては、ソースファイルの識別名となるメソッド名と、実行時の動作の違いによって区別されたスレッドタイプとの設定を促すGUI画面を表示させる表示手段と、GUI画面を介してメソッド名とスレッドタイプとが設定されると、設定されたスレッドタイプのソースコードテンプレートを読込んで1つのソースファイルを作成するソースファイル作成手段と、このソースファイルのソースコードテンプレートに設定されたメソッド名を反映させるソースファイル反映手段と、この設定されたメソッド名及びスレッドタイプを当該メソッド名で識別されるソースファイルのスレッド定義情報として定義ファイルに反映させる定義ファイル反映手段とを具備したプログラミング専用装置が考えられる。
【0086】また、ソースファイルの識別名となるメソッド名と、実行時の動作の違いによって区別されたスレッドタイプとの設定を促すGUI画面を表示させ、このGUI画面を介してメソッド名とスレッドタイプとが設定されると、設定されたスレッドタイプのソースコードテンプレートを読込んで1つのソースファイルを作成し、このソースファイルのソースコードテンプレートに設定されたメソッド名を反映させるとともに、この設定されたメソッド名及びスレッドタイプを当該メソッド名で識別されるソースファイルのスレッド定義情報として定義ファイルに反映させるプログラミング支援方法も考えられる。
【0087】
【発明の効果】以上詳述したように本発明によれば、プログラミング作業を初心者でも簡単にミスなく行うことができるプログラミング支援プログラムを提供できる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013