アナリティクス スクリプトの Unicode への変換

非 Unicode の既存のアナリティクス スクリプトおよび標準スクリプトを Unicode 版の Analytics に移行する場合、これらは自動的に Unicode に変換されます。 ただし、これらを Unicode データに適用した場合でもスクリプトのロジックが変わらないことを確認する必要があります。

Unicode とは

Unicode は、各文字を表すために 2 バイト以上を使用するテキストのエンコードの標準であり、すべての言語の文字が単一の文字セットに格納されています。 Unicode 版の Galvanize 製品を使用すると、現在使用されている全言語で、Unicode でエンコードされたデータを含んでいるファイルやデータベースの表示および操作が行えます。

メモ

Analytics および AX Engine は、リトルエンディアン(LE)でエンコードされた Unicode データをサポートしています。 これらの製品を使用して、ビッグエンディアン(BE)でエンコードされたデータを分析することはできません。

Unicode 版 Analytics Exchange への移行

  • Unicode スクリプトの暗号化は現在サポートされていません
  • Analytics プロジェクト ファイルとログ ファイルは Unicode データ(UTF-16 LE)としてエンコードされているため、非 Unicode 版のAnalytics では使用できません
  • Analytics で印刷イメージ ファイルまたは区切り文字付きファイルを定義するとき、ファイルに ASCII または EBCDIC でエンコードされたテキストが含まれている場合は、このデータを格納する Analytics テーブルのフィールドには、デフォルトで Unicode データ型が割り当てられます

必要なアナリティクス スクリプトの変更

バイト数で値を指定するすべてのパラメーターの更新

非 Unicode 版 Analytics での文字の長さは 1 バイトです。 Unicode データの場合、Unicode エディションでの文字の長さは 2 バイトです。 非 Unicode 版 Analytics で、フィールド長または開始位置をバイトで指定するときには、バイト数は文字数と同じです。 これは Unicode 版 Analytics における Unicode データには当てはまりません。

アナリティクス スクリプトを Unicode 版 Analytics で使用できるように変換するには、バイト数でフィールドの長さや開始位置を指定したすべてのパラメーターの長さを調整する必要があります。 たとえば、非 Unicode 版 Analytics で 7 の WID 値を指定する IMPORT DELIMITED コマンドの場合、Unicode 版 Analytics で同じ結果を出力するには、WID の値を 2 倍の 14 にする必要があります。

また、Unicode データの場合、フィールドの奇数の開始バイト位置とフィールド長の偶数のバイト数を指定します。 偶数の開始位置または奇数の長さを指定すると、文字が正しく表示されない可能性があります。

IMPORT PRINT および IMPORT DELIMITED の全インスタンスを再作成する

IMPORT PRINT コマンドと IMPORT DELIMITED コマンドの全インスタンスを再作成する必要があります。これは、Unicode 版の Analytics でデータ定義ウィザードを使用してソース データ ファイルをインポートし、AX Server にプロジェクトを再インポートすることによって行います。 データ定義ウィザードを使用すると、すべての構文が有効であることが保証されます。

ZONED() および EBCDIC() 関数の全インスタンスの変更

次のように ZONED() および EBCDIC() 関数の全インスタンスを変更し、関数で返される ASCII 値が正しく Unicode データに変換されるようにする必要があります。

  • 演算フィールドは、ZONED( )EBCDIC( ) インスタンスを BINTOSTR( ) 関数で囲みます
  • 静的な式では ZONED( ) インスタンスを BINTOSTR( ) 関数で囲みます
BINTOSTR(ZONED(%result%, 5), 'A')

OPEN FORMAT コマンドのすべてのインスタンスを変更します

OPEN FORMAT コマンドのすべてのインスタンスを変更する必要があります。 SKIP パラメーターを使用して、開いている Unicode ファイルの最初の 2 バイトをスキップする必要があります。 これは、UTF-16 エンコード ファイルの最初の 2 バイトはバイト オーダー マークとして予約されており、ファイル内のテキストとは異なるものであるため、必要となります。

非 Unicode

OPEN "ascii_test.txt" FORMAT template_table CRLF 
DEFINE FIELD full_rec ASCII 1 10

Unicode

OPEN "utf-16_test.txt" FORMAT template_table CRLF SKIP 2 
DEFINE FIELD full_rec UNICODE 1 20

変換されたアナリティクス スクリプトの検証

Unicode 版のアナリティクス スクリプトによって生成される結果が、非 Unicode 版のアナリティクス スクリプトによって生成された結果とまったく同じになるかどうかを検証します。 これを行う最良の方法は、Diff ツールを使用して、分析で生成されたログ ファイルを比較することです。 Diff ツールは、ファイル間のあらゆる相違点を識別します。

結果がまったく同じでなかった場合の処置

Unicode 版のアナリティクス スクリプトを使用しても非 Unicode 版と同じ結果を生成できなかった場合には、スクリプトのログ出力をアナリティクス スクリプトのステップごとに比較することで、問題の切り分けができる可能性があります。