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?

変数

変数は、実行時の値を格納できる場所の名前です。変数には、ローカル変数、プロセス・プライベート・グローバル変数、およびグローバル変数の 3 つのタイプがあります。

変数名

Caché Basic の各変数には、スコープ・レベルで一意にその変数を識別する名前があります。変数名では、大文字と小文字が区別されます。変数名の長さに制限がなく、最初の 31 字内で (接頭語の文字数を除く) 一意の必要があります。変数には、複数レベルの添え字があります。

  • ローカル変数名は、先頭の文字をアルファベットまたはパーセント記号 (%) とします。2 番目以降の文字には、アルファベット文字、数字、およびアンダースコア文字 (_) を使用できます。ローカル変数のスコープは、現在のプロセスに制限されています。ローカル変数にはどのネームスペースからでもアクセスできます。以下は、すべて有効なローカル変数名です。

    a = 10
    A = 20
    a(1,3) = "subscripted"
    %A = "percent and letter"
    %5 = "percent and number"
    aa = "letters"
    a5 = "letter and number"
    aBcDeFgHiJkLmNoPqRsTuVwXyZ = "alphabet"
    a_e_i_o_u_ = "vowels"
    PrintLn "a = " & a
    PrintLn "A = " & A
    PrintLn "a(1,3) = " & a(1,3)
    PrintLn "%A = " & %A
    PrintLn "%5 = " & %5
    PrintLn "aa = " & aa
    PrintLn "a5 = " & a5
    PrintLn "aBc... = " & aBcDeFgHiJkLmNoPqRsTuVwXyZ
    PrintLn "a_e_i_o_u_ = " & a_e_i_o_u_

    ローカル変数名にはアンダースコア文字 (_) を使用できますが、ドット文字 (.) は使用できません。

  • Caché Basic におけるプロセス・プライベート・グローバルは、^||name または ^|"^"|name という構文形式をとります。Caché Basic では、プロセス・プライベート・グローバルについて、これ以外の構文形式はサポートされていません。プロセス・プライベート・グローバル名の先頭文字はアルファベットまたはパーセント文字 (%) とします。2 番目以降の文字には、アルファベット文字、数字、およびドット文字 (.) を使用できます。ドット文字 (ピリオド) は名前の先頭にも末尾にも使用できません。プロセス・プライベート・グローバルのスコープは、現在のプロセスに制限されています。プロセス・プライベート・グローバルには、どのネームスペースからでもアクセスできます。以下は、すべて有効なプロセス・プライベート・グローバル名です。

    ^||a = 10
    ^|"^"|A = 20
    ^||a(1,3) = "subscripted"
    ^||%A = "percent and letter"
    ^||%5 = "percent and number"
    ^||aa = "letters"
    ^||a5 = "letter and number"
    ^||aBcDeFgHiJkLmNoPqRsTuVwXyZ = "alphabet"
    ^||a.e.i.o.u = "vowels"
    PrintLn "^||a = " & ^||a
    PrintLn "^|"^"|A = " & ^|"^"|A
    PrintLn "^||a(1,3) = " & ^||a(1,3)
    PrintLn "^||%A = " & ^||%A
    PrintLn "^||%5 = " & ^||%5
    PrintLn "^||aa = " & ^||aa
    PrintLn "^||a5 = " & ^||a5
    PrintLn "^||aBc... = " & ^||aBcDeFgHiJkLmNoPqRsTuVwXyZ
    PrintLn "a.e.i.o.u = " & ^||a.e.i.o.u

    プロセス・プライベート・グローバル名にはドット文字 (.) を使用できますが、アンダースコア文字 (_) は使用できません。

  • Caché Basic におけるグローバルは、^name^|""|name、または ^|"namespace"|name という構文形式をとります。Caché Basic では、グローバルについて、角括弧を使用した構文形式はサポートされていません。グローバル名の先頭文字はアルファベットまたはパーセント文字 (%) とします。2 番目以降の文字には、アルファベット文字、数字、およびドット文字 (.) を使用できます。ドット文字 (ピリオド) は名前の先頭にも末尾にも使用できません。グローバルのスコープは、それを作成したプロセスに制限されていません。グローバルはデータベースに格納され、すべてのプロセスで見ることができます。グローバルは、それを作成したプロセスが終了しても存続します。グローバルはネームスペースに固有であるため、グローバルにアクセスするにはそのネームスペースからアクセスするか、そのネームスペースを参照する必要があります。以下は、すべて有効なグローバル名です。

    ^a = 10
    ^|"samples"|A = 20
    ^a(1,3) = "subscripted"
    ^%A = "percent and letter"
    ^%5 = "percent and number"
    ^|""|aa = "letters"
    ^a5 = "letter and number"
    ^aBcDeFgHiJkLmNoPqRsTuVwXyZ = "alphabet"
    ^a.e.i.o.u = "vowels"
    PrintLn "^a = " & ^a
    PrintLn "^A = " & ^|"samples"|A
    PrintLn "^a(1,3) = " & ^a(1,3)
    PrintLn "^%A = " & ^%A
    PrintLn "^%5 = " & ^%5
    PrintLn "^aa = " & ^|""|aa
    PrintLn "^a5 = " & ^a5
    PrintLn "^aBc... = " & ^aBcDeFgHiJkLmNoPqRsTuVwXyZ
    PrintLn "a.e.i.o.u = " & ^a.e.i.o.u

    グローバル名にはドット文字 (.) を使用できますが、アンダースコア文字 (_) は使用できません。

パーセント変数およびシステム名の詳細は、"Caché プログラミング入門ガイド" の “識別子のルールとガイドライン” を参照してください。配列の添え字としてのグローバルの使用に関する詳細は、"Caché グローバルの使用法" を参照してください。

変数タイプの決定

Caché Basic の変数は、ObjectScript、JavaScript および VBScript と同様にタイプは未定義です。したがって、文字列値を変数に代入し、その後同じ変数に数値を代入できます。Caché は、使用されるコンテキストを基にして、変数の値を他のタイプに自動的に変換します。

さまざまなタイプ間での変換は、ObjectScript と同様の規則を使用して実行されます。

Caché Basic 変換規則
変換元 変換先 規則
番号 オブジェクト 許可されていません。
番号 文字列 数字は、数値に対応する数値文字列に変換されます。例えば、22 は “22” になります。
オブジェクト 番号 オブジェクト参照は、整数の値がオブジェクト・インスタンス番号の整数に変換されます。
オブジェクト 文字列 オブジェクト参照は、“oref@classname” の形式で文字列に変換されます。oref はオブジェクト・インスタンス番号で、classname はオブジェクトのタイプを示しています。
文字列 番号 文字列は左から右へ解析されます。数値以外の文字に遭遇すると解析は停止します。先行する数値文字は、対応する数値文字に変換されます。先行する数値文字がない場合、文字列は 0 に変換されます。例えば、“123” は 123、“123abc” は 123、“abc123” は 0 に変換されます。
文字列 オブジェクト 許可されていません。

変数の宣言

Caché Basic では、変数を宣言する必要はありません。コンパイラを使用して、宣言されていない変数を検知したい場合は、プログラムの最初で Option Explicit 節を使用します。すべての変数を宣言する必要がある場合は、Dim 文を使用します。

Option Explicit
Dim a

変数の有効範囲

Caché Basic で使用されている変数は、プロシージャや関数の中で Dim 文を使用してその変数が明示的に宣言されていない限り、ルーチン内で見ることができます。

既定の変数値

変数は最初に作成されたときはです。つまり、変数には値が割り当てられていません。空の変数は、数値コンテキストでは 0、文字列コンテキストでは長さゼロで表します。ObjectScript とは異なり、未定義の変数の呼び出しによってエラーが発生することはありません。値が割り当てられていない変数の呼び出しでは、空の (NULL) 文字列が返されます。

変数の最大数

Caché Basic ルーチンは、最大 32,759 個のプライベート変数と、最大 65,280 個のパブリック変数を持つことができます。これらの制限を超えると、コンパイル・エラーが発生します。

FeedbackOpens in a new tab