パラメータの受け渡し

Magic uniPaaSでは、次のようにして実行時にパラメータのやりとりが行われます。

  1. 実行時、[コールタスク]または、[コールプログラム]や[コール式]処理コマンドを実行する場合、現在のタスクの[パラメータ]テーブルに定義されているパラメータの現在の値が、呼び出されたタスクの対応するパラメータ項目または変数項目にコピーされます。

  2. 呼び出されたプログラムまたはタスクでパラメータ項目が定義されていると、渡されたパラメータが順番にパラメータ項目にコピーされます。この場合、変数項目はいずれも無視されます。パラメータ項目が設定されていない場合、パラメータは変数項目にコピーされます。
    呼び出されたタスクのパラメータ項目または変数項目には、呼び出し側のタスクの情報(パラメータの値)のコピーが入ることになります。こうして渡された項目は、表示やエンドユーザによる入力など、呼び出されたタスクで任意に使用できます。

  3. 呼び出されたタスクが終了すると、パラメータの値の格納に使われていたパラメータ項目または変数項目の内容が、再度、呼び出し側のタスクの[パラメータ]テーブルのパラメータにコピーされます。ただし、呼び出し側のタスクの[パラメータ]テーブルで、[項目]カラムではなく[式]カラムを使用していた時には、この戻り置のコピーは行われず、情報は一方通行になります。つまり、呼び出されたタスクでパラメータの値が変更された時でも、その変更は一切、呼び出し側のタスクには伝えられません。
    これを整理すると次のようになります。

「参照渡し」の場合、呼び出されたタスクで変更されたパラメータは呼び出し側に転送されるため、その変更がきっかけで、呼び出し側のタスクで[代入]特性やリンク式(リンク条件)の再計算が実行されることがあります。その場合の再計算は、項目定義やリンク定義にしたがって行われます。呼び出されたタスクでは、パラメータの値の変更は、エンドユーザの入力や[項目更新]コマンドの実行によって発生します。呼び出し側のタスクでパラメータ項目が画面に表示されている場合、そのパラメータ項目の値が呼び出されたタスクで変更された後、制御が呼び出されたタスクから呼び出し側のタスクに戻ると同時に、呼び出し側のタスク画面の表示が更新されることになります。