Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になります。QVS11.20の年内EOSに対応して QVS12.40に上げようとしています。
11.20ではOSとしてServer2008R2を長く使っていましたが、QVSを12.40に上げるのと同時にOSもServer2012R2に上げようととも考えています。
些細な心配なのですが、V11.20からいきなりV12.40最新リリースに移行しようとしていますが、V12.10など低いVerから順次アップすべきなど、何か注意事項があればご教示くださると幸いです。
どうぞ宜しくお願いいたします。
バージョンアップ自体は、順次実行するメリットはおそらく無いと思います。
ただ、ところどころV12は仕様が変わっているので、事前調査はしておいた方が良いと思います。
若干間違いがあるかもしれませんが、私が認識している範囲だと、以下のような変更がありました。
①ログファイルの出力タイミングがリロード終了時に変更になっています。
ロード中に出力されるログ情報を利用するようなスクリプトがある場合、ファイル分割する必要があります。
②“EXECUTE” ステートメントを使用するための設定方法(設定先)が変わっています。
マイナーバージョンの違いでも差があるケースがある(V12とV12.10で違いました)ので、12.40の設定先を確認された方が良いと思います。
③スクリプト内での一部のファイルパス解釈方法が変わっています。
たとえば、QvdNoOfRecords関数のようなQVD検索関連の関数利用時、記述箇所よりも前の部分に
DIRECTORY D:\temp;
といった、DIRECTORY を指定する記述をしていると、V11の場合は以下の記述1、2ともに問題ないのですが、V12では1の取得先は'D:\temp\D:\temp\data.qvd'を指定しまい、DIRECTORYで指定している部分が重複してしまいます。
サンプル1: LET V_Rows = QvdNoOfRecords('D:\temp\data.qvd');
サンプル2: LET V_Rows = QvdNoOfRecords('data.qvd');
INCLUDEを利用している場合なども、同様の注意点が必要です。
④Remコメントがログファイルへ出力されない。
⑤QVエンジンの思考が縦型から横型へ変更になっています。
このため、パフォーマンスを最適化するための手法が変わってくると思います。
個人的な感想ですが、テーブルを正規化して多数かかえている場合のように、リレーション数多い場合には、V12以降の方がパフォーマンスが悪かったように思います。
その他、パフォーマンスの視点で言うと、変数やステートが多数ドキュメント内にある場合も、V12だと速度が落ちました。
このあたりは、スクリプト内だけで利用する変数はリロード終了時に変数を削除する記述を行ったり、出来るだけステートを抱えないようにするなど、工夫が必要だと思います。
(私が検証した時は、V12でももう少し古いバージョンだったと思いますが。)
②および③に関しては、あくまで個人で利用しているものなのでスクリプトの内容によっては取得漏れが発生する可能性もありますが、下記の記述がある改修対象となるQVWを特定するツールを添付しておきますので、よければ使ってみてください。
・execute の利用
・directory および include の重複利用
・directory および qvdfunction の重複利用
使い方は、スクリプト内の変数 ’V_Dir' をお使いの環境のログファイル保存先に変更していただき、リロードするだけです。前日のログに絞り込んで取得するようにしていますので、別日付が良い場合は変数’V_Date’を変更して下さい。
ロード後に表示される左上の帳票のファイル名をクリックすると、右側へログファイルが表示され、該当箇所に色がつきます。
バージョンアップ自体は、順次実行するメリットはおそらく無いと思います。
ただ、ところどころV12は仕様が変わっているので、事前調査はしておいた方が良いと思います。
若干間違いがあるかもしれませんが、私が認識している範囲だと、以下のような変更がありました。
①ログファイルの出力タイミングがリロード終了時に変更になっています。
ロード中に出力されるログ情報を利用するようなスクリプトがある場合、ファイル分割する必要があります。
②“EXECUTE” ステートメントを使用するための設定方法(設定先)が変わっています。
マイナーバージョンの違いでも差があるケースがある(V12とV12.10で違いました)ので、12.40の設定先を確認された方が良いと思います。
③スクリプト内での一部のファイルパス解釈方法が変わっています。
たとえば、QvdNoOfRecords関数のようなQVD検索関連の関数利用時、記述箇所よりも前の部分に
DIRECTORY D:\temp;
といった、DIRECTORY を指定する記述をしていると、V11の場合は以下の記述1、2ともに問題ないのですが、V12では1の取得先は'D:\temp\D:\temp\data.qvd'を指定しまい、DIRECTORYで指定している部分が重複してしまいます。
サンプル1: LET V_Rows = QvdNoOfRecords('D:\temp\data.qvd');
サンプル2: LET V_Rows = QvdNoOfRecords('data.qvd');
INCLUDEを利用している場合なども、同様の注意点が必要です。
④Remコメントがログファイルへ出力されない。
⑤QVエンジンの思考が縦型から横型へ変更になっています。
このため、パフォーマンスを最適化するための手法が変わってくると思います。
個人的な感想ですが、テーブルを正規化して多数かかえている場合のように、リレーション数多い場合には、V12以降の方がパフォーマンスが悪かったように思います。
その他、パフォーマンスの視点で言うと、変数やステートが多数ドキュメント内にある場合も、V12だと速度が落ちました。
このあたりは、スクリプト内だけで利用する変数はリロード終了時に変数を削除する記述を行ったり、出来るだけステートを抱えないようにするなど、工夫が必要だと思います。
(私が検証した時は、V12でももう少し古いバージョンだったと思いますが。)
②および③に関しては、あくまで個人で利用しているものなのでスクリプトの内容によっては取得漏れが発生する可能性もありますが、下記の記述がある改修対象となるQVWを特定するツールを添付しておきますので、よければ使ってみてください。
・execute の利用
・directory および include の重複利用
・directory および qvdfunction の重複利用
使い方は、スクリプト内の変数 ’V_Dir' をお使いの環境のログファイル保存先に変更していただき、リロードするだけです。前日のログに絞り込んで取得するようにしていますので、別日付が良い場合は変数’V_Date’を変更して下さい。
ロード後に表示される左上の帳票のファイル名をクリックすると、右側へログファイルが表示され、該当箇所に色がつきます。
その他オブジェクト系では、コンテナボックスのタブが消えると言う現象が発生し、これに関しては作り直しました。
有難うございました。ツールも使わせて頂きました。
⑤QVエンジンの思考が縦型から横型へ変更になっています。
ここが一番の難所のような気がします。QV11.20であまりに細かくグラフや帳票を作りこんでしまっており
Senseには全くUI移行できないためQV12.40に行こうとしています。レコード数が多くMEM利用やレスポンス
が難所のようです。
また何かありましたらご教示ください。
有難うございます。こちらも注意して見ていきたいと思います。