マイグレーション: 作業フォルダとWorkingDir

Magic eDeveloper V10では、「作業フォルダ」の考え方が少し従来とは違っています。

作業フォルダ

V9Plusまでの作業フォルダは、アプリケーション(MCF)オープンの前後で同じ意味を持っていました。
つまり、アプリケーションオープン前に処理されるMagic.iniでのフォルダ指定も、 アプリケーションオープン後、プログラム内で指定するPervasiveのワークファイルや、テキストファイルの位置でも、 同じように作業フォルダを起点とした考え方でした。

しかし、V10の作業フォルダは、プロジェクト(edp)やキャビネット(ecf)をオープンする前は、 従来同様に起点として扱われますが、それらオープン後は、WorkingDirが起点となります。
WorkingDirとは、プロジェクト(edp)やキャビネット(ecf)が存在するフォルダのことで、 V10では、予約論理名として「%WorkingDir%」が使えます。

少し例を挙げて頭の中を整理してみましょう。

V8dbMAGIC V8のアプリケーションをMagic eDeveloper V10にコンバートしたとします。
(ここでは、ともに開発版のケースで考えます。)
V8のときの作業フォルダは、「C:\MAGIC\V8GEN」とします。
APGでテキストファイル出力のプログラムを作って、出力先を「TEST.TXT」という ようにフォルダの指定をしなかった場合、実際の出力ファイルは、「C:\MAGIC\V8GEN\TEST.TXT」となります。

次に、これをV10にコンバートしたときを考えます。
V10V10の作業フォルダは、「C:\Program Files\Magic\Studio V10」とします。
また、V8から移行されたアプリケーションは「C:\Program Files\Magic\Studio V10\Projects\V8APL\V8APL.edp」とします。
このとき、前述の「TEST.TXT」はどこに作成されるでしょうか?
答えは、「C:\Program Files\Magic\Studio V10\Projects\V8APL\TEST.TXT」です。
作業フォルダではない、ということに注意してください。

その他に、V10では「%EngineDir%」という予約論理名があります。
ここで紹介した例では、それぞれ次のような実行名に変換されます。
  %EngineDir% = C:\Program Files\Magic\Studio V10\
  %WorkingDir% = C:\Program Files\Magic\Studio V10\Projects\V8APL\

尚、「%WorkingDir%」はプロジェクトやキャビネットがオープンされた後にしか有効ではありません。
初期の頃は、Magic.iniに次のような使い方をして失敗することがありますので注意しましょう。
  StudioColorDefinitionFile = %WorkingDir%clr_rnt.jpn
Magic.iniの色定義ファイルの指定ですが、Magic.iniのこの部分が処理されるのはMagic起動時なので、 プロジェクトはオープンされていません。
従って、%WorkingDir%という論理名は無効です。