マイグレーション: V7からV10への移行:V8→V9Plus

V8からV9Plusへの移行方法です。
ここでも、対象のDBMSはPervasiveとします。
OracleやMS_SQLを使っている場合の注意点は、後日、補足事項として掲載する予定です。

1.V8でリポジトリ出力
V8の開発版を使って、アプリケーション全体をリポジトリ出力します。
権利設定がある場合は、開発権限のあるIDで出力しなければなりません。
(権限のないプログラムは出力されません。)

2.アクションの変更
V8とV9Plusとでは、一部のアクションが異なります。
KBPUT関数で該当のアクションを使っている場合は空白になります。
出力ファイルをテキストエディタで開き、文字列置換機能を使って、次のアクションを置き換えます。
(開発時にしか関係しないアクションも含まれていますが、念のため。)

行ジャンプ 行ジャンプ(&J)
T:行作成 R:行作成
R:複写登録 Y:複写登録
前行にマーク 前行を複数行マーク
次行にマーク 次行を複数行マーク
T:複写 I:複写
&T:タイプ モデル(&D)
H:ノードサイズ縮小 L:サブツリー縮小
&K:タスクイベント ユーザイベント(&U)
H:SQL Where 句 R:範囲/位置付
U:dbMAGIC ヘルプ U:Magic ヘルプ
&L:チェックアウト一覧 チェックアウト一覧

3.V9PlusのMagic.iniの変更
V9Plus開発版を起動する前にMagic.iniの変更をしておきます。
====================
LockWithinTran = N
→設定/動作環境/マルチユーザ/ロック前にトランザクション開始(ISAM)のことです。

[MAGIC_SPECIALS]
ImportCreateErrHandler = Y
→この行があるはずなので、「;」(セミコロン)を外して有効にします。
※V8のバッチタスクでレコードアクセス失敗時(タスク制御/高度な設定)が「S=スキップ」のときに自動的にエラーハンドラを作成して互換性を保持してくれます。

[dbMAGIC_ENV]
CheckPicInherit = Y
→この行があるはずなので、「;」(セミコロン)を外して有効にします。
※V9Plusでリポジトリ入力したときに、タイプの合っていないところを検出し、ログファイルに記述してくれます。
====================

CONSTファイルは、ここでは変更しません。
「Mgconstw.jpnをMgconstw.jp2にするのでは?」と思うかもしれませんが、ここでやるのは間違いです。
ここで、CONSTファイルを変更すると失敗します。
変更しなくても良いのではなく、変更してはいけません。
ここで使うのは、デフォルトのMgconstw.jpnです。

また、色・フォント変換ユーティリティも不要です。
V9Plusで移行を終わるのであれば、必要ですが、V10まで移行するのであれば不要です。

4.V9Plusでリポジトリ入力
V9Plus開発版を起動し、新規アプリケーションをオープンします。
2で編集したV8の出力ファイルを、V9Plusでリポジトリ入力します。

5.インポートログの確認
リポジトリ入力が終わったら、インポートログを確認します。
インポートログは、作業フォルダに自動作成される「識別子+IMP.LOG」という名前のファイルです。
例えば、識別子が「AA」ならば「AAIMP.LOG」となります。

ログファイルをオープンして、「inheriting」という文字列を検索します。
すると、次のような行が見つかる場合があります。

Program 8 TEST_0008: '項目A' not inheriting: 'N10CZ' != 'N8.2CZ'

変数特性これは、「プログラム#8:TEST_0008」の変数「項目A」のタイプ書式が不一致であることを検出したものです。
タイプ(モデル)リポジトリでは「N10CZ」という書式のものが、この変数では「N8.2CZ」になってしまっているという意味です。
該当プログラムをズームして、変数特性の書式をタイプから継承するように設定し直します。
地道な作業ですが、一つずつ修正します。
古いバージョンから移行を繰り返したアプリケーションでは、このような書式ズレを起こす可能性が高いようです。
この機能は、前述の「CheckPicInherit = Y」が有効な場合のみ、使えます。

これで、V8→V9Plusは完了です。
次に、V9Plus→V10に進みます。