JPH09198236A - Method for determining instruction order and device therefor - Google Patents
Method for determining instruction order and device thereforInfo
- Publication number
- JPH09198236A JPH09198236A JP8026058A JP2605896A JPH09198236A JP H09198236 A JPH09198236 A JP H09198236A JP 8026058 A JP8026058 A JP 8026058A JP 2605896 A JP2605896 A JP 2605896A JP H09198236 A JPH09198236 A JP H09198236A
- Authority
- JP
- Japan
- Prior art keywords
- graphic data
- graphic
- storage means
- data
- block
- 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
- Stored Programmes (AREA)
Abstract
Description
【0001】[0001]
【発明の属する技術分野】本発明は命令順序決定方法お
よび装置に関し、特にフローチャート図形データからソ
ースプログラムを生成することが可能な命令順序決定方
法および装置に関するものである。BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an instruction order determining method and apparatus, and more particularly to an instruction order determining method and apparatus capable of generating a source program from flowchart graphic data.
【0002】[0002]
【従来の技術】従来、フローチャートエディタまたはP
ADエディタを使用して、標準化された部品を用いてモ
ジュール制御フローチャートを描き、C言語生成ツー
ル、アセンブラ生成ツール等を使用してソースプログラ
ムを生成し、コーディング作業を省力化するものがあっ
た。2. Description of the Related Art Conventionally, a flowchart editor or P
There has been a method in which an AD editor is used to draw a module control flowchart using standardized parts, and a C language generation tool, an assembler generation tool, or the like is used to generate a source program to save coding work.
【0003】[0003]
【発明が解決しようとする課題】従来のソースプログラ
ム生成方式においては、フローチャートエディタでフロ
ーチャートを描く場合に、予め定義された部品の組み合
わせでしかモジュール制御フローチャートを描くことが
できない。そのために、レイアウトの自由度が殆ど無
く、また構造化されたプログラム、即ち分岐した場合に
は必ず元の位置に戻るような冗長な構造のプログラムし
か描くことができず、最短の処理ステップが要求される
ような構造化されていないプログラムを描くことができ
ないという問題点があった。本発明の目的は、前記のよ
うな従来技術の問題点を解決し、自由にレイアウトした
フローチャート図形からソースプログラムを生成する方
法および装置を提供することにある。In the conventional source program generation method, when the flowchart is drawn by the flowchart editor, the module control flowchart can be drawn only by a combination of predefined parts. Therefore, there is almost no layout freedom, and only structured programs, that is, programs with a redundant structure that always returns to the original position when branched, can be drawn, and the shortest processing step is required. There is a problem that it is not possible to draw an unstructured program that is called. SUMMARY OF THE INVENTION It is an object of the present invention to provide a method and apparatus for solving the above problems of the prior art and generating a source program from freely laid out flow chart graphics.
【0004】[0004]
【課題を解決するための手段】本発明は、以下の工程を
実行する命令順序決定方法および該方法を実行する命令
順序決定装置に特徴がある。 (1)フローチャート図形データの中からフローチャー
トの始端図形データを検出し、第1の格納手段に格納す
る工程。 (2)次の図形データが処理済図形であるか或いはフロ
ーチャートの終了端子図形に達するまで以下の工程
(A)、(B)を繰り返し実行する工程。 (A)次に接続している機能ブロックの図形データを検
出し、第1の格納手段の図形データの後ろに追加する工
程。 (B)抽出した機能ブロックが条件分岐ブロックである
場合には、所定の規則に従って分岐しない側の接続先を
決定し、次の接続先とする工程。 (3)未処理の分岐が存在する限り、下記の工程
(C)、(D)を繰り返し実行する工程。 (C)次に接続する機能ブロックの図形データを検出
し、第2の格納手段の図形データに追加する工程。 (D)次の図形データが処理済みブロックであるか、あ
るいは未処理の終了端子図形である場合には、第1の格
納手段への挿入箇所を決定して、第2の格納手段内の図
形データを挿入し、第2の格納手段をクリアする工程。The present invention is characterized by an instruction order determining method for executing the following steps and an instruction order determining apparatus for executing the method. (1) A step of detecting flow chart start point graphic data from the flow chart graphic data and storing it in the first storage means. (2) A step of repeatedly executing the following steps (A) and (B) until the next figure data is a processed figure or reaches the end terminal figure of the flowchart. (A) A step of detecting the graphic data of the connected functional block and adding it to the rear of the graphic data of the first storage means. (B) If the extracted functional block is a conditional branch block, a step of deciding a connection destination on the non-branching side according to a predetermined rule and setting it as the next connection destination. (3) A step of repeatedly executing the following steps (C) and (D) as long as there are unprocessed branches. (C) A step of detecting the graphic data of the functional block to be connected next and adding it to the graphic data of the second storage means. (D) If the next graphic data is a processed block or an unprocessed end terminal graphic, the insertion position in the first storage means is determined and the graphic in the second storage means is determined. Inserting data and clearing the second storage means.
【0005】本発明はこのような構成により、フローチ
ャートの図形データからブロックの種類や接続関係を自
動的に読み取ってブロックの配列順序を自動的に決定で
きるので、各ブロックを対応する命令語に変換すること
により、ソースプログラムを生成することができる。各
ブロックの配置や接続関係は自由であり、構造化されて
いなプログラムを生成することが可能である。また、レ
イアウトに制限は無く、条件分岐の方向も自由に変更可
能であり、多ページに渡るフローチャートも処理可能で
ある。更に、フローチャートに接続されていない図形や
文字列は全く無視されるので、フローチャート図面中に
説明用の図表やコメント文を自由に書き込むことが可能
となる。With this configuration, the present invention can automatically read the type and connection relationship of blocks from the graphic data of the flow chart and automatically determine the arrangement order of the blocks. Therefore, each block is converted into a corresponding command word. By doing so, the source program can be generated. Arrangement and connection relation of each block are free, and it is possible to generate an unstructured program. In addition, there is no restriction on the layout, the direction of conditional branching can be freely changed, and a flowchart extending over many pages can be processed. Further, since figures and character strings not connected to the flowchart are ignored at all, it is possible to freely write explanatory charts and comment sentences in the flowchart drawings.
【0006】[0006]
【発明の実施の形態】以下、本発明の実施の形態を説明
する。図1は本発明の実施例であるソースプログラム生
成システムの構成を示すブロック図である。なおこのシ
ステムは例えばワークステーション等のコンピュータ上
で稼動するソフトウェアにより実現されている。図3に
示すような機能ブロック部品が任意の図形生成システム
を使用して、予め作成され、登録されている。この部品
図形を使用して作成されたフローチャート図形データフ
ァイル1は、例えば図4に示すような構造を有してお
り、このファイルが本発明による中間ファイルコンバー
タ2により後述する方式で変換されて、各ブロックの情
報がプログラムの命令語の配列順序に並び変えられた中
間ファイル3が生成される。この中間ファイル3の各ブ
ロックの情報は、図5に示すように、各ブロックを命令
語に変換するために必要な情報および、元のフローチャ
ート図形データ1との対応を取るための図形位置座標デ
ータ等を含んでいる。Embodiments of the present invention will be described below. FIG. 1 is a block diagram showing the configuration of a source program generation system that is an embodiment of the present invention. This system is realized by software running on a computer such as a workstation. The functional block components as shown in FIG. 3 are created and registered in advance using an arbitrary graphic generation system. A flowchart graphic data file 1 created using this part graphic has a structure as shown in FIG. 4, for example, and this file is converted by the intermediate file converter 2 according to the present invention in a method described later, The intermediate file 3 in which the information of each block is rearranged in the order of arrangement of the command words of the program is generated. The information of each block of the intermediate file 3 is, as shown in FIG. 5, information necessary for converting each block into an instruction word and graphic position coordinate data for establishing correspondence with the original flowchart graphic data 1. Etc. are included.
【0007】ソースリストコンバータ4は、中間ファイ
ル3の各ブロックを対応する命令語に変換することによ
って、図7に示すようなソースプログラムテキストファ
イル5を生成する。アセンブラ6はソースプログラムテ
キストファイルを入力し、マシンコードデータファイル
7およびアセンブルリストテキストファイル8を出力す
る。マシンコードデータ7は例えばROMに記憶されて
エンジン制御装置等に搭載され、アセンブルリストテキ
ストファイル8はアセンブルリストとしてプリントされ
る。なおこのアセンブラ6には、ラベル番号再付与機能
および、その命令実行に必要なクロックサイクル数付与
機能を備えており、アセンブルリストテキストファイル
8のラベル番号は見やすいように再付与されており、ま
た各命令毎にサイクル数データが付加されている。な
お、このような機能を有するアセンブラは周知である。The source list converter 4 converts each block of the intermediate file 3 into a corresponding command word to generate a source program text file 5 as shown in FIG. The assembler 6 inputs the source program text file and outputs the machine code data file 7 and the assemble list text file 8. The machine code data 7 is stored in, for example, a ROM and mounted on an engine control device or the like, and the assemble list text file 8 is printed as an assemble list. The assembler 6 is provided with a label number re-assigning function and a clock cycle number assigning function necessary for executing the instruction, and the label numbers of the assemble list text file 8 are re-assigned so that they are easy to see. Cycle number data is added to each instruction. An assembler having such a function is well known.
【0008】差分ファイルコンバータ9は、中間ファイ
ル3、ソースプログラムテキストファイル5、アセンブ
ルリストテキストファイル8を入力し、アセンブラによ
って修正されたラベル番号や付加されたサイクル数情
報、あるいはソースプログラムテキストファイルを任意
のエディタ等によって修正した情報を含む差分ファイル
10を生成する。この差分ファイルは、フローチャート
コンバータ11に入力され、元のフローチャート図形デ
ータファイルと合成されて、修正されたフローチャート
図形データファイル12を生成する。従って、この修正
済みフローチャートは、例えばラベル番号が10おきに
修正され、各処理ブロックにサイクル数が追加され、ソ
ースプログラムテキストファイルの段階で修正された変
数名等の文字も修正されている。The difference file converter 9 inputs the intermediate file 3, the source program text file 5, and the assemble list text file 8 and arbitrarily outputs the label number corrected by the assembler, the added cycle number information, or the source program text file. The difference file 10 including the information corrected by the editor or the like is generated. This difference file is input to the flow chart converter 11 and is combined with the original flow chart graphic data file to generate the modified flow chart graphic data file 12. Therefore, in this modified flowchart, for example, the label number is modified every 10th, the number of cycles is added to each processing block, and the characters such as the variable name modified at the stage of the source program text file are also modified.
【0009】本発明のソースプログラム生成システムを
使用するためには、まず、任意の図形作成システムによ
ってフローチャート図形を作成する必要がある。この際
に、図形作成システムに通常備えられている機能を利用
して、各機能ブロックの図形を部品として予め作成し、
登録しておく。図3は登録する部品の例を示す説明図で
ある。図3(a)は通常の処理ブロックであり、ブロッ
クの内部に処理内容、ここでは「A←B」即ちBレジス
タからAレジスタへのデータの転送であることを示して
いる。上部の直線は他のブロックとの接続線であり、右
上の数字「10」はラベル番号を示す文字である。In order to use the source program generation system of the present invention, it is first necessary to create a flowchart graphic by an arbitrary graphic creation system. At this time, the functions of the graphic creation system are usually used to create the graphics of each functional block in advance as parts.
Register. FIG. 3 is an explanatory diagram showing an example of a component to be registered. FIG. 3A shows a normal processing block, and the processing contents inside the block, here, “A ← B”, that is, data transfer from the B register to the A register is shown. The upper straight line is a connection line with other blocks, and the number "10" at the upper right is a letter indicating the label number.
【0010】図3(a)の部品の場合には、四角図形、
内部の処理内容を示す文字枠、上部の接続線、ラベル番
号用文字枠、サイクル数用文字枠等が1つの図形として
結合されている。なお、この他に、各ブロックの種別を
示す部品番号データを各ブロックに付加するために、四
角図形の枠内を背景と同色で塗りつぶし、四角図形の背
後に部品番号用文字枠を設けて部品番号を記入してあ
る。従って、部品を表示、印刷した場合には部品番号は
現れないが、図形データとしては、四角図形と結合され
た形で部品番号情報が付与されている。図3(b)はサ
ブルーチン、(c)、(d)は条件分岐ブロック、
(e)は始端、(f)は終端、(g)は無条件分岐のブ
ロックをそれぞれ表している。In the case of the part shown in FIG. 3 (a), a square figure,
A character frame indicating internal processing contents, an upper connecting line, a label number character frame, a cycle number character frame, and the like are combined as one figure. In addition to this, in order to add the part number data indicating the type of each block to each block, the inside of the square figure is filled with the same color as the background, and the part number character frame is provided behind the square figure I have entered the number. Therefore, when the part is displayed and printed, the part number does not appear, but as the graphic data, the part number information is attached in a form combined with the square graphic. 3 (b) is a subroutine, (c) and (d) are conditional branch blocks,
(E) shows a start end, (f) shows an end, and (g) shows an unconditional branch block.
【0011】図4はフローチャート図形データの一例を
示す説明図である。フローチャート図形データの形式は
各図形作成システム(ソフトウェア)によって異なる
が、例えば図3(a)のような四角形の部品を作成した
場合の図形データ13は、通常図4に示すようなデータ
群から形成されている。枠用四角形データ14は、例え
ば図形種別(四角形)データ、左上の座標および幅、高
さからなる座標データ、枠の線種情報、図形内の塗りつ
ぶしパターンデータ等の情報を含んでいる。なおブロッ
クは全て、背後にある各ブロック部品固有の部品番号文
字枠の文字を表示させないようにするために、枠内を背
景と同色で塗りつぶしてある。FIG. 4 is an explanatory diagram showing an example of the flowchart graphic data. The format of the flowchart graphic data differs depending on each graphic creation system (software). For example, the graphic data 13 in the case of creating a quadrangular part as shown in FIG. 3A is usually formed from a data group as shown in FIG. Has been done. The frame quadrangle data 14 includes, for example, graphic type (quadrangle) data, coordinate data including upper left coordinates and width and height, frame line type information, fill pattern data in a figure, and the like. Note that all the blocks are filled with the same color as the background in the frame so that the characters in the part number character frame peculiar to each block component behind are not displayed.
【0012】接続線用直線データ15は、図形種別(直
線)データ、始点、終点の座標データ、線種データ等か
らなる。各文字枠データ16、17、18、19はそれ
ぞれ図形種別(文字枠)データ、座標データ、表示され
る文字列データ、書式データ、文字修飾データ等を含ん
でいる。前記したように部品番号用文字枠17は四角枠
14の背後に存在し、表示文字列用文字枠データ16は
手前にある。ラベル用文字枠は例えば枠の右上(および
左上)に配置され、サイクル数用文字枠は例えば枠の右
側に存在する。これらの各図形データは1図形として結
合されており、移動、コピー時には1つの図形データと
して処理される。The connecting line straight line data 15 includes graphic type (straight line) data, start point and end point coordinate data, line type data, and the like. Each of the character frame data 16, 17, 18, and 19 includes graphic type (character frame) data, coordinate data, displayed character string data, format data, character modification data, and the like. As described above, the part number character frame 17 exists behind the square frame 14, and the display character string character frame data 16 is in the front. The label character frame is arranged, for example, on the upper right (and upper left) of the frame, and the cycle number character frame is, for example, on the right side of the frame. These graphic data are combined as one graphic, and are processed as one graphic data when moving or copying.
【0013】図2は、図3の部品を使用して作成したフ
ローチャート例を示す説明図である。なお図中の点線、
各ブロックのステップ番号(S??)および接続線上の
黒点は説明のために記載したものであり、フローチャー
ト図面に記載されているものではない。但し、接続関係
が判断できれば図面に記載されていても本発明の処理は
可能である。フローチャートを作成する場合には、まず
始端部品を上部に配置し、ラベル用の文字枠内にラベル
の文字(XYZ**)を記入する。FIG. 2 is an explanatory diagram showing an example of a flow chart created using the parts of FIG. The dotted line in the figure,
The step number (S ??) of each block and the black dot on the connecting line are provided for the purpose of explanation, and are not shown in the flowchart drawings. However, if the connection relationship can be determined, the processing of the present invention is possible even if it is shown in the drawing. When creating a flow chart, first, the starting end part is placed on the upper part, and the characters (XYZ **) of the label are entered in the character frame for the label.
【0014】次に接続する部品、例えば四角形の部品
を、接続線がつながるように配置するか、あるいは配置
した後に接続線の端同士を線で接続する。図2中の黒点
は部品同士あるいは部品と直線との接続点を示してい
る。そして、処理内容を表す表示文字列(A←XS)、
ラベル番号(10)を記入し、更に必要があれば、文字
枠を生成してコメント(DD=0)等を記入する。この
ようにして、任意の部品を任意の位置に配置し、任意に
接続して、終端記号までフローチャートを作成する。な
お、ステップS5とステップS9のように通常の処理同
士が合流する場合にはいずれかの処理の後に無条件分岐
ブロックSJ(S10)を挿入しておく。Next, a component to be connected, for example, a quadrangular component is arranged so that the connecting line is connected, or after the arrangement, the ends of the connecting line are connected by a line. Black dots in FIG. 2 indicate connection points between parts or a part and a straight line. Then, a display character string (A ← XS) indicating the processing content,
Enter the label number (10), and if necessary, create a character frame and enter a comment (DD = 0). In this way, arbitrary parts are arranged at arbitrary positions, arbitrarily connected, and a flowchart is created up to the terminal symbol. When normal processing merges as in steps S5 and S9, the unconditional branch block SJ (S10) is inserted after either processing.
【0015】図8は、図1の中間ファイルコンバータ2
における命令順序決定処理を示すフローチャートであ
る。ステップS20においては、入力されたフローチャ
ート図形データの中からスタート端子(始端図形)を検
索する。この検索は、各ブロック図形の部品番号をチェ
ックしていくことにより実行する。なお図形データは例
えば作成順に配列しており、図形の配置とデータの配列
とは無関係である。スタート端子を発見した場合には、
該ブロックに対応する中間コードを生成してバッファ1
に格納する。FIG. 8 shows the intermediate file converter 2 of FIG.
5 is a flowchart showing an instruction order determining process in FIG. In step S20, the start terminal (starting end figure) is searched from the input flowchart figure data. This search is executed by checking the part number of each block figure. The graphic data are arranged in the order of creation, for example, and the layout of the graphic and the data arrangement are irrelevant. If you find the start terminal,
Generate an intermediate code corresponding to the block to generate a buffer 1
To be stored.
【0016】ステップS21においては、スタート端子
(2番目以降については前のブロック)と接続している
ブロックを見つけ、対応する中間コードをバッファ1に
出力する。接続は、例えばスタート端子の接続線の終端
座標が接触しているブロックあるいは線を検索し、線の
場合には更にその線の終端の接触しているブロックまた
は線を検索して行くことにより認識する。そして出力さ
れたブロック図形データには処理済みを示すマークを付
与しておく。図5は出力される中間コード例を示す説明
図である。中間コードは例えば1ブロックが1行に対応
しており、通し番号である行番号と共に、ページ番号、
部品番号、表示文字列、ラベル番号、ブロック座標デー
タ等が区切りコード(この例では”?”)によって区切
られて所定のフォーマットで配列している。In step S21, a block connected to the start terminal (the previous block for the second and subsequent terminals) is found, and the corresponding intermediate code is output to the buffer 1. The connection is recognized by, for example, searching for a block or a line that the end coordinates of the connecting line of the start terminal are in contact with, and in the case of a line, further searching for a block or a line that is in contact with the end of the line. To do. Then, a mark indicating that the processing has been completed is added to the output block graphic data. FIG. 5 is an explanatory diagram showing an example of the output intermediate code. In the intermediate code, for example, one block corresponds to one line, and together with the line number which is a serial number, the page number,
The part number, the display character string, the label number, the block coordinate data, etc. are separated by a delimiter code ("?" In this example) and arranged in a predetermined format.
【0017】図8に戻って、ステップS22において
は、バッファ1に出力したブロックが条件分岐命令に対
応するブロックであるか否かが判定され、結果が肯定の
場合にはステップS23に移行する。ステップS23に
おいては、ブロックの接続線に付与する「Y」あるいは
「N」の文字に下線が付加されているか否かが判定さ
れ、結果が肯定の場合にはステップS25に移行する
が、否定の場合にはステップS24に移行する。Returning to FIG. 8, in step S22, it is determined whether or not the block output to the buffer 1 is the block corresponding to the conditional branch instruction. If the result is affirmative, the process proceeds to step S23. In step S23, it is determined whether or not an underline is added to the letters "Y" or "N" added to the connecting line of the block. If the result is affirmative, the process proceeds to step S25, but a negative determination is made. In that case, the process proceeds to step S24.
【0018】ステップS24においては、条件分岐ブロ
ックのひし形図形の下端に接続されているブロックを次
のブロックに選択する。またステップS25において
は、下線のない文字に対応する頂点に接続されているブ
ロックを次のブロックに選択する。このような処理によ
り、フローチャートの作成者は命令の配列を制御するこ
とができる。ステップS26においては、次の図形デー
タが処理済図形であるか或いはバッファ1に出力したブ
ロックが終了端子であるか否かが判定され、結果が否定
の場合にはステップS21に戻って次のブロックの処理
を行うが、肯定の場合にはステップS27に移行する。In step S24, the block connected to the lower end of the rhombic figure of the conditional branch block is selected as the next block. In step S25, the block connected to the vertex corresponding to the character without underline is selected as the next block. By such processing, the creator of the flowchart can control the arrangement of the instructions. In step S26, it is determined whether or not the next graphic data is a processed graphic or the block output to the buffer 1 is the end terminal. If the result is negative, the process returns to step S21 and the next block is returned. Processing is performed, but if the result is affirmative, the process proceeds to step S27.
【0019】ステップS27においては、条件分岐命令
において選択されなかった方の出線に接続されているブ
ロックで、バッファへの出力処理が実行されていない未
処理ブランチ(分岐)が存在するか否かが判定され、結
果が否定の場合には全ての処理が終了したことになる
が、肯定の場合にはステップS39に移行する。ステッ
プS39においてはバッファ2をクリアし、ステップS
28においては、ステップS21と同様の処理を行う
が、中間コードをバッファ1ではなくバッファ2に出力
する。In step S27, it is determined whether or not there is an unprocessed branch (branch) for which the output processing to the buffer is not executed in the block connected to the output line which is not selected in the conditional branch instruction. Is determined, and if the result is negative, it means that all the processes have been completed, but if the result is affirmative, the process proceeds to step S39. In step S39, the buffer 2 is cleared, and step S
In step 28, the same processing as step S21 is performed, but the intermediate code is output to the buffer 2 instead of the buffer 1.
【0020】ステップS29においては、処理したブロ
ックが終了端子であるか否かが判定され、結果が肯定の
場合にはステップS35に移行する。ステップS35に
おいては、バッファ2に出力されている中間コードデー
タをバッファ1の最後に追加する。そしてステップS2
7に移行する。ステップS29の判定結果が否定の場合
にはステップS30に移行し次のブロックが既に中間コ
ードが出力されているブロックであるか否かが判定さ
れ、結果が否定の場合にはステップS31〜S34の処
理に移行し、ここではステップS22〜S25の処理と
同様の処理が行われ、ステップS28に移行する。In step S29, it is determined whether or not the processed block is the end terminal, and if the result is affirmative, the process proceeds to step S35. In step S35, the intermediate code data output to buffer 2 is added to the end of buffer 1. And step S2
Move to 7. If the determination result in step S29 is negative, the process proceeds to step S30, and it is determined whether or not the next block is a block in which the intermediate code has already been output. If the result is negative, steps S31 to S34 are performed. The process shifts to the process, where the same process as the process of steps S22 to S25 is performed, and the process shifts to step S28.
【0021】ステップS30の判定結果が肯定の場合に
はステップS36に移行し、処理したブロックが無条件
ジャンプ(分岐)ブロックであるか否かが判定される。
そして結果が肯定の場合にはステップS37に移行する
が、否定の場合にはステップS38に移行する。ステッ
プS37においては、現在処理中の分岐の元の処理ブロ
ックグループに戻り、バッファ1内で無条件ジャンプか
終了端子を探し、最初に発見したものの次にバッファ2
のデータを挿入する。ステップS38においては、現在
処理中の分岐の次に接続されている処理済みブロックの
直前にバッファ2のデータを挿入し、ステップS27に
移行する。When the determination result of step S30 is affirmative, the process proceeds to step S36, and it is determined whether or not the processed block is an unconditional jump (branch) block.
If the result is affirmative, the process proceeds to step S37, but if the result is negative, the process proceeds to step S38. In step S37, the processing block group of the branch currently being processed is returned to, an unconditional jump or an end terminal is searched in the buffer 1, and the first found one is followed by the buffer 2
Insert the data of. In step S38, the data in the buffer 2 is inserted immediately before the processed block connected next to the branch currently being processed, and the process proceeds to step S27.
【0022】ステップS38の処理を行うためには、挿
入される位置の前に無条件分岐が存在する必要があり、
フローチャートの作成時に予め無条件分岐を挿入してお
くか、あるいは自動的に挿入されるように処理する必要
がある。In order to perform the processing of step S38, an unconditional branch must exist before the position to be inserted,
It is necessary to insert an unconditional branch in advance at the time of creating the flowchart, or perform processing so that it is automatically inserted.
【0023】図6は、図2のフローチャートについて、
図8に示す命令順序決定処理を行った場合のバッファ内
の中間コードの配列を示す説明図である。なお各中間コ
ードの内容は命令語を用いて表現してあり、数字はラベ
ル番号を表す。図8の命令順序決定処理においては、ま
ず、部品番号情報を検索して、図2のスタート端子を検
出する。そして、接続線の座標情報からスタート端子と
接続している部品S1を検出し、中間コードをバッファ
1に出力する。FIG. 6 shows the flowchart of FIG.
It is explanatory drawing which shows the arrangement | sequence of the intermediate code in a buffer at the time of performing the instruction order determination process shown in FIG. The contents of each intermediate code are expressed using command words, and the numbers represent label numbers. In the instruction sequence determination processing of FIG. 8, first, the part number information is searched to detect the start terminal of FIG. Then, the component S1 connected to the start terminal is detected from the coordinate information of the connection line, and the intermediate code is output to the buffer 1.
【0024】次に接続線の座標からS2を検出するが、
ステップS2の条件分岐ブロックにおいては、下側の出
線の「N」に下線が付与されているので、図8のステッ
プS23からステップS25に移行して、下線の無い方
の出線「Y」側が次のブロックへの接続端子として選択
される。その結果、次のブロックはS11となる。以下
同様にS12、S13、S14、S9、S10と移行し
て、ラベル番号45の終了端子へ到達し、対応する中間
コードがこの順序でバッファ1に格納される。以上が、
図8のステップS20〜26に対応するメインの処理ル
ート(A)である。Next, S2 is detected from the coordinates of the connecting line.
In the conditional branch block of step S2, the underline "N" is underlined, so the process proceeds from step S23 to step S25 in FIG. The side is selected as the connection terminal to the next block. As a result, the next block becomes S11. Similarly, the process proceeds to S12, S13, S14, S9, and S10 to reach the end terminal of the label number 45, and the corresponding intermediate code is stored in the buffer 1 in this order. More than,
It is the main processing route (A) corresponding to steps S20 to S26 of FIG.
【0025】次に未処理のブランチ(分岐)についての
処理を行う。まずS2の「N」出線について、図8のス
テップS28〜38の処理を行い、S3、S4、S5の
順序で中間コード(B)を出力するが、このデータはバ
ッファ2に出力される。そして、S5の次の処理済みブ
ロックである終了端子は無条件ジャンプではないので、
ステップS38の処理を実行し、このグループ(B)の
次につながっている終了端子の直前にバッファ2のデー
タ(B)を挿入する。Next, processing for unprocessed branches is performed. First, for the “N” output line of S2, the processes of steps S28 to 38 of FIG. 8 are performed, and the intermediate code (B) is output in the order of S3, S4, and S5, but this data is output to the buffer 2. Since the end terminal, which is the processed block after S5, is not an unconditional jump,
The process of step S38 is executed, and the data (B) of the buffer 2 is inserted immediately before the end terminal connected next to this group (B).
【0026】次に、S4の「N」出線について、図8の
ステップS28〜38の処理を行い、S6、S7、S8
の順序で中間コード(C)をバッファ2に出力する。そ
して、S8の次の処理済みブロックであるS9は無条件
ジャンプではないので、ステップS38の処理を実行
し、このグループ(C)の次につながっているS9の直
前にバッファ2のデータ(C)を挿入する。以上のよう
に、図6に示すバッファ1内の中間コード(A)内に、
バッファ2に格納された中間コード(B)、(C)がそ
れぞれ挿入されて、中間コードの配列が完成する。Next, for the "N" outgoing line in S4, the processes of steps S28 to S38 in FIG. 8 are performed, and S6, S7, S8.
The intermediate code (C) is output to the buffer 2 in the order of. Since S9, which is the processed block next to S8, is not an unconditional jump, the process of step S38 is executed, and the data (C) in the buffer 2 is immediately before S9 that is connected next to this group (C). Insert. As described above, in the intermediate code (A) in the buffer 1 shown in FIG.
The intermediate codes (B) and (C) stored in the buffer 2 are respectively inserted, and the array of intermediate codes is completed.
【0027】図7は、完成された中間ファイル3をソー
スリストコンバータ4によって変換したソースプログラ
ムを示す説明図である。ソースリストコンバータ4は、
中間ファイルの各中間コードをそのままの順序で対応す
る命令語のメモニックコードに変換していく。対応は部
品番号および表示文字列情報から判断する。図7の左側
から、ラベル、命令語のメモニックコード、オペランド
が記載されている。なお右側には、括弧内に図2に示し
た対応するステップ番号が、その右側にはルート(グル
ープ)が表示されている。この例においては言語はアセ
ンブラであり、中間コードと命令語は1対1に対応して
いるが、言語が高級言語であってもよく、また1つの中
間コードが複数の命令語の列と対応していてもよい。FIG. 7 is an explanatory diagram showing a source program obtained by converting the completed intermediate file 3 by the source list converter 4. Source list converter 4
Each intermediate code of the intermediate file is converted into the memonic code of the corresponding instruction word in the same order. Correspondence is determined from the part number and display character string information. From the left side of FIG. 7, a label, a memonic code of an instruction word, and an operand are described. The corresponding step numbers shown in FIG. 2 are displayed in parentheses on the right side, and the route (group) is displayed on the right side. In this example, the language is assembler, and the intermediate code and the instruction word correspond one-to-one, but the language may be a high-level language, and one intermediate code corresponds to a sequence of a plurality of instruction words. You may have.
【0028】以上、実施例を説明したが、次のような変
形例も考えられる。実施例においては、例えば図2のS
5とS9の処理後の合流点のような箇所には、フローチ
ャートの作成者が片方に無条件ジャンプブロックを予め
挿入している。しかし、フローチャート作成時には無条
件ジャンプを挿入せず、中間ファイルコンバータ2にお
いて自動的に無条件ジャンプの中間コードを挿入するよ
うにしてもよい。このような、条件分岐ブロックからで
はない通常の処理同士の合流の場合には、例えばメイン
のルートあるいは先に処理されたルートにおいて必ず無
条件ジャンプを挿入するか、あるいは合流時に接続線に
矢印が付いているか、あるいはその他の予め定められた
任意のマークが付与されているルート側に無条件ジャン
プを挿入することにより実施できる。この際ラベル番号
が無ければ自動的に付与する。Although the embodiment has been described above, the following modifications are also possible. In the embodiment, for example, S in FIG.
An unconditional jump block is previously inserted in one of the places such as the confluence point after the processes of 5 and S9 by the creator of the flowchart. However, the unconditional jump may not be inserted when the flowchart is created, and the intermediate file converter 2 may automatically insert the intermediate code of the unconditional jump. In the case of such merging of normal processing not from conditional branch blocks, for example, always insert an unconditional jump in the main route or the previously processed route, or make an arrow on the connecting line at the time of merging. It can be implemented by inserting an unconditional jump on the route side that is attached or is given another predetermined arbitrary mark. At this time, if there is no label number, it is automatically assigned.
【0029】実施例においては、ブロックと命令語が1
対1に対応したアセンブラに適用する例を開示したが、
本発明は任意の言語に適用可能であり、またブロックを
複数命令語からなるマクロに対応させることも可能であ
る。また、フローチャート図形データの形式は任意であ
り、中間ファイルを生成せずに直接ソースプログラムを
生成することも可能である。In the embodiment, one block and one instruction word
Although an example of applying to an assembler corresponding to one to one has been disclosed,
The present invention can be applied to any language, and a block can be made to correspond to a macro composed of a plurality of instruction words. The flow chart graphic data may have any format, and the source program can be directly generated without generating the intermediate file.
【0030】[0030]
【発明の効果】以上述べたように、本発明は、フローチ
ャートの図形データからブロックの種類や接続関係を自
動的に読み取ってブロックの配列順序を自動的に決定で
きるので、各ブロックを対応する命令語に変換すること
により、ソースプログラムを生成することができる。各
ブロックの配置や接続関係は自由であり、構造化されて
いなプログラムを生成することが可能である。また、レ
イアウトに制限は無く、条件分岐の方向も自由に変更可
能であり、多ページに渡るフローチャートも処理可能で
ある。更に、フローチャートに接続されていない図形や
文字列は全く無視されるので、フローチャート図面中に
説明用の図表やコメント文を自由に書き込むことが可能
となるという効果がある。As described above, according to the present invention, it is possible to automatically read the type and connection relationship of blocks from the graphic data of the flow chart and automatically determine the arrangement order of the blocks. A source program can be generated by converting into a word. Arrangement and connection relation of each block are free, and it is possible to generate an unstructured program. In addition, there is no restriction on the layout, the direction of conditional branching can be freely changed, and a flowchart extending over many pages can be processed. Furthermore, since figures and character strings not connected to the flowchart are ignored at all, there is an effect that it is possible to freely write explanatory charts and comment sentences in the flowchart drawings.
【図1】本発明のソースプログラム生成システムの構成
を示すブロック図である。FIG. 1 is a block diagram showing a configuration of a source program generation system of the present invention.
【図2】部品を使用して作成したフローチャート例を示
す説明図である。FIG. 2 is an explanatory diagram showing an example of a flowchart created using parts.
【図3】登録する部品の例を示す説明図である。FIG. 3 is an explanatory diagram showing an example of parts to be registered.
【図4】フローチャート図形データの一例を示す説明図
である。FIG. 4 is an explanatory diagram showing an example of flowchart graphic data.
【図5】中間ファイルデータの一例を示す説明図であ
る。FIG. 5 is an explanatory diagram showing an example of intermediate file data.
【図6】命令順序決定処理を行った場合の中間コードの
配列を示す説明図である。FIG. 6 is an explanatory diagram showing an array of intermediate codes when an instruction order determination process is performed.
【図7】中間ファイルを変換したソースプログラムを示
す説明図である。FIG. 7 is an explanatory diagram showing a source program obtained by converting an intermediate file.
【図8】中間ファイルコンバータ2における命令順序決
定処理を示すフローチャートである。FIG. 8 is a flowchart showing instruction order determination processing in the intermediate file converter 2.
1…フローチャート図形データファイル、2…中間ファ
イルコンバータ、3…中間ファイル、4…ソースリスト
コンバータ、5…ソースプログラムテキストファイル、
6…アセンブラ、7…マシンコードデータファイル、8
…アセンブルリストテキストファイル、9…差分ファイ
ルコンバータ、10…差分ファイル、11…フローチャ
ートコンバータ、12…修正フローチャート図形データ
ファイル1 ... Flow chart graphic data file, 2 ... Intermediate file converter, 3 ... Intermediate file, 4 ... Source list converter, 5 ... Source program text file,
6 ... Assembler, 7 ... Machine code data file, 8
... Assemble list text file, 9 ... Difference file converter, 10 ... Difference file, 11 ... Flow chart converter, 12 ... Modified flow chart graphic data file
Claims (6)
法。 (1)フローチャート図形データの中からフローチャー
トの始端図形データを検出し、第1の格納手段に格納す
る工程。 (2)次の図形データが処理済図形であるか或いはフロ
ーチャートの終了端子図形に達するまで以下の工程
(A)、(B)を繰り返し実行する工程。 (A)次に接続している機能ブロックの図形データを検
出し、第1の格納手段の図形データの後ろに追加する工
程。 (B)抽出した機能ブロックが条件分岐ブロックである
場合には、所定の規則に従って分岐しない側の接続先を
決定し、次の接続先とする工程。 (3)未処理の分岐が存在する限り、下記の工程
(C)、(D)を繰り返し実行する工程。 (C)次に接続する機能ブロックの図形データを検出
し、第2の格納手段の図形データに追加する工程。 (D)次の図形データが処理済みブロックであるか、あ
るいは未処理の終了端子図形である場合には、第1の格
納手段への挿入箇所を決定して、第2の格納手段内の図
形データを挿入し、第2の格納手段をクリアする工程。1. A method for determining the order of instructions for executing the following steps. (1) A step of detecting flow chart start point graphic data from the flow chart graphic data and storing it in the first storage means. (2) A step of repeatedly executing the following steps (A) and (B) until the next figure data is a processed figure or reaches the end terminal figure of the flowchart. (A) A step of detecting the graphic data of the connected functional block and adding it to the rear of the graphic data of the first storage means. (B) If the extracted functional block is a conditional branch block, a step of deciding a connection destination on the non-branching side according to a predetermined rule and setting it as the next connection destination. (3) A step of repeatedly executing the following steps (C) and (D) as long as there are unprocessed branches. (C) A step of detecting the graphic data of the functional block to be connected next and adding it to the graphic data of the second storage means. (D) If the next graphic data is a processed block or an unprocessed end terminal graphic, the insertion position in the first storage means is determined and the graphic in the second storage means is determined. Inserting data and clearing the second storage means.
が処理済みブロックである場合には、第1の格納手段に
格納されている前記次の図形データの直前に、第2の格
納手段内の図形データを挿入することを特徴とする請求
項1に記載の命令順序決定方法。2. In the step (D), when the next graphic data is a processed block, the second storage means is provided immediately before the next graphic data stored in the first storage means. The instruction sequence determining method according to claim 1, wherein graphic data in the table is inserted.
段に格納した最後の図形が終了端子であった場合には、
第2の格納手段内の図形データを第1の格納手段の図形
データの後に追加することを特徴とする請求項1に記載
の命令順序決定方法。3. In the step (D), if the last figure stored in the second storage means is the end terminal,
2. The instruction order determining method according to claim 1, wherein the graphic data in the second storage means is added after the graphic data in the first storage means.
タが処理済みブロックであり、かつ第2の格納手段に格
納した最後の図形が無条件分岐図形であった場合には、
現在処理中の分岐の元の処理ブロック列に戻り、その中
で最初に発見した無条件分岐あるいは終了端子の直後に
第2の格納手段内の図形データを挿入することを特徴と
する請求項1に記載の命令順序決定方法。4. In the step (D), when the next graphic data is a processed block and the last graphic stored in the second storage means is an unconditional branch graphic,
The graphic data in the second storage means is inserted immediately after the first unconditional branch or end terminal found in the original processing block sequence of the branch currently being processed. The instruction order determination method described in.
を実行することを特徴とする請求項1ないし4のいずれ
かに記載の命令順序決定方法。(4)第1の格納手段に
格納されている図形データの順序に基づき、各図形デー
タに対応するアセンブラ命令語あるいは命令語列を配列
してソースプログラムデータを生成する工程。5. The following step (4) after the step (3)
5. The instruction order determining method according to claim 1, wherein the instruction order determining method is executed. (4) A step of arranging an assembler command word or a command word string corresponding to each graphic data based on the order of the graphic data stored in the first storage means to generate source program data.
順序決定装置。 (1)フローチャート図形データ中の各処理ブロック図
形の種類および接続先を認識する図形認識手段。 (2)接続されている処理ブロック図形データを順に抽
出して格納手段に格納する格納手段。 (3)処理ブロックが条件分岐図形であった場合には、
所定の規則に従って分岐しない側の接続先を決定し、次
の接続先とする接続先決定手段。 (4)次の図形データが処理済みブロックであるか否か
を判定する判定手段、 (5)始端図形から順に図形を認識して、条件分岐図形
の場合には接続先決定手段により接続先を決定し、順に
第1の格納手段に格納していき、次の図形データが処理
済図形であるか或いは終端図形に達した場合には、未処
理の分岐に対して順に図形を認識して、条件分岐図形の
場合には接続先決定手段により接続先を決定し、順に第
2の格納手段に格納していき、次の図形データが処理済
みブロックであるか、あるいは未処理の終了端子図形で
ある場合には、第1の格納手段への挿入箇所を決定し
て、第2の格納手段内の図形データを挿入し、第2の格
納手段をクリアする制御手段。6. An instruction order determining device having the following means (1) to (5). (1) Graphic recognition means for recognizing the type and connection destination of each processing block graphic in the flowchart graphic data. (2) Storage means for sequentially extracting the connected processing block graphic data and storing them in the storage means. (3) If the processing block is a conditional branch graphic,
A connection destination determining means that determines a connection destination on the non-branching side according to a predetermined rule and sets it as the next connection destination. (4) Judging means for deciding whether or not the next figure data is a processed block, (5) Recognizing the figures in order from the starting end figure, and in the case of a conditional branch figure, the connection destination is determined by the connection destination determining means. If the next figure data is a processed figure or reaches the terminal figure, the figures are sequentially recognized for unprocessed branches, In the case of a conditional branch graphic, the connection destination is determined by the connection destination determining means and sequentially stored in the second storage means, and the next graphic data is a processed block or an unprocessed end terminal graphic. In some cases, control means for deciding an insertion location in the first storage means, inserting graphic data in the second storage means, and clearing the second storage means.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8026058A JPH09198236A (en) | 1996-01-19 | 1996-01-19 | Method for determining instruction order and device therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP8026058A JPH09198236A (en) | 1996-01-19 | 1996-01-19 | Method for determining instruction order and device therefor |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09198236A true JPH09198236A (en) | 1997-07-31 |
Family
ID=12183090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP8026058A Pending JPH09198236A (en) | 1996-01-19 | 1996-01-19 | Method for determining instruction order and device therefor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPH09198236A (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007233905A (en) * | 2006-03-03 | 2007-09-13 | Nec Corp | Requirement specification preparation support method, program therefor, and requirement specification preparation support device |
JP2010204855A (en) * | 2009-03-02 | 2010-09-16 | Toshiba Corp | Program generation device and block diagram generation device |
JP2011039618A (en) * | 2009-08-07 | 2011-02-24 | Meidensha Corp | Software development support system, support method, and program |
WO2018012348A1 (en) * | 2016-07-13 | 2018-01-18 | 三菱電機株式会社 | Program creation device, program creation execution device, and program creation method |
-
1996
- 1996-01-19 JP JP8026058A patent/JPH09198236A/en active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007233905A (en) * | 2006-03-03 | 2007-09-13 | Nec Corp | Requirement specification preparation support method, program therefor, and requirement specification preparation support device |
JP2010204855A (en) * | 2009-03-02 | 2010-09-16 | Toshiba Corp | Program generation device and block diagram generation device |
JP2011039618A (en) * | 2009-08-07 | 2011-02-24 | Meidensha Corp | Software development support system, support method, and program |
WO2018012348A1 (en) * | 2016-07-13 | 2018-01-18 | 三菱電機株式会社 | Program creation device, program creation execution device, and program creation method |
JP6272595B1 (en) * | 2016-07-13 | 2018-01-31 | 三菱電機株式会社 | Program creation device, program creation execution device, and program creation method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7111011B2 (en) | Document processing apparatus, document processing method, document processing program and recording medium | |
JPS6375835A (en) | Apparatus for generating intended code, program, list and design document | |
JPH07219758A (en) | Specification generation method | |
JPH0769921B2 (en) | Document logical structure generation method | |
JPH09198236A (en) | Method for determining instruction order and device therefor | |
JP3611061B2 (en) | Graphic creation device | |
CN115248881A (en) | Webpage input information rendering method and device, electronic equipment and storage medium | |
JPS6389970A (en) | Kana-kanji conversion device | |
JPH01309179A (en) | Natural language analyzing system | |
JPH10254687A (en) | Program analysis device and analysis method therefor | |
JPH09212348A (en) | Graphic correcting method and device therefor | |
JP3003459B2 (en) | Program creation support device | |
Costagliola et al. | Using linear positional grammars for the LR parsing of 2-D symbolic languages | |
JP3893709B2 (en) | Character string conversion apparatus and method, kana-kanji conversion apparatus, sentence proofreading apparatus, and recording medium recording the program | |
JPH077411B2 (en) | Document processor | |
JPH09325960A (en) | Document processing system | |
CN118113861A (en) | Writing assisting method, writing assisting device, electronic equipment, medium and product | |
Brenner | Extending APL for pattern matching | |
CN118444924A (en) | Dockerfile instruction line level dependency relation extraction method based on rules | |
Vanek | TUG 2023 program | |
JPH08339365A (en) | Method and device for documentation | |
JPH07271788A (en) | Reading character string conversion device | |
JPH10340281A (en) | Automatic editing device for expanded connection drawing | |
JPH1083417A (en) | Cad system and its language display conversion method | |
JP2001101165A (en) | Document editor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040629 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040827 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040921 |