JP2021144369A - Data processing apparatus and data processing method - Google Patents

Data processing apparatus and data processing method Download PDF

Info

Publication number
JP2021144369A
JP2021144369A JP2020041450A JP2020041450A JP2021144369A JP 2021144369 A JP2021144369 A JP 2021144369A JP 2020041450 A JP2020041450 A JP 2020041450A JP 2020041450 A JP2020041450 A JP 2020041450A JP 2021144369 A JP2021144369 A JP 2021144369A
Authority
JP
Japan
Prior art keywords
input
tile
data
output
execution
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.)
Granted
Application number
JP2020041450A
Other languages
Japanese (ja)
Other versions
JP7338096B2 (en
Inventor
千田好弘
Yoshihiro Senda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to JP2020041450A priority Critical patent/JP7338096B2/en
Publication of JP2021144369A publication Critical patent/JP2021144369A/en
Application granted granted Critical
Publication of JP7338096B2 publication Critical patent/JP7338096B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Digital Computer Display Output (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

To provide an environment which allows programming to be carried out by using only an input device with minimum functions.SOLUTION: According to the present invention, a graph format of a data flow graph is employed as an expression format for a program, and each command and option is surrounded with closed regions, thereby exchanging data between adjacent closed regions. Input and edition of a graph format is carried out only with designation of positions on a screen and designation of several kinds such as a single click and a double click.SELECTED DRAWING: Figure 7

Description

本発明はプログラミング言語の入力と編集およびプログラムの実行方法とプログラムによる機器制御方法に関する。 The present invention relates to input and editing of a programming language, a method of executing a program, and a method of controlling a device by a program.

アルゴリズムの視覚的表現については、JIS規格などで規定されているフローチャート形式や、そのほか様々な記法が考案されている。その中の一つにデータフローグラフ形式があり、そのグラフを直接実行するデータフローマシンについても、そのアーキテクチャについていくつかの提案がされている。また、グラフィカルユーザーインターフェースをベースにした各種データ処理装置や、機器制御装置などでは、オペレータによる操作介入や、機器の状態遷移時などのイベントに反応する手続きを記述する形式のイベント駆動アーキテクチャも提案開発されており、それらの提案の中には、イベント駆動とオブジェクト指向を組み合わせたものも提案されている。実例としてはMicroSoft社のMFCと呼ばれるC++言語のライブラリなどがあげられる。 Regarding the visual representation of the algorithm, the flowchart format defined by the JIS standard and various other notations have been devised. One of them is the data flow graph format, and some proposals have been made for the architecture of the data flow machine that directly executes the graph. In addition, for various data processing devices based on the graphical user interface and device control devices, we have also proposed and developed an event-driven architecture in the form of describing procedures that respond to events such as operator interventions and device state transitions. Some of these proposals are a combination of event-driven and object-oriented programming. An example is MicroSoft's C ++ language library called MFC.

特許文献1では、PLC回路のグラフィカルなプログラミングをラダー図によって行うことが示されている。 Patent Document 1 shows that graphical programming of a PLC circuit is performed by a ladder diagram.

特開2016−224559号公報JP-A-2016-224559

「データ駆動型並列計算機」ISBN4-274-07763-2"Data-driven parallel computer" ISBN4-274-07763-2

本発明の目的は、キーボード入力をあまり必要としないようなプログラム作成実行環境を提供し、その実行環境による機器制御装置を提供することにある。 An object of the present invention is to provide a program creation execution environment that does not require much keyboard input, and to provide a device control device based on the execution environment.

上記目的達成のため、プログラムの記述形式として、図式的表現形式(プログラミング「言語」)を導入する。このような図式的表現形式の代表としてフローチャート図が挙げられるが、フローチャート図の表現規則は計算機か解釈実行するのに必要なほど厳密ではなく、記述に相当の自由度とあいまいさが許容されているため、計算機への直接解釈実行指示としてはそのままでは適さない。フローチャート図を解釈実行するためにはかなりの記述の制約を課す必要がある。また、フローチャート図の例として図5を見ると、処理の記述に相当のテキスト表現が依然としてあるために、入力と編集を物理キーボードなしで行うのは容易ではない。このため、表現図式の採用には、記述の厳密さと、文字入力の少なさと、さらにロジックの可読性の高さが求められる。 In order to achieve the above purpose, a schematic expression format (programming "language") will be introduced as a program description format. A typical example of such a schematic representation format is a flowchart diagram, but the representation rules of the flowchart diagram are not as strict as necessary for a computer or interpretation execution, and a considerable degree of freedom and ambiguity are allowed in the description. Therefore, it is not suitable as it is as a direct interpretation execution instruction to the computer. In order to interpret and execute the flowchart diagram, it is necessary to impose considerable description restrictions. Also, looking at FIG. 5 as an example of a flow chart, it is not easy to input and edit without a physical keyboard because there is still a considerable amount of textual representation in the description of the process. Therefore, in order to adopt the expression diagram, strictness of description, less character input, and high readability of logic are required.

本発明では、キーボードを装備しないデジタル機器、例えばタブレットやスマートフォンなどの上でのプログラミングを実現するために、通常のプログラミング言語のようなテキストベースではなく、記号や矢印を使用した視覚的な表現を使用する。
現在のほとんどのプログラミング言語の記述形式は文字テキストによる記述になっており、入力作成や変更編集にはフルキーボードデバイスを必要とする。このため、動作アルゴリズムを変更可能とする機能を組み込み機器に搭載しようとする場合、フルキーボードを搭載するか外付け可能端子を用意し、外付けのキーボードを接続する必要がある。
In the present invention, in order to realize programming on a digital device without a keyboard, such as a tablet or a smartphone, a visual expression using symbols and arrows is used instead of a text-based programming language as in a normal programming language. use.
Most programming languages today are written in textual text and require a full keyboard device for input creation and modification editing. For this reason, when trying to equip an embedded device with a function that allows the operation algorithm to be changed, it is necessary to mount a full keyboard or prepare an externally attachable terminal and connect an external keyboard.

例えばエアコンの運転開始タイマーの機能について、標準では「現時間からt時間後に運転開始」と指定する方式を標準で提供しており、この機能に関するAPI(Application Programming Interface)がユーザーに公開されていて、基本的な動作、「機器を運転させる」や、「内蔵時計の値を読み取る」などの、基本操作が公開され、さらにエアコン本体に搭載されているプログラミング言語処理機構によって駆動可能になっているとする。 For example, regarding the function of the operation start timer of the air conditioner, the standard method of specifying "start operation t hours after the current time" is provided as standard, and the API (Application Programming Interface) related to this function is open to the user. , Basic operations, basic operations such as "driving the device" and "reading the value of the built-in clock" are open to the public, and can be driven by the programming language processing mechanism installed in the air conditioner body. And.

このようなユーザープログラマブルなエアコンでユーザーがタイマーのロジックを変更して「現在時刻から指定の時間後に起動」ではなく、「指定の時刻に起動」するように指定方法の変更を実現するプログラミングを行う場合を考える。すると、テキストベースのプログラミング言語の場合には、入力と編集に多量の文字入力を必要とし、物理キーボードのない状況での作業は非常に困難である。代わりに、エアコンそのものにフルキーボードを装備させるという解決手段も機器全体のコストを上げることになる。また、USB端子を装備してキーボードを外付けする手段も考えられるが、キーボードをエアコン機器の付属品とすると、コストの問題が解決しない。この例ではエアコンという比較的高額な機器のケースを考えているが、目覚まし時計などへの適用を考えた場合、この問題は顕著となる。 With such a user-programmable air conditioner, the user changes the logic of the timer to perform programming to change the specification method so that it "starts at the specified time" instead of "starts after the specified time from the current time". Consider the case. Then, in the case of a text-based programming language, a large amount of character input is required for input and editing, and it is very difficult to work without a physical keyboard. Instead, the solution of equipping the air conditioner itself with a full keyboard also increases the cost of the entire device. It is also possible to attach a keyboard externally by equipping it with a USB terminal, but if the keyboard is used as an accessory for air conditioners, the cost problem will not be solved. In this example, the case of a relatively expensive device such as an air conditioner is considered, but this problem becomes remarkable when considering the application to an alarm clock or the like.

このような問題を解決するために、本発明では、(1)プログラム表現図式としてデータフローグラフを採用する。(2)グラフの配置として、タイルと呼ぶ実行単位のマスを隣接して配置されている「盤面」上で行う。(3)タイルの内容の入力は画面上の所定の位置でのボタン押下、タップ、ダブルタップ、ポップアップメニューからの項目選択、仮想キーボードからの数文字〜十数文字の入力のみで入力できるものとする。 In order to solve such a problem, in the present invention, (1) a data flow graph is adopted as a program representation diagram. (2) As the arrangement of the graph, the cells of the execution unit called tiles are arranged adjacently on the "board surface". (3) The contents of the tile can be input only by pressing a button at a predetermined position on the screen, tapping, double tapping, selecting an item from the pop-up menu, and inputting a few to a dozen characters from the virtual keyboard. do.

上記の手段により、通常のプログラミング言語と同等の表現能力を持つ図式表現形式によるプログラミングをコストのかかる物理キーボードなしでタッチパネルのみで行うことができるようになる。また、スマートフォン、スマートスピーカー、タブレットデバイスのようなデバイス上でもプログラミングできる汎用プログラム開発環境を実現することができる。 By the above means, programming in a schematic representation format having the same expressive ability as a normal programming language can be performed only with a touch panel without a costly physical keyboard. In addition, it is possible to realize a general-purpose program development environment that can be programmed on devices such as smartphones, smart speakers, and tablet devices.

想定される機器の構成概要Outline of expected equipment configuration この発明の第一の実施形態の画面表示を示す図The figure which shows the screen display of the 1st Embodiment of this invention 第一の実施形態のタイルの表記法の例示Illustrative tile notation of the first embodiment 文字列印字プログラムのグラフチャート。Graph chart of character string printing program. 第一の実施形態の実行系の動作フローチャートOperation flowchart of the execution system of the first embodiment 階乗を計算するプログラムのうちの、メインラインチャートMainline chart of the program to calculate factorial 階乗を計算するタイル「n!」のプログラムチャートProgram chart of tile "n!" To calculate factorial 階乗を計算するメインラインチャートの変形Transformation of the mainline chart to calculate factorial 第一の実施形態の出力渡しのフローチャートFlow chart of output passing of the first embodiment 第一の実施形態の「左隣へ渡す」のフローチャートFlowchart of "passing to the left side" of the first embodiment 新規タイル作成ダイアログNew tile creation dialog 拡大編集ダイアログEnlarged edit dialog 命令設定ダイアログInstruction setting dialog 命令/名前一覧プルダウンメニューCommand / name list pull-down menu タイル内のタップ位置を区別するゾーンの説明A description of the zone that distinguishes the tap positions in the tile 指定入出力に付される優先度の説明Description of the priority attached to the specified input / output タイルがシングルタップされた時のイベントハンドラのフローチャートEvent handler flowchart when a tile is single tapped タイルがダブルタップされた時のイベントハンドラのフローチャートFlowchart of event handler when tile is double tapped 方向編集処理のフローチャートFlowchart of direction editing process 第一の実施形態のプログラム実行エンジンの内部Inside the program execution engine of the first embodiment 主な定義済み命令の説明Description of the main predefined instructions 入出力指示の状態遷移の例Example of state transition of input / output instruction 第二の実施形態のプログラム実行エンジンの内部Inside the program execution engine of the second embodiment 第二の実施形態の画面表示を示す図The figure which shows the screen display of the 2nd Embodiment 第二の実施形態のタイルの表記法の例示Illustrative tile notation of the second embodiment 第二の実施形態の文字列印字プログラムのグラフチャートGraph chart of the character string printing program of the second embodiment 第二の実施形態の実行系の動作フローチャートと初期データチャートOperation flowchart and initial data chart of the execution system of the second embodiment コンテキスト構造体の評価実行手続きメソッドのプログラムチャートProgram chart of evaluation execution procedure method of context structure コンテキスト構造体と待ち合わせ子の詳細図Detailed view of context structure and waiter グリッドオブジェクトの実行評価手続きのフローチャートFlowchart of grid object execution evaluation procedure トークンに対するメソッド検索処理のフローチャートFlowchart of method search process for tokens 第二の実施形態の流通データトークンの構造詳細図Detailed structural view of the distribution data token of the second embodiment 第二の実施形態におけるデータトークンのクラス階層図Class hierarchy diagram of data tokens in the second embodiment 第二の実施形態のAPI仲介部が保有するイベント登録表の詳細と具体例Details and specific examples of the event registration table held by the API mediation department of the second embodiment 第二の実施形態のアプリケーションのデータトークン例とダイアログ例Data token example and dialog example of the application of the second embodiment ADDボタン押下イベントハンドラOnADDのプログラムチャートADD button press event handler OnADD program chart イベントハンドラ生成メソッドInitのプログラムチャートProgram chart of event handler generation method Init イベントハンドラ作成メソッドAddOnのプログラムチャートProgram chart of event handler creation method AddOn 表示命令書き換えメソッドRepLBLのプログラムチャートDisplay instruction rewriting method RepLBL program chart 演算命令書き換えメソッドRepOPのプログラムチャートProgram chart of operation instruction rewriting method RepOP TクラスJCTメソッドのプログラムチャートProgram chart of T-class JCT method

以下に本発明に関する代表的な実施形態を示す。この例は、汎用のプログラミング環境を機器制御に応用したものである。機器制御実行環境と汎用環境の相違は、機器制御のためのAPIを持つか否かにあり、この実施例では、APIは後述の「作り付けのタイル」として定義されているかどうかに対応し、したがってこの例示は、本発明の実行環境を機器制御への応用に限定するものではない。 A typical embodiment of the present invention is shown below. This example is an application of a general-purpose programming environment to device control. The difference between the device control execution environment and the general-purpose environment is whether or not it has an API for device control, and in this example, the API corresponds to whether or not it is defined as a "built-in tile" described later, and therefore. This example does not limit the execution environment of the present invention to application to device control.

図1は本実施例共通の概要図であり、実施例のデータ処理装置が、組み込まれている機器を制御する構成の図である。一例として、組み込み機器がエアコンの場合で考えると、101がエアコン機器全体、102がエアコン機器本体、103が起動停止スイッチ、104が内蔵の時計、105が103や104を106によって制御させるためのインターフェース、106がこれらの機器を制御するプログラム実行エンジン、107がユーザーとの入出力を行うタッチパネルとみることができる。汎用のプログラミング環境についてはこの構成図から、102,103,104,105を取り除いて考えればよい。

(第一の実施形態)
FIG. 1 is a schematic diagram common to this embodiment, and is a diagram of a configuration in which the data processing device of the embodiment controls an embedded device. As an example, when the embedded device is an air conditioner, 101 is the entire air conditioner device, 102 is the air conditioner device body, 103 is the start / stop switch, 104 is the built-in clock, and 105 is the interface for controlling 103 and 104 by 106. , 106 can be regarded as a program execution engine that controls these devices, and 107 can be regarded as a touch panel that inputs and outputs with the user. For a general-purpose programming environment, 102,103,104,105 may be removed from this configuration diagram.

(First Embodiment)

図20は第一の実施形態における図1のプログラム実行エンジン106の内部を表した例である。図20の2001が、図1の106に対応する。プログラム実行エンジン2001には、UI操作処理部2002があり、タッチパネル107上の操作、タップ、ダブルタップなどに反応して、実行するべき動作を定義済みタイル保持部2005と実行解釈部2003に対して指示を行う。 FIG. 20 is an example showing the inside of the program execution engine 106 of FIG. 1 in the first embodiment. 2001 in FIG. 20 corresponds to 106 in FIG. The program execution engine 2001 has a UI operation processing unit 2002, which responds to operations, taps, double taps, etc. on the touch panel 107 to define the actions to be executed for the tile holding unit 2005 and the execution interpretation unit 2003. Give instructions.

2003はプログラムの解釈実行部であり、UI操作処理部2002からプログラムの実行が指示された時に動作を開始し、プログラムに該当する定義済みタイルを保持する定義済みタイル保持部2005から実行するべき内容を取り出して、実行環境保持部2004と、作業領域2006に各種情報を書き込み/読み出しを繰り返して実行を行い、実行完了時にその旨をUI操作処理部2002に報告する。また、解釈実行部2003は、図1の106のインターフェースに対する処理の呼び出しを行い、機器の状況の読み込みと、操作を行う。 2003 is the program interpretation execution unit, and the operation should be executed from the predefined tile holding unit 2005 that starts the operation when the program execution is instructed by the UI operation processing unit 2002 and holds the predefined tiles corresponding to the program. Is taken out, various information is repeatedly written / read to the execution environment holding unit 2004 and the work area 2006 to execute the execution, and when the execution is completed, the fact is reported to the UI operation processing unit 2002. In addition, the interpretation execution unit 2003 calls the processing for the interface of 106 in FIG. 1, reads the status of the device, and operates.

2004は、実行環境保持部であり、実行時の各種情報を保持する部分である。これらの情報には実行待ちのタイルの待ち合わせ場所、実行待ちのタイルに到達しているデータの情報などが含まれる。 2004 is an execution environment holding unit, which holds various information at the time of execution. This information includes the meeting place of the tile waiting to be executed, the information of the data reaching the tile waiting to be executed, and the like.

2005は、定義済みタイルの保存部である。ここは、ユーザーによって作成と編集がなされる、「定義済みタイル」を格納している部分である。「定義済みタイル」は複数個のタイルを配置することにより構成されたデータフローグラフに対して名前を付けたものである。この2005の部分は、2003の解釈実行部からの要求に応じて、特定の名前の定義済みタイルの指定の位置にあるタイルの情報を提供する。また、UI処理操作部2002からの指示により、新規定義済みタイルの作成、削除、内容の変更を行う。 2005 is the storage section for predefined tiles. This is the part that stores the "predefined tiles" that are created and edited by the user. A "defined tile" is a name given to a data flow graph constructed by arranging a plurality of tiles. This 2005 part provides information on tiles at a specified position on a defined tile with a particular name, as requested by the 2003 Interpretation Execution Department. In addition, a newly defined tile is created, deleted, and the contents are changed according to the instruction from the UI processing operation unit 2002.

作業領域2006は、データフローグラフ内を流通する各種データの置き場所であり、文字列や構造体などの複合オブジェクトの実体が格納されている。 The work area 2006 is a place for storing various data distributed in the data flow graph, and stores the substance of a composite object such as a character string or a structure.

図2はこの第一の実施例におけるユーザー画面への表示例である。この画面ではすでに実行を開始すれば、表示領域201に”HELLO WORLD”という文字列が表示されて実行が終了するようにプログラムされている状態が表示されている。このシステム例では、システムを起動した直後に、そのままシステムに対して実行指示を与えるようなユーザーを想定して、すでにこのようなプログラムがセットされている状態を初期状態として与えている。図2の詳細な説明は後述する。ここでは、基本的な構成要素についてのみ説明する。 FIG. 2 is a display example on the user screen in the first embodiment. On this screen, if the execution has already started, the character string "HELLO WORLD" is displayed in the display area 201, and the state of being programmed to end the execution is displayed. In this system example, assuming a user who gives an execution instruction to the system immediately after starting the system, a state in which such a program is already set is given as an initial state. A detailed description of FIG. 2 will be described later. Only the basic components will be described here.

211,212,213には、それぞれ実行命令とオペランドと呼ばれる実行オプション、入力データの入ってくる方向、出力データの排出方向を指示する図が描かれている。この矩形を以降「タイル」と呼ぶ。タイルに関する詳細は、図3で説明する。タイルについては、この実施例では、矩形となっているが、隣接できる閉領域であればどのような形でも良く、各タイルが同形である必要もない。 In 211, 212, and 213, diagrams are drawn that indicate execution options called execution instructions and operands, the direction in which input data enters, and the direction in which output data is discharged, respectively. This rectangle is hereafter referred to as the "tile". Details regarding tiles are described in FIG. The tiles have a rectangular shape in this embodiment, but any closed area that can be adjacent to each other may be used, and the tiles do not have to have the same shape.

208はタイルが縦横に隣接して配置されている領域で、「定義済みタイル」の配置状況を表示編集する領域である。この領域を以降「盤面」と呼ぶ。盤面には識別のための「名前」が付けられている。208の盤面には「MainLine」という名前が付けられており、表示領域兼プルダウンメニュー207にその名前が表示されている。 208 is an area where tiles are arranged vertically and horizontally adjacent to each other, and is an area for displaying and editing the arrangement status of "defined tiles". This area is hereinafter referred to as the "board surface". A "name" is given to the board for identification. The board of 208 is named "Main Line", and the name is displayed in the display area and pull-down menu 207.

図2の詳細な説明を行う。最初にこのMainLine盤面で表現されている「プログラム」を簡単に説明する。211は、命令識別子CONSTという命令を実行する。この命令はタイルの上方から入力データを受け取り、その入力データがどのようなものあっても、内容を無視して、オプションとして指定されている”HELLO WORLD”という文字列を出力データとして、このタイルの下方に隣接しているタイルに渡す。212は、識別子PRTという命令を実行する。この命令は上方に隣接しているタイルからのデータを入力としてその内容を201の表示領域に印字する。さらに、入力データをそのまま下方に隣接するタイルに渡す。213は、識別子ENDという命令を実行する。この命令は入力として上方に隣接しているタイルからのデータを受け取り、それを捨ててしまい、何も出力しない。このプログラムでは、213の実行によりデータが捨てられ、プログラム系全体を流通するデータがなくなることで系の実行が終了する。このプログラム中の矢印は、制御の流れではなく、データの流通経路を示しており、図式はデータフローグラフになっている。 A detailed explanation of FIG. 2 will be given. First, the "program" expressed on this Main Line board will be briefly explained. 211 executes an instruction called the instruction identifier CONST. This command receives input data from above the tile, ignores the contents of any input data, and uses the optional string "HELLO WORLD" as output data for this tile. Pass to the adjacent tile below. 212 executes an instruction called the identifier PRT. This command takes data from the tiles adjacent to the top as input and prints its contents in the display area of 201. Furthermore, the input data is passed as it is to the adjacent tile below. 213 executes an instruction called identifier END. This instruction takes data from the tiles adjacent above it as input, discards it, and outputs nothing. In this program, the execution of 213 discards the data, and the execution of the system ends when there is no data circulating in the entire program system. The arrows in this program indicate the data distribution route, not the control flow, and the diagram is a data flow graph.

202は「RUN」とラベル付けされているプッシュボタンであり、押下するとセットされているプログラムの実行が開始される。このボタンを押下すると208で図示されている盤面の上辺中心のタイル211の上から、実行のきっかけとなるダミーデータトークンNILが投下され、以降必要なデータが到着して実行可能になったタイルの実行が続く。最初に投下されるトークンは系全体の実行のきっかけになるものであり、この第一の実施形態ではNILでなくても0でも1でもよい。 Reference numeral 202 denotes a push button labeled "RUN", and when pressed, execution of the set program is started. When this button is pressed, a dummy data token NIL that triggers execution is dropped from above the tile 211 at the center of the upper side of the board shown in 208, and the tiles that have been able to be executed since the necessary data arrived. Execution continues. The token dropped first triggers the execution of the entire system, and in this first embodiment, it may be 0 or 1 instead of NIL.

203は「NEW TILE」とラベル付けされているプッシュボタンであり、押下すると新規に名前識別子を付けた新規の定義済みタイルが作成できるようになる。詳細は後述する。定義済みタイルにつけられた名前識別子は、タイル中の命令識別子として利用可能であり、新たな定義済みタイルを作成することで、そのアルゴリズムをサブルーチンとして盤面中で使用できる。例えば、図7のように整数の階乗を計算するように編集された定義済みタイル「n!」は図6のように盤面のタイル中でCONSTやEND等と同等に使用することができる。 Reference numeral 203 is a push button labeled "NEW TILE", which can be pressed to create a new defined tile with a new name identifier. Details will be described later. The name identifier attached to the defined tile can be used as an instruction identifier in the tile, and by creating a new defined tile, the algorithm can be used as a subroutine on the board. For example, the defined tile "n!" Edited to calculate the factorial of an integer as shown in Fig. 7 can be used in the tiles on the board as shown in Fig. 6 in the same way as CONST and END.

207は表示領域兼プルダウンメニューであり、選択候補としてMainLineとその時点までに作成されているすべての定義済みタイルの名前識別子が選択候補としてリストされる。ユーザーはこのメニューから識別子を選択すると、208の表示が選択された識別子の盤面の内容に切り替わり編集が可能になる。207は、表示の切り替えと現在208に表示されている盤面の名前の表示を兼ねる。 207 is a display area and pull-down menu, and MainLine and the name identifiers of all the defined tiles created up to that point are listed as selection candidates. When the user selects an identifier from this menu, the display of 208 switches to the contents of the board of the selected identifier and can be edited. The 207 serves both as a display switch and a display of the board name currently displayed on the 208.

この実施例では、盤面は、3×3、5×5、7×7など縦横とも奇数個のタイルになっている。これは、名前付き盤面の入出力方向である上下右左の位置を各辺の中心のタイルとするために奇数になっているが、各辺の入出力位置の指定が別法で可能であるならば奇数でなくてもよい。また、各タイルが隣接関係を保持できるのであれば、縦横が同じタイル数である必要もなく、タイルの形状も矩形でなくてもよい。例えば六角形のタイルであれば、一つのタイルに隣接するタイルの数が矩形の場合には4個であるところ6個にすることも考えられる。 In this embodiment, the board surface has an odd number of tiles in both vertical and horizontal directions such as 3 × 3, 5 × 5, and 7 × 7. This is an odd number because the positions of the top, bottom, right, and left, which are the input / output directions of the named board, are the center tiles of each side, but if the input / output positions of each side can be specified by another method, It does not have to be an odd number. Further, as long as the tiles can maintain the adjacency relationship, the number of tiles in the vertical and horizontal directions does not have to be the same, and the shape of the tiles does not have to be rectangular. For example, in the case of hexagonal tiles, if the number of tiles adjacent to one tile is rectangular, it is possible to increase the number from four to six.

「IN:」とラベル付けされた表示領域209は、表示されている盤面が実行できる条件を表示する領域である。各タイルは、一つ以上のデータ入力を受けるが、どの方向からいくつデータが到着したら実行できるかを設定することができる。209はその表示領域である。この例では、T : Top すなわち上からデータが到着した時点でMainLineという盤面の実行を開始する可能であることを表している。一方各タイルは0個以上の出力があり、どの方向が出力になるのかを「OUT:」とラベル付けされた210の領域に表示する。この例では、MainLineは外部に対して出力をしないので、210の欄は空白になっている。 The display area 209 labeled "IN:" is an area for displaying the conditions under which the displayed board can be executed. Each tile receives one or more data inputs, but you can set how many data arrives from which direction to execute. 209 is the display area. In this example, T: Top, that is, it is possible to start the execution of the board called MainLine when the data arrives from above. On the other hand, each tile has 0 or more outputs, and which direction is the output is displayed in the 210 area labeled "OUT:". In this example, MainLine does not output to the outside, so the 210 column is blank.

図3は、各タイルの表示の詳細が示されている。図3(a)の301は、211で図示されたCONST命令タイルを再掲したものである。302は、矢印でない直線であり、外部からの入力がこの方向から、すなわち上から、入ってくることを表している。303は入力データに対する識別子である。これは入力が複数あるような命令タイルのうち、入力を区別しないと結果が変わるような命令、例えば引き算や割り算のような命令を想定して付与されるものである。本実施例では、識別子に数字を用いているが、順序が付けられる識別子であればアルファベットなどでもよい。 Figure 3 shows the display details of each tile. 301 in Figure 3 (a) is a reprint of the CONST instruction tile illustrated in 211. Reference numeral 302 denotes a straight line that is not an arrow, indicating that an external input comes in from this direction, that is, from above. 303 is an identifier for the input data. This is given assuming an instruction tile that has a plurality of inputs and whose result changes unless the inputs are distinguished, for example, an instruction such as subtraction or division. In this embodiment, numbers are used for the identifiers, but alphabets or the like may be used as long as the identifiers can be ordered.

304は命令の識別子表示である。ここでは定数を出力するCONST命令が書かれている。そのほか、プログラムの実行系があらかじめ用意している命令を設定することはもちろん、プログラマによって作成された定義済みタイルの識別子名称を設定することもできる。305は304の実行命令に対するオプションの表示である。CONSTは、命令だけでは、どのような定数を出力するかが決定しないので、定数をオプションとして指定する。オプションを必要としない命令もある。 304 is an identifier display of the instruction. Here, the CONST instruction that outputs a constant is written. In addition, it is possible not only to set the instruction prepared in advance by the program execution system, but also to set the identifier name of the defined tile created by the programmer. 305 is an option display for the execution instruction of 304. Since CONST does not determine what kind of constant is output only by the instruction, specify the constant as an option. Some instructions do not require options.

306の外向きの矢印は、この方向、この例では下に隣接したタイルに対して、出力があることを表示している。入力と同様に出力にも識別子が付与され307のように矢印に沿って表示されている。 The outward arrow at 306 indicates that there is output in this direction, for the tiles adjacent below in this example. Like the input, the output is given an identifier and is displayed along the arrow like 307.

図3(b)の308は複数の入力と出力を持つ命令タイル、SWITCH命令タイルである。SWITCHは、二つの入力と二つの出力を持つ命令であり、入力1がNILであれば、入力0として入ってきたデータを出力1へ出力し、そうでなければ入力0を出力0に排出する。このSWITCH命令では、データは、出力0か出力1のいずれかに排出され、両方からデータが排出されることはない。SWITCH命令は、データNILを論理値の偽とみなして出力を切り替える条件分岐に該当するものである。308では、入力0が上に隣接したタイルから、入力1が左から進入し、出力0として下に、出力1として右に隣接したタイルにて渡される。310は、この方向、すなわち左からの入力が入力1であることを表示し、311は、右への出力が出力1であることを表示している。 308 in Fig. 3 (b) is an instruction tile with multiple inputs and outputs, a SWITCH instruction tile. SWITCH is an instruction that has two inputs and two outputs. If input 1 is NIL, the data that came in as input 0 is output to output 1, otherwise input 0 is output to output 0. .. In this SWITCH instruction, the data is ejected to either output 0 or output 1, and no data is ejected from both. The SWITCH instruction corresponds to a conditional branch that switches the output by regarding the data NIL as a false logical value. In 308, input 0 enters from the tile adjacent to the top, input 1 enters from the left, and is passed as output 0 to the bottom and output 1 to the tile adjacent to the right. 310 indicates that the input from the left is input 1, and 311 indicates that the output to the right is output 1.

308では、入力0、入力1、 出力0、出力 1をそれぞれ上、左、下、右と設定された表示になっているが、本実施例では、各命令タイルの入力方向と出力方向は自由に選択設定できる。方向が自由に設定できることから、混乱を避けるために入出力に識別子を付与する必要がある。 In 308, input 0, input 1, output 0, and output 1 are set as top, left, bottom, and right, respectively, but in this embodiment, the input direction and output direction of each command tile are free. Can be selected and set to. Since the direction can be set freely, it is necessary to give an identifier to the input / output to avoid confusion.

図4は、図2で表示されていたMainLine盤面の部分を抽出して変形したものである。END命令タイルの位置が図2と異なっているが、アルゴリズムの表現としては同等である。ここで、407は、現在の盤面の表示がMainLineであることを表示しており、408は、図2の209を簡略図示したものであり、このMainLine盤面が実行を開始できる条件「T」が表示されている。T単独の場合、上からデータが進入すれば、盤面の実行可能になる。この例では、図2の202のRUNボタンを押すと、この盤面の401からデータトークンNILが進入する。 FIG. 4 shows an extracted and deformed part of the MainLine board surface displayed in FIG. The position of the END instruction tile is different from that in Fig. 2, but it is the same as the representation of the algorithm. Here, 407 indicates that the display of the current board is MainLine, and 408 is a simplified illustration of 209 in FIG. 2, and the condition "T" that the MainLine board can start execution is It is displayed. In the case of T alone, if data enters from above, the board can be executed. In this example, when the RUN button of 202 in FIG. 2 is pressed, the data token NIL enters from 401 on this board.

投入されたデータNILは、タイル402が入力0として受け取る。タイル402は、このデータ受信により実行可能となり、即座に命令CONSTがオプション”HELLO WORLD”付きで実行される。実行の結果402の出力0として文字列”HELLO WORLD”のデータトークンが下に隣接するタイル403に渡される。タイル403は、上からのデータを入力0として受け取るように設定されており、受け取った結果、タイル403の命令404のPRTが実行可能となり、402の次に実行される。404の実行の結果、入力された文字列”HELLO WORLD”トークンは、表示領域201に表示され、そののちそのまま出力0として右隣りのタイル405に渡される。タイル405は、命令406としてENDが設定されている。タイル405は左隣のタイル403から、文字列”HELLO WORLD”のトークンを入力0として受け取る。ENDは入力0にデータが到着した時点で実行可能となるため、タイル405は403の次に実行される。このENDの実行の結果、入力された文字列データ”HELLO WORLD”のトークンは放棄される。この結果この系のいずれのタイルも実行可能ではないため、実行機構は処理を終了する。 The input data NIL is received by tile 402 as input 0. Tile 402 can be executed by receiving this data, and the instruction CONST is immediately executed with the option "HELLO WORLD". As a result of execution, the data token of the character string "HELLO WORLD" is passed to the adjacent tile 403 below as output 0 of 402. Tile 403 is set to receive data from above as input 0, and as a result, the PRT of instruction 404 of tile 403 can be executed, and it is executed after 402. As a result of executing 404, the input character string "HELLO WORLD" token is displayed in the display area 201, and then passed as it is as output 0 to the tile 405 on the right side. Tile 405 has END set as instruction 406. Tile 405 receives the token of the character string "HELLO WORLD" as input 0 from the tile 403 on the left. Tile 405 is executed after 403 because END can be executed when data arrives at input 0. As a result of executing this END, the token of the input character string data "HELLO WORLD" is abandoned. As a result, none of the tiles in this system can be executed, so the execution mechanism ends the process.

図4の408及び図2の209に表示される実行開始条件の式は本第一の実施形態では次のような形式になっている。実行開始条件は、複数の入力がすべて到着する、複数の入力の内いずれかが到着する、あるいはこれらの組み合わせで表現され、前記の場合は入力の方向記号同士を演算子*で結び、後者の場合は演算子+でつなぐ。優先度は、*の方が+より強い。また丸括弧()も一般的に数式と同様に使えるものとする。 The formula of the execution start condition displayed in 408 of FIG. 4 and 209 of FIG. 2 has the following format in the first embodiment. The execution start condition is expressed by all of a plurality of inputs arriving, one of a plurality of inputs arriving, or a combination thereof. In the above case, the direction symbols of the inputs are connected by an operator *, and the latter In case, connect with operator +. As for the priority, * is stronger than +. Also, parentheses () can generally be used in the same way as mathematical formulas.

入力の方向記号としては、T、L、R、Bの各文字が使用でき、それぞれ上、左、右、下を表す。数式上、この記号の左からの出現順が、入力の識別子を指定することになる。例えば「T*L」という入力条件式は、上からと左からの両方にデータが到着したときに実行可能となることを表し、さらに、方向文字の出現順に対応してTが入力0、Lが入力1に対応することも表している。方向記号のいずれかが単独で指定された場合、その方向からのデータが到着した時点で直ちに指定された盤面は実行可能となる。複雑な例としての式「(T*R)+B」は、記号の出現順に入力0が上、入力1が右、入力2が下から入ってくることを表し、さらに、入力2が到着した時点で、ほかの入力の如何にかかわらず実行可能となる。また、入力2にデータが到着しなくても、入力0と入力1にデータが到着した時点で実行可能となる条件を表現した式となる。 As the input direction symbol, each character of T, L, R, and B can be used, and represents top, left, right, and bottom, respectively. In mathematical formulas, the order of appearance of this symbol from the left specifies the input identifier. For example, the input conditional expression "T * L" indicates that it can be executed when data arrives from both the top and the left, and T is input 0, L corresponding to the order of appearance of the direction characters. Also indicates that is corresponding to input 1. If any of the direction symbols is specified alone, the specified board becomes feasible as soon as the data from that direction arrives. The formula "(T * R) + B" as a complicated example means that input 0 comes in from the top, input 1 comes from the right, and input 2 comes in from the bottom in the order of appearance of symbols, and when input 2 arrives. So it can be executed regardless of other inputs. Further, even if the data does not arrive at the input 2, the expression expresses the condition that can be executed when the data arrives at the input 0 and the input 1.

このような条件式の例をいくつか挙げる。まず「L 」は入力0が左から入力され、入力0が到着した時点で実行可能となる条件式である。また「R*L」入力0が右から、入力1が左から入力され、入力0と入力1が両方到着するまで実行しない条件式である。さらに「T+L」は入力0が上から、入力1が左から入力され、どちらかが到着すれば実行可能となる条件式である。そして「(T*R)+B」は入力0が上から、入力1が右から、入力2が下から入力され、入力2が到着するか。入力0と入力1が揃うかのどちらかが満たされると実行を開始する条件式である。 Here are some examples of such conditional expressions. First, "L" is a conditional expression that can be executed when input 0 is input from the left and input 0 arrives. Also, "R * L" input 0 is input from the right, input 1 is input from the left, and it is a conditional expression that is not executed until both input 0 and input 1 arrive. Furthermore, "T + L" is a conditional expression that can be executed if input 0 is input from the top and input 1 is input from the left, and either of them arrives. And for "(T * R) + B", input 0 is input from the top, input 1 is input from the right, input 2 is input from the bottom, and input 2 arrives. It is a conditional expression that starts execution when either input 0 or input 1 is satisfied.

これらの式の解釈は、一般的な数式の字句解析のアルゴリズムで解釈可能である。またこの条件式の解釈処理を簡便にするために、式の記法を後置記法(逆ポーランド記法)とすることもできる。このような後置記法の場合、条件式「(T*R)+B」は「TR*B+」となる。 The interpretation of these formulas can be interpreted by general mathematical lexical analysis algorithms. Further, in order to simplify the interpretation process of this conditional expression, the notation of the expression may be the postfix notation (reverse Polish notation). In the case of such postfix notation, the conditional expression "(T * R) + B" becomes "TR * B +".

このような定義済みタイルの図表現は、定義済みタイルの識別子をキーとして、前記入力条件式、210に表示される出力方向文字列と盤面サイズ情報、および、空白でない各タイルの座標情報と各入力の進入方向、命令識別子、オプション文字列と各出力方向を含む構造体を値とする表に中間形式として2005の定義済みタイル保持部に格納される。 Such a graphic representation of the defined tile uses the identifier of the defined tile as a key, the input condition expression, the output direction character string and the board size information displayed in 210, and the coordinate information of each non-blank tile and each of them. It is stored in the defined tile holder of 2005 as an intermediate format in a table whose values are the structure including the input entry direction, instruction identifier, option character string and each output direction.

図5は、このプログラム言語の106の実行エンジンの中の図20の2003である解釈実行部の動作を表すフローチャートである。解釈系は、起動すると、最初に501にあるように実行に必要な各種記憶領域を完全にリセットする。これらの記憶領域には、実行可能なタイルが複数ある場合の待ち合いのための領域、実行可能ではないが一部のデータが到着しているタイルの待合のための領域、配列やリスト、構造体などの複合データ構造のためのヒープ領域などが含まれる。これらの領域は、図20の実行環境保持部2004、作業領域2006に対応する。 FIG. 5 is a flowchart showing the operation of the interpretation execution unit of FIG. 20 2003 in the 106 execution engines of this programming language. When the interpreter is started, it completely resets the various storage areas required for execution, as in 501 first. These storage areas include an area for waiting when there are multiple executable tiles, an area for waiting for tiles that are not executable but some data has arrived, arrays, lists, and structures. Contains heap areas for complex data structures such as. These areas correspond to the execution environment holding unit 2004 and the work area 2006 in FIG.

次に解釈系は、502にあるようにプログラムされた定義済みタイルの保持部である図20の2005から、「MainLine」という名前を持つチャートを呼び出し、この盤面チャートに対して上から起動のきっかけを与えるデータトークンNILを投入する。 Next, the interpretation system calls the chart named "MainLine" from 2005 in Fig. 20, which is the holding part of the predefined tiles programmed as shown in 502, and triggers the activation from above for this board chart. Insert the data token NIL that gives.

解釈系は、次の504において、盤面のタイルの内、実行可能になっているタイルを検索し、そのうちの一つを実行する。検索にあたっては、図20の実行環境保持部2004を参照する。実行可能であるタイルが複数あった場合には、ランダムに選択して実行してもよいし、時系列順に実行可能になってからの経過時間が最も長いものを選択して実行するようにしてもよい。 In the next 504, the interpretation system searches for the tiles that have become executable among the tiles on the board, and executes one of them. For the search, refer to the execution environment holding unit 2004 in FIG. If there are multiple tiles that can be executed, they may be randomly selected and executed, or the one with the longest elapsed time since it became executable in chronological order should be selected and executed. May be good.

ステップ504におけるタイルの実行の結果、0個以上の出力が生成される。ステップ505では、これらの出力を隣接するタイルの入力として分配する処理がなされる。出力が0個の場合には、ステップ505では何も処理は行われない。出力が1ないし3個の場合には、それぞれの出力を各方向に隣接するタイルの入力として渡す処理が出力の数だけ行われる。 Execution of the tiles in step 504 results in zero or more outputs. In step 505, processing is performed to distribute these outputs as inputs of adjacent tiles. If there are 0 outputs, nothing is done in step 505. When there are 1 to 3 outputs, the process of passing each output as an input of adjacent tiles in each direction is performed for the number of outputs.

ステップ505の処理の結果としていくつかの隣接タイルにデータトークンが渡されることがあり、その結果実行可能となるタイルがいくつかできることもある。それらのタイルも候補に含めてステップ503に戻り、実行可能なタイルがあるかどうかを判定し、あるならばステップ504で一つ実行する。この繰り返しを実行可能なタイルがなくなるまで行い、実行可能なタイルがなくなれば、解釈系は停止する。実行対象となっているプログラムのタイル定義の内容によっては、データが無限に回り続けるようなものもあり得るが、それに対して、割り込みによる中止や、繰り返しの中で、実行したタイルの数を計数しておき、あらかじめ規定した量を実行したら停止する、あるいは、ユーザーに続行を確認する機構を追加することも容易に可能である。 Data tokens may be passed to some adjacent tiles as a result of the processing in step 505, resulting in some viable tiles. Those tiles are also included in the candidates and returned to step 503 to determine if there are viable tiles, and if so, one is executed in step 504. This repetition is repeated until there are no more feasible tiles, and the interpretation system is stopped when there are no feasible tiles. Depending on the contents of the tile definition of the program to be executed, the data may continue to rotate indefinitely, but on the other hand, the number of executed tiles is counted during interruption or repetition. However, it is also possible to easily stop after executing a predetermined amount, or add a mechanism to confirm the continuation to the user.

図6と図7では、さらに複雑なプログラムチャートが例示されている。この例では、ユーザーから入力された自然数値に対する階乗を計算して表示領域201に表示して停止するプログラムが実現されている。図6は、メインラインチャートであり、601にこの盤面チャートの名前が「MainLine」であること、602に、このチャートの実行可能条件が、上からのデータ到着であることが表示されている。 Figures 6 and 7 illustrate more complex program charts. In this example, a program that calculates the factorial of the natural numerical value input by the user, displays it in the display area 201, and stops it is realized. FIG. 6 is a main line chart, and 601 indicates that the name of this board chart is "Main Line", and 602 indicates that the executable condition of this chart is the arrival of data from above.

解釈系の初期化処理によって上からNILが投下されると最初にタイル603が実行可能になる。このタイルの命令はINPUTとなっている。INPUT命令は、ダイアログと仮想キーボードなどの手段により、ユーザーに一つの入力を要求し、そのデータを出力0に出すものである。この時、入力0に入ってきたデータはその参照が放棄される。入力されたデータは、タイル604に上から渡され、入力0として受け取る。 When NIL is dropped from above by the initialization process of the interpretation system, tile 603 becomes executable first. The instruction for this tile is INPUT. The INPUT command requests the user to input one input by means such as a dialog and a virtual keyboard, and outputs the data to output 0. At this time, the reference of the data input to input 0 is abandoned. The input data is passed to tile 604 from above and received as input 0.

タイル604の命令には「n!」が指定されている。「n!」は図7で表示される定義済みタイルに対してつけられた名前識別子である。タイル604では、入力0の整数を図7の定義盤面に対して投入し、その結果を出力0として下に隣接するタイルに入力として渡すことを指示している。その結果は下に隣接したPRTのタイルに渡され、その後の実行は、図2の例と同様に推移する。 "N!" Is specified in the instruction of tile 604. "N!" Is the name identifier given to the defined tile displayed in Figure 7. On tile 604, it is instructed to input an integer of input 0 to the definition board surface of FIG. 7 and pass the result as output 0 to the adjacent tile below as input. The result is passed to the tile of the adjacent PRT below, and subsequent executions proceed in the same way as in the example in Figure 2.

図7は階乗を計算する定義済みタイル「n!」の実装盤面チャートを表している。701では、このチャートにつけられている名前が「n!」であることが表示されている。703では、このチャートの実行開始条件が上からのデータ到着であって、入力0として受け取ったデータを上から進入させることを表示している。702ではこのチャートの実行結果として出力が下から一つ出て、それを出力0に対応させることが表示されている。これら名前、入力条件、出力設定などは、新規タイル定義を作成するためのボタン203を押下したときに表示される図11のダイアログ1101で設定することができる。 Figure 7 shows the mounting board chart of the predefined tile "n!" That calculates the factorial. In 701, it is displayed that the name given to this chart is "n!". In 703, the execution start condition of this chart is the arrival of data from the top, and it is displayed that the data received as input 0 is entered from the top. In 702, as a result of executing this chart, one output is output from the bottom, and it is displayed that it corresponds to output 0. These names, input conditions, output settings, etc. can be set in the dialog 1101 of FIG. 11 displayed when the button 203 for creating a new tile definition is pressed.

図7の盤面チャートでは、階乗を再帰的に計算するアルゴリズムがデータフローチャートで定義されている。「自然数nの階乗」は、「n=1ならばn!=1」そして「n>1ならば、n!=n×(n-1)!」と計算でき、図7ではその計算ステップが表示されている。 In the board chart of FIG. 7, an algorithm for recursively calculating the factorial is defined in the data flowchart. "Factial of natural number n" can be calculated as "n! = 1 if n = 1" and "n! = N × (n-1)! If n> 1". Is displayed.

703の条件によって上から進入してくる入力0の自然数は、タイル704に入力0として受理される。 A natural number with input 0 coming in from above under the condition of 703 is accepted as input 0 on tile 704.

704には、命令の表示がない。これは、COPY3という命令の簡便な表示である。タイルに命令の表示がなく、入力が一つで出力が3つあるタイルは、COPY3命令のタイルであると識別可能である。ただし、命令識別子COPY3は表示が省略されているだけである。COPY3は入力0のデータをさらに二つ複製し、都合3個の出力を一つずつ出力0,出力1,出力2に渡す命令である。704では、入力0の自然数を複製して左に隣接するタイル706、右に隣接するタイル705、下に隣接するタイル708に供給する。 The 704 has no indication of instructions. This is a simple display of the command COPY3. A tile with no instruction indication on the tile, one input and three outputs can be identified as a COPY3 instruction tile. However, the display of the instruction identifier COPY3 is simply omitted. COPY3 is an instruction that duplicates two more data of input 0 and passes three outputs one by one to output 0, output 1, and output 2. In the 704, the natural number of input 0 is duplicated and supplied to the tile 706 adjacent to the left, the tile 705 adjacent to the right, and the tile 708 adjacent below.

タイル705にも命令名がない。ただし、タイル704と異なり、入力が一つと同じではあるが、出力が一つしかない。これは、PASSという命令の簡便な表示である。タイルに命令の表示が省略されており、入力と出力がそれぞれ一つしかないタイルはPASS命令のタイルであると判別される。PASS命令は、入力0として受け取ったデータに何ら加工を施すことなく、そのまま出力0として隣接するタイルに渡す命令である。705のタイルは、704から受けたデータを707に受け渡している。 Tile 705 also has no instruction name. However, unlike tile 704, it has the same input but only one output. This is a simple display of the command PASS. The instruction display is omitted on the tile, and the tile with only one input and one output is determined to be the tile of the PASS instruction. The PASS instruction is an instruction to pass the data received as input 0 to the adjacent tile as output 0 without any processing. The 705 tile passes the data received from the 704 to the 707.

タイル706は、CONSTタイルで、オプションに自然数1が指定されている。このタイルは、704からのデータ入力を受けて、自然数1を、その下に隣接するPASS命令にわたす。この結果、706の出力0は、PASS命令のタイルを介して708に供給される。 Tile 706 is a CONST tile, and the natural number 1 is specified as an option. This tile receives data input from 704 and passes the natural number 1 to the adjacent PASS instruction below it. As a result, the output 0 of the 706 is supplied to the 708 via the tile of the PASS instruction.

タイル708は、GTという比較操作を行う命令のタイルである。GT命令は、入力を二つとり、データが二つとも到着したら実行可能となる。実行動作は、入力0と入力1を比較し、入力0>入力1ならば論理値真を表すデータTを、そうでなければ論理値偽を表すデータNILを出力0に出す。708の入力0は、この盤面に渡された数、入力1は、自然数1となり、これらタイル704、706、708の組み合わせで、この盤面に上から供給された自然数が1より大きいかどうかの比較を行っている。 Tile 708 is a tile of instructions for performing a comparison operation called GT. The GT instruction takes two inputs and can be executed when both data arrive. The execution operation compares input 0 and input 1, and outputs data T representing the logical value true if input 0> input 1, and outputs data NIL representing the logical value false otherwise to output 0. Input 0 of 708 is the number passed to this board, input 1 is the natural number 1, and the combination of these tiles 704, 706, 708 compares whether the natural number supplied from above to this board is greater than 1. It is carried out.

タイル707は、SWITCH命令という条件分岐操作を行う命令のタイルである。SWITCH命令は前述の通り入力を二つとり、データが二つとも到着したら実行可能となる。実行動作は、入力1がNIL以外のデータの時に、入力0のデータを出力0に流し、入力1がNILの場合には、入力0のデータを出力1に流すものである。 Tile 707 is a tile of an instruction that performs a conditional branch operation called a SWITCH instruction. As mentioned above, the SWITCH instruction takes two inputs and can be executed when both data arrive. In the execution operation, when the input 1 is data other than NIL, the data of the input 0 is sent to the output 0, and when the input 1 is NIL, the data of the input 0 is sent to the output 1.

707のSWITCH命令は、入力0としてこの盤面に供給された自然数が、入力1としてタイル708の比較動作の結果を受ける。比較結果が真、すなわち1より大きければ、入力0はタイル709へ供給され、1以下であれば、入力0は出力1として右隣のPASS命令タイルを通り、タイル715へ供給される。このSWICHにより、データフローグラフは、タイル709を起点とするn×(n-1)!を計算するグラフとタイル715を起点とする1を結果として出力するグラフに分岐する。 In the SWITCH instruction of 707, the natural number supplied to this board as input 0 receives the result of the comparison operation of tile 708 as input 1. If the comparison result is true, i.e. greater than 1, input 0 is fed to tile 709, and if less than 1, input 0 is fed to tile 715 as output 1 through the PASS instruction tile to the right. By this SWICH, the data flow graph branches into a graph that calculates n × (n-1)! Starting from tile 709 and a graph that outputs 1 as a result starting from tile 715.

タイル709は、命令文字列の表示がなく、入力が一つで出力が二つある。このようなタイルはCOPY2命令タイルとして判別される。COPY2命令は、入力0にデータが来た時点で実行可能となる。実行動作は、入力0のデータを複製し、出力0と出力1に一つずつ流すものである。COPY2タイルの簡便な表示では、入力と出力の矢印線のみ表示され、命令文字列の表示は省略される。 Tile 709 does not display an instruction string, has one input and two outputs. Such tiles are identified as COPY2 instruction tiles. The COPY2 instruction can be executed when data arrives at input 0. The execution operation is to duplicate the data of input 0 and send it to output 0 and output 1 one by one. In the simple display of the COPY2 tile, only the input and output arrow lines are displayed, and the display of the instruction character string is omitted.

タイル709は、前記比較分岐グラフの結果として入力データが1より大きいときに実行される。実行された時には、入力0のデータは複製され、タイル710とタイル712へデータを引き渡す。 Tile 709 is executed when the input data is greater than 1 as a result of the comparative branch graph. When executed, the data at input 0 is duplicated, passing the data to tile 710 and tile 712.

タイル710は、入力データの内容から1を減じる「n-1」命令タイルである。この命令は、入力0にデータが到達したときに実行可能となる。実行動作は、入力0のデータから1を減じた値を出力0として流すものである。タイル710は、タイル709から供給されたデータから1を引いた値を出力0としてタイル711に渡している。 Tile 710 is an "n-1" instruction tile that subtracts 1 from the contents of the input data. This instruction becomes executable when data reaches input 0. In the execution operation, the value obtained by subtracting 1 from the data of input 0 is sent as output 0. The tile 710 passes the value obtained by subtracting 1 from the data supplied from the tile 709 as the output 0 to the tile 711.

タイル711は、定義済み名前付き盤面「n!」の実行を指示するタイルである。「n!」はこの盤面で定義されており、この呼び出しは再帰的である。タイル711はタイル710によって1減じられた数字に対して「n!」を自分自身の定義をもとに計算し、その結果を出力0として、右に隣接するタイル712に渡す。 Tile 711 is a tile that instructs the execution of the defined named board "n!". "N!" Is defined on this board, and this call is recursive. Tile 711 calculates "n!" Based on its own definition for the number subtracted by 1 by tile 710, and passes the result as output 0 to the tile 712 adjacent to the right.

このような再帰的な盤面チャートの呼び出しは、呼び出しのタイミングでチャートそのものを複製して別体のグラフで実行する方式や、グラフを複製せず、呼び出し履歴を階層的に記憶するスタックなどの構造を利用して実現する方式で実現できる。 Such a recursive board chart call has a structure such as a method in which the chart itself is duplicated at the timing of the call and executed in a separate graph, or a stack in which the call history is stored hierarchically without duplicating the graph. It can be realized by the method realized by using.

タイル712は、二つのデータの算術積を計算する命令「A*B」を実行するタイルである。「A*B」は入力0と入力1の両方にデータが到着したときに実行可能となる。実行動作は、入力0と入力1の掛け算を実行してその結果を出力0に流すものである。タイル712は、タイル709から渡された数字nとタイル711から渡されてくるn-1の階乗の計算結果の積を計算し、結果を出力0として下に隣接するタイル714に渡す。 Tile 712 is a tile that executes the instruction "A * B" to calculate the arithmetic product of two data. "A * B" becomes executable when data arrives at both input 0 and input 1. The execution operation is to execute the multiplication of input 0 and input 1 and send the result to output 0. Tile 712 calculates the product of the number n passed from tile 709 and the factorial calculation result of n-1 passed from tile 711, and passes the result as output 0 to the adjacent tile 714 below.

タイル714は、命令文字列の表示が省略されており、入力が二つ、出力が一つある。このようなタイルは、MRG2命令タイルの簡便な表示として判別できる。MRG2命令は、入力を二つ取り、どちらかの入力にデータが到着ときに、実行可能となる。実行動作は、入力されてきた入力0または入力1のデータを何ら加工することなく出力0に流すものであり、二つのデータフローのパスを一つに合流させる用途を持っている。 Tile 714 omits the display of the command string and has two inputs and one output. Such tiles can be identified as a simple display of MRG2 instruction tiles. The MRG2 instruction takes two inputs and becomes executable when data arrives at either input. The execution operation is to flow the input data of input 0 or input 1 to output 0 without any processing, and has the purpose of merging the paths of two data flows into one.

タイル714は、入力1としてタイル712の演算結果、すなわちn×(n-1)!の結果と、入力0としてタイル715からの定数1を受け取り、どちらかにデータが到着すれば、そのデータを出力0として左に隣接するタイル713に供給する。タイル714は二つのデータフローグラフ、タイル709を起点とするグラフとタイル715と複数のPASS命令タイルからなるグラフからのデータの合流点になっており、これら二つのグラフへのデータは、タイル707のSWITCHで切り分けられているため、どちらか一方のグラフにしかデータは供給されないような盤面チャートの構造になっている。 Tile 714 receives the operation result of tile 712 as input 1, that is, the result of n × (n-1) !, and the constant 1 from tile 715 as input 0, and if data arrives at either of them, that data is input. It is supplied as output 0 to the tile 713 adjacent to the left. Tile 714 is the confluence of data from two data flow graphs, a graph starting at tile 709 and a graph consisting of tile 715 and multiple PASS instruction tiles, and the data for these two graphs is tile 707. Since it is separated by SWITCH of, the structure of the board chart is such that data is supplied to only one of the graphs.

このn!の定義では、出力0が702で表示されているように下から出ていくことになっている。ただし、本実施例では、各方向からの入出力は、各辺に隣接したタイルの内の中央のタイルからのみ行うように限定されている。すなわち5×5の定義盤面では、上からの入出力は上辺中央のタイル、図7では、タイル704のみ行うことができる。同様に左方向の入出力は左辺中央のタイル。右方向のタイルは右辺中央のタイル、下方向は下辺中央のタイル、図7ではタイル713で行うように限定されている。本実施例では、各辺のタイル数は奇数に限定しているので、各辺には中央のタイルが必ず存在する。入出力の位置については、このような各辺の中央に限定せず、タイルに色などの区別のできる印をつけて判別するような方式でもよい。 In this definition of n !, output 0 is supposed to exit from the bottom as shown by 702. However, in this embodiment, input / output from each direction is limited to be performed only from the central tile among the tiles adjacent to each side. That is, on the 5 × 5 definition board, input / output from above can be performed only on the tile in the center of the upper side, and in FIG. 7, only the tile 704. Similarly, the input / output in the left direction is the tile in the center of the left side. The tiles in the right direction are the tiles in the center of the right side, the tiles in the lower direction are the tiles in the center of the lower side, and in Fig. 7, the tiles are limited to tile 713. In this embodiment, the number of tiles on each side is limited to an odd number, so that there is always a central tile on each side. The input / output positions are not limited to the center of each side, and a method may be used in which the tiles are marked with distinguishable marks such as colors.

上記の規則設定のため、タイル714の出力0は、直接下辺に接触せず、タイル713を介して下辺に接している。この結果この部分のグラフは屈曲している。 Due to the above rule setting, output 0 of tile 714 does not directly touch the bottom edge, but touches the bottom edge via tile 713. As a result, the graph in this part is bent.

本実施例では、このようなデータフローグラフの構成で、階乗計算のロジックが表現され、図5の処理の流れを実現した解釈系によって、実行することができる。 In this embodiment, the logic of factorial calculation is expressed by the configuration of such a data flow graph, and can be executed by the interpretation system that realizes the processing flow of FIG.

図8は、図7の定義による「n!」を呼び出すためのメインライングラフである図6を変形させたものである。この図6と比較してグラフが屈曲しているが、表現されているグラフのロジックは図6のグラフと全く同等である。 FIG. 8 is a modification of FIG. 6, which is a main line graph for calling “n!” As defined in FIG. 7. Although the graph is bent compared to FIG. 6, the logic of the expressed graph is exactly the same as that of the graph of FIG.

チャート中央のタイル805は、名前付き盤名定義タイル「n!」を実行させるタイルである。このタイル805は、右に隣接するタイルの出力0である801を右からの入力0として受け取る。また、出力0は左方向に流され、左に隣接するタイルの右からの入力0である804で受け取られる。本実施例の解釈系では、このような隣接するタイル間のデータの受け渡しに関する処理を装備している。 The tile 805 in the center of the chart is a tile that executes the named board name definition tile "n!". This tile 805 receives 801 which is the output 0 of the tile adjacent to the right as the input 0 from the right. Also, the output 0 is sent to the left and is received by the input 0 804 from the right of the tile adjacent to the left. The interpretation system of this embodiment is equipped with a process related to data transfer between adjacent tiles.

図9は、この受け渡しに関する解釈実行部2003の処理のフローチャートである。この「出力渡し」処理は、タイルの実行により出力が生じた際に実行されるもので、図5のステップ505の処理に該当する。この手続きは出力が複数ある場合には、各出力に対して一回ずつ実行される。 FIG. 9 is a flowchart of the processing of the interpretation execution unit 2003 regarding this delivery. This "output passing" process is executed when an output is generated by executing the tile, and corresponds to the process of step 505 in FIG. This procedure is performed once for each output if there are multiple outputs.

この処理は発生した出力の方向によってステップ901から下にある条件検査により四つの手続きに分岐される。出力が左方向である場合には、手続き「左隣へ渡す」、右方向への出力の場合には、「右隣へ渡す」、下方への出力の時には「下隣へ渡す」上への出力時には「上隣へ渡す」が実行される。 This process is branched into four procedures by the conditional inspection below from step 901 depending on the direction of the output generated. If the output is to the left, the procedure is "pass to the left", if the output is to the right, "pass to the right", and if the output is downward, "pass to the bottom". At the time of output, "pass to the upper neighbor" is executed.

図10は、図9のステップ902で呼び出される「左隣へ渡す」の処理のフローチャートである。ステップ1001でこの手続きで参照している渡されるデータを取り出す。ステップ1002では、左隣のタイル右方向の入力の識別子を取り出す。図8のチャートでは、右方向への出力801で渡されるデータがD、左隣のタイル805の入力の識別子0がPに該当する。ステップ1003では、渡す対象のデータDを左隣のタイルの入力Pとして代入する。その結果左隣のタイルにデータが到着するので、その機会に左隣のタイルの実行可能性についての左隣のタイルの命令の実行可能条件式でチェックを行うのがステップ1004である。その結果実行可能であると判定された時には、左隣のタイルは、実行可能であると分類され、次のタイルの実行ステップ図5の504での実行候補となる。 FIG. 10 is a flowchart of the process of “passing to the left” called in step 902 of FIG. Extract the passed data referenced in this procedure in step 1001. In step 1002, the identifier of the input to the right of the tile to the left is retrieved. In the chart of FIG. 8, the data passed in the output 801 to the right corresponds to D, and the input identifier 0 of the tile 805 on the left corresponds to P. In step 1003, the data D to be passed is substituted as the input P of the tile on the left. As a result, the data arrives at the tile on the left, so it is step 1004 to check the feasibility of the tile on the left with the executable conditional expression of the instruction on the tile on the left. As a result, when it is determined that the tile is feasible, the tile to the left is classified as feasible and is a candidate for execution in the execution step 504 of the next tile.

そのほかの方向へのデータ渡しの処理は、図10の処理中記述の「左と右」を「右と左」、「上と下」、「下と上」の関係で読み替えることで実現することができる。 The process of passing data in other directions can be realized by replacing "left and right" in the processing description in FIG. 10 with the relations of "right and left", "top and bottom", and "bottom and top". ..

次に第一の実施形態において、これらデータフローグラフの作成と編集がタッチパネルのような位置指定手段と、タップとダブルタップのような二つの指示手段と仮想キーボードで行えることを示す。 Next, in the first embodiment, it is shown that the creation and editing of these data flow graphs can be performed by a position specifying means such as a touch panel, two instruction means such as a tap and a double tap, and a virtual keyboard.

図11は、新規に名前付き盤面タイルを作成する際の入力画面である。図2のボタン203は、押下すると新規の名前付き盤面の作成処理を行う。この際に必要な諸情報の入力のために、ダイアログ1101がモーダルダイアログとして表示される。この段階では、盤面の名前、盤面のサイズ、実行可能判定式、出力数と方向の設定を行い、盤面の作成編集は、1101での設定後、盤面表示208上での画面のタップあるいはダブルタップで行う。 FIG. 11 is an input screen when creating a new named board tile. When the button 203 in FIG. 2 is pressed, a new named board surface is created. Dialog 1101 is displayed as a modal dialog for inputting various information required at this time. At this stage, set the board name, board size, executable judgment formula, number of outputs and direction, and after setting with 1101, tap or double tap the screen on the board display 208. Do it with.

1102は、テキスト入力項目であり、ここに盤面の名前を仮想キーボードなどで入力する。1103は、この名前付き盤面のサイズを指定するプルダウンメニューとなっており、3、5、7などの奇数が選択できる。本実施例では、盤面は縦横同じサイズと規定しているため、入力する数値は一つとなっているが、そのほかの場合には適切な数の適切な値の入力を促すことになる。1104は、この名前付き盤面の実行可能条件式であり、前述した形式の条件式を仮想キーボードなどで入力する。この項目については、入力を支援するような補助ダイアログのようなUI機構があってもよい。この例では、実行開始条件式は、入力が二つあり、入力0は上から、入力1は左から入ってくることとし、入力0と入力1の両方のデータが揃ったときに実行可能になると設定されている。1105は出力の数と方向の設定を行うテキスト入力項目であり、この例では、出力が二つあり出力0が下方向へ、出力1が右方向へ出ていくことが設定されている。この項目についても入力支援ダイアログの導入で文字入力量をさらに低減させることもできる。 1102 is a text input item, and the name of the board is input here with a virtual keyboard or the like. 1103 is a pull-down menu that specifies the size of this named board, and odd numbers such as 3, 5, and 7 can be selected. In this embodiment, since the board surface is defined to have the same vertical and horizontal sizes, only one numerical value is input, but in other cases, an appropriate number of appropriate values are prompted to be input. Reference numeral 1104 is an executable conditional expression of this named board, and the conditional expression of the above-mentioned format is input by a virtual keyboard or the like. For this item, there may be a UI mechanism such as an auxiliary dialog that assists in input. In this example, the execution start conditional expression has two inputs, input 0 comes from the top and input 1 comes from the left, and can be executed when both input 0 and input 1 data are available. It is set to become. 1105 is a text input item that sets the number and direction of outputs. In this example, it is set that there are two outputs, output 0 goes down, and output 1 goes out to the right. For this item as well, the amount of character input can be further reduced by introducing an input support dialog.

1101のダイアログにあるOKボタンは、設定内容を確定として登録しダイアログを閉じる。Cancelボタンを押下すると、新規名前付き盤面作成操作そのものを中止する。 The OK button in the 1101 dialog closes the dialog by registering the settings as confirmed. When the Cancel button is pressed, the operation itself for creating a new named board is canceled.

OKボタンの押下によって、新規名前付き盤面が作成されると盤面のすべてのタイルが空白で初期化された盤面が作成され、207にその盤面名が表示されるとともに、208に現在のその盤面の内容、初期状態としてすべてのタイルが空白のものが表示される。盤面の作成編集は208の各タイルをタップやダブルタップなどの指示をすることで行う。 When a new named board is created by pressing the OK button, a board with all tiles on the board initialized with blanks is created, the board name is displayed in 207, and the current board is displayed in 208. The contents and initial state are all tiles that are blank. The board is created and edited by tapping or double-tapping each of the 208 tiles.

図12は、各タイルをダブルタップしたときの表示内容である。1201はモーダル表示されるダイアログであり、タイルの編集操作を容易にするために、図2の208で表示される領域とほぼ同じ大きさで表示される。1202は、ダブルタップされたタイルと同じ内容がダイアログいっぱいに拡大表示される。1202に対してはシングルタップによる内容の編集が可能である。1201のOKボタンは押下すると、上記編集の結果をダブルタップされたタイルに反映させて、ダイアログを閉じる。Cancelボタンは、編集の結果を放棄し、ダブルタップされたタイルの内容は不変のままダイアログを閉じる。 FIG. 12 shows the display contents when each tile is double-tapped. 1201 is a modal dialog that is displayed in approximately the same size as the area displayed in 208 in FIG. 2 to facilitate tile editing operations. In 1202, the same contents as the double-tapped tile are enlarged and displayed in the full dialog. You can edit the contents of 1202 with a single tap. When the OK button of 1201 is pressed, the result of the above editing is reflected in the double-tapped tile and the dialog is closed. The Cancel button abandons the result of the edit and closes the dialog with the contents of the double-tapped tile unchanged.

図13は、208の各タイルをダブルタップしたとき、あるいは拡大表示された1202の領域の中央付近をシングルタップしたときにモーダル表示されるダイアログである。ここでは、タイルの中心に表示されている、命令とオプションを編集することができる。1302は、プルダウンメニューであり、それには、システムで用意されている命令と現在編集中のものも含めたすべての名前付き定義済みタイルの名前識別子が一覧表示され、ユーザーはその中から一つを選択する。1303は、オプションを入力するテキスト入力項目であり、内容を仮想キーボードで入力することもでき、また、いくつかの定数NIL、0、1などはプルダウンメニューからの選択により設定することもできる。 FIG. 13 is a dialog that is displayed modally when each tile of 208 is double-tapped or when a single tap is made near the center of the enlarged 1202 area. Here you can edit the instructions and options displayed in the center of the tile. 1302 is a pull-down menu that lists the name identifiers of all named predefined tiles, including those provided by the system and those currently being edited, and the user chooses one of them. select. 1303 is a text input item for inputting options, the contents can be input with a virtual keyboard, and some constants NIL, 0, 1 etc. can be set by selecting from the pull-down menu.

ダイアログ1301にあるOKボタンは、押下すると、編集内容を該当するタイルに反映させて1301を閉じる。Cancelボタンは、編集内容を放棄して1301を閉じる。 When the OK button in the dialog 1301 is pressed, the edited contents are reflected in the corresponding tile and the 1301 is closed. The Cancel button abandons the edit and closes 1301.

図14は1302をタップしたときにポップアップするメニューの例である。
1401のメニューには、システムで定義済みの命令と作成済みの名前付きの盤面名のすべてが選択可能なように表示される。作成済み盤面には、現在208に表示されている編集中の盤面の名前も含まれる。この例では、現在設定されている命令についてハイライト表示されている。これらの表示の順番については、名前の辞書式順や使用頻度の高い順に並べるなども考えられる。1402は「--EMPTY--」という項目で、これを選択すると該当するタイルが空白に設定され、リセットされる。
Figure 14 is an example of a menu that pops up when you tap 1302.
The 1401 menu is displayed with all system-defined instructions and pre-created named board names available for selection. The created board also includes the name of the board currently being edited, which is displayed in 208. In this example, the currently set instruction is highlighted. Regarding the order of these displays, it is conceivable to arrange them in lexicographic order of names or in order of frequency of use. 1402 is an item called "--EMPTY-", and if you select this, the corresponding tile will be set to blank and reset.

図21は、システムで定義済みの命令の一例である。これらの中には、シンボルや数値、文字列を操作する命令のほか、複合データ構造として二進木リストを取り扱うための命令であるFRIST、REST、CONS、EQ、ATOM?なども含まれている。命令EQでは、入力が数値同士の場合の比較機能を含めてもよい。 FIG. 21 is an example of a system-defined instruction. These include instructions for manipulating symbols, numbers, and strings, as well as instructions for handling binary tree lists as complex data structures, such as FRIST, REST, CONS, EQ, and ATOM ?. .. The instruction EQ may include a comparison function when the inputs are numerical values.

さらに図21のシステム定義済み命令の中には、電源の状態を読み取るON?、電源の投入と切断を指示するPOWER、現在の時間を取得するNOW、タイマーに時間を設定するSTTMRなどの命令も含まれている。これは、制御対象のエアコン機器102に対する制御命令に対応する。この例にくわえて、エアコンの温度設定を読み取る、あるいは設定するなどの命令も追加してもよい。 In addition, among the system-defined instructions in Fig. 21, there are also instructions such as ON? To read the power status, POWER to instruct power on / off, NOW to get the current time, and STTMR to set the time to the timer. include. This corresponds to a control command for the air conditioner device 102 to be controlled. In addition to this example, commands such as reading or setting the temperature setting of the air conditioner may be added.

図2の盤面表示208の各タイルの上、あるいはタイルの拡大表示図12の1202をシングルタップしたときの動作は、第一の実施形態及び後述の第二の実施形態では、タップされた場所によって編集対象を区別している。図15はタップの場所に関する領域の説明である。1501はタイル全体の正方形領域であり、その内部は9個の領域に分割されている。このうち、中央の領域1502を「ゾーン1」と呼ぶこととし、以下上辺沿いの領域を「ゾーン2」、左辺沿いを「ゾーン3」、右辺沿いを「ゾーン4」、下辺沿いを「ゾーン5」と呼ぶことにする。この例では四隅の領域には名称はなくこの領域をシングルタップしても何も処理しないものとする。例示では、ゾーン1が大きめに設定されているが、各ゾーンの大きさを均等にしてもよく、これらの領域の大きさの設定は、利用者の操作性をもとに決定される。 The operation when a single tap is made on each tile of the board display 208 of FIG. 2 or 1202 of the enlarged display of the tile is determined by the tapped place in the first embodiment and the second embodiment described later. The edit target is distinguished. FIG. 15 is a description of the area for tap locations. 1501 is a square area of the entire tile, the interior of which is divided into nine areas. Of these, the central area 1502 will be referred to as "Zone 1", and the area along the upper side will be referred to as "Zone 2", the area along the left side will be "Zone 3", the area along the right side will be "Zone 4", and the area along the lower side will be "Zone 5". I will call it. In this example, the four corner areas have no name, and even if this area is single-tapped, nothing is processed. In the example, zone 1 is set to be large, but the size of each zone may be equalized, and the size of these areas is set based on the operability of the user.

上記において、「1202の領域の中央付近をシングルタップ」という記述は、拡大表示領域1202のゾーン1をシングルタップすることに該当する。 In the above, the description "single tap near the center of the 1202 area" corresponds to single tapping the zone 1 of the enlarged display area 1202.

第一の実施形態と第二の実施形態では、ゾーン1のシングルタップは命令とオプションの編集を行う。また、ゾーン2をシングルタップすると上方向の入出力の設定を行う。同様に、ゾーン3は左方向、ゾーン4は右方向、ゾーン5は下方向の入出力の編集を行う。 In the first and second embodiments, the zone 1 single tap edits instructions and options. Also, if you single-tap Zone 2, you can set the input / output in the upward direction. Similarly, zone 3 edits input / output to the left, zone 4 edits to the right, and zone 5 edits input / output downward.

各ゾーンをシングルタップしたときには、専用のダイアログを表示させ、入力0、入力1、入力2、入力3、出力0、出力1、出力2のいずれか一つを選択設定させるようにしてもよいが、例示する両実施形態ではより操作性に優れた手段を例示する。 When each zone is single-tapped, a dedicated dialog may be displayed and one of input 0, input 1, input 2, input 3, output 0, output 1, and output 2 may be selected and set. In both embodiments, the means having better operability will be illustrated.

第一の実施形態と後述の第二の実施形態では、各ゾーンがシングルタップされた時の動作として、すでにそのゾーンに対応する方向に入出力が設定されていた場合には設定を削除し、設定されていない場合には、図16のように設定された優先度順に未設定の入出力を設定するという規則で設定動作を行う。 In the first embodiment and the second embodiment described later, as an operation when each zone is single-tapped, if the input / output is already set in the direction corresponding to the zone, the setting is deleted. If it is not set, the setting operation is performed according to the rule that unset input / output is set in the order of priority set as shown in FIG.

例えば、入力二個、出力二個の命令に対するシングルタップ動作例は図22のようになる。初期状態として、2入力2出力の命令であるSWITCH命令だけが設定されている2201の状態にあるとする。次に最初にゾーン2をタップすると、2002のように上方向に入力0が設定される。次にゾーン4をタップすると、2203のように未設定の右方向に入力1が設定される。次にゾーン3をタップすると、2204のように未設定の左方向に出力0が設定される。さらに、ここでゾーン4を再度タップすると、2205のように、右方向の入力1の設定が削除され、右方向は未設定になる。次に、ゾーン5をタップすると、2206未設定の下方向に、まだ選択されていない有効な方向の内、図16に照らして最も優先度の高い、入力1、すなわち直前のタップ操作で設定先のなくなっていた入力位置が、まだアサインされていない出力1に優先して設定される。というような動作である。もちろんこの後、ゾーン4をタップすると、2207のように唯一残っているアサインされていない出力1が右方向に設定されるという動作を行う。 For example, FIG. 22 shows an example of a single tap operation for an instruction having two inputs and two outputs. It is assumed that the initial state is 2201 in which only the SWITCH instruction, which is a 2-input 2-output instruction, is set. Next, when you tap Zone 2 first, input 0 is set upward as in 2002. Next, when you tap zone 4, input 1 is set to the unset right direction like 2203. Next, when you tap zone 3, output 0 is set to the unset left direction like 2204. Furthermore, if you tap Zone 4 again here, the setting of input 1 in the right direction will be deleted and the setting in the right direction will be unset, as in 2205. Next, when you tap Zone 5, 2206 is not set downward, and among the valid directions that have not been selected yet, the highest priority in light of Fig. 16, input 1, that is, the setting destination by the previous tap operation The input position that has disappeared is set in preference to the output 1 that has not been assigned yet. It is such an operation. Of course, after this, if you tap Zone 4, the only remaining unassigned output 1 like 2207 will be set to the right.

図17はこのようなシングルタップの動作についてのUI操作処理部2002の処理のフローチャートである。処理は最初にタップされた領域の判別ステップ1701から始まり、タップされた領域がゾーン1かそうでないかによって処理を切り替える。ゾーン1がタップされた場合にはステップ1702でダイアログ1301をモーダルで表示して命令とオプションの設定編集を行う。それ以外の領域がタップされた場合にはステップ1703の「方向編集」手続きにより、各方向の入出力設定が行われる。 FIG. 17 is a flowchart of processing of the UI operation processing unit 2002 regarding such a single tap operation. The process starts from step 1701 of determining the tapped area first, and switches the process depending on whether the tapped area is zone 1 or not. If zone 1 is tapped, the dialog 1301 is displayed modally in step 1702 and the command and option settings are edited. If any other area is tapped, the input / output settings for each direction are set by the "direction edit" procedure in step 1703.

図18は、表示領域がダブルタップされた時の動作についてUI操作処理部2002のフローチャートである。ダブルタップは、タップされた領域に限らず以下の動作を行う。前述のように、タイル表示領域をダブルタップすると拡大ダイアログ1201が表示されるが、その中の拡大タイル表示1202でもダブルタップされることもありうる。その場合には、重ねて拡大ダイアログを表示する必要はないので、何もせずに終了する。ステップ1801はそのための判断ステップで、タップされた表示領域が1202であった場合には、何もせずに終了する。タップされた領域が208の表示の内の一つのタイルであった場合には、ステップ1802で、タップされたタイルの拡大編集ダイアログ1201を表示させ、ユーザーに編集操作をさせたのち、OKボタンによって閉じられるときには、編集内容をタイルに反映させて終了する。 FIG. 18 is a flowchart of the UI operation processing unit 2002 regarding the operation when the display area is double-tapped. The double tap performs the following operations regardless of the tapped area. As mentioned above, if you double-tap the tile display area, the enlargement dialog 1201 is displayed, but it is also possible that the enlarged tile display 1202 in it is also double-tapped. In that case, it is not necessary to display the enlarged dialog again, so it ends without doing anything. Step 1801 is a judgment step for that purpose, and if the tapped display area is 1202, it ends without doing anything. If the tapped area is one tile in the 208 display, in step 1802, display the enlarged edit dialog 1201 of the tapped tile, let the user perform the editing operation, and then press the OK button. When it is closed, the edited contents are reflected on the tile and the process ends.

図19は、図17のステップ1703の「方向編集」の処理を示すフローチャートである。ここでは、ゾーン1以外の領域がシングルタップされた時の処理を行う。最初にステップ1901でタップされた領域がゾーン2,3,4,5のいずれでもない四隅の領域ではないことを確認している。もし、四隅の領域であるならば、何もせずに終了する。ゾーン2,3,4,5のいずれかであった場合は、さらにステップ1902で、そのゾーンに対応する方向に入出力が設定されているかどうかを判定する。もしすでに入出力が設定されている場合には、ステップ1903で設定されている入出力を解除する。解除された入出力はステップ1904での再割り当て候補に含まれるように処理される。タップされたゾーンに、入出力の設定がない場合には、ステップ1904で設定処理が行われる。ステップ1904では、まだ設定されたことのない入出力や解除されたことのある入出力の内、図16の優先度に照らして最も優先度の高い入出力を設定する。 FIG. 19 is a flowchart showing the process of “direction editing” in step 1703 of FIG. Here, processing is performed when an area other than zone 1 is single-tapped. First, it is confirmed that the area tapped in step 1901 is not the area of the four corners that are neither zones 2, 3, 4, or 5. If it is the area of the four corners, it ends without doing anything. If it is any of zones 2, 3, 4, 5, it is further determined in step 1902 whether the input / output is set in the direction corresponding to that zone. If the input / output has already been set, the input / output set in step 1903 is canceled. The released I / O is processed to be included in the reassignment candidates in step 1904. If there is no input / output setting in the tapped zone, the setting process is performed in step 1904. In step 1904, among the inputs / outputs that have not been set and the inputs / outputs that have been released, the input / output having the highest priority in light of the priority shown in FIG. 16 is set.

ここまでのユーザー操作は、表示に対するタップとダブルタップ、ポインティングディバイスの場合には、クリックとダブルクリック、そして名前付き盤面の名前の文字入力とオプション文字列の入力のみである。文字入力は単語や数字の入力がほとんどであり、仮想キーボードで簡単に入力できる長さである。 The user operations so far are only tap and double tap on the display, click and double click in the case of the pointing device, and input the character of the name of the named board and the option character string. Most of the character input is words and numbers, and the length is such that it can be easily input with a virtual keyboard.

以上のような図式表現のプログラミング言語とユーザーインターフェースを提供することにより、物理キーボードを必要としない表示とポインティングディバイス、あるいはタッチパネルのみでのプログラミング環境が実現される。本質的には、画面上の位置を指定する手段と、二つの区別された指示ができる入出力装置であればよく、例えば、ゲームコントローラの十字キーとA、Bボタンでもよい。

(第二の実施形態)
By providing the above-mentioned graphical representation programming language and user interface, a display and pointing device that does not require a physical keyboard, or a programming environment using only a touch panel can be realized. In essence, it may be a means for designating a position on the screen and an input / output device capable of giving two distinct instructions, for example, a cross key of a game controller and A and B buttons.

(Second embodiment)

第二の実施形態は、前述の第一の実施形態を変形して、解釈実行系にイベント駆動とオブジェクト指向パラダイムを導入した実施形態である。 The second embodiment is a modification of the first embodiment described above, in which an event-driven and object-oriented paradigm is introduced into the interpretation execution system.

図23は、第二の実施形態における図1のプログラム実行エンジン106の内部を表した例である。図23の2302が、図1の107への接続に対応し、207制御機器インターフェース105への接続に対応する。本実施形態において106に対応するプログラム実行エンジン2301は、API仲介部2305を窓口として、タッチパネル107上でのタップ、ダブルタップなどの操作、制御機器からの電源状態の変化などに反応して、API仲介部2305から対応オブジェクトを取りして、実行解釈部2303が、評価メソッドを実行する。 FIG. 23 is an example showing the inside of the program execution engine 106 of FIG. 1 in the second embodiment. 2302 in FIG. 23 corresponds to the connection to 107 in FIG. 1 and corresponds to the connection to the 207 control device interface 105. The program execution engine 2301 corresponding to 106 in the present embodiment uses the API intermediary unit 2305 as a window, and responds to operations such as tapping and double tapping on the touch panel 107, changes in the power supply state from the control device, and the like. The corresponding object is taken from the mediation unit 2305, and the execution interpretation unit 2303 executes the evaluation method.

2303はプログラムの解釈実行部であり、タッチパネル107上での操作イベントや図1の103の電源状態と104の内蔵時計で発生したイベントに対応するコールバックを持つオブジェクトを、API仲介部2305が保持する後述の図34の3401の登録表から取り出し、評価メソッドの実行動作を開始し、実行環境保持部2304と、作業領域2306に各種情報を書き込み/読み出しを繰り返して実行を行い、実行完了時にその旨を2305のAPI仲介部を通じてUIタッチパネル図1の107に表示する。また、解釈実行部2303は、2305の仲介部を通して図1の106のインターフェースからのイベント対応と、操作処理の呼び出しを行う。本実施例では、制御機器内からのイベント発生源として103の電源、104の内蔵時計が例示されているが、エアコンにおける検知温度の変化などの、対象機器固有の内部状況の変化などもイベント発生源として考えられる。 2303 is the program interpretation execution unit, and the API mediation unit 2305 holds an object that has a callback corresponding to the operation event on the touch panel 107 and the power state of 103 in Fig. 1 and the event that occurred in the built-in clock of 104. Take out from the registration table of 3401 in Fig. 34, which will be described later, start the execution operation of the evaluation method, write / read various information to the execution environment holding unit 2304 and the work area 2306 repeatedly, and execute it when the execution is completed. This is displayed in 107 of the UI touch panel Figure 1 through the API mediation section of 2305. Further, the interpretation execution unit 2303 responds to an event from the interface of 106 in FIG. 1 and calls an operation process through the mediation unit of 2305. In this embodiment, 103 power supplies and 104 built-in clocks are exemplified as event generation sources from within the control device, but events such as changes in the detection temperature of the air conditioner and changes in the internal conditions specific to the target device also occur. Considered as a source.

2304は、実行環境保持部であり、実行時の各種情報を保持する部分である。これらの情報には実行待ちのタイルの待ち合わせ場所、実行待ちのタイルに到達しているデータの情報などデータフローグラフを実行するにあたって必要な一時作業データが含まれる。 2304 is an execution environment holding unit, and is a part that holds various information at the time of execution. This information includes temporary work data necessary for executing the data flow graph, such as the meeting place of the tile waiting to be executed and the information of the data reaching the tile waiting to be executed.

2305は、API仲介部であり、二つの機能から成る。一つはUIおよび制御機器からの反応処理対象となるイベントの識別子をキーとし、命令メッセージ識別子と、命令メッセージ識別子を送る対象となるオブジェクトへの参照を値とする表とその管理機能であり、もう一つは、解釈実行部2303から、外部機器及びUIタッチパネル図1の107に対する操作を仲介する機能である。 2305 is an API mediator and consists of two functions. One is a table and its management function that uses the identifier of the event to be processed as a reaction from the UI and control device as a key, the instruction message identifier, and the reference to the object to which the instruction message identifier is sent. The other is a function of mediating the operation of the external device and the UI touch panel 107 of FIG. 1 from the interpretation execution unit 2303.

第二の実施形態の作業領域2306は、データフローグラフ内を流通する各種データの置き場所であり、識別子、数値、文字列や辞書、配列、二進木リスト構造体などのオブジェクトの実体が格納されている。本実施形態は、システムを構成する要素群もデータフローグラフを流通するデータトークンとなっていることを特徴としており、以降ではグリッドと称するデータフローグラフや、グリッド内の各タイル、メソッド識別子とグリッドの対の集まりで構成されるクラス定義、クラス識別子とクラス定義の対の集まりから成るクラス定義表などが、すべて作業領域2306に含まれる。 The work area 2306 of the second embodiment is a storage place for various data circulating in the data flow graph, and stores the actual objects such as identifiers, numerical values, character strings and dictionaries, arrays, and binary tree list structures. Has been done. The present embodiment is characterized in that the element groups constituting the system are also data tokens that circulate the data flow graph, and the data flow graph hereafter referred to as a grid, each tile in the grid, the method identifier and the grid. A class definition consisting of a collection of pairs of classes, a class definition table consisting of a collection of pairs of class identifiers and class definitions, etc. are all included in workspace 2306.

図24はこの実施例におけるユーザー画面への表示例である。この画面ではすでにプログラムが実行され、表示領域2401に”HELLO WORLD”という文字列が表示されて実行が終了している状態が表示されている。図24で表示されている各ボタンの動作とプログラムの詳細な説明は後述する。ここでは、基本的な構成要素についてのみ説明する。 FIG. 24 is a display example on the user screen in this embodiment. On this screen, the program has already been executed, and the character string "HELLO WORLD" is displayed in the display area 2401 to indicate that the execution has been completed. The operation of each button displayed in FIG. 24 and the detailed description of the program will be described later. Only the basic components will be described here.

2411,2412,2413には、それぞれ実行命令識別子とオペランドと呼ばれる実行オプション、入力データの入ってくる方向、出力データの排出方向を指示する図が描かれている。この矩形を以降「タイル」と呼ぶ。タイルに関する詳細は、図25で説明する。タイルについては、この実施形態でも、矩形となっている。 In 2411, 2412, and 2413, diagrams are drawn that indicate execution instruction identifiers and execution options called operands, the direction in which input data enters, and the direction in which output data is discharged, respectively. This rectangle is hereafter referred to as the "tile". Details regarding tiles are described in FIG. The tile is also rectangular in this embodiment.

2408はタイルが縦横に隣接して配置されている領域で、第二の実施形態では、以降「グリッド」と呼ぶ。前記グリッドオブジェクトは、この領域の内容を保持するオブジェクトである。グリッドには識別のためのメソッド識別子が付けられている。2408のグリッドには「MainLine」という識別子が付けられており、表示領域兼プルダウンメニュー2407にその名前が表示されている。また、このグリッドと「Mainline」の対応は、「App」という識別子と対応しているクラス定義データトークンオブジェクト内に登録されており、そのクラス定義識別子名「App」が表示領域兼プルダウンメニュー2414に表示されている。図示の状態は、「AppクラスのMainlineメソッドの定義グリッド(データフローグラフ)の現状、言い換えれば編集状況の表示状態でもある。また、グリッド中の各タイルの位置を表す識別子として、列については左からA,B,C,…,Gとインデックスが付けられ、行については、上から1,2,3,…,7とインデックスが付けられる。識別子は列行の順に”A1”, “B2”などと表示される。例えば、2413のタイルの位置は”D3”である。2405は、グリッド表示上タイルの列のインデックスを表示している目盛り行であり、2406は、行のインデックスを表示している目盛り列である。 2408 is an area where tiles are arranged vertically and horizontally adjacent to each other, and in the second embodiment, it is hereinafter referred to as a "grid". The grid object is an object that holds the contents of this area. The grid is given a method identifier for identification. The grid of 2408 is given the identifier "MainLine", and the name is displayed in the display area and pull-down menu 2407. In addition, the correspondence between this grid and "Mainline" is registered in the class definition data token object corresponding to the identifier "App", and the class definition identifier name "App" is displayed in the display area and pull-down menu 2414. It is displayed. The illustrated state is "the current state of the definition grid (data flow graph) of the Mainline method of the App class, in other words, the display state of the editing status. Also, as an identifier indicating the position of each tile in the grid, the column is on the left. Is indexed as A, B, C, ..., G, and rows are indexed as 1,2,3, ..., 7 from the top. Identifiers are "A1", "B2" in the order of column rows. For example, the position of the tile of 2413 is "D3". 2405 is the scale row displaying the index of the column of the tile on the grid display, and 2406 displays the index of the row. It is a scale line.

このMainLine盤面で表現されている「プログラム」を簡単に説明する。タイル2411は、CONSTというメソッドを入力0のオブジェクトに実行させる指示が図示記述されている。CONSTに対応する既定動作は、その実行対象である入力0のオブジェクトがどのようなクラスのデータトークンあっても、内容を無視して、オプションとして指定されていて、冒頭の4文字「”HELL」とのみ短縮表示されている”HELLO WORLD”という文字列データトークンを出力データとして、このタイルの下方に隣接しているタイルに渡す指示である。この動作定義は、入力0のデータトークンオブジェクトのクラス定義、あるいはスーパークラスの定義表の内容を元に決定される。第二の実施形態では、後述するように、既定のクラス階層の上位レベルのクラス定義で上記動作が定義および対応付けられている。タイル2412は、PRTというメソッドを入力0のオブジェクトに実行させる指示が図示記述されている。PRTメソッドに対する既定動作は、上方に隣接しているタイルからのデータ入力0のオブジェクトをPRTメソッドの実行対象としてとしてその内容を2401の表示領域に印字する。さらに、入力データをそのまま下方に隣接するタイルに渡す。タイル2413は、ENDメソッドの実行指示が記述されている。ENDメソッドの既定動作はメソッドの実行対象である入力0として上方に隣接しているタイルからのデータ自身を捨ててしまい、何も出力しない。このグリッドプログラムでは、タイル2413の実行によりデータが捨てられ、プログラム系全体を流通するデータがなくなることで系の実行が終了する。このプログラム中の矢印は、制御の流れではなく、データの流通経路を示しており、図式はデータフローグラフになっている。また、図式中の各タイルは、データフローグラフの実行節に対応している。 The "program" expressed on this Main Line board will be briefly explained. Tile 2411 is illustrated with instructions to cause an object with input 0 to execute a method called CONST. The default behavior corresponding to CONST is that the object of input 0 that is the execution target is specified as an option regardless of the data token of any class, ignoring the contents, and the first 4 characters "" HELL "" It is an instruction to pass the character string data token "HELLO WORLD", which is abbreviated only as "HELLO WORLD", as output data to the tile adjacent to the bottom of this tile. This action definition is determined based on the class definition of the data token object with input 0 or the contents of the superclass definition table. In the second embodiment, as will be described later, the above operation is defined and associated with the upper level class definition of the default class hierarchy. Tile 2412 is illustrated with instructions to cause an object with input 0 to execute a method called PRT. The default operation for the PRT method is to print the contents of the object with data input 0 from the tile adjacent to the top as the execution target of the PRT method in the display area of 2401. Furthermore, the input data is passed as it is to the adjacent tile below. Tile 2413 describes the execution instruction of the END method. The default behavior of the END method is to discard the data itself from the tiles adjacent to the top as input 0, which is the execution target of the method, and output nothing. In this grid program, the execution of tile 2413 discards the data, and the execution of the system ends when there is no data circulating in the entire program system. The arrows in this program indicate the data distribution route, not the control flow, and the diagram is a data flow graph. In addition, each tile in the diagram corresponds to the execution section of the data flow graph.

図24の2402は”RUN”とラベル付けされているプッシュボタンであり、押下するとセットされているプログラムの実行が開始される。このボタンを押下すると、2414で表示指定されているAppクラスのインスタンスが一つ作成され、それに対して、2407で表示されているMainlineメソッドを、入力0として作成されたAppクラスのインタンス自身を指定して、後述する実行評価メソッドを呼び出す。その結果2408で図示されているプログラムグラフの上辺中心のタイル2411の上に、実行のきっかけとなる入力0として実行評価メソッドの引数の入力0として渡されたAppクラスのインスタンストークンが投下され、以降必要なデータが到着して実行可能になったタイルの実行が続く。 2402 in FIG. 24 is a push button labeled "RUN", and when pressed, execution of the set program is started. When this button is pressed, one instance of the App class displayed in 2414 is created, and for that, the Mainline method displayed in 2407 is specified as the instance of the App class created as input 0. Then, the execution evaluation method described later is called. As a result, the instance token of the App class passed as the input 0 of the argument of the execution evaluation method as the input 0 that triggers the execution is dropped on the tile 2411 at the center of the upper side of the program graph shown in 2408. The execution of the tiles that the required data arrives and becomes executable continues.

2404は”NEW CLASS”とラベル付けされているプッシュボタンであり、押下すると新規に名前を付けたクラス定義を登録することができる。詳細は後述する。2403は”NEW METHOD”とラベル付けされているプッシュボタンであり、押下すると現在2414で選択表示されているクラス定義に新規に名前を付けた新規のグリッドが作成できるようになる。詳細は後述する。グリッドに対応付けられた名前は、タイル中の「メソッド名」として利用可能であり、新たな名前付きのグリッドを作成することで、そのグリッドが表現するアルゴリズムをサブルーチンメソッドとしてほかのグリッドや再帰的に自身のグリッド中で使用できる。 2404 is a push button labeled "NEW CLASS", which can be pressed to register a newly named class definition. Details will be described later. 2403 is a push button labeled "NEW METHOD" that, when pressed, allows you to create a new grid with a new name for the class definition currently selected and displayed in 2414. Details will be described later. The name associated with the grid can be used as the "method name" in the tile, and by creating a new named grid, the algorithm represented by that grid can be used as a subroutine method in other grids or recursively. Can be used in its own grid.

2414は表示領域兼プルダウンメニューであり、選択候補として、前記クラス定義表に登録されているすべてのクラス識別子が選択候補としてリストされる。ユーザーはこのメニューからクラス名を選択すると、2407にそのクラスが持っているメソッドの中から一つを選択できるようになる。
2407は表示領域兼プルダウンメニューであり、選択候補として2414で表示選択されているクラスが持っているすべてのメソッド識別子が選択候補としてリストされる。ユーザーはこのメニューからメソッド名を選択すると、2408の表示が選択された名前のグリッドの内容に切り替わり編集が可能になる。2407は、表示の切り替えと現在2408に表示されている盤面の名前の表示を兼ねる。
2414 is a display area and pull-down menu, and all the class identifiers registered in the class definition table are listed as selection candidates as selection candidates. The user can select a class name from this menu and the 2407 will be able to select one of the methods that the class has.
2407 is a display area and pull-down menu, and is displayed as selection candidates. All method identifiers of the selected class are listed as selection candidates. When the user selects a method name from this menu, the 2408 display switches to the contents of the grid with the selected name for editing. The 2407 doubles as a display switch and a display of the board name currently displayed on the 2408.

この実施形態では、第一の実施形態と同じく、グリッドは3×3、5×5、7×7など縦横とも奇数個のタイルになっている。 In this embodiment, as in the first embodiment, the grid has an odd number of tiles in both vertical and horizontal directions such as 3 × 3, 5 × 5, and 7 × 7.

2409は、表示されているグリッドの入力データの方向を表示する領域である。グリッドは、一つ以上のデータ入力を受けるが、どの方向をデータ到着の方向とするかを設定することができる。2409はその表示領域である。この例では、T : Top すなわち上からデータが到着した時点でMainlineというメソッドの実行を開始する可能であることを表している。一方各タイルは0個以上の出力があり、どの方向が出力になるのかを2410の領域に表示する。この例では、Mainlineは外に対して出力をしないので、2410の欄は空白になっている。2415は「ALL」か「ANY」の二者択一のプルダウンメニューであり、グリッドの実行開始条件を表示している。すなわち、この値が「ALL」の場合には複数の入力がある場合すべてのデータが到着するまで実行しない、「ANY」の場合にはどこかに一つでもデータが到着すれば直ちに実行開始する種類のグリッドであることが表示されている。 2409 is an area for displaying the direction of the input data of the displayed grid. The grid receives one or more data inputs, but you can set which direction is the direction of data arrival. 2409 is the display area. In this example, T: Top, that is, it is possible to start the execution of the method called Mainline when the data arrives from above. On the other hand, each tile has 0 or more outputs, and which direction is the output is displayed in the area of 2410. In this example, Mainline does not output to the outside, so the 2410 field is blank. 2415 is an alternative pull-down menu of "ALL" or "ANY", and displays the execution start condition of the grid. That is, when this value is "ALL", if there are multiple inputs, it will not be executed until all the data arrives, and if it is "ANY", execution will start immediately if any one data arrives. It is displayed that it is a type of grid.

図25は、各タイルの表示の詳細が2つ例示されている。図25(a)の2501は、2411で図示されたCONSTメソッドタイルを再掲したものである。2502は、矢印でない直線であり、外部からの入力がこの方向から、すなわち上から、入ってくることを表している。2503は入力データに対する識別子である。これは入力が複数あるような命令タイルのうち、入力を区別しないと結果が変わるような命令、例えば引き算や割り算のような命令を想定して付与されるものである。 FIG. 25 illustrates two details of the display of each tile. 2501 in Figure 25 (a) is a reprint of the CONST method tile illustrated in 2411. 2502 is a straight line that is not an arrow, indicating that external input comes in from this direction, that is, from above. 2503 is an identifier for the input data. This is given assuming an instruction tile that has a plurality of inputs and whose result changes unless the inputs are distinguished, for example, an instruction such as subtraction or division.

2504はメソッドの識別子表示である。ここでは既定動作で定数を出力するCONSTメソッドが表示されている。そのほか、プログラムの実行系があらかじめ用意しているメソッド名を設定することはもちろん、すでに登録されている名前付きグリッドの名称を設定することもできる。さらに、後刻定義することを前提として、未定義の任意の識別子を指定することも可能である。2505は2504のメソッドに対するオプションの表示である。既定のCONSTメソッドは、メソッド識別子だけでは、どのような定数を出力するかが決定しないので、定数をオプションとして指定する。オプションを必要としないメソッドもある。 2504 is the method identifier display. Here, the CONST method that outputs a constant by default is displayed. In addition, it is possible to set the name of the already registered named grid as well as the method name prepared in advance by the program execution system. Furthermore, it is also possible to specify an arbitrary undefined identifier on the assumption that it will be defined later. 2505 is a display of options for 2504 methods. Since the default CONST method does not determine what kind of constant is output only by the method identifier, specify the constant as an option. Some methods do not require options.

2506の外向きの矢印は、この方向、この例では下に隣接したタイルに対して、出力があることを表示している。入力と同様に出力にも識別子が付与され2507のように矢印に沿って表示されている。 The outward arrow on the 2506 indicates that there is output in this direction, for the tiles adjacent below in this example. Like the input, the output is given an identifier and is displayed along the arrow like 2507.

図25(b)の2508は既定動作で複数の入力と出力を持つメソッドSWITCH実行指示タイルである。SWITCHメソッドは、既定動作では二つの入力と二つの出力を持つ命令であり、入力1が特別な識別子NILであれば、入力0として入ってきたデータを出力1へ出力し、そうでなければ入力0を出力0に排出する。この既定動作では、データは、出力0か出力1のいずれかに排出され、両方からデータが排出されることはなく、データNILを論理値の偽とみなして出力を切り替える条件分岐に該当するものである。2508では、入力0が上に隣接したタイルから、入力1が左から進入し、出力0として下に、出力1として右に隣接したタイルにて渡される。2510は、この方向、すなわち左からの入力が入力1であることを表示し、2511は、右への出力が出力1であることを表示している。 2508 in Figure 25 (b) is a method SWITCH execution instruction tile that has multiple inputs and outputs by default. The SWITCH method is an instruction that has two inputs and two outputs by default, and if input 1 is a special identifier NIL, the data that came in as input 0 is output to output 1, otherwise it is input. Output 0 to output 0. In this default behavior, the data is ejected to either output 0 or output 1, no data is ejected from both, and it corresponds to a conditional branch that considers the data NIL as a false logical value and switches the output. Is. In the 2508, input 0 enters from the tile adjacent to the top, input 1 enters from the left, is passed down as output 0, and is passed as output 1 in the tile adjacent to the right. 2510 indicates that the input from this direction, i.e. from the left, is input 1, and 2511 indicates that the output to the right is output 1.

2508では、入力0、入力1、 出力0、出力 1をそれぞれ上、左、下、右と設定された表示になっているが、本実施例では、各命令タイルの入力方向と出力方向は自由に選択設定できる。これら入出力の方向が自由に設定できることから、混乱を避けるために入出力に識別子を付与する必要がある。 In 2508, input 0, input 1, output 0, and output 1 are set as top, left, bottom, and right, respectively, but in this embodiment, the input direction and output direction of each command tile are free. Can be selected and set to. Since the directions of these inputs and outputs can be set freely, it is necessary to assign identifiers to the inputs and outputs to avoid confusion.

図26は、図24で表示されていたMainlineグリッドの部分を抽出して変形したものである。END命令タイルの位置が図24と異なっているが、アルゴリズムの表現としては同等である。ここで、2609は、現在の表示対象クラスがAppであること、2607は、現在のメソッドの表示がMainlineであることを表示しており、2608は、このMainlineグリッドが実行を開始できる条件「T」が表示されている。T単独の場合、上からデータが進入すれば、盤面の実行可能になる。この例では、図24の2402のRUNボタンを押すと、この盤面の2601の位置からデータAppのインスタンストークンが進入する。 FIG. 26 shows an extracted and deformed part of the Mainline grid displayed in FIG. 24. The position of the END instruction tile is different from that in Fig. 24, but it is equivalent in terms of algorithm representation. Here, 2609 indicates that the current display target class is App, 2607 indicates that the display of the current method is Mainline, and 2608 indicates that the condition "T" that this Mainline grid can start execution. Is displayed. In the case of T alone, if data enters from above, the board can be executed. In this example, when the RUN button of 2402 in FIG. 24 is pressed, the instance token of the data app enters from the position of 2601 on this board.

投入されたデータAppのインスタンストークンは、タイル2602が入力0として受け取る。タイル2602は、入力0のメソッドCONSTの実行条件検査により、入力0のメソッドCONSTが即座にオプション”HELLO WORLD”付きで実行される。実行の結果2602の出力0として文字列”HELLO WORLD”のトークンが下に隣接するタイル2603に渡される。タイル2603は、上からのデータを入力0として受け取るように設定されており、受け取ったのち、入力0の文字列オブジェクトに対するメソッドPRTの実行条件検査が行われ、タイル2603のメソッドPRTが実行可能と判断され、2602の次に実行される。2603の実行の結果、入力された文字列”HELLO WORLD”のトークンは、図24の表示領域2401に表示され、そののちそのまま出力0として右隣りのタイル2605に渡される。タイル2605は、メソッド識別子2606としてENDが設定されている。タイル2605は左隣のタイル2603から、文字列”HELLO WORLD”を入力0として受け取る。文字列オブジェクトのENDメソッドは入力0にデータが到着した時点で実行可能となるため、タイル2605は2603の次に実行される。このENDの実行の結果、入力された文字列データ”HELLO WORLD”のトークンは参照が放棄される。この結果この系のいずれのタイルも実行可能ではないため、実行機構は処理を終了する。 The instance token of the submitted data app is received by tile 2602 as input 0. For tile 2602, the method CONST with input 0 is immediately executed with the option "HELLO WORLD" by the execution condition check of the method CONST with input 0. As a result of execution, the token of the character string "HELLO WORLD" is passed to the tile 2603 adjacent to the bottom as output 0 of 2602. Tile 2603 is set to receive the data from above as input 0, and after receiving it, the execution condition check of the method PRT is performed on the character string object of input 0, and the method PRT of tile 2603 can be executed. Judged and executed after 2602. As a result of executing 2603, the token of the input character string "HELLO WORLD" is displayed in the display area 2401 in FIG. 24, and then is passed as it is as output 0 to the tile 2605 on the right side. Tile 2605 has END set as the method identifier 2606. Tile 2605 receives the character string "HELLO WORLD" as input 0 from the tile 2603 on the left. The END method of the string object can be executed when the data arrives at input 0, so tile 2605 is executed after 2603. As a result of executing this END, the reference to the token of the input character string data "HELLO WORLD" is abandoned. As a result, none of the tiles in this system can be executed, so the execution mechanism ends the process.

2608の入力の方向記号としては、T、L、R、Bの各文字が使用でき、それぞれ上、左、右、下を表す。この記号の左からの出現順が、入力の識別子を指定することになる。例えば2608の「TL」という入力表示で2610の値が「ALL」である例示の場合は、上からと左からの両方にデータが到着したときに実行可能となることを表し、さらに、Tが入力0、Lが入力1に対応することも表している。もし、同じ入力表示で、2610の値が「ANY」の場合には、どちらかが入力として到着したときに実行可能となり、到着した方向が上からならば入力0, 左からならば入力1に対応付けられる。方向記号が一つだけ単独で指定された場合、その方向からのデータが到着した時点で実行条件チェックボックス2610の値にかかわらず、直ちにグリッドは実行可能となる。 The letters T, L, R, and B can be used as the input direction symbols for the 2608, representing up, left, right, and bottom, respectively. The order of appearance of this symbol from the left specifies the input identifier. For example, in the input display of 2608 "TL" and the value of 2610 is "ALL", it means that it can be executed when the data arrives from both the top and the left, and T is It also indicates that input 0 and L correspond to input 1. If the value of 2610 is "ANY" in the same input display, it can be executed when either of them arrives as input, input 0 if the arrival direction is from the top, input 1 if the arrival direction is from the left. Associated. If only one direction symbol is specified, the grid will be executable immediately when data from that direction arrives, regardless of the value of the execution condition check box 2610.

図27(a)は、このプログラム言語の図1の106の実行エンジンの中の図23の2303である解釈実行部の動作を表すフローチャートである。解釈系は、起動すると、最初に2701にあるようにAppクラスのインスタンスを一つ生成する。次に解釈系はステップ2702にある通り、図27(b)の2704で図示される3x3のグリッドオブジェクトを生成する。全体の実行処理は、2704のグリッドオブジェクトに対して、入力0として2701で作られたAppのインスタンスを引数トークンとして、グリッドオブジェクトのメソッドである後述の実行評価手続きEvalを適用することに還元する。 FIG. 27 (a) is a flowchart showing the operation of the interpretation execution unit, which is 2303 of FIG. 23 in the execution engine of 106 of FIG. 1 of this programming language. When the interpreter starts, it first creates an instance of the App class as shown in 2701. The interpretation system then creates the 3x3 grid object illustrated in 2704 in Figure 27 (b), as in step 2702. The entire execution process is reduced to applying the execution evaluation procedure Eval, which is a method of the grid object, to the grid object of 2704, using the instance of App created in 2701 as input 0 as an argument token.

図28は、グリッドオブジェクトクラスのEval手続きの既定の処理フローチャートである。この手続きで使用される作業用構造体については、図29に示す。図29に図示されている各種作業用構造体は、図23の2304の実行環境保持部に格納される。グリッドクラスの実行評価においては、作業用の領域としてコンテキストという構造体が利用される。コンテキスト構造体は、グリッドオブジェクト自身への参照、実行待ちタイルの待ち合わせキュー2901、途中で出力されたグリッドの出力トークンの待ち合わせ場所2902やそのほかのデータが保持される。 FIG. 28 is a default processing flowchart of the Eval procedure of the grid object class. The working structure used in this procedure is shown in Figure 29. The various working structures shown in FIG. 29 are stored in the execution environment holding unit of 2304 in FIG. 23. In the execution evaluation of the grid class, a structure called context is used as a working area. The context structure holds a reference to the grid object itself, a wait queue 2901 for tiles waiting to be executed, a wait location 2902 for output tokens of the grid output in the middle, and other data.

グリッドのEval手続きは、まずステップ2801でコンテキスト構造体を作成し、グリッドへの参照に自分自身を登録し、待ち合わせキューをクリアするなどの初期化処理を行う。次にステップ2802でEval手続きの引数として渡された入力トークンを所定のタイルに渡す。この時ステップ2803で、渡された到着済みデータ群2903と、データを渡されたタイル2905と、タイルの位置情報2904を保持する待ち合わせ子構造体を作成し、待ち合わせキューに登録する。 The grid's Eval procedure first creates a context structure in step 2801, registers itself as a reference to the grid, and performs initialization such as clearing the wait queue. Next, pass the input token passed as an argument of the Eval procedure in step 2802 to the specified tile. At this time, in step 2803, a waiter structure that holds the passed arrival data group 2903, the passed tile 2905, and the tile position information 2904 is created and registered in the wait queue.

次に、グリッドのEvalは、待ち合わせキューから待ち合わせ子を一つずつ取り出し、この待ち合わせ子が実行可能であるかどうかを検査する。いずれか一つが実行可能であれば、その待ち合わせ子をキューから取り出し、ステップ2805に進む。キューが空、もしくは、どのエントリも実行可能でない場合は、ステップ2808へ進む。待ち合わせ子が実行可能であるかどうかは、待ち合わせ子に到着している入力0トークンのクラス定義に対して、タイルのメソッド名をキーとして検索を実施し、得られたメソッドの定義の実行可能条件情報を参照することで確認することができる。場合によっては、入力トークン0が未到着のケースも考えられるが、その時には、そのほかの到着済みのいずれかの入力トークンの定義に対して、メソッド名の検索を実施することでチェックすることで検査は実現できる。いずれの場合も、メソッドが、該当トークンに対して定義されていない場合や、見つかったメソッド定義の実行条件に書かれている「ALL」または「ANY」の条件値によって実行ができない場合には、取り出した待ち合わせ子は、キューに戻される。本実施例では、到着した入力0のトークンか、入力0が未到着の場合にはいずれかの到着済みトークンを対象に、指定のメソッドが実行可能かどうかを判定する。 The grid's Eval then removes the waiters from the wait queue one at a time and checks if the waiters are executable. If any one is feasible, dequeue the waiter and proceed to step 2805. If the queue is empty or none of the entries are executable, go to step 2808. Whether or not the waiter is executable is determined by performing a search using the tile method name as a key for the class definition of the input 0 token arriving at the waiter, and the executable condition of the obtained method definition. It can be confirmed by referring to the information. In some cases, input token 0 may not have arrived, but in that case, it is checked by checking the definition of any other input token that has arrived by performing a method name search. Can be realized. In either case, if the method is not defined for the corresponding token, or if it cannot be executed due to the condition value of "ALL" or "ANY" described in the execution condition of the found method definition, it cannot be executed. The removed waiter is returned to the queue. In this embodiment, it is determined whether or not the specified method can be executed for the token of input 0 that has arrived or the token that has arrived if input 0 has not arrived.

ステップ2805では、キューから取り出された待ち合わせ子から、入力トークン群とメソッド名を取り出し、ステップ2804での実行可能検査に使用した入力トークンに対して、メソッド名と、入力トークン群を引数として実行評価メソッドEval()を実行する。この結果として0個以上の出力トークンが返り値として渡される。 In step 2805, the input token group and the method name are fetched from the waiter fetched from the queue, and the method name and the input token group are executed and evaluated for the input token used for the executable check in step 2804. Execute the method Eval (). As a result, 0 or more output tokens are passed as the return value.

ステップ2806では、2805の戻り値として得られた処理結果の各トークンを所定の方向の隣接タイルに渡す処理を行う。この時、隣接タイルの待ち合わせ子がすでにキュー内に存在する場合には、その待ち合わせ子の到着済みトークン置き場に追加する。この検索は、図29(b)の待ち合わせ子の情報をもとに行うことができる。もし、キューに隣接タイルの待ち合わせ子がない場合には、新規に待ち合わせ子を作成し、そこの最初の到着トークンとして到着トークン置き場に追加して、作成した待ち合わせ子をキューに追加する。 In step 2806, each token of the processing result obtained as the return value of 2805 is passed to the adjacent tile in a predetermined direction. At this time, if the waiter of the adjacent tile already exists in the queue, it is added to the arrival token storage of the waiter. This search can be performed based on the information of the waiter shown in FIG. 29 (b). If there is no waiter for the adjacent tile in the queue, create a new waiter, add it to the arrival token storage as the first arrival token there, and add the created waiter to the queue.

処理タイルがグリッドの端にあり、隣接するタイルが存在しないケースの処理2807では、その端がグリッドの定義の出力方向位置である場合に限り、コンテキストの出力待ちトークン置き場2902に留置される。それ以外の場所で端から出たトークンは廃棄されるかエラー発生のケースとしてシステムに報告されるかのいずれかの処置がなされることになる。 In process 2807, when the processing tile is at the edge of the grid and there are no adjacent tiles, it is detained in the context's output-waiting token storage 2902 only if that edge is in the output direction position of the grid definition. Tokens that come out of the edge elsewhere will either be discarded or reported to the system as an error case.

ステップ2804で待ち合わせキューから実行可能なエントリが見いだせない場合には、ステップ2808で、この手続きの戻り準備処理が行われる。戻り値は、コンテキストの出力待ちトークン置き場2902に留置されていたトークン群であり、出力番号に対応した位置で戻される。手続きの終了時にコンテキスト構造体は廃棄されるが、このとき待ち合わせキューにエントリが残っている場合には、残留トークンを検知したとシステムに報告する処理があってもよい。 If no executable entry can be found in the wait queue in step 2804, then step 2808 prepares for the return of this procedure. The return value is a group of tokens detained in the output waiting token storage 2902 of the context, and is returned at the position corresponding to the output number. The context structure is discarded at the end of the procedure, but if there are entries left in the wait queue at this time, there may be a process to report to the system that a residual token has been detected.

図30は、図28の2804の実行可能エントリの探索処理フローチャートである。この探索処理では、結果として、実行可能な待ち合わせ子エントリを出力するか、実行可能なエントリがない場合には存在しなかったことを表すNULLを出力する。 FIG. 30 is a flow chart for searching the executable entry of 2804 in FIG. 28. As a result of this search process, an executable waiter entry is output, or if there is no executable entry, NULL indicating that the entry did not exist is output.

3001は、キューが空の場合も含めて未調査のエントリがキューにあるかどうかを検査する。もしキューが空か、すべてのエントリが調査済みであれば、ステップ3009に進み、NULLを出力して終了する。そうでなければ、3002で未調査のエントリを一つ抽出する。 3001 checks if there are unexamined entries in the queue, even if the queue is empty. If the queue is empty or all entries have been examined, go to step 3009, print NULL and exit. Otherwise, 3002 extracts one uninvestigated entry.

取り出したエントリには、図29の2903に到着済みトークンが登録されているので、まず、入力0が到着しているかを確認する。もし到着していれば、以下のメソッドの検索対象は、入力0とする。もし、入力0が未到着の場合には、到着済みトークンのうち入力番号の最も小さい入力を対象とする。この規則では、検索対象として、入力0を最優先候補としている。また、入力0が到着していない場合にも検索対象を選定するのは、指定のメソッドの実行開始条件が「ANY」である場合を考慮したものである。本実施形態では、いずれかの入力トークンに、メソッド識別子というメッセージを送る形式のオブジェクト指向を実現している。このため、いずれかの到着トークンを選定して、それにメソッドの適用を試みる形式で実行条件の抽出を行う。3004あるいは3005は、この対象トークンの選定規則の一部を構成している。 Since the arrived token is registered in 2903 in FIG. 29 in the extracted entry, first check whether the input 0 has arrived. If it has arrived, the search target of the following method is input 0. If input 0 has not arrived, the input with the smallest input number among the arrived tokens is targeted. In this rule, input 0 is the highest priority candidate for the search target. In addition, the search target is selected even when input 0 has not arrived in consideration of the case where the execution start condition of the specified method is "ANY". In this embodiment, object-oriented programming is realized in which a message called a method identifier is sent to any of the input tokens. Therefore, one of the arrival tokens is selected, and the execution condition is extracted in the form of trying to apply the method to it. 3004 or 3005 form part of this target token selection rule.

3004または3005の処理によって選定された対象トークンに対して、指定されているメソッド名2906に対応するメソッド定義が存在するかどうかをステップ3006で判定する。この判定にあたっては、上位クラスへの検索も含まれ、処理詳細を図31に示している。この判定結果として、メソッド定義の検索に失敗した場合は、実行可能ではないと判定し、調査している待ち合わせ子を調査済みに分類し、ステップ3001に戻る。メソッド定義が見つかった場合には、3007で到着済みのトークンの数とメソッド定義が要求している入力の数と一致するか、およびメソッド定義の中の値「ALL」か「ANY」か、などの判定により実行可能かどうかを判定する。もし、実行可能ではないと判定された場合には、調査している待ち合わせ子を調査済みに分類し、ステップ3001に戻る。実行可能と判定されたときには、ステップ3008に進み、この待ち合わせ子を出力とし、処理を終了する。この一連の検索判定処理中の上記904以降の処理規則の中で、入力0が未到着の場合、一つだけでなく。そのほかのすべての到着済みトークンに対して、メッセージの検索と実行条件の検査を行う規則でもよい。本実施形態ではデータフローグラフの作成者と共有されている所定の規則で検索対象のトークンを抽出し、それに対してメソッド定義を検索、実行可能性の判定を行う。 In step 3006, it is determined whether or not the method definition corresponding to the specified method name 2906 exists for the target token selected by the processing of 3004 or 3005. In this determination, the search to the upper class is also included, and the processing details are shown in FIG. As a result of this determination, if the method definition search fails, it is determined that it is not feasible, the waiter being investigated is classified as investigated, and the process returns to step 3001. If the method definition is found, it matches the number of tokens arrived at 3007 with the number of inputs requested by the method definition, and the value "ALL" or "ANY" in the method definition, etc. Judge whether it is feasible or not by the judgment of. If it is determined that it is not feasible, the waiter under investigation is classified as investigated and the process returns to step 3001. When it is determined that the execution is possible, the process proceeds to step 3008, the waiter is output, and the process ends. In the processing rules after 904 during this series of search judgment processing, if input 0 has not arrived, not only one. It may be a rule that searches messages and checks execution conditions for all other arrived tokens. In the present embodiment, the token to be searched is extracted according to a predetermined rule shared with the creator of the data flow graph, the method definition is searched for it, and the feasibility is judged.

図31は、図30のステップ3006の指定メソッド定義の検索処理のフローチャートである。この処理の入力は、メソッド名と検索対象入力トークンであり、出力は検索されたメソッド定義オブジェクトか、見つからなかったことを示すNULLである。本実施例では、クラス定義は、上位スーパークラスのクラス定義トークンへの参照を持つ。スーパークラスのクラス定義も属性辞書を持ち、メソッドの名前と定義の表を持つ。 FIG. 31 is a flowchart of the search process of the designated method definition in step 3006 of FIG. The input of this process is the method name and the search target input token, and the output is either the searched method definition object or NULL indicating that it was not found. In this embodiment, the class definition has a reference to the class definition token of the superclass. The class definition of a superclass also has an attribute dictionary, a table of method names and definitions.

メソッドの検索は、まずステップ3101で、入力トークンのインスタンスメンバーが登録されている属性辞書に対して行われる。クラス定義よりインスタンスメンバーの定義が優先することにより、各インスタンスがメソッドを上書き定義できる。もし、属性辞書中にメソッド名と同名のエントリがあれば、その値を結果としてステップ3106で出力して処理は終了する。また、インスタンス属性辞書に定義がない場合には、ステップ3102でクラス定義を検索する。この検索でもクラス定義の持っている属性辞書を先に検索し、属性上に見つからなければクラス定義の既定のメソッド辞書を検索する。もし、クラス定義中のこれらの辞書中に該当エントリがあれば値をステップ3107で出力して終了する。 The method search is first performed in step 3101 on the attribute dictionary in which the instance members of the input token are registered. Each instance can override the method by giving priority to the instance member definition over the class definition. If there is an entry with the same name as the method name in the attribute dictionary, that value is output as a result in step 3106 and the process ends. If there is no definition in the instance attribute dictionary, the class definition is searched in step 3102. In this search as well, the attribute dictionary of the class definition is searched first, and if it is not found on the attribute, the default method dictionary of the class definition is searched. If there is a corresponding entry in these dictionaries in the class definition, the value is output in step 3107 and the process ends.

クラス定義中にも該当エントリがない場合には、クラス定義のスーパークラスのクラス定義を抽出し、次の検索対象にして、ステップ3101に戻ってループを形成する。もし、ここでスーパークラスの定義なかった時には、最終結論としてメソッドの検索結果としてステップ3105でNULLを出力して終了する。ここで、スーパークラスが複数ある場合には、ステップ3101以降のループを、ステップ3103でスーパークラスの優先度順の自分自身に対する再帰呼び出しに変更することで多重継承を実現することができる。また、ステップ3101以降のループを省略し、3101のNoの先を3105に接続すれば、継承なしのルールを実現できる。 If there is no corresponding entry in the class definition, the class definition of the superclass of the class definition is extracted, the next search target is set, and the process returns to step 3101 to form a loop. If the superclass is not defined here, the final conclusion is that NULL is output as the method search result in step 3105 and the process ends. Here, when there are a plurality of superclasses, multiple inheritance can be realized by changing the loop after step 3101 to a recursive call to itself in the order of priority of the superclass in step 3103. Also, if the loop after step 3101 is omitted and the tip of No. 3101 is connected to 3105, the rule without inheritance can be realized.

図32は、本実施例におけるデータトークンオブジェクトの構造と、クラス定義オブジェクトの構造の図示である。これらのオブジェクトは、図23の2306作業領域に格納される。データトークンオブジェクトは、トークンのタイプを決定するクラス定義オブジェクトへの参照と、インスタンス変数の集まりに該当するインスタンス毎に異なる固有の情報を保持する属性辞書への参照から成る。本発明では、クラス定義も流通データトークンであり、したがってスーパークラスの定義も同様に、属性辞書をもつ。 FIG. 32 is an illustration of the structure of the data token object and the structure of the class definition object in this embodiment. These objects are stored in the 2306 work area of Figure 23. A data token object consists of a reference to a class definition object that determines the type of token and a reference to an attribute dictionary that holds unique information that is different for each instance that corresponds to a collection of instance variables. In the present invention, the class definition is also a distribution data token, and therefore the superclass definition also has an attribute dictionary.

図33は、本実施例におけるクラスの継承階層の例図示である。本実施形態では、クラス階層構造の最上位クラスであり、データフローグラフ内のデータ流通トークンの型である抽象クラスTokenが、メソッドの一つとして、コンテキストへの参照、メソッド名、オプション文字列、入力トークン群を入力パラメータとし、実行結果ステータスと出力トークン群を結果として返す実行評価手続きEvalを持つ。これにより、すべてのトークンは処理系の評価実行対象になりうる。 FIG. 33 is an example diagram of the class inheritance hierarchy in this embodiment. In this embodiment, the abstract class Token, which is the top class of the class hierarchy structure and is the type of the data distribution token in the data flow graph, is one of the methods, which is a reference to the context, a method name, an option character string, and so on. It has an execution evaluation procedure Eval that returns the execution result status and output token group as the result, using the input token group as the input parameter. As a result, all tokens can be evaluated and executed by the processing system.

次に、本実施形態におけるイベント駆動機構の例を説明する。API仲介部図23の2305は、図34の3401のような発生イベントの識別子をキーとして、メソッド名と登録オブジェクトの二つを値とするテーブルを持つ。このテーブル一例を3402に示す。これは、UIが掲示する”ADD”、”SUB”、”MUL”、”DIV”の四つのボタンと値Aと値Bの入力項目のある図35の3501のようなダイアログに対するボタン押下イベントの登録表を表している。それぞれのボタンの押下イベント毎にエントリがあり、例えばADDボタンが押下されたときには、登録オブジェクトに対して、メソッドOnADDを実行するように指示することを表している。この時、OnADDの入力0は実施例の仕様により登録オブジェクト自身となり、入力1には、表示されたダイアログの項目名と値の組が入っている辞書トークン図35の3502が供給されるものとする。この例では、入力1の存在について明示されていないが、これは、実施例のシステムの仕様として暗黙に規定されているものとしてもよく、1301に追加エントリとして情報が明示されていてもよい。3402の例としては、四つのボタンに対する登録オブジェクトはすべて共通のトークン3403を参照しており、3403は、参照されている各エントリのすべてのメソッド名”OnADD”、”OnSUB”、”OnMUL”、”OnDIV”のエントリが属性辞書に入っている。もちろん登録表の各エントリは、対応するメソッド名に対する値が検索結果として抽出できるトークンであれば別々のものでもよい。 Next, an example of the event driving mechanism in this embodiment will be described. API mediator 2305 in Fig. 23 has a table in which the identifier of the occurrence event as shown in 3401 in Fig. 34 is used as a key and the method name and the registered object are used as values. An example of this table is shown in 3402. This is a button press event for a dialog like 3501 in Figure 35 with four buttons "ADD", "SUB", "MUL", "DIV" posted by the UI and input items for values A and B. Represents a registration table. There is an entry for each button press event, for example, when the ADD button is pressed, it indicates that the registered object is instructed to execute the method OnADD. At this time, input 0 of OnADD becomes the registered object itself according to the specifications of the embodiment, and input 1 is supplied with 3502 of the dictionary token Fig. 35 containing the item name and value set of the displayed dialog. do. In this example, the existence of input 1 is not specified, but it may be implicitly specified in the system specifications of the embodiment, or information may be specified as an additional entry in 1301. As an example of 3402, the registration objects for all four buttons refer to the common token 3403, which is the method name "OnADD", "OnSUB", "OnMUL", for each referenced entry. The entry for "OnDIV" is in the attribute dictionary. Of course, each entry in the registration table may be different as long as the value for the corresponding method name is a token that can be extracted as a search result.

ADDボタン押下時のAPI仲介部2305におけるイベント発生時の手続きの呼び出しは、2402の実行ボタン押下時の図27の流れ図と同様であり、コンテキスト構造体を作成し、入力0に登録オブジェクトを入力1にトークン3502を投入してOnADDメソッドをコールするグリッドを作成し、そのグリッドオブジェクトの実行評価手続きEvalを実行することで実現できる。この動作は、図6のフローチャートの601のインスタンス作成を登録オブジェクトの取り出し、 2702のグリッド作成を上記グリッドの作成に置き換え、2703をこの作成したグリッドに実行に置き換えたものと同等である。 Calling the procedure when an event occurs in the API mediator 2305 when the ADD button is pressed is the same as the flow chart in Fig. 27 when the execute button of 2402 is pressed. Create a context structure and enter the registered object in input 0 1 This can be achieved by creating a grid that calls the OnADD method by inserting token 3502 into the grid and executing the execution evaluation procedure Eval for that grid object. This operation is equivalent to replacing the instantiation of 601 in the flowchart of FIG. 6 with the creation of the registered object, the grid creation of 2702 with the above grid creation, and 2703 with the execution with this created grid.

第二の実施形態では、以下で、図34の3402、3403、3404のイベント登録の状態で、3501のダイアログが表示されている状態から、各ボタンが押下されたときに、3503のようなメッセージダイアログを表示するようなアプリケーションを例示する。3504は、ADDボタンが押下されたときのメッセージが例示されており、ADDボタンに対する反応であることを表示する”OnADD”とA+Bの値である”122”が表示されている。このメッセージは、3501の設定値通りのA=45でB=77の時には、SUBボタンの時には、”OnSUB : -32”、MULボタンの時には、”OnMUL : 3465”、DIVボタンの時には、”OnDIV : 0.544”に変わるというアプリケーションであり、各数値は、ダイアログのA、Bの入力値によって各種演算結果に変わるものである In the second embodiment, in the following, in the state of event registration of 3402, 3403, and 3404 in FIG. 34, when the dialog of 3501 is displayed and each button is pressed, a message such as 3503 is displayed. Illustrate an application that displays a dialog. In 3504, the message when the ADD button is pressed is illustrated, and "OnADD" indicating that it is a reaction to the ADD button and "122" which is the value of A + B are displayed. This message is "OnSUB: -32" for the SUB button, "OnMUL: 3465" for the MUL button, and "OnDIV" for the DIV button when A = 45 and B = 77 according to the setting value of 3501. It is an application that changes to: 0.544 ”, and each numerical value changes to various calculation results depending on the input values of A and B in the dialog.

図36の3601は、3403として登録される辞書のサブクラスであるDialogHandlerクラスのクラス定義の中のOnADDメソッドの定義を示している。3602の入力指定”LT”が示すように、入力0の自分自身は左の入り口であるタイルA4の左から入り、入力1のダイアログ情報の辞書トークン3502は上の入り口であるタイルD1の上から入る。タイルD1からの入力は、タイルD1とE1において参照が3つ作られる。一つの参照は、C2のGETIメソッドで、オプションに書かれているキー”A”の値が出力0からタイルD2の入力0に供給され、もう一の参照はタイルE2でキー”B”の値が抽出され、タイルD2の入力1に供給される。タイルD2は、入力0のオブジェクトトークンに対する”A+B”メソッドの実行指示であり、数値オブジェクトのA+Bメソッドは、自分自身に、入力1の数値を加算した結果を出力0に出す。同様に数値オブジェクトの減算、掛け算、割り算のメソッドとして”A-B”, “A*B”, “A/B”が用意されている。 3601 in Figure 36 shows the definition of the OnADD method in the class definition of the DialogHandler class, which is a subclass of the dictionary registered as 3403. As the input specification "LT" of 3602 indicates, input 0 itself enters from the left of tile A4, which is the left entrance, and the dictionary token 3502 of the dialog information of input 1 is from above tile D1, which is the upper entrance. come in. Input from tile D1 makes three references on tiles D1 and E1. One reference is the GETI method of C2, where the value of key "A" written in the option is supplied from output 0 to input 0 of tile D2, and the other reference is the value of key "B" on tile E2. Is extracted and supplied to input 1 of tile D2. Tile D2 is an execution instruction of the "A + B" method for the object token of input 0, and the A + B method of the numerical object outputs the result of adding the numerical value of input 1 to itself to output 0. Similarly, "A-B", "A * B", and "A / B" are provided as methods for subtraction, multiplication, and division of numerical objects.

残りのタイルF1からの参照は、F3とG4に到達する。F3、G4ともにオプションを出力に出す、CONSTメソッドである。CONSTメソッドはクラスTに定義されており、そのサブクラスであるほとんどのオブジェクトが反応できる。結果は、F3は、出力に文字列”OnADD”をG4は出力に文字列” : “を出力する。 References from the remaining tiles F1 reach F3 and G4. Both F3 and G4 are CONST methods that output options. The CONST method is defined in class T and can react to most objects that are subclasses of it. As a result, F3 outputs the character string "OnADD" to the output, and G4 outputs the character string ":" to the output.

タイルE4は、メソッドに”A+B”が指示されているが、入力0は文字列”OnADD”である。例示のシステムでは文字列クラスで独自に”A+B”メソッドが定義されており、入力0である自分自身に、入力1のトークンの文字列化したものを連接する動作が定義されている。E4では、入力1は文字列なのでそのまま連接され”OnADD : “という文字列がタイルD4の入力0に供給される。D4も文字列に対するA+Bであるが入力1がD2の出力である数値であることがE4と異なる。ただし、数値オブジェクトは、例示のシステムでは、その値を10進数の表現文字列に変換することが可能であるので、D4から、”OnAdd : 122”という文字列トークンが生成される。 For tile E4, "A + B" is specified in the method, but input 0 is the character string "OnADD". In the example system, the "A + B" method is uniquely defined in the character string class, and the operation of concatenating the character string of the token of input 1 to itself, which is input 0, is defined. In E4, input 1 is a character string, so it is concatenated as it is, and the character string "OnADD:" is supplied to input 0 of tile D4. D4 is also A + B for the character string, but it differs from E4 in that input 1 is the output of D2. However, since the value of a numeric object can be converted into a decimal representation string in the example system, the string token "OnAdd: 122" is generated from D4.

D4の出力を受け取るタイルD5は、ALRTというメソッドが指示されている。ALRTは、入力0のオブジェクトの文字列表現を3503のようなモーダルなポップアップダイアログに表示し、ユーザーがダイアログを閉じるのを待って、出力に入力0の値を渡すものである。ALRTもクラスTで定義されているので、そのサブクラスであるほとんどのクラスのオブジェクトが実行可能と設定されている。 Tile D5, which receives the output of D4, is instructed by a method called ALRT. ALRT displays a string representation of an object with input 0 in a modal popup dialog like 3503, waits for the user to close the dialog, and passes the value of input 0 to the output. Since ALRT is also defined in class T, objects of most of its subclasses are set to be executable.

ポップアップダイアログが閉じるとD6のENDが実行されるが、前述の通り、ENDは入力を放棄するだけであり、D1からの一連のデータフローは、ここで終了する。また、ここまでで、予定の動作は完了しているため、3601の左から入ってきた入力0は使用せずに放棄してもよく、この関係で、タイルA4で入力0を即座に放棄している。この2つのENDの結果、グリッド3601内には、実行可能なタイルがなくなり、イベントハンドラOnADDは終了し、API仲介部2305が発行したグリッドに対するEvalも終了して
イベント反応処理そのものが完了する。
When the popup dialog is closed, D6's END is executed, but as mentioned above, END only discards the input, and the series of data flow from D1 ends here. Also, since the scheduled operation has been completed so far, input 0 that came in from the left of 3601 may be abandoned without using it, and in this connection, input 0 is immediately abandoned on tile A4. ing. As a result of these two ENDs, there are no executable tiles in the grid 3601, the event handler OnADD ends, the Eval for the grid issued by the API mediator 2305 also ends, and the event reaction process itself is completed.

以上のようなグリッドをOnSUB、OnMULL、OnDIVとして個別に登録すればアプリケーションは完成するが、それぞれは、3601の中のタイルD2である3603のメソッド名と、タイルF3である3604のオプションの値が違うだけであり、別個に手入力でプログラミングするのとは別法で、OnADDのグリッド定義を元に、その定義をコピーして、上記の違いの部分のみ書き換えて登録することも考えられる。この例示の以降では、この別法の書き換え定義登録のプログラムを例示する。 If you register the above grids individually as OnSUB, OnMULL, and OnDIV, the application will be completed, but each has the method name of 3603, which is tile D2 in 3601, and the option value of 3604, which is tile F3. Only the difference is different, and it is possible to copy the definition based on the grid definition of OnADD and rewrite only the above difference part and register it, which is different from programming manually separately. In the following examples of this example, the program for rewriting definition registration of this alternative method will be illustrated.

図37は、その書き換えを主導するメソッドDialogHandlerクラスのInitメソッドの定義である。このメソッドは、DialogHnadlerを表3401に登録する前に登録メソッドから呼び出される。そのタイミングは、DialogHandlerクラスのコンストラクタからでもよい。Initは、入力0に自分自身を受け取り、OnSUB, OnMUL, OnDIVのメソッドを定義して、これらが追加された自分自身のインスタンスを出力0から出す。このメソッドは5x5のグリッドで表現されているため、列はEまで、行は5までになっている。 Figure 37 shows the definition of the Init method of the DialogHandler class, which is the method that leads the rewriting. This method is called from the registration method before registering DialogHnadler in Table 3401. The timing may be from the constructor of the DialogHandler class. Init takes itself on input 0, defines OnSUB, OnMUL, and OnDIV methods, and outputs an instance of itself with these added from output 0. This method is represented by a 5x5 grid, so columns are up to E and rows are up to 5.

メソッド Initでは、図38で示すようなDialogHandlerに定義されるメソッドAddOnが呼び出される。AddOnは、入力0にDialogHandler、入力1にタイルD2を置き換えるメソッド文字列、入力2にF3のオプション文字列とメソッド名のもとになる”OnXXX”のXXXの部分の文字列を取り、対応する”On〜”メソッドを登録した状態のDialonHandlerオブジェクトを出力する。Initグリッド中では、タイルC2でOnSUBをC3でOnMULをC4でOnDIVを登録しており、各タイルの入力はとなっているB列のCONSTでは、”SUB”、”MUL”、”DIV”が、置き換え演算メソッドを供給するD列では、それぞれ”A-B”、”A*B”、”A/B”が供給されている。このアプリケーションの拡張例として、1401のボタンが増えて、剰余のボタンMOD(対応演算”A%B”)や、最大公約数ボタンGCDが追加されてもInitを拡張すればよいことになる。本実施例には、最大公約数を計算する直接のメソッドを持っているクラスはないが、数値クラスにメソッドGCDをユーザー定義し、その値としてユークリッドの互除法を計算するタイルを当てればよい。D列ろで供給する命令は、システム定義のメソッドである必要はない。 The method Init calls the method AddOn defined in DialogHandler as shown in Figure 38. AddOn takes the DialogHandler for input 0, the method string that replaces tile D2 for input 1, the option string of F3 for input 2, and the string of the XXX part of "OnXXX" that is the basis of the method name, and corresponds to it. Output the DialonHandler object with the "On ~" method registered. In the Init grid, OnSUB is registered with tile C2, OnMUL is registered with C3, and OnDIV is registered with C4, and in the CONST of column B where the input of each tile is, "SUB", "MUL", "DIV" are , "AB", "A * B", and "A / B" are supplied in the D column that supplies the replacement operation method, respectively. As an extension example of this application, even if 1401 buttons are added and the surplus button MOD (corresponding operation "A% B") and the greatest common divisor button GCD are added, Init can be extended. In this example, there is no class that has a direct method to calculate the greatest common divisor, but the method GCD may be user-defined for the numeric class, and a tile for calculating the Euclidean algorithm may be applied as the value. The instructions supplied in column D do not have to be system-defined methods.

図38は、OnADDグリッドをコピーして編集し、DialogHandlerに追加するメソッドAddOnである。この定義では、入力方向が”LTR”になっており、入力位置は左A4から、入力1のメソッド名は上D1から、入力2の演算命令メソッド文字列は右のG4から入ってくる。入力0はそのオブジェクトから、A3のGETIメソッドによりOnADDに対応するグリッドが取り出されたあと、この辞書クラスのサブクラスであるグリッドオブジェクトの「浅いコピー」を作成するDUPメソッドがタイルA2で実行される。入力1の文字列は、E1-F2の領域のタイル群で、”On~”の文字列が作られ、C2とD4とE5のJCTを介してD6に供給される。また、入力2の演算メソッド文字列は、E5のJCTを介してD5に供給される。 Figure 38 shows a method AddOn that copies and edits the OnADD grid and adds it to the DialogHandler. In this definition, the input direction is "LTR", the input position is from A4 on the left, the method name of input 1 is from D1 above, and the operation instruction method string of input 2 is from G4 on the right. For input 0, after the grid corresponding to OnADD is fetched from the object by the GETI method of A3, the DUP method that creates a "shallow copy" of the grid object, which is a subclass of this dictionary class, is executed on tile A2. The character string of input 1 is a group of tiles in the area of E1-F2, and the character string of "On ~" is created and supplied to D6 via JCT of C2, D4 and E5. In addition, the arithmetic method character string of input 2 is supplied to D5 via JCT of E5.

メソッドJCTは、2入力/2出力のクラスTに図41のように定義されているメソッドで、入力0を出力0に、入力1を出力1にそれぞれ渡すものである。このメソッドは、図17のタイルE5のように入出力0と1を設定すると、グリッド上にデータフローの交差を作ることができる。このE5のJCTタイルにより、入力0の”On~”の文字列は、入力1のパスをまたいで、E4からE6に、G4からの演算メソッド名の文字列は、パスをまたいでF5からD5にそれぞれ到達する。 The method JCT is a method defined in class T with 2 inputs and 2 outputs as shown in Fig. 41, and passes input 0 to output 0 and input 1 to output 1, respectively. This method can create data flow intersections on the grid by setting inputs and outputs 0 and 1 as in tile E5 in Figure 17. Due to this JCT tile of E5, the character string of "On ~" of input 0 straddles the path of input 1 from E4 to E6, and the character string of the operation method name from G4 straddles the path from F5 to D5. Reach each.

図38のタイルD4のRepLBLは、グリッドクラスに図39のように定義登録されているメソッドであり、自身のグリッドのタイルF3のオプションを入力1から入ってくる”On~”の文字列に置き換えて、その結果のグリッドを出力1から出すものである。同様に、タイルD5のRepOPも、グリッドクラスに図40のように定義登録されているメソッドで、入力0のグリッドのD2のメソッド命令を入力1の文字列に置き換えるものである。この2つメソッドがD4,D5で連続適用されることでD6の入力2には、置き換えが完成したグリッドが入ってくる。 RepLBL of tile D4 in Fig. 38 is a method defined and registered in the grid class as shown in Fig. 39, and replaces the option of tile F3 of its own grid with the character string "On ~" that comes in from input 1. The resulting grid is output from output 1. Similarly, RepOP of tile D5 is also a method defined and registered in the grid class as shown in Fig. 40, and replaces the method instruction of D2 of the grid of input 0 with the character string of input 1. By applying these two methods continuously on D4 and D5, the input 2 of D6 will contain the grid for which the replacement has been completed.

図38のタイルD6のPUTは辞書クラスにシステム定義されているもので、PUTIと同じように、入力0の辞書に値を書き込み、書き込まれた辞書を出力0に出す動作を行うが、PUTIと異なり、キーが外部から入力1として渡され、書き込む値が入力2から供給されるものである。この結果、D6では、DialogHandlerのインスタンスに、”On~”をキーとして書き換え編集済みのグリッドを書き込んで出力をD7に渡しており、D7から、このAddOnメソッドの最終結果として出力される。 The PUT of tile D6 in Fig. 38 is system-defined in the dictionary class, and like PUTI, it writes a value to the dictionary with input 0 and outputs the written dictionary to output 0, but with PUTI Unlike, the key is passed as input 1 from the outside, and the value to be written is supplied from input 2. As a result, in D6, the rewritten and edited grid is written to the instance of DialogHandler using "On ~" as a key, and the output is passed to D7, and the output is output from D7 as the final result of this AddOn method.

図39は、グリッドクラスに定義されているRepLBLメソッドの定義である。このメソッドの入力方向は”LT”となっており、入力0のグリッドが左のA4から、入力1である文字列”On~”の材料となる”SUB”のような文字列は上のD1からこのメソッドに入力される。まず、A4から入ったグリッドからは、A3のGETで、位置F3のタイルが取り出され、A2で複製される。このRepLBLは、複製したタイルオブジェクトのオプションの文字列を入力1で置き換え、入力0から入ってきたオリジナルのグリッドのF3に書き戻そうというものである。このタイルオプションの設定値が入っているキーOPTIONの値をD2のPUTで書き換え、そのタイルをC5のPUTで、F3に上書き書き戻して、D7からRepLBLの結果として出力している。この図39のRepLBLの定義では、A3のGETをGETIに、D2とC5のPUTをPUTIに変更することも可能で、それにより、グラフを簡略にすることも可能である。 Figure 39 shows the definition of the RepLBL method defined in the grid class. The input direction of this method is "LT", and the grid of input 0 is from A4 on the left, and the character string such as "SUB" which is the material of the character string "On ~" which is input 1 is D1 above. Is entered into this method. First, from the grid entered from A4, the tile at position F3 is taken out by GET of A3 and duplicated at A2. This RepLBL attempts to replace the optional string of the duplicated tile object with input 1 and write it back to F3 of the original grid that came in from input 0. The value of the key OPTION containing the setting value of this tile option is rewritten with PUT of D2, the tile is overwritten to F3 with PUT of C5, and output as the result of RepLBL from D7. In the definition of RepLBL in Fig. 39, it is possible to change the GET of A3 to GETI and the PUT of D2 and C5 to PUTI, thereby simplifying the graph.

図39のタイルD2では、A2で複製したグリッドの属性のうち、キーOPTIONに登録されているオプションの内容を、タイルD1経由でRepLBLの入力1として渡された値に書き換えるPUTメソッドが実行される。 In tile D2 in Fig. 39, among the attributes of the grid duplicated in A2, the PUT method that rewrites the contents of the option registered in the key OPTION to the value passed as input 1 of RepLBL via tile D1 is executed. ..

図40は、グリッドクラスに定義されているRepOPメソッドの定義である。動作は、RepLBLと類似しており、左A3から進入しているグリッドから、位置D2のタイルを抽出し、コピーを作ったうえで、タイルの属性辞書中のOPNAMEエントリに書かれているメソッド名の値を入力1の文字列で置き換え、書き換えたタイルを元のグリッドのD2に上書き書き戻すものである。D2タイルの取り出しをタイルA2で、タイルのコピーをA1で、タイルのメソッド名の書き換えをC1で、グリッドへの上書き書き戻しをタイルC3のPUTIで行っている。前述のPUTIとGETIの採用による定義の簡略化については、こちらでは行われており、その結果として定義のサイズが5x5とコンパクトになっている。 Figure 40 shows the definition of the RepOP method defined in the grid class. The operation is similar to RepLBL, the tile at position D2 is extracted from the grid entering from the left A3, a copy is made, and the method name written in the OPNAME entry in the attribute dictionary of the tile. The value of is replaced with the character string of input 1, and the rewritten tile is overwritten and written back to D2 of the original grid. D2 Tile is taken out by tile A2, tile copy is done by A1, tile method name is rewritten by C1, and overwrite write back to the grid is done by PUTI of tile C3. The simplification of the definition by adopting PUTI and GETI mentioned above is done here, and as a result, the size of the definition is as compact as 5x5.

以上のようなイベント駆動の仕様を取り入れた図式表現のプログラミング言語を提供することにより、機器制御や操作介入してくる人間や外部システムに対する応答処理を直截的に記述することができる。また、オブジェクト指向の言語仕様と、ほとんどのシステム要素を流通データトークンとして取り扱う仕様の導入により、図形式で上記のような制限された編集環境のプログラミングにおいても、プログラムによるプログラムの修正や新規作成のような記述能力の向上が実現される。 By providing a programming language for graphical representation that incorporates the above event-driven specifications, it is possible to directly describe response processing to humans and external systems that intervene in device control and operation. In addition, by introducing an object-oriented language specification and a specification that handles most system elements as distribution data tokens, even in programming of the above-mentioned restricted editing environment in a diagram format, the program can be modified or newly created by the program. Such an improvement in writing ability is realized.

本発明は、タッチパネルのみでのプログラミングを可能にする。これにより、タッチパネルにする物理機構的変更で、表示装置を搭載しているあらゆる機器を元々の外形をほとんど変えずにプログラマブルにすることができる。特に、通常キーボードを持たない、スマートフォンやタブレット端末あるいはスマートスピーカーでのプログラミング手段として利用することができる。これにより、これらの機器にインストールされている複数のアプリケーションを制御し、組み合わせることで新たなアプリケーションの作成を容易にすることができる。さらに、入力装置が前記位置指定と二種類の指示機能のみを有すればよいので、手に障害がある人が容易にプログラミングできるような環境としても使用することができる。 The present invention enables programming with only a touch panel. As a result, by changing the physical mechanism of the touch panel, any device equipped with a display device can be made programmable with almost no change in the original outer shape. In particular, it can be used as a programming means for smartphones, tablets, or smart speakers that normally do not have a keyboard. This makes it possible to easily create new applications by controlling and combining a plurality of applications installed on these devices. Further, since the input device only needs to have the above-mentioned position designation and two types of instruction functions, it can be used as an environment in which a person with a handicap can easily program.

また、プログラミングそのものにパズル的な要素がもともと含まれていることから、スマートフォンやタブレット端末上でのパズルゲームとしての応用も考えられる。 In addition, since programming itself originally contains puzzle-like elements, it can be applied as a puzzle game on smartphones and tablet terminals.

さらに、キーボードが既定の環境で存在しないようなデバイス上でもオブジェクト指向的プログラミングの実践および学習を可能ならしめる効果も期待できる。
In addition, it can be expected to have the effect of enabling the practice and learning of object-oriented programming even on devices where the keyboard does not exist in the default environment.

101 機器全体
102 制御される機器
103 起動停止スイッチ
104 タイマー
105 機器制御インターフェース部
106 ブログラム実行エンジン
107 タッチパネル
201 出力表示領域
202 プログラム実行開始ボタン
203 新規名前付き盤面の作成ボタン
204 名前付き盤面の削除ボタン
205 盤面編集操作ボタン
206 タイル定義外部保存読み込みボタン
207 表示対象盤面選択メニュー件表示領域
208 名前付き盤面表示領域
209 入力条件表示領域
210 出力方向表示領域
211 CONSTタイル
212 PRTタイル
213 ENDタイル
301 CONSTタイル
302 入力0の表示線
303 入力0の識別表示
304 タイルの命令表示
305 タイルのオプション表示
306 出力0の表示線
307 出力0の識別表示
308 SWITCHタイル
309 タイルの命令表示
310 入力1の識別表示
311 出力1の識別表示
401 名前付き盤面MainLineの全体表示
402 CONSTタイル
403 PRTタイル
404 タイルの命令表示
405 ENDタイル
406 タイルの命令表示
407 名前付き盤面の名称表示
408 名前付き盤面の入力条件表示
601 名前付き盤面の名称表示兼選択プルダウンメニュー
602 名前付き盤面の入力条件表示
603 INPUTタイル
604 階乗計算タイルn!
701 名前付き盤面n!の名称表示
702 n!の出力方向表示
703 n!の入力条件表示
704 COPY3タイル
705 PASSタイル
706 CONSTタイル
707 SWITCHタイル
708 GTタイル
709 COPY2タイル
710 n-1タイル
711 n!の再帰呼び出しタイル
712 A*Bタイル
713 PASSタイル
714 MRG2タイル
715 CONSTタイル
801 INPUTタイル命令の名称
802 右方向からの入力0
803 左方向への出力0
804 右方向からの入力0
805 n!タイルの再帰呼び出し
1101 新規名前付き盤面の初期設定ダイアログ
1102 新規名前付き盤面の名称入力項目
1103 新規名前付き盤面のサイズ選択メニュー
1104 新規名前付き盤面の入力条件設定入力項目
1105 新規名前付き盤面の出力方向設定入力項目
1201 選択タイル拡大表示編集ダイアログ
1202 選択されたタイルの拡大表示
1301 タイル命令設定ダイアログ
1302 命令選択メニュー
1303 命令オプション設定入力項目
1401 タイル命令選択メニュー展開表示
1402 タイルをリセットする選択項目
1501 タイル全体の領域
1502 中央付近のゾーン1
2001 プログラム実行エンジン
2002 UI操作処理部
2003 解釈実行部
2004 実行環境保持部
2005 定義済みタイル保持部
2006 作業領域
2201 入出力未設定初期状態
2202 入力0設定後の状態
2203 入力1設定後の状態
2204 出力0設定後の状態
2205 入力1設定キャンセル後の状態
2206 入力1再設定後の状態
2207 出力1設定後の状態
2301 プログラム実行エンジン
2302 タッチパネル107との連携
2303 解釈実行部
2304 実行環境処理部
2306 作業領域
2307 機器インターフェース部105との連携
2401 出力表示領域
2402 プログラム実行開始ボタン
2403 新規メソッドの作成ボタン
2404 新規クラスの作成ボタン
2405 列インデックス表示行
2406 行インデックス表示列
2407 表示対象メソッド選択メニュー兼表示領域
2408 グリッドオブジェクト表示領域
2409 入力方向表示領域
2410 出力方向表示領域
2411 CONSTタイル
2412 PRTタイル
2413 ENDタイル
2414 表示対象クラス選択メニュー兼表示領域
2415 実行開始条件選択メニュー兼表示領域
2501 CONSTタイル
2502 入力0の表示線
2503 入力0の識別表示
2504 タイルの命令表示
2505 タイルのオプション表示
2506 出力0の表示線
2507 出力0の識別表示
2508 SWITCHタイル
2509 タイルの命令表示
2510 入力1の識別表示
2511 出力1の識別表示
2601 AppクラスのMainLineメソッド例の全体表示
2602 CONSTタイル
2603 PRTタイル
2604 タイルの命令表示
2605 ENDタイル
2606 タイルの命令表示
2607 メソッドの名称表示
2608 メソッドの入力方向表示
2609 クラスの名称表示
2610 実行開始条件の表示
2704 実行開始初期投入グリッド
2901 実行待ち待ち合わせ子の待ち合わせキューエントリ
2902 出力待ちトークン一時置き場エントリ
2903 到着済みトークン一時待機エントリ
3501 実施例アプリケーションの入力ダイアログ
3502 3501のボタン押下時のイベントハンドラに渡されるデータトークン
3603 イベントハンドラが表示するポップアップメッセージダイアログ
3504 ポップアップメッセージ
3505 ADD(加算指示)ボタン
3601 3505ボタン押下時のイベントハンドラ例のグリッド表示
3602 グリッド3601の入力方向表示
3603 編集対象となる演算処理タイル
3604 編集対象となるメッセージ生成タイル
101 Whole device
102 Controlled equipment
103 Start / stop switch
104 timer
105 Equipment control interface
106 Program Execution Engine
107 touch panel
201 Output display area
202 Program execution start button
203 Create new named board button
204 Named board delete button
205 Board edit operation button
206 Tile definition External save load button
207 Display target board selection menu display area
208 Named board display area
209 Input condition display area
210 Output direction display area
211 CONST tile
212 PRT tiles
213 END tile
301 CONST tile
302 Input 0 display line
303 Identification display of input 0
304 Tile instruction display
305 Tile option display
306 Output 0 display line
307 Identification display of output 0
308 SWITCH tile
309 Tile command display
310 Identification of input 1
311 Output 1 identification display
401 Named board MainLine full view
402 CONST tile
403 PRT tile
404 tile instruction display
405 END tile
406 Tile command display
407 Name display of named board
408 Named board input condition display
601 Name display and selection pull-down menu of the named board
602 Named board input condition display
603 INPUT tile
604 Factorial calculation tile n!
701 Name display of named board n!
702 n! Output direction display
703 n! Input condition display
704 COPY3 tile
705 PASS tile
706 CONST tile
707 SWITCH tile
708 GT tile
709 COPY2 tile
710 n-1 tile
711 n! Recursive call tile
712 A * B tile
713 PASS tile
714 MRG2 tile
715 CONST tile
801 INPUT tile instruction name
802 Input from the right 0
803 Left output 0
804 Input from the right 0
805 n! Recursive call to tile
1101 Initial setting dialog for newly named board
1102 Newly named board name input item
1103 Newly named board size selection menu
1104 Newly named board input condition setting input item
1105 Newly named board output direction setting input item
1201 Select tile enlarged display edit dialog
1202 Enlarged view of selected tiles
1301 Tile instruction setting dialog
1302 Instruction selection menu
1303 Command option setting input item
1401 Tile command selection menu expansion display
1402 Choices to reset tiles
1501 Area of the entire tile
1502 Zone 1 near the center
2001 Program Execution Engine
2002 UI operation processing department
2003 Interpretation Execution Department
2004 Execution environment maintenance unit
2005 Predefined tile holder
2006 work area
2201 I / O not set Initial state
2202 State after input 0 setting
2203 State after input 1 setting
2204 State after setting output 0
2205 Input 1 State after canceling settings
2206 Input 1 State after resetting
2207 State after setting output 1
2301 Program execution engine
2302 Cooperation with touch panel 107
2303 Interpretation Execution Department
2304 Execution environment processing unit
2306 work area
2307 Cooperation with device interface section 105
2401 Output display area
2402 Program execution start button
2403 Create new method button
2404 Create new class button
2405 Column index display row
2406 Row Index Display Column
2407 Display target method selection menu and display area
2408 Grid object display area
2409 Input direction display area
2410 Output direction display area
2411 CONST tile
2412 PRT tile
2413 END tile
2414 Display target class selection menu and display area
2415 Execution start condition selection menu and display area
2501 CONST tile
2502 Input 0 display line
2503 Identification display of input 0
2504 Tile command display
2505 Tile option display
2506 Output 0 display line
2507 Identification display of output 0
2508 SWITCH tile
2509 Tile instruction display
2510 Identification of input 1
2511 Output 1 identification display
2601 Full view of MainLine method example of App class
2602 CONST tile
2603 PRT tile
2604 Tile command display
2605 END tile
2606 Tile command display
2607 Method name display
2608 Method input direction display
2609 Class name display
2610 Display of execution start condition
2704 Start of execution Initial input grid
2901 Wait queue entry for execution waiter
2902 Waiting for output token temporary storage entry
2903 Arrived token temporary wait entry
3501 Example Application Input Dialog
3502 The data token passed to the event handler when the 3501 button is pressed
3603 Pop-up message dialog displayed by the event handler
3504 pop-up message
3505 ADD (addition instruction) button
3601 3505 Grid display of event handler example when button is pressed
3602 Grid 3601 input direction display
3603 Arithmetic tile to be edited
3604 Message generation tile to be edited

Claims (11)

データフローグラフの表現形式として、一つの実行命令識別子、入力データの数と方向、出力データの方向の表現を含むタイル形式と、隣接するタイル間でのデータの交換を示す形式を採用し、利用者が前記形式の配置の図表現を直接作成編集し、前記編集された配置の図表現を内部表現形式で格納したのちに前記内部表現形式を実行する手段を具備するデータ処理装置。 As the representation format of the data flow graph, a tile format including one execution instruction identifier, the number and direction of input data, and the direction of output data, and a format showing data exchange between adjacent tiles are adopted and used. A data processing apparatus comprising a means for a person to directly create and edit a diagram representation of an arrangement of the above format, store the illustrated representation of the edited arrangement in the internal representation format, and then execute the internal representation format. 前記データフローグラフには識別子が付けられ、当該データフローグラフを命令定義とし、つけられた識別子を実行命令の一つとして前記タイル形式表現中の命令識別子として使用できることを特徴とする請求項1のデータ処理装置。 The data flow graph is assigned an identifier, and the data flow graph is used as an instruction definition, and the assigned identifier can be used as an instruction identifier in the tile format representation as one of execution instructions. Data processing device. データフローグラフによる前記実行命令定義には、複数の入出力端子に順序を持つ識別子を付与することが可能であり、定義時の入出力の方向と使用時の入出力の方向が異なっている場合、端子の識別子を合致させることを特徴とした請求項1または請求項2のデータ処理装置。 When the execution instruction definition by the data flow graph can be given an identifier having an order to a plurality of input / output terminals, and the input / output direction at the time of definition and the input / output direction at the time of use are different. , The data processing apparatus according to claim 1 or 2, characterized in that the terminal identifiers are matched. 前記データフローグラフ内を流通するデータトークンオブジェクトは、メソッドの定義を持つクラス定義とインスタンス固有情報群を持ち、すくなくとも既定のクラスとして、識別子、数値、文字列、論理値、二進木リスト、配列、辞書、データフローグラフ、タイル形式表現データ、組み込み操作オブジェクト、クラス定義、クラス定義の登録表、大域変数の登録表、実行時パラメータリストなど、処理系を構成する要素、および処理系が実行時に必要とする情報を、継承階層構造をもって含み、前記データフローグラフ内を流通しうることを特徴とした請求項1ないし請求項3のいずれか一項のデータ処理装置。 The data token object circulating in the data flow graph has a class definition having a method definition and an instance-specific information group, and at least as a default class, an identifier, a numerical value, a character string, a logical value, a binary tree list, and an array. , Dictionaries, data flow graphs, tile format representation data, built-in operation objects, class definitions, class definition registration tables, global variable registration tables, run-time parameter lists, and other elements that make up the processing system, and when the processing system is running The data processing apparatus according to any one of claims 1 to 3, which contains necessary information in an inheritance hierarchical structure and can be distributed in the data flow graph. 前記流通するすべての前記データトークンオブジェクトは、前記タイル形式表現が具備する実行命令識別子と入力トークン群をパラメータにとり、処理結果である出力トークン群を結果として出力する実行評価手続きをメソッドとして具備し、タイル形式表現内では、到着したトークンのうちから、所定の規則によって抽出された一つのトークンに対して、前記実行命令識別子に対応するメソッドを検索し、実行可能性を検査し、実行することを特徴とする請求項1ないし請求項4のいずれか一項のデータ処理装置。 All the distributed data token objects are provided with an execution evaluation procedure as a method, which takes an execution instruction identifier and an input token group included in the tile format representation as parameters and outputs an output token group which is a processing result as a result. In the tile format representation, for one token extracted by a predetermined rule from the arrived tokens, the method corresponding to the execution instruction identifier is searched, the feasibility is checked, and the method is executed. The data processing device according to any one of claims 1 to 4, which is characterized. 制御対象機器の状態変化に応じて発生するイベントをキーとし、各イベントに対応してあらかじめ登録されているデータトークンを値とするテーブルを具備し、発生イベントに対し、対応するトークンに対応して定義されている所定の定義内容に対して、発生イベントに伴うパラメータ群を入力データトークン群として、実行評価メソッドを呼び出す手段を具備することを特徴とする請求項1ないし請求項5のいずれか一項のデータ処理装置。 A table is provided in which an event that occurs in response to a change in the state of the controlled device is used as a key, and a data token that is registered in advance corresponding to each event is used as a value. Any one of claims 1 to 5, wherein a means for calling an execution evaluation method is provided with a parameter group associated with an event occurring as an input data token group for a predetermined defined content. Item data processing device. 図表現中の各タイルを複数の区画に分割し、各分割された区画に対するユーザー操作に対して、それぞれ異なった編集動作を実行する請求項1ないし請求項6のいずれか一項のデータ処理装置。 The data processing device according to any one of claims 1 to 6, which divides each tile in the diagram into a plurality of sections and executes different editing operations for user operations on each divided section. .. 所定の制御対象装置の各機能に対する制御指示を上記実行命令として設定可能である請求項1ないし請求項7のいずれか一項の機器制御装置。 The device control device according to any one of claims 1 to 7, wherein control instructions for each function of a predetermined controlled device can be set as the execution command. データフローグラフの表現形式として、一つの実行命令識別子、入力データの数と方向、出力データの方向の表現を含むタイル形式と、隣接するタイル間でのデータの交換を示す形式を採用するデータ処理方法であって、利用者から前記形式の配置の図表現の編集を受け付け、前記編集された配置の図表現を内部表現形式で格納したのちに前記内部表現形式を実行するデータ処理方法。 Data processing that employs a tile format that includes a representation of one execution instruction identifier, the number and direction of input data, and the direction of output data, and a format that indicates the exchange of data between adjacent tiles as the representation format of the data flow graph. A data processing method in which a user accepts editing of a diagram representation of an arrangement of the above format, stores the illustrated representation of the edited layout in an internal representation format, and then executes the internal representation format. 前記データフローグラフ内を流通するデータトークンオブジェクトは、メソッドの定義を持つクラス定義とインスタンス固有情報群を持ち、すくなくとも既定のクラスとして、識別子、数値、文字列、論理値、二進木リスト、配列、辞書、データフローグラフ、タイル形式表現データ、組み込み操作オブジェクト、クラス定義、クラス定義の登録表、大域変数の登録表、実行時パラメータリストなど、処理系を構成する要素、および処理系が実行時に必要とする情報を、継承階層構造をもって含み、前記データフローグラフ内を流通しうることを特徴とした請求項1ないし請求項9のいずれか一項のデータ処理方法。 The data token object circulating in the data flow graph has a class definition having a method definition and an instance-specific information group, and at least as a default class, an identifier, a numerical value, a character string, a logical value, a binary tree list, and an array. , Dictionaries, data flow graphs, tile format representation data, built-in operation objects, class definitions, class definition registration tables, global variable registration tables, run-time parameter lists, and other elements that make up the processing system, and when the processing system is running The data processing method according to any one of claims 1 to 9, wherein necessary information is included in an inheritance hierarchical structure and can be distributed in the data flow graph. 前記流通するすべての前記データトークンオブジェクトは、前記タイル形式表現が具備する実行命令識別子と入力トークン群をパラメータにとり、処理結果である出力トークン群を結果として出力する実行評価手続きをメソッドとして具備し、タイル形式表現内では、到着したトークンのうちから、所定の規則によって抽出された一つのトークンに対して、前記実行命令識別子に対応するメソッドを検索し、実行可能性を検査し、実行することを特徴とする請求項1ないし請求項10のいずれか一項のデータ処理装置。
All the distributed data token objects are provided with an execution evaluation procedure as a method, which takes an execution instruction identifier and an input token group included in the tile format representation as parameters and outputs an output token group which is a processing result as a result. In the tile format representation, for one token extracted by a predetermined rule from the arrived tokens, the method corresponding to the execution instruction identifier is searched, the feasibility is checked, and the method is executed. The data processing device according to any one of claims 1 to 10, which is characterized.
JP2020041450A 2020-03-11 2020-03-11 Data processing device and data processing method Active JP7338096B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2020041450A JP7338096B2 (en) 2020-03-11 2020-03-11 Data processing device and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020041450A JP7338096B2 (en) 2020-03-11 2020-03-11 Data processing device and data processing method

Publications (2)

Publication Number Publication Date
JP2021144369A true JP2021144369A (en) 2021-09-24
JP7338096B2 JP7338096B2 (en) 2023-09-05

Family

ID=77766663

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020041450A Active JP7338096B2 (en) 2020-03-11 2020-03-11 Data processing device and data processing method

Country Status (1)

Country Link
JP (1) JP7338096B2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185489A (en) * 1997-09-09 1999-03-30 Casio Comput Co Ltd Programming support device and storage medium
JP2006344076A (en) * 2005-06-09 2006-12-21 Nec Electronics Corp Program generating device, program generating method and program
JP2008146277A (en) * 2006-12-08 2008-06-26 Fuji Xerox Co Ltd File information display device and file information display program

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1185489A (en) * 1997-09-09 1999-03-30 Casio Comput Co Ltd Programming support device and storage medium
JP2006344076A (en) * 2005-06-09 2006-12-21 Nec Electronics Corp Program generating device, program generating method and program
JP2008146277A (en) * 2006-12-08 2008-06-26 Fuji Xerox Co Ltd File information display device and file information display program

Also Published As

Publication number Publication date
JP7338096B2 (en) 2023-09-05

Similar Documents

Publication Publication Date Title
US8429605B2 (en) Finite state machine architecture for software development
US5297250A (en) Method of generating interfaces for use applications that are displayable on the screen of a data processing system, and apparatus for performing the method
CN106062711B (en) Method, system, and computer storage medium for compound controls
US6854111B1 (en) Library manager for automated programming of industrial controls
US5119479A (en) User interface system in which operation associated with input device may be selectively switched
US20030090473A1 (en) Multiple screen automatic programming interface
JPH03182922A (en) Hierarchical editing command menu display method
JP4724261B2 (en) Image construction apparatus and program
JPS62257564A (en) Method and apparatus for controlling echo for application processing
CN107766045A (en) The devices, systems, and methods of visualization procedure are provided for NI Vision Builder for Automated Inspection
JPWO2013038556A1 (en) Sequence program creation device
US8990766B2 (en) Construction of object-oriented programming (OOP) patterns by behavior delegation
US6070006A (en) Object oriented software development tool for creation of new class(es)
JP2021144369A (en) Data processing apparatus and data processing method
US5777597A (en) Interaction support system and method
JP4381793B2 (en) PROGRAMMABLE DISPLAY, DISPLAY CONTROL PROGRAM, RECORDING MEDIUM RECORDING THE PROGRAM, SCREEN CREATION DEVICE, SCREEN CREATION PROGRAM, AND RECORDING MEDIUM RECORDING THE PROGRAM
Noble et al. Functional languages and graphical user interfaces: a review and a case study
JP5967200B2 (en) Rule management device, rule management method and program
Manca et al. Complex water resources system optimization tool aided by graphical interface
JP2001318796A (en) Program execution control method using internal and external event driven system, recording medium and program preparation support system
JPH0119170B2 (en)
JP2831721B2 (en) Arithmetic unit assignment device
JP2020064353A (en) Data processing device
JPH01229321A (en) User interface generation tool
JP3065707B2 (en) Design support system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20211004

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230704

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230711

R150 Certificate of patent or registration of utility model

Ref document number: 7338096

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150