非手続き型方式での代入式の自動再計算

データビューエディタ > 項目特性 > 代入

レコードレベルの実行時には、項目(実データ項目または変数項目)の値が変更された場合、その項目に定義されている[代入]特性が自動的に実行(再計算)されます。この再計算は、タスクのモードとは関係なく実行され、ちょうどスプレッドシートのセルの再計算と同じと考えることができます。再計算処理は、以下のルールで実行されます。

この2つの条件が満たされた時、[代入]特性が再計算されます。[データビュー]エディタでの再計算は、順方向(処理テーブルの上から下へ向かって)にだけ処理されます。

[レコード後]では、項目のいずれかが変更されると、項目に定義されている[代入]特性に対して再計算が実行されます。再計算は、まず、データビューエディタ内の変更された項目が定義されている行から始まり、テーブルの最後の行に向かって実行されます。

[代入]特性の再計算は、Magicエンジンの非手続的処理の1つです。

なお、これ以降の説明では、項目のうち、[代入]特性が「0」以外の項目([代入]特性が定義されている項目)を「代入項目」と呼びます。また、[代入]特性で使用されている項目のうち、項目が変更されたことにより、[代入]特性の再計算で使用される項目を「修正項目」と呼びます。

 

例えば、実データ項目Aに「5」が、実データ項目Bに「6」が入っていたとします。また、実データ項目Cに「A*B」という[代入]特性が定義されていたとします。この場合、エンドユーザがタスクを登録モードで実行すると、実データ項目Cには「30」という値が初期値として代入されます。その後、エンドユーザが実データ項目Aの値を「7」に変更すると、実データ項目Cの[代入]特性が自動的に再計算され、実データ項目Cの値は「42」になります(非手続き型処理)。したがって、エンドユーザは項目Cにカーソルを移動し、「42」という値を入力する手間が省けます。上記では、実データ項目Aが修正項目ということになります。

修正項目の値は、次のような時に変更されます。

修正モードに対する変更は、データビュー(エンドユーザによる対話型操作)のほか、そのレコードレベルから呼び出される子タスクがあれば、その子タスクでも発生します。また、[レコード後]レベル(非対話型操作)でも発生します。

項目を含んだ代入式を持つ項目に対して、再計算は以下のモードで実行されます。

再計算は、再計算される全ての代入項目に対して継続して実行されます。再計算が続くのは、再計算される項目自体が他の項目の[代入]特性で使用されていることがあるためです。1サイクルの再計算が終わると別のサイクルが開始され、関連する代入式が全て実行されるまで続きます。

再計算されるためには、代入項目は以下の2つの条件が両方とも満たされる必要があります。