このドキュメントでは、CNLS ユーティリティ (
cnls.exe) を使用してカスタマイズされた言語変換の設定、テスト、およびアプリケーションへの適用方法を説明します。
以下は、カスタマイズされた NLS 変換を設定する手順です。
-
CacheSys\Bin ディレクトリの cnls.exe をダブル・クリックして、NLS ユーティリティを設定します。
-
サーバ接続ウィンドウを選択し、既定の LOCALTCP を使用するか、プルダウン・リストから他のサーバを選択します ("優先接続サーバ" セクションで定義済み)。
-
[ロケール] タブで、右下にある [新規作成] ボタンを使用してロケールを作成します。[NLS ロケールを追加] ダイアログ・ボックスで、説明を入力します。
-
コピー元 : "English, United States Latin 1" を指定します。
-
文字セット : "Latin 1" などを指定します。
-
Locale 名 : 常に "y" で開始し、8 ビットのアプリケーションでは "8"、Unicode アプリケーションでは "U" で終了します。
ここまで入力すると、右下の
[OK] ボタンが使用可能になります。
[OK] ボタンをクリックします。画面左上の [オプション] を選択し、[ロケールのインストール] をクリックします。右側にある NLS の [インポート] オプション、または [エクスポート] オプションを使用して、他の Caché システムからロケールをインポート、またはエクスポートすることができます。また、このユーティリティでテーブルのインポートや、エクスポートを行うこともできます。
-
[変換] タブで、右下の [新規作成] を選択して変換テーブルを設定します。[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 進法、または文字モードで表示されます。これは、[ヘルプ] オプションで調整できます。独自の変換を設定する場合は、行の値を変更するか、新規の値を * の隣に追加します。
-
変換テーブルが一度設定されたら、[ロケール] タブに戻り、新規の変換テーブルで更新します。[トランスレーション名] (真中の欄) で、独自の変換を追加するために * を選択します。ここで "sueprint" など、自由に呼び出しを行うことができます。次に [出力] タブ、または [入力] タブに移動します。ドロップ・ダウン・リストに、ユーザ独自の変換テーブルが表示されるはずなので、これを選択します。ユーザが変換するものによって、[入力] 列と [出力] 列のいずれかで、プレースホルダとして常に既定のテーブルを持つ必要があります。トランスレーション名は、入出力変換を指定するために Caché で使用される名前なので重要です。各トランスレーション名は、出力文字セットと入力文字セットと関連しています。
-
[変換タイプ] (一番下の欄) に移動し、[プログラマ・ウィンドウ] を新規の "トランスレーション名" に、つまり "sueprint" に変更し (真中の欄で関連した名前)、変換をテストします。"トランスレーション名" は、入出力変換を指定するために Caché で使用される名前です。各トランスレーション名は、出力文字セットと入力文字セットと関連しています。
-
再度、新規変換でロケールをインストール、または検証します。テーブルに対するソースのコンパイルと、共有メモリへのオブジェクトのロードを検証します。ロケールの検証とロケールの更新をインストールします。
-
上記は、ロケールを更新したトランスレーション名をリストにします。
>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
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
-
-
DefIO[(type)] システムの既定を返します。
type の有効値は、プロセスは 0、M ターミナルは 1 (既定の type)、その他のターミナルは 2、シーケンシャル・ファイルは 3、磁気テープは 4、ネットワーク・デバイスは 5 です。
-
-
-
-
-
-
-
-
-
Def("I"[,type]) I/O 変換テーブルの名前 (type の説明は DefIO を参照)。
-
-
Def("P") パターン・マッチ・テーブルの名前。
-
Def("T") タイトルの大文字/小文字変換テーブルの名前。
-
-
Def("X") $X/$Y アクション・テーブルの名前。
-
-
-
-
-
GetPDefIO[(type)] プロセスの既定を返します。
-
GetPDefXY プロセスの既定を返します。
-
GetPDef("I"[,type]) I/O 変換テーブルの名前 (type の説明は DefIO を参照)。
-
GetPDef("X") $X/$Y アクション・テーブルの名前。
-
-
-
GetPitch 現行デバイスのピッチ値を取得します。
-
GetTitle タイトルの大文字/小文字変換を返します。
-
-
GetXY $X/$Y アクションを返します。
-
Get("C") 呼び出しプロセスのテーブル名を指定します。
-
Get("E") 呼び出しプロセスのテーブル名を指定します。
-
Get("I") 現行デバイスのテーブル名を指定します。
-
Get("J") 呼び出しプロセスのテーブル名を指定します。
-
Get("L") 呼び出しプロセスのテーブル名を指定します。
-
Get("P") 呼び出しプロセスのテーブル名を指定します。
-
Get("T") 呼び出しプロセスのテーブル名を指定します。
-
Get("U") 呼び出しプロセスのテーブル名を指定します。
-
Get("X") 現行デバイスのテーブル名を指定します。
-
OffIO 現行デバイスの I/O 変換をオフに設定し、直前の状態を返します。
-
OffPIO 呼び出しプロセスの I/O 変換をオフに設定し、直前の状態を返します。
-
OnIO 現行デバイスの I/O 変換をオンに設定し、直前の状態を返します。
-
OnPIO 呼び出しプロセスの I/O 変換をオンに設定し、直前の状態を返します。
-
SetCOL(tblname) 照合を選択します。
-
SetIO(tblname) I/O 変換を選択します。
-
SetIO(tblname) I/O 変換を選択します。
-
SetIdent(tblname) 識別子を選択します。
-
SetLower(tblname) 小文字変換を選択します。
-
SetPDefIO(tblname[,type]) プロセスの既定を選択します。
-
SetPDefXY(tblname) プロセスの既定を選択します。
-
SetPDef("I",tblname[,type]) I/O 変換テーブルの名前 (type の説明は DefIO を参照)。
-
SetPDef("X",tblname) $X/$Y アクション・テーブルの名前。
-
SetPIO(tblname) I/O 変換を選択します。
-
SetPM(tblname) パターン・マッチを選択します。
-
SetPitch(value) 現行デバイスのピッチ値を設定します。
-
SetTitle(tblname) タイトルの大文字/小文字変換を選択します。
-
SetUpper(tblname) 大文字変換を選択します。
-
SetXY(tblname) $X/$Y アクションを選択します。
-
Set("C",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("E",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("I",tblname) 現行デバイスのテーブルを指定します。
-
Set("J",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("L",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("P",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("T",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("U",tblname) 呼び出しプロセスのテーブルを指定します。
-
Set("X",tblname) 現行デバイスのテーブルを指定します。
-
StatIO 現行デバイスの I/O 変換状態を返します。
-
StatPIO 呼び出しプロセスの I/O 変換状態を返します。
以下の演算は、モーダル変換用としてのみ使用されます。
-
GetInpMode() 現行デバイスの入力モード文字列インデックスを取得します。
-
GetInpModeStr(nbr) 現行デバイスの入力モード文字列値を取得します。
-
GetOutMode() 現行デバイスの出力モード文字列インデックスを取得します。
-
GetOutModeStr(nbr) 現行デバイスの出力モード文字列値を取得します。
-
GetPInpMode() 呼び出しプロセスの入力モード文字列インデックスを取得します。
-
GetPInpModeStr(nbr) 呼び出しプロセスの入力モード文字列値を取得します。
-
GetPOutMode() 呼び出しプロセスの出力モード文字列インデックスを取得します。
-
GetPOutModeStr(nbr) 呼び出しプロセスの出力モード文字列値を取得します。
-
SetInpMode(nbr) 現行デバイスの入力モード文字列インデックスを設定します。
-
SetInpModeStr(nbr,value) 現行デバイスの入力モード文字列値を設定します。つまり、mode(nbr) = value です。
-
SetOutMode(nbr) 現行デバイスの出力モード文字列インデックスを設定します。
-
SetOutModeStr(nbr,value) 現行デバイスの出力モード文字列値を設定します。
-
SetPInpMode(nbr) 呼び出しプロセスの入力モード文字列インデックスを設定します。
-
SetPInpModeStr(nbr,value) 呼び出しプロセスの入力モード文字列値を設定します。
-
SetPOutMode(nbr) 呼び出しプロセスの出力モード文字列インデックスを設定します。
-
SetPOutModeStr(nbr,value) 呼び出しプロセスの出力モード文字列値を設定します。
I/O 変換の置換属性管理に対するエントリ・ポイント
これらの関数は、入出力へ変換の置換属性を設定、または取得します。これらの関数は、置換状態を示す次の値を返します。
一部の関数では、以下のいずれかの引数を指定できます。
-
ReplType 有効な変換を持っていない文字または文字列の置換タイプです。有効な値は以下の通りです。
-
ReplVal ReplType が 1 (置換) の場合に使用される値または文字列です。
-
GetInpReplStat 現行デバイスの入力置換状態を取得します。
-
GetInpReplType 現行デバイスの入力置換タイプを取得します。
-
GetInpReplVal 現行デバイスの入力置換値を取得します。
-
GetOutReplStat 現行デバイスの出力置換状態を取得します。
-
GetOutReplType 現行デバイスの出力置換タイプを取得します。
-
GetOutReplVal 現行デバイスの出力置換値を取得します。
-
GetPInpReplStat プロセスの入力置換状態を取得します。
-
GetPInpReplType プロセスの入力置換タイプを取得します。
-
GetPInpReplVal プロセスの入力置換値を取得します。
-
GetPOutReplStat 出力置換状態を取得します。
-
GetPOutReplType プロセスの入力置換タイプを取得します。
-
GetPOutReplVal プロセスの入力置換値を取得します。
-
SetInpReplStat(ReplType) 現行デバイスの入力置換状態を設定します。
-
SetInpReplType(ReplType) 現行デバイスの入力置換タイプを設定します。
-
SetInpReplVal(ReplVal) 現行デバイスの入力置換値を設定します。
-
SetOutReplStat(ReplType) 現行デバイスの出力置換状態を設定します。
-
SetOutReplType(ReplType) 現行デバイスの出力置換タイプを設定します。
-
SetOutReplVal(ReplVal) 現行デバイスの出力置換値を設定します。
-
SetPInpReplStat(ReplType) プロセスの入力置換状態を設定します。
-
SetPInpReplType(ReplType) プロセスの入力置換タイプを設定します。
-
SetPInpReplVal(ReplVal) プロセスの入力置換値を設定します。
-
SetPOutReplStat(ReplType) プロセスの出力置換状態を設定します。
-
SetPOutReplType(ReplType) プロセスの出力置換タイプを設定します。
-
SetPOutReplVal(ReplVal) プロセスの出力置換値を設定します。
Set 関数は一般的に、この値が意味を持つとき、以前の設定を返します。