(57)【特許請求の範囲】
【請求項１】
処理ブロックを表す図形データと、
前記処理ブロック内に配置され、処理内容を記載する文字枠データと、
前記処理ブロックの種別および形状の内の少なくとも一方を示す処理ブロック識別情報を記載する文字枠データとを組み合わせて１図形化した複合図形データを使用して図形を作成し、
前記処理ブロック識別情報を記載する文字枠の位置、大きさあるいは書式を、前記処理ブロックを表示あるいは印刷した時に処理ブロック識別情報が現れないように設定することを特徴とする図形作成装置。
【請求項２】
前記処理ブロック図形は枠の内部が塗りつぶされており、前記処理ブロック識別情報を記載する文字枠は、前記処理ブロック図形の裏側に配置されていることを特徴とする請求項１に記載の図形作成装置。
【請求項３】
更に、ラベル用文字枠、サイクル数記載用文字枠、コメント記載用文字枠の内の少なくとも１つを組み合わせて１図形化することを特徴とする請求項１または２に記載の図形作成装置。
【請求項４】
複数の処理ブロック種別ごとに、請求項１ないし３のいずれかに記載されている複合図形データが部品図形として登録されている図形作成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は図形作成装置に関し、特にフローチャート図形データ中の各処理ブロック内容が容易に認識可能な図形データ構造を使用した図形作成装置に関するものである。
【０００２】
【従来の技術】
従来、フローチャートを作成する場合には、例えば市販の図形作成システムを使用して、フローチャートを構成する直線や四角形、ひし形等を作図し、必要な箇所に文字を記入する文字枠領域を定義して、文字を入力していた。そして、フローチャートに基づいてプログラムをコーディングするときには、プログラマがフローチャートを見ながらプログラムを作成しており、自動化はされていなかった。
【０００３】
【発明が解決しようとする課題】
従来のプログラム作成処理においては、フローチャートの作成は、処理の流れを人間が理解し易くするための作業であり、プログラムの生成とは直接連携しない作業であった。そして、完全なフローチャートを作成、修正するためには多大な労力を必要とし、また、不完全なフローチャートからコーディングを行ったりすることにより、ドキュメントが不備となったりするという問題点があった。本発明の目的は、前記のような従来技術の問題点を解決し、フローチャート図形データからプログラムを生成するために、フローチャートの図形データから各処理ブロックの処理内容や接続関係を簡単に認識することができる図形データ構造を使用した図形作成装置を提供することにある。
【０００４】
【課題を解決するための手段】
本発明は、処理ブロックを表す図形データと、前記処理ブロック内に配置され、処理内容を記載する文字枠データと、前記処理ブロックの種別および形状の内の少なくとも一方を示す処理ブロック識別情報を記載する文字枠データとを組み合わせて１図形化した複合図形データを使用して図形を作成し、前記処理ブロック識別情報を記載する文字枠の位置、大きさあるいは書式を、前記処理ブロックを表示あるいは印刷した時に処理ブロック識別情報が現れないように設定する図形作成装置に特徴がある。
【０００５】
本発明はこのような構成により、処理ブロックの内容やブロック図形の形状、接続線の出ている方向、分岐数などが、処理ブロック識別情報により容易に識別可能であり、ブロック図形データから図形の形状等を認識する必要がない。処理ブロック識別情報は表示、印刷されないようにすることも可能であり、そうすればフローチャートを印刷した時に余分な文字が印刷されることを防止できる。また処理内容は処理ブロック識別情報およびブロック内に表示される処理内容文字列から判断するので、ブロック図形の形状や大きさは任意のものを使用可能となり、処理内容を記載する文字列の長さの制限も無くなる。
【０００６】
任意の図形作成装置（システム）に上記のような処理ブロック図形データ構造を持つ複数の処理ブロック種別の複合図形データを部品図形として登録しておき、該部品図形を使用してフローチャートを作成すれば、効率良く所望のフローチャートが作成でき、更に該フローチャート図形からプログラムを自動的に生成することができる。従って、プログラム作成およびドキュメントの作成処理が効率的に実行可能となる。
【０００７】
【発明の実施の形態】
以下、本発明の実施の形態を説明する。図１は、本発明の実施例であるフローチャートからプログラムを生成するシステムの構成を示すブロック図である。なおこのシステムは例えば一般的なワークステーション等のコンピュータ上で稼動するソフトウェアにより実現されている。フローチャートの作成には既存の任意の図形作成システム１３が用いられ、図５に示すような機能ブロック部品図形１４が該図形作成システム１３を使用して予め作成され、登録されている。
【０００８】
この部品図形を使用して作成されたフローチャート図形データファイル１は、例えば図６に示すような構造を有しており、このファイルが中間ファイルコンバータ２により変換されて、各ブロックの情報がプログラムの命令語の配列順序に並び変えられた中間ファイル３が生成される。この中間ファイル３の各ブロックの情報は、図８に示すように、各ブロックを命令語に変換するために必要な情報および、元のフローチャート図形データ１との対応を取るための図形位置座標データ等を含んでいる。
【０００９】
ソースリストコンバータ４は、中間ファイル３の各ブロックを対応する命令語に変換することによってソースプログラムテキストファイル５を生成する。アセンブラ６はソースプログラムテキストファイルを入力し、マシンコードデータファイル７およびアセンブルリストテキストファイル８を出力する。マシンコードデータ７は例えばＲＯＭに記憶されてエンジン制御装置等に搭載され、アセンブルリストテキストファイル８はアセンブルリストとしてプリントされる。なお、このアセンブラ６は、その命令実行に必要なクロックサイクル数付与機能を備えており、アセンブルリストテキストファイル８のラベル番号は見やすいように再付与され、また各命令毎にサイクル数データが付加される。なお、このような機能を有するアセンブラは周知である。
【００１０】
差分ファイルコンバータ９は、中間ファイル３、ソースプログラムテキストファイル５、アセンブルリストテキストファイル８を入力し、アセンブラによって修正されたラベル番号や付加されたサイクル数情報、あるいはソースプログラムテキストファイルを任意のエディタ等によって修正した情報を含む差分ファイル１０を生成する。この差分ファイル１０は、フローチャートコンバータ１１に入力され、元のフローチャート図形データファイル１と合成されて、修正されたフローチャート図形データファイル１２を生成する。修正済みフローチャートは、例えばラベル番号が１０おきに修正され、各処理ブロックにサイクル数が追加され、ソースプログラムテキストファイルの段階で修正された変数名等の文字も修正されている。
【００１１】
本発明のソースプログラム生成システムを使用するためには、まず、任意の図形作成システム１３によってフローチャート図形を作成する必要がある。この際に、図形作成システム１３に通常備えられている機能を利用して、各機能ブロックの図形を部品１４として予め作成し、登録しておく。図２は登録する部品の例を示す説明図である。この図形は通常の処理ブロック（四角形）を表すものであり、ブロック図形２０の内部にある文字枠２１に処理内容が記載される。
【００１２】
上部の直線２５は他のブロックとの接続線であり、右上の文字枠２３内には、必要に応じて使用者がラベル番号文字を記入する。なお文字枠２４は文字枠２３と同様にラベル番号を記入するための文字枠であり、どちらか作図の邪魔にならない方を使用すればよい。文字枠２２はサイクル数記入用の文字枠であり、当初は空白であるが、アセンブルリスト８から差分ファイル１０を経てサイクル数データが記入される。なお、各文字枠の位置や数は任意である。
【００１３】
図２（ａ）の部品の場合には、四角図形２０、内部の処理内容を示す文字枠２１、上部の接続線２５、ラベル番号用文字枠２３、２４、サイクル数用文字枠２２等が１つの図形として結合された複合図形であり、コピーや移動の場合には１つの図形として処理される。なお、この他に、図２（ｂ）に示すように、各ブロックの処理種別や形状等を示す部品番号データを各ブロックに付加するために、四角図形２０の枠内２７（図の斜線部分）を背景と同色で塗りつぶし、四角図形２０の背後に部品番号用文字枠２６を設けて、予め部品番号を記入してある。この文字枠２６も結合（１図形化）されている。なお、処理内容を記入する文字枠２１は四角図形２０の前（上）にある。従って、部品図形を表示、印刷した場合には部品番号は現れないが、図形データとしては、四角図形と結合された形で部品番号情報が付与されている。
【００１４】
図３は条件分岐ブロックを表す部品図形データ例である。この例においても、ひし形図形３０、条件を記載する文字枠３１、ラベル番号用文字枠３３、３４、サイクル数用文字枠３２および判定結果記入用文字枠３５〜３８が１図形化されている。更に、塗りつぶされたひし形図形３０の背後には部品番号用文字枠３９が配置されている。図３（ｂ）は条件分岐ブロックの他の例を示す説明図である。この例においてはひし形の替わりに６角形の図形４０を使用しているが、条件分岐ブロックであることは部品番号によって識別可能であるので、この例に限らず任意の図形を使用可能である。また、図３（ａ）においては横の出線が左側に出ており、図３（ｂ）においては右にでている。このように、出線の位置や図形の大きさ、文字枠の大きさなどの形状の異なる部品を多数用意しておき、それぞれ異なる部品番号を付与しておくことによって、部品番号を見ただけで出線の位置が認識でき、次に接続する図形を容易に検索可能となる。
【００１５】
図４は、部品番号用文字枠の他の実施例を示す説明図である。図２の実施例においては、四角図形を塗りつぶしてその背後に部品番号用文字枠を配置する例を開示したが、フローチャートの邪魔にならない位置に小さな文字で部品番号を記載してもかまわない。例えば図４の四角図形２０の左下外側あるいは右上に部品番号用文字枠５０あるいは５１を設けてもよく、四角図形２０の内部のいずれかの隅に文字枠５２を設けてもよい。この場合、文字を通常の色で記入すれば判読可能となるが、例えば背景色と同じ色で書き込めば、表示、印刷時に現れないようにすることができる。
【００１６】
図４においては、説明のために、肉眼で判読可能な程度の大きさの文字の例を開示したが、図形データとしては非常に小さな文字データを作成することも可能であり、この場合には表示、印刷時には点にしかならないので、フローチャートの邪魔になることはない。また四角図形の枠の線上に配置すれば、枠内を塗りつぶす必要は無く、かつ点も現れずに部品番号を付与可能である。
【００１７】
図５は、各種部品図形の例を示す説明図である。なお、各部品図形の上部に記載されている番号は部品番号である。図５（ａ）は分岐以外の通常の処理を示すブロックであり、図５（ｂ）はサブルーチンコール処理を示すブロックである。図５（ｃ）、（ｄ）は条件分岐処理ブロックの例であり、これらの条件分岐ブロックの場合には、条件の種類（等しい、０である、正である、負である、キャリーが発生したなど）あるいは出線の方向等によって部品番号が異なっている。なお、図５（ｈ）はフローチャートにおいて、任意の位置の同じ文字を付与した接続端子同士が接続されていることを示す接続端子であり、出側と入り側の２種類がある。
【００１８】
図６は入力されるフローチャート図形データの一例を示す説明図である。フローチャート図形データの形式は各図形作成システム（ソフトウェア）によって異なるが、例えば図２のような四角形の部品を作成した場合の図形データ６０は、通常図６に示すようなデータ群から形成されている。枠用四角形データ６１は、例えば図形種別（四角形）データ、左上の座標および幅、高さからなる座標データ、枠の線種情報、図形内の塗りつぶしパターンデータ等の情報を含んでいる。なお、この四角形データ６１を含む各種のブロック図形は全て、背後にある各ブロック部品固有の部品番号文字枠の文字を表示させないようにするために、枠内を背景と同色で塗りつぶしてある。
【００１９】
接続線用直線データ６２は、図形種別（直線）データ、始点、終点の座標データ、線種データ等からなる。各文字枠データ６３、６４、６５、６６はそれぞれ図形種別（文字枠）データ、座標データ、表示される文字列データ、書式データ、文字修飾データ等を含んでいる。前記したように部品番号用文字枠６４は四角枠６１の背後に存在し、表示文字列用文字枠データ６３は手前にある。ラベル用文字枠６５は例えば枠の右上（および左上）に配置され、サイクル数用文字枠６６は例えば枠の右側に存在する。これらの各図形データは１図形として結合されており、移動、コピー時には１つの図形データとして処理される。
【００２０】
図７は、図５の部品や直線を使用して作成したフローチャート例を示す説明図である。フローチャートを作成する場合には、まず始端部品を上部に配置し、ラベル用の文字枠内にラベルの文字（ＰＱＲ）を記入する。次に接続する部品、例えば四角形の部品Ｓ１を、接続線がつながるように配置するか、あるいは配置した後に接続線の端同士を線で接続する。そして、処理内容を表す表示文字列（Ａ←ａｂｃ）を記入し、更に必要があれば、ラベル番号を記入したり、文字枠を生成してコメント等を記入する。このようにして、任意の部品を任意の位置に配置し、任意に接続して、終端記号までフローチャートを作成する。なお図７中の黒点は各部品図形の接続点を示してる。
【００２１】
ここで、フローチャート図形データ１から中間ファイル３を生成する中間ファイルコンバータ２における命令順序決定処理を簡単に説明する。まず最初に、入力されたフローチャート図形データの中からスタート端子（始端図形）を検索する。この検索は、各ブロック図形の部品番号をチェックしていくことにより実行する。なお図形データは例えば作成順に配列しており、図形の配置とデータの配列とは無関係である。スタート端子を発見した場合には、該ブロックに対応する中間コードを生成してバッファ１に格納する。
【００２２】
次に、スタート端子（２番目以降については前のブロック）と接続しているブロックを見つけ、対応する中間コードをバッファ１に出力する。接続は、例えばスタート端子の接続線の終端座標が接触しているブロックあるいは線を検索し、線の場合には更にその線の終端の接触しているブロックまたは線を検索して行くことにより認識する。そして出力されたブロック図形データには処理済みを示すマークを付与しておく。
ここで、バッファ１に出力したブロックが条件分岐命令に対応するブロックであるか否かが判定され、結果が肯定の場合には、更に、ブロックの接続線に付与する「Ｙ」あるいは「Ｎ」などの文字に下線が付加されているか否かが判定される。そして、下線がなければ条件分岐ブロックのひし形図形の下端に接続されているブロックを次のブロックに選択するが、下線があった場合には、下線のない文字に対応する頂点に接続されているブロックを次のブロックに選択する。このようにして終了端子まで中間データに変換して配列していく。
【００２３】
次に、条件分岐命令において選択されなかった方の出線に接続されているブロックで、バッファへの出力処理が実行されていない未処理ブランチ（分岐）が存在するか否かが判定され、結果が肯定の場合には接続されているブロックを検出して中間コードを生成する処理を繰り返すが、中間コードをバッファ１ではなくバッファ２に出力する。そして、処理したブロックが終了端子であるか否かが判定され、結果が肯定の場合には、バッファ２に出力されている中間コードデータをバッファ１の最後に追加し、バッファ２をクリアする。
【００２４】
また、次のブロックが既に中間コードが出力されているブロックである場合には、処理したブロックが無条件ジャンプ（分岐）ブロックであるか否かが判定される。そして結果が肯定の場合には、現在処理中の分岐の元の処理ブロックグループに戻り、バッファ１内で無条件ジャンプか終了端子を探し、最初に発見したものの次にバッファ２のデータを挿入する。そして、バッファ２をクリアする。また、処理したブロックが無条件ジャンプブロックではない場合には、現在処理中の分岐の次に接続されている処理済みブロックの直前にバッファ２のデータを挿入し、バッファ２をクリアする。
【００２５】
この挿入処理を行うためには、挿入される位置の前に無条件分岐が存在する必要があり、作成者がフローチャートの作成時に予め無条件分岐を挿入しておくか、あるいは自動的に挿入されるように処理する必要がある。条件分岐ブロックからではない通常の処理同士の合流の場合に自動的に無条件ジャンプを挿入するためには、例えばメインのルートあるいは先に処理されたルートにおいて必ず無条件ジャンプを挿入するか、あるいは合流時に接続線に矢印が付いているか、あるいはその他の予め定められた任意のマークが付与されているルート側に無条件ジャンプを挿入する。この際ラベル番号が無ければ自動的に付与する。以上のような処理により、生成された中間コードが配列され、この中間コードをプログラム言語の命令語に変換することによりソースプログラムが生成される。
【００２６】
図８は、図７のフローチャート図形データを中間ファイルコンバータ２に入力した場合に出力される中間コードを示す説明図である。中間コードは例えば１つの処理ブロックが１行に対応しており、通し番号である行番号と共に、ページ番号、部品番号、表示文字列、ラベル番号、ブロック座標データ等の文字情報が区切り文字（＠）によって区切られて、各部品番号に対応した所定のフォーマットで配列している。
【００２７】
ソースリストコンバータ４は、中間ファイル３の各中間コードをそのままの順序で対応する命令語のニーモニックコードに変換していく。命令語との対応は部品番号および表示文字列情報から判断する。言語はアセンブラ、あるいは高級言語であってもよく、また中間コードと命令語は１対１に対応しているが、１つの中間コードが複数の命令語からなる命令語列と対応していてもよい。
【００２８】
プログラム作成者は、ソースプログラムテキストファイル５を生成した時点で、該ファイルの変数名やラベル等を任意に修正可能である。このファイル５はテキストデータであるので、任意のエディタあるいはワープロシステムによって容易に編集が可能であり、例えばソースプログラム中の変数名を全て他の名前に変更したい場合には、エディタ等の文字列一括変換機能を使用することによって容易に実行可能である。
【００２９】
アセンブラ６はソースプログラムをアセンブルし、アセンブルリストテキストファイル８を出力する。該ファイル８にはラベル、メモリアドレス、マシンコード、ニーモニックコードのほか、各命令ごとのクロックサイクル数データも含まれており、また、ラベル番号はアドレス順に１０番間隔で再付与されている。なお、マシンコードの配列は中間ファイル３における中間データの配列およびソースプログラムテキストファイル５におけるニーモニックコードの配列と同じであり、１対１に対応している。
【００３０】
差分ファイルコンバータ９は、それぞれ対応する、中間データ、ソースプログラムデータ、アセンブルリストデータを読み込み、変更箇所の存在するデータについて、例えば中間データファイル３と同じフォーマットで差分ファイル１０を出力する。なお、差分ファイルに変更されていないデータが含まれていても、同じデータに変更されるのみであるので問題は無い。
【００３１】
フローチャートコンバータ１１は、元のフローチャート図形データファイル１と差分ファイル１０とを読み込み、それぞれの座標データを比較することによって、差分ファイルの各行がどの図形データと対応するかを判断する。そして、対応する図形データ中の文字列データを差分ファイルの内容に従って修正する。なお、フローチャートのブロック図形以外の接続線データ、コメント用文字枠データ等は、中間ファイル３として抽出されることが無いので、変更されることはない。
【００３２】
以上、実施例を説明したが、次のような変形例も考えられる。実施例においては、中間ファイルをソースプログラムに変換し、更にアセンブルした結果を用いてフローチャートを修正する例を開示したが、例えば中間ファイル３もテキストデータであるので、中間ファイル３の状態で、エディタ等による一括変換が可能である。この場合には、差分ファイルコンバータ９において、変換前の中間ファイルと変換後の中間ファイルとの差分を取るか、あるいはエディタによって変換すべき中間データのみを抽出しておき、そのまま差分ファイルとするか、更に、中間ファイルに所望の変換処理を施してそのまま差分ファイルとして使用してもよい。この場合には変換されていない中間データも存在するが、処理時間が余計にかかる以外は問題は無い。
ソースプログラム５の段階で文字等の修正を行った場合に、アセンブルリストを使用せずに中間ファイル３と修正ソースプログラムテキストファイル５のみから差分ファイルを生成してもよい。また、中間ファイルの段階で単に変数名等を一括変換するのみであれば、中間ファイルコンバータ２において、図８のような順序決定処理は不要であり、元のフローチャート図形データファイル１と同じ順序で中間データを出力すればよい。
【００３３】
実施例においては、予め所定のデータ構造を有する部品図形を作成しておき、この部品図形を使用してフローチャートを作成する例を開示したが、例えばマクロ機能を有する図形作成システムにおいては、作成者の指示した任意の位置に図５に示すような部品図形を生成するようなマクロプログラムを作成しておくことにより、部品を登録しておかなくても本発明を実施可能である。また、部品を登録する機能がない図形作成システムにおいても、１図形化機能および図形の複写機能があれば、作成しておいた部品図形を複写することにより本発明を実施可能である。
【００３４】
実施例としては、プログラムの処理を表すフローチャートを開示したが、本発明は、フローチャート以外のプログラム処理の表現形式や、表、グラフ、機能ブロック図など、任意の図形データにおける図形認識に適用可能である。
実施例においては、アセンブラ言語について開示してきたが、他の言語も応用が可能である。例えばＣ言語で実施する場合、図１のソースリストコンバータ５をＣ言語用コンバータに、アセンブラ６をＣコンパイラに、アセンブルリストテキストファイル８をＣ言語用リストテキストファイルに置き換えれば可能である。
【００３５】
【発明の効果】
以上述べたように、本発明は、フローチャートに使用する処理ブロック図形データと、処理ブロック内に配置され、処理内容を記載する文字枠データと、処理ブロックの種別および形状の内の少なくとも一方を示す処理ブロック識別情報を記載する文字枠データとを組み合わせて１図形化した複合図形データ構造を使用してフローチャート等の図形を作成するので、処理ブロックの内容やブロック図形の形状、接続線の出ている方向、分岐数などが、処理ブロック識別情報により容易に識別可能であり、ブロック図形データから図形の形状等を認識する必要がない。処理ブロック識別情報は表示、印刷されないようにすることも可能であり、そうすればフローチャートを印刷した時に余分な文字が印刷されることを防止できる。また処理内容は処理ブロック識別情報およびブロック内に表示される処理内容文字列から判断するので、ブロック図形の形状や大きさは任意のものを使用可能となり、処理内容を記載する文字列の長さの制限も無くなる。
【００３６】
任意の図形作成装置（システム）に上記のような処理ブロック図形データ構造を持つ複数の処理ブロック種別の複合図形データを部品図形として登録しておき、該部品図形を使用してフローチャートを作成すれば、効率良く所望のフローチャートが作成でき、更に該フローチャート図形からプログラムを自動的に生成することができる。従って、プログラム作成およびドキュメントの作成処理が効率的に実行可能となるという効果がある。
【図面の簡単な説明】
【図１】本発明のフローチャートからプログラムを生成するシステムの構成を示すブロック図である。
【図２】登録する部品図形の例を示す説明図である。
【図３】条件分岐ブロックを表す部品図形データ例を示す説明図である。
【図４】部品番号用文字枠の他の実施例を示す説明図である。
【図５】各種部品図形の例を示す説明図である。
【図６】入力されるフローチャート図形データ例を示す説明図である。
【図７】部品を使用して作成したフローチャート例を示す説明図である。
【図８】修正フローチャート図形データファイル１２の例を示す説明図である。
【符号の説明】
１…フローチャート図形データファイル、２…中間ファイルコンバータ、３…中間ファイル、４…ソースリストコンバータ、５…ソースプログラムテキストファイル、６…アセンブラ、７…マシンコードデータファイル、８…アセンブルリストテキストファイル、９…差分ファイルコンバータ、１０…差分ファイル、１１…フローチャートコンバータ、１２…修正フローチャート図形データファイル、１３…図形作成システム、１４…部品図形データ
【図１】
0003611061.tif 000002
【図２】
0003611061.tif 000003
【図３】
0003611061.tif 000004
【図４】
0003611061.tif 000005
【図５】
0003611061.tif 000006
【図６】
0003611061.tif 000007
【図７】
0003611061.tif 000008
【図８】
0003611061.tif 000009