このドキュメントでは、CNLS ユーティリティ (cnls.exe) を使用してカスタマイズされた言語変換の設定、テスト、およびアプリケーションへの適用方法を説明します。
NLS 変換
以下は、カスタマイズされた NLS 変換を設定する手順です。
  1. CacheSys\Bin ディレクトリの cnls.exe をダブル・クリックして、NLS ユーティリティを設定します。
  2. サーバ接続ウィンドウを選択し、既定の LOCALTCP を使用するか、プルダウン・リストから他のサーバを選択します ("優先接続サーバ" セクションで定義済み)。
  3. [ロケール] タブで、右下にある [新規作成] ボタンを使用してロケールを作成します。[NLS ロケールを追加] ダイアログ・ボックスで、説明を入力します。
    ここまで入力すると、右下の [OK] ボタンが使用可能になります。[OK] ボタンをクリックします。画面左上の [オプション] を選択し、[ロケールのインストール] をクリックします。右側にある NLS の [インポート] オプション、または [エクスポート] オプションを使用して、他の Caché システムからロケールをインポート、またはエクスポートすることができます。また、このユーティリティでテーブルのインポートや、エクスポートを行うこともできます。
    メモ : 現在のロケールとして他の標準ロケールを選択した場合、NLS ユーティリティ [Import Locale Option] を使用して、Caché インストール CD からロケール定義を Cachesys\Bin ディレクトリにコピーする必要があります。標準ロケールは、\nt\install\eightbit、または \nt\install\unicode ディレクトリに存在します。ロケール定義は goq ファイルです。ロケールは、4 文字のロケール名で識別されます。ロケールの _src.goq (ソース・コード) バージョンは必ずインポートしてください。例えば、“English, United States Latin1”“enu8_src.goq” です。インストール・ロケール・オプションも、ディスクから上記のファイルにインポートするように指示するため、ユーザは単に "Cachesys\Bin" ディレクトリ、または "NLS" サブディレクトリを選択するだけです。
  4. [変換] タブで、右下の [新規作成] を選択して変換テーブルを設定します。[NLS トランスレーション・テーブルを追加] ダイアログ・ボックスの “コピー元” は空欄です。印刷用には、"出力専用" テーブルを使用します。ここでは [テーブル名 (From-to)] の左側は "Latin 1"、[テーブル名 (From-to)] の右側は常に"y" で開始する新規の変換テーブルです。ターミナル入力に対する変換の場合は、"入力専用" テーブルになり、"テーブル名 (From-to)" の左側が新規の変換テーブル、"テーブル名 (From-to)" の右側が "Latin 1" になります。[マッピング・タイプ] は最初は [Single to Single] です。1 つに変換したい複数の文字がある場合、複数に変換したい複数の文字がある場合は [Multi to Single] または [Multi to Multi] テーブルです。文字は、一番右側のテーブルで変換されます。既定で、10 進数の ASCII 値で表示されます。テーブルは 6 進法、または文字モードで表示されます。これは、[ヘルプ] オプションで調整できます。独自の変換を設定する場合は、行の値を変更するか、新規の値を * の隣に追加します。
  5. 変換テーブルが一度設定されたら、[ロケール] タブに戻り、新規の変換テーブルで更新します。[トランスレーション名] (真中の欄) で、独自の変換を追加するために * を選択します。ここで "sueprint" など、自由に呼び出しを行うことができます。次に [出力] タブ、または [入力] タブに移動します。ドロップ・ダウン・リストに、ユーザ独自の変換テーブルが表示されるはずなので、これを選択します。ユーザが変換するものによって、[入力] 列と [出力] 列のいずれかで、プレースホルダとして常に既定のテーブルを持つ必要があります。トランスレーション名は、入出力変換を指定するために Caché で使用される名前なので重要です。各トランスレーション名は、出力文字セットと入力文字セットと関連しています。
  6. [変換タイプ] (一番下の欄) に移動し、[プログラマ・ウィンドウ] を新規の "トランスレーション名" に、つまり "sueprint" に変更し (真中の欄で関連した名前)、変換をテストします。"トランスレーション名" は、入出力変換を指定するために Caché で使用される名前です。各トランスレーション名は、出力文字セットと入力文字セットと関連しています。
  7. 再度、新規変換でロケールをインストール、または検証します。テーブルに対するソースのコンパイルと、共有メモリへのオブジェクトのロードを検証します。ロケールの検証とロケールの更新をインストールします。
  8. ターミナル・ウィンドウを新規に開始します。
    w $zm
    上記は、ロケールを更新したトランスレーション名をリストにします。
    >w $zm
    >RY\Latin1\K\SUEPRINT
    メモ : この場合、トランスレーション名は "sueprint" です。
追記事項
プリンタに変換を設定するには、デバイスがオープンされているときに変換を設定します。
u x s zzz=$$SetIO^%NLS("sueprint") 
以下の構文を使用してテストを行います。
>s x="|PRN|"

>o x
 
>u x s zzz=$$SetIO^%NLS("sueprint") w $C(146),!,$C(147),!
 
>c x
$ZCVT 関数により、以下の構文を使用して変換をテストすることができます。"ySue" は出力変換テーブルです。
>f I=0:1:255 s x=$ZCVT($C(i),"o","ySue") if x'=$c(i) w I," ",$a(x),!
>177 49
 178 50
 180 52
 183 55
 184 56
 231 103
これらは、変換された文字です。
Do Dump^%NLSMISC コマンドは、%NLS 設定を一覧表示します。このコマンドの出力例を次に示します。
I/O Table Name      Offset:Type       Source Global --------------      -------------     ------------- UnicodeLittleIn     4A0030:Struct8 Out      4A0038:Struct8 UnicodeBig In       4A0020:Struct8 Out      4A0028:Struct8 SAME       In       4A0000:Struct8 Out      4A0008:Struct8 UTF8       In       4A0AAC:Struct8    %nls("Src","XLT","UTF8","Latin1") Out      4A0AB8:Struct8    %nls("Src","XLT","Latin1","UTF8") BIN        In       4A0000:Struct8 Out      4A0008:Struct8 RAW        In       4A0000:Struct8 Out      4A0008:Struct8 Ricky      Out      4A0098:Struct8    %nls("Src","XLT","Latin1","yAquis")
$X/$Y Table Name    Offset:Type       Source Global ----------------    -------------     ------------- Latin1              4A0074:Struct8
Collation Table     Offset:Type       Source Global ---------------     -------------     ------------- 0         Enc      Old ANSI Dec 1         Enc      New ANSI Dec 2         Enc Dec 3         Enc Dec 4         Enc Dec 5         Enc      Unicode Dec 128        Enc      Old string Dec 129        Enc      New string Dec 133        Enc      Unicode string Dec
Default             Offset:Type       Source Global -------             -------------     ------------- Pattern             4A0040:Struct8 Ident               4A004C:Struct8 UpperCase           4A0080:Struct8 LowerCase           4A008C:Struct8 TitleCase           4A0080:Struct8
I/O Default         Offset:Type       Name -----------         -------------     ---- Process             490233:ByteStr    Ricky Direct Term         490233:ByteStr    Ricky Telnet/LAT          490002:ByteStr    RAW File                490002:ByteStr    RAW Magtape             490002:ByteStr    RAW Network             490002:ByteStr    RAW DSM-DDP             490002:ByteStr    RAW DTM-DCP             490002:ByteStr    RAW SysCalls            490002:ByteStr    RAW
$X/$Y Default       Offset:Type       Name -------------       -------------     ---- Process             49002D:ByteStr    Latin1
 
I/O Slots           All Empty
 
$X/$Y Slots         All Empty
Process             Offset:Type       Source Global -------             -------------     ------------- Pattern             4A0040:Struct8 Ident               4A004C:Struct8 UpperCase           4A0080:Struct8 LowerCase           4A008C:Struct8 TitleCase           4A0080:Struct8
Process I/O         Offset:Type       Name -----------         -------------     ---- Process             490233:ByteStr    Ricky Direct Term         490233:ByteStr    Ricky Telnet/LAT          490002:ByteStr    RAW File                490002:ByteStr    RAW Magtape             490002:ByteStr    RAW Network             490002:ByteStr    RAW DSM-DDP             490002:ByteStr    RAW DTM-DCP             490002:ByteStr    RAW SysCalls            490002:ByteStr    RAW
Process $X/$Y       Offset:Type       Name -------------       -------------     ---- Process             49002D:ByteStr    Latin1
以下を使用して、ロケール設定を確認します。
>d ^%G
>Global ^%SYS("LOCALE","CURRENT") -- NOTE: translation in effect
>^%SYS("LOCALE","CURRENT")=yaq8
全般的な機能に対するエントリ・ポイント
以下は、^%NLS のエントリ・ポイントの一覧です。各エントリ・ポイントは EntryPoint(Arg) の形式で記載され、その呼び出しに使用する完全名は $$EntryPoint^%NLS(Arg) です。
モーダル変換に対するエントリ・ポイント
以下の演算は、モーダル変換用としてのみ使用されます。
I/O 変換の置換属性管理に対するエントリ・ポイント
これらの関数は、入出力へ変換の置換属性を設定、または取得します。これらの関数は、置換状態を示す次の値を返します。
一部の関数では、以下のいずれかの引数を指定できます。
関数は以下の通りです。
“Set” 関数は一般的に、この値が意味を持つとき、以前の設定を返します。