Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$ZNAME

指定された名前文字列を、正当な識別子として検証します。

Synopsis

$ZNAME(string,type,lang)

パラメータ

string 評価する名前。引用符付きの文字列として指定します。
type オプション — 実行する名前検証のタイプを指定する整数コード。有効値は 0 から 6 です。既定値は 0 です。
lang オプションstring の検証時に使用する言語モードを指定する整数コード。有効値は 0 から 12 です。既定では、現在の言語モードを使用します。

概要

$ZNAMEstring パラメータが正当な識別子であれば、1 (True) を返します。それ以外は 0 (False) を返します。オプションの type パラメータによって、文字列に対して実行する名前検証のタイプを設定します。このパラメータを省略すると、ローカル変数の名前付け規約が検証の既定として使用されます。オプションの lang パラメータは、検証に適用する言語モード規約を指定します。

$ZNAME が正当な識別子として検証する識別子の使用がロケールで許可されていない場合があります。ご使用のロケールに対する有効な識別子文字は、各国言語サポート (NLS) 識別子ロケール設定で定義され、これらはユーザが変更することはできません。NLS の詳細は、"Caché 専用のシステム/ツールおよびユーティリティ" の “各国言語サポートのシステム・クラス” のセクションを参照してください。

$ZNAME は、文字の検証のみを実行し、識別子の文字列長の検証は行われません。

パラメータ

string

正当な識別子名として検証する引用符付き文字列。有効な文字列に含まれる文字は、検証する識別子のタイプ (type で指定)、言語モード (lang) とロケールの定義に依存します。string は、識別子名のみを指定します。キャレット (^) 接頭語やオプションのグローバルの区切りネームスペース名の接頭語などの接頭語文字、および配列添え字やパラメータの括弧などの接尾語文字を含めることはできません。既定では、Caché 内の以下の文字が有効な識別子の文字とされます。

  • 大文字 : A から Z ($CHAR(65) ~ $CHAR(90))

  • 小文字 : a から z ($CHAR(97) ~ $CHAR(122))

  • アクセント記号付きの文字 : ($CHAR(192) ~$CHAR(255)。ただし、$CHAR(215) と $CHAR(247) を除く)

  • Unicode インストール : 非ラテン文字セットの Unicode 文字 (ギリシャ語やキリル文字など)。例えば、$CHAR(256) ~ $CHAR(687) および $CHAR(913) ~ $CHAR(1153)。ただし、$CHAR(930) と $CHAR(1014) を除く。

  • 数字 : 0 から 9 ($CHAR(48) ~$CHAR(57)) 一部の識別子に位置の制限あり

  • パーセント記号 : % ($CHAR(37)) 一部の識別子に位置の制限あり

また、$ZNAME は、有効な文字として、$CHAR(170)、$CHAR(181)、および $CHAR(186) を受け入れます。

Note:

日本のロケールでは、アクセント記号付きのラテン文字を識別子でサポートしていません。日本の識別子には、日本語の文字に加え、ラテン文字の A ~ Z と a ~ z (65 ~ 90 および 97 ~ 122) とギリシャ文字の大文字 (913 ~ 929 および 931 ~ 937) を使用できます。

type

実行する名前検証のタイプを指定する整数コード。

意味 制限文字
0 ローカル変数名を検証

最初の文字のみ : %

後続の文字のみ : 数字 0 – 9

1 ルーチン名を検証

最初の文字のみ : %

後続の文字のみ : 数字 0 – 9 およびピリオド (.) 文字。ピリオドを、ルーチン名の最初または最後の文字にすることはできません。

2 ラベル (タグ) 名を検証 最初の文字のみ : %
3 グローバル名またはプロセス・プライベート・グローバル名を検証

最初の文字のみ : %

後続の文字のみ : 数字 0 – 9 およびピリオド (.) 文字。ピリオドを、グローバル名の最初または最後の文字にすることはできません。

4 完全修飾されたクラス名を検証

最初の文字のみ : %

後続の文字のみ : 数字 0 – 9 およびピリオド (.) 文字。ピリオドを、ルーチン名の最初または最後の文字にすることはできません。(以下を参照。)

5 メソッド名を検証

最初の文字のみ : %

後続の文字のみ : 数字 0 – 9

6 プロパティ名を検証

最初の文字のみ : %

後続の文字のみ : 数字 0 – 9

type = 0 の場合 (または指定されていない場合)、検証をパスした識別子は、ローカル変数名またはその他すべてのタイプの ObjectScript 名に使用できます。これは最も厳しい検証の形式です。正当な識別子の最初の文字は、パーセント記号 (%) か、有効な文字 (英字) に限られます。正当な識別子の 2 番目以降の文字は、有効な文字 (英字) または数字のいずれかに限られます。

type = 2 の場合、検証にパスした識別子を行ラベルとして使用することができます。これは、桁 (0-9) を最初の文字として許容する唯一の識別子タイプです。ラベル名のみを指定します。(トリガで使用される) コロン接頭語を指定したり、パラメータの括弧をラベル名の後に指定したりしないでください。

type = 3 の場合、検証にパスした識別子をグローバル名およびプロセス・プライベート・グローバル名に使用することができます。ただし、グローバル名およびプロセス・プライベート・グローバル名には、ワイド文字を含めることはできません。$ZNAME は、ワイド文字をすべての名前検証タイプで有効な識別子文字であると判断します。そのため、type=3 の場合は、ワイド文字を含む識別子は $ZNAME 検証を通過しますが、グローバル名またはプロセス・プライベート・グローバル名として使用されると、<WIDE CHAR> エラーが生成されます。

type = 4 の場合、検証にパスした識別子をクラス名として使用することができます。クラス名にはピリオドを含めることができますが、ピリオドの直後に数字や別のピリオドを配置することはできません。ピリオドの使用のこれらの制限は、type=1 および type=3 の検証には適用されません。すべての type で、string の最初または最後の文字にピリオドがあると、有効な識別子になりません。

lang

検証に使用する言語モードを指定する整数コード。Caché は、現在の言語モードを変更することなく、指定された言語モードの規約を検証に適用します。(使用可能な現在の言語モードのリストについては、%SYSTEM.ProcessOpens in a new tab クラスの LanguageMode()Opens in a new tab メソッドを参照してください。)既定では、$ZNAME によって現在の言語モードの規約が使用されます。Caché のすべての言語モードでは同じ名前付け規約が使用されるため、lang=11 を指定する場合を除いて、lang を省略して既定を使用できます。

lang=11 を指定することで、Caché MVBasic ローカル変数を検証できます。$ZNAME(string,0,11) を指定すると、$ZNAME は、ローカル変数の MultiValue Basic の名前付け規約に従います。これは、ObjectScript のローカル変数の名前付け規約とは異なります。詳細は、"Caché MultiValue Basic Reference" の "User Variables" を参照してください。

以下の例では、$ZNAME 関数で式が True (1) であると検証される場合を示しています。最後の 2 つの例にはピリオドが含まれていることに注意してください。ピリオドは、ルーチン名 (type=1) およびグローバル名 (type=3) で使用できます。

   WRITE !,$ZNAME("A")
   WRITE !,$ZNAME("A1")
   WRITE !,$ZNAME("%A1",0)
   WRITE !,$ZNAME("%A1",1)
   WRITE !,$ZNAME("A.1",1)
   WRITE !,$ZNAME("A.1",3)

以下の例では、最初の $ZNAME は検証に失敗して 0 を返します。既定では、ローカル変数名を検証し、ローカル変数名の最初の文字に数字を使用できないからです。2 つ目の $ZNAME は、検証を通過して 1 を返します。type=2 はラベルの検証を指定し、ラベル名の最初の文字には数字が使用できるからです。

   WRITE "local var: ",$ZNAME("1A"),!
   WRITE "label: ",$ZNAME("1A",2)

以下の例では、すべての type 値の検証に失敗します。すべてのタイプの Caché で、名前の最初の文字以外ではパーセント記号を使用できません。

   FOR i=0:1:6 {
     WRITE "type ",i," is ",$ZNAME("A%1",i),!
   }

以下の例は、ローカル変数名に有効な 8 ビットの識別子の完全セットを示しています。この有効な識別子の文字には、文字 (英字) ASCII 192 から ASCII 255 (算術記号である ASCII 215 と ASCII 247 を除く) が含まれています。

   FOR n=1:1:255  {
   IF $ZNAME("A"_$CHAR(n),0) & $ZNAME($CHAR(n),0){
      WRITE !,$ZNAME($CHAR(n))," ASCII code=",n," Char.=",$CHAR(n) }
   ELSEIF $ZNAME($CHAR(n),0){
      WRITE !,$ZNAME($CHAR(n))," ASCII code=",n," 1st Char.=",$CHAR(n) }
   ELSEIF $ZNAME("A"_$CHAR(n),0){
      WRITE !,$ZNAME("A"_$CHAR(n))," ASCII code=",n," Subseq. Char.=",$CHAR(n) }
   ELSE { }
  }
   WRITE !,"All done"

以下の例は、Caché の Unicode インストールで検証を通過します。指定されたギリシャ文字は有効な Unicode 文字なので、$ZNAME 検証を通過します。ただし、この名前は、グローバルまたはプロセス・プライベート・グローバル (type=3) では使用できず、一部のロケール (日本語ロケールなど) では使用できません。

   IF $SYSTEM.Version.IsUnicode() {
     WRITE $C(913)_$C(961)_$C(947)_$C(959),!
     FOR i=0:1:6 {
       WRITE "type ",i," is ",$ZNAME($C(913)_$C(961)_$C(947)_$C(959),i),!
     }
   }
   ELSE {WRITE "This example requires a Unicode installation of Caché"}

SQL 識別子

SQL 識別子には、ObjectScript 識別子の有効文字ではない句読点文字 (アンダースコア (_)、アット記号 (@)、シャープ記号 (#)、ドル記号 ($)) が含まれる場合もあります。SQL ルーチン名では先頭文字以外にパーセント記号 (%) を使用できません。詳細は、"Caché SQL の使用法" の "識別子" を参照してください。

関連項目

FeedbackOpens in a new tab