式の中では、まず変数を宣言しないと、その変数を使用することができません。変数は、指定された型の値を保持できます。利用できる型は、7 つの単純型(数値型、通貨型、文字列型、論理値型、日付型、時刻型、日時型)、6 つの範囲変数(数値型範囲、通貨型範囲、文字列型範囲、日付型範囲、時刻型範囲、日時型範囲)、およびこれらの型の配列を保持する変数です。したがって、変数が保持できる型は全部で 26 種類になります。
変数を宣言する場合は、変数名も指定します。変数に、関数名、演算子名、または Crystal 構文で有効なほかのキーワードと同じ名前を付けることはできません。たとえば、変数に Sin、Mod、If などの名前を付けることはできません。なぜなら、Sin は組み込みの関数、Mod は組み込みの演算子、If は組み込みのキーワードだからです。式エディタを使って式を入力している場合、組み込みの関数、演算子、およびそのほかのキーワードを入力すると、それらは異なる色で強調表示されるので、変数名が衝突しているかどうかを確認することは簡単です。
宣言された変数は、式の中で使用できます。たとえば、初期値を代入できます。
Local NumberVar x; //x を数値型の変数として宣言します x := 10; //x に値 10 を代入します
注 数値型の変数を宣言するためのキーワードの末尾には Var が付きます。これは、Crystal 構文のどの変数型についても同じです。
変数は 1 つの型の値しか保持できません。たとえば、変数が数値型の値を保持している場合、後でその変数を使って文字列値を保持することはできません。
例
Local StringVar y; y := "こんにちは"; //OK - Length 関数は文字列型の引数をとります Length (y); //エラー - y は文字列型の値しか保持できません y := #Jan 5, 1993#; //エラー - y は文字列型の値しか保持できません y := ["a", "bb", "ccc"]; //エラー - Sin 関数は数値型の引数をとります Sin (y);
1 つの式の中で、変数の宣言とその変数への値の代入を組み合わせることができます。例 :
Local NumberVar x := 10 + 20; Local StringVar y := "Hello" + " " + "World"; Local DateVar z := CDate (#Sept 20, 1999#); Local NumberVar Range gradeA := 90 To 100;
この方が効率的であり、よくある変数の誤った初期化を防ぐことにも役立つので、これを習慣にするのがよい方法です。
範囲変数の宣言および初期化の例をさらにいくつか示します。
Local NumberVar Range gradeA; Local DateVar Range quarter; gradeA := 90 To 100; quarter := CDate (1999, 10, 1) To CDate (1999, 12, 31);