ロック

ロジックエディタ > 処理コマンド > コール > コール特性

タスクまたはプログラムが呼び出されると、現在のレコードの処理が一時中断され、その後、そのタスクまたはプログラムが完了すると処理が再開されます。その間、呼び出されたタスクまたはプログラムからは、現在のレコードの項目全てに対してアクセスが可能になります。[コールプログラム]の場合、項目へのアクセスはパラメータを介して行われます。一方、[コールタスク]の場合、直接アクセスされます。現在のレコードの項目に対しては、どちらの場合も更新を行うことができます。

その場合、更新時のロックの状態が問題になります。エンドユーザによるレコードの変更では、ロック方式として「入力時」が設定されている時には(ロック方式は、[タスク特性]ダイアログで設定できます)、レコードの変更が始まると同時にロックがかけられるか、または項目の変更が完了した時にロックが設定されます。

同様に、タスクやプログラムを使用して現在のレコードを変更する場合も、現在のレコードをロックしておく事が重要です。これは、子タスクやプログラムの処理が完了するまでに時間がかかる場合があるからです。このため、タスクやプログラムの実行中は、エンドユーザに対して現在のレコードへのアクセスや変更ができないようにしておくことが必要になります。アクセスが可能な場合、エンドユーザによってレコードが操作されているため、タスクやプログラムの終了時に変更をディスクへ書き込めないということも起こります。

以上の事情から、呼び出したタスクやプログラムで現在のレコードを変更する時には、あらかじめレコードにロックを設定しておきます。ただし、タスクやプログラムでレコードの更新を行わない時には、ロックは必要ありません。これで、エンドユーザによるレコードの変更が可能になります。

タスクやプログラムでレコードの更新を行う時には、このパラメータを使用してレコードにロックをかけるかどうかを指定できます。指定できる値は、以下の通りです。

なお、[ロック]特性を「Yes」にしていても、次の場合には現在のデータビューのレコードにロックはかかりません。