Basic 構文のカスタム関数の構文は、Visual Basic 関数の構文に非常に似ています。
Function name [(argList)] [As type]
[statements]
[name=expression]
[Exit Function]
...
End Function
必須要素です。これは関数の名前です。関数の作成時に指定した名前と同じであることが必要です。名前は、数字以外の文字で始まる必要があり、スペースを含むことはできません。使用できる記号はアンダースコアだけです。また、Basic 構文または Crystal 構文のキーワードと同じ名前を付けることはできません。
オプションの要素です。関数から返されるデータ値の型を表します。単純な Crystal Reports 型(数値、通貨、文字列、論理値、日付、時刻、日時)、または範囲変数(数値型範囲、通貨型範囲、文字列型範囲、日付型範囲、時刻型範囲、日時型範囲)の中のいずれかです。戻り値の型が省略されている場合は、name に対する最初の代入で使われている式の型によって判別されます(暗黙の型指定)。
注 戻り値の型を配列で返す場合は、それを明示的に指定する表記方法はないので、暗黙の型指定を使用する必要があります。
expression をname に代入して、関数から返される値を指定します。型が指定されている場合は、この部分はオプションです。型が指定されていない場合は、Crystal Reports が関数の戻り値の型を暗黙の型指定から認識するために必要なので、必ず指定します。
Exit Funciton ステートメントにより、Crystal Reports は直ちに関数を終了します。このステートメントは、関数の本文の任意の場所で、何回でも使用できます。
注 関数の開始部分よりも前、または関数宣言の終わりよりも後に入れることができるステートメントは、コメントだけです。コメントはアポストロフィまたは Rem で始まるステートメントです。
[オプション] varName [()] As varType [=defaultValue]
オプションの要素です。カスタム関数の呼び出し時に引数を省略できることを示します。ある引数をオプションにした場合は、その後に続く引数もすべてオプションにする必要があります。オプションの引数に値を指定する場合は、その前にあるすべての引数に対しても値を指定する必要があります。
必須要素です。引数を表す変数の名前を指定します。
オプションの要素です。これが指定されている場合、引数は配列変数であることを意味します。
必須要素です。配列変数の型を示します。argList の項で説明した、7 つの単純な型または 6 つの範囲変数のいずれかです。オプションのカッコ()が指定されている場合は、varType 型の要素をもつ配列型です。
オプションの引数の場合は必須です。dafaultValue は定数または定数式です。定数式とは、コンパイル時に定数値に単純化できる変数を含まない式です。関数の呼び出し時にオプションの引数が省略されると、その引数の値にはデフォルト値が使用されます。
注 Visual Basic とは異なり、引数がオプションの場合は必ずデフォルト値を指定する必要があります。
引数はすべて値で渡されます。Visual Basic では、引数は値渡しと参照渡しの両方を使用できます。デフォルトは参照渡しです。ただし、カスタム関数では参照引数はサポートされません。