12.07.2015 Aufrufe

Caché 専用のシステム/ツールおよびユーティリティ - InterSystems ...

Caché 専用のシステム/ツールおよびユーティリティ - InterSystems ...

Caché 専用のシステム/ツールおよびユーティリティ - InterSystems ...

MEHR ANZEIGEN
WENIGER ANZEIGEN
  • Keine Tags gefunden...

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

各 国 言 語 サポートのシステム・クラスの 使 用 法これらの 行 では、Unicode 文 字 Uaaaa が EBCDIC 文 字 の \xbb にマッピングされることを 示 しています (ここで aaaa および bb は 16 進 数 の 表 現 です)。このテーブルは 逆 変 換 が 可 能 であり、EBCDIC 文 字 の \xbb を Unicode 文 字 の Uaaaaに 再 マッピングすることができると 仮 定 しています。これにより、1 回 のスキャンで、 同 じデータ・ファイルから 両 側 (つまりEBCDIC-to-Latin1 および Latin1-to-EBCDIC) を 作 成 することができます。Unicode の 範 囲 は 0 ~ 255 のみなので、これは 実 際 には Latin-1 テーブルになります。このプロセスでは、 最 初 に SubTable オブジェクトを 作 成 し、 次 に Table を 作 成 し、 最 後 に Locale を 作 成 します。 最 初の 手 順 として、このプロセスでは 2 つの SubTables オブジェクトを 作 成 し、Name および Type プロパティを 初 期 化 して、定 義 ファイルから 読 み 込 んだデータで FromTo マッピング 配 列 を 埋 めます。SubTable の 名 前 の 形 式 は、Type–FromEncoding–ToEncoding です。 通 常 の I/O 変 換 の Type は “XLT” であるので、SubTable の 名 前 は XLT-yEBCDIC-Latin1 および XLT-yLatin1-EBCDIC になります。以 下 のコードで SubTables オブジェクトを 作 成 します。わかりやすくするために、ここでは 省 略 していますが、 実 際 のプログラムでは、 何 度 もコードの 整 合 性 チェックが 行 われます。この 例 では、このサンプル・コードを 何 度 も 実 行 できるように、 既 存 の 以 前 のバージョンの 同 じオブジェクト (SubTables、Tables および Locales) を 削 除 しています。 厳 密 には、クラス・メソッド Exists() を 使 用 して 以 前 のオブジェクトの 存 在 をチェックし、 既 に 存 在 する 場 合 は、 別 の 処 理 を 実 行 する 必要 があります。// Names for the new SubTables (save for later)Set nam1 = "XLT-Latin1-yEBCDIC"Set nam2 = "XLT-yEBCDIC-Latin1"// Delete existing SubTables instances with same idsDo ##class(Config.NLS.SubTables).Delete(nam1)Do ##class(Config.NLS.SubTables).Delete(nam2)// Create two SubTable objectsSet sub1 = ##class(Config.NLS.SubTables).%New()Set sub2 = ##class(Config.NLS.SubTables).%New()// Set Name and DescriptionSet sub1.Name = nam1Set sub1.Description = "ICU Latin-1->EBCDIC sub-table"Set sub2.Name = nam2Set sub2.Description = "ICU EBCDIC ->Latin-1 sub-table"SubTables には、マルチバイトの 変 換 を 実 行 するかどうかを 示 す 小 さな 整 数 である、type プロパティが 含 まれます。この例 では、type は、シングルバイト・マッピングを 示 す 0 に 設 定 されています。データ・ファイルに 定 義 されていないコード・ポイント ( 文 字 ) がそれ 自 体 にマッピングされるように、このマッピングは 初 期 化 されています。// Set Type (single-to-single)Set sub1.Type = 0Set sub2.Type = 0// Initialize FromTo arraysFor i = 0 : 1 : 255{Do sub1.FromTo.SetAt(i, i)Do sub2.FromTo.SetAt(i, i)}次 に、アプリケーションがファイルを 読 み 込 みます。ファイルの 定 義 が、 既 定 のマッピングとして 設 定 された 定 義 をオーバーライドします。$ZHEX() 関 数 により、コードが 16 進 数 から 10 進 数 に 変 換 されます。// Assume file is in the mgr directorySet file = "glibc-EBCDIC_US-2.1.2.ucm"// Set EOF exit trapSet $ZTRAP = "EOF"// Make that file the default deviceOpen fileUse fileFor{Read xIf x?1"".E{Set uni = $ZHEX($E(x,3,6)),ebcdic = $ZHEX($E(x,12,13))Do sub1.FromTo.SetAt(ebcdic,uni)<strong>Caché</strong> 専 用 のシステム/<strong>ツールおよびユーティリティ</strong> 13

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!