処理フロー: 親子タスク間での変更即時反映

Magicで表示や印刷に使われるデータは、メモリに存在するものです。
ハードディスクに入っているデータベースの情報を直接アウトプットしているわけではありません。

つまり、データベースの内容と表示や印刷結果が違っていることもある、ということです。

代表的な例を2点、親子タスクで考えてみましょう。

1.親タスクは照会モードで表示だけ、入力は子タスクで実行する場合。
子タスクでの入力が完了してデータベース内のデータは書き換わっても、親タスクでは、変更前の表示が残ったままになります。
そのデータを読み直し、再表示する必要があります。
これは、子タスクのタスク後処理でビュー再表示アクションを設定することで可能になります。

2.親タスクで入力した結果を子タスクの印刷に即時反映させる場合。
Magicでの入力は、レコードメインという処理レベルで実行されています。
これは、メモリ上のデータを書き換えているだけであって、ハードディスクのデータは変更されていません。
データベースに書き込みされるのは、レコード後処理を通った後です。
オンラインタスクの基本フロー参照。)
そのため、入力後、レコード移動しなければ入力内容は他のタスクで使えません。
レコードメインから印刷ボタンを押して子タスクで印刷させても変更前のデータが出力されます。
ユーザにレコード移動の操作をさせなくても変更した結果を出力するにはどうすればよいでしょうか?
V8では、どろくさい内部イベントが必要になりますが、V9以降ではユーザイベントの強制終了を使います。
説明は辛いのでサンプルプログラムを参照してください。
こちらのページへ移動してください。