変数
変数は、実行時の値を格納できる場所の名前です。変数には、ローカル変数、プロセス・プライベート・グローバル変数、およびグローバル変数の 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 と同様の規則を使用して実行されます。
変換元 | 変換先 | 規則 |
---|---|---|
番号 | オブジェクト | 許可されていません。 |
番号 | 文字列 | 数字は、数値に対応する数値文字列に変換されます。例えば、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 個のパブリック変数を持つことができます。これらの制限を超えると、コンパイル・エラーが発生します。