Declare ステートメント (前方参照) (LotusScript 言語)

プロシージャ (関数、サブルーチン、またはプロパティ) への前方参照を宣言して、まだ定義されていないプロシージャを呼び出せるようにします。

構文

Declare [ Static ] [ Public | Private ] procType procName [ ( [ argList ] ) ] [ As returnType ]

要素

Static

オプション。プロシージャのローカル変数の値が、プロシージャの呼び出しの間に保存されるように指定します。

このキーワードがある場合、キーワードはプロシージャの定義でも指定されていなければなりません。

Public | Private

オプション。Public は、そのモジュールがロードされている限り、宣言したプロシージャが別のモジュールから参照できることを示します。このキーワードがある場合、キーワードはプロシージャの定義でも指定されていなければなりません。

Private は、宣言されたプロシージャがこのモジュール内でしか利用できないことを示します。このキーワードがある場合、キーワードはプロシージャの定義でも指定されていなければなりません。

procType

プロシージャの種類を識別する次の 4 つのキーワード句のいずれかです。

Function、Sub、Property Get、Property Set

procName

関数、サブルーチン、またはプロパティの名前。procType が Function (宣言される関数) のときは、procName にデータ型の接尾辞を追加して、関数の戻り値の型を宣言できます。

argList

プロシージャの引数宣言をカンマで区切ったリストです。プロシージャは、関数またはサブルーチンでなければなりません (procType は Function または Sub でなければなりません)。引数の宣言は、関数またはサブルーチンの定義の中の引数宣言と正確に一致しなければなりません。

各引数の宣言の構文は次のとおりです。

[ ByVal ] argument [ ( ) | List ] [ As type ]

ByVal は、argument が値渡しされることを意味します。argument に代入された値は、その値へのポインタではなく、メモリ内の値のローカルコピーです。

argument () は引数の変数です。argument Listargument をリスト変数として識別します。それ以外の場合、argument には LotusScript® でサポートされるどの型の変数でも指定できます。

As dataType は変数のデータ型を指定します。この節を省略し、データ型の接尾辞を使用して、変数をスカラーデータ型の 1 つとして宣言できます。この節を省略し、argument の末尾にデータ型の接尾辞を付けなければ (同時に、既存の Deftype ステートメントで処理されなければ)、データ型は Variant 型となります。

引数宣言のリスト全体をカッコで囲みます。

returnType

関数の戻り値の型です。returnType は関数では省略できますが、サブルーチンやプロパティでは値を返さなければならないため、省略できません。returnType は、関数定義で指定された戻り値の型と一致していなければなりません。戻り値は変換されません。

As returnType を省略すると、戻り値の型は procName (関数名) に追加されたデータ型の接尾辞によって決まります。returnType とデータ型の接尾辞は、一方しか指定できません。

As returnType を省略し、procName にデータ型の接尾辞を追加しない場合、Variant 型の値、または Deftype ステートメントで指定されたデータ型の値が返されます。

使用法

IDE はプロシージャの前方宣言を暗黙的に生成します。前方宣言を IDE に直接入力する必要はなく、入力すると構文エラーになります。プロシージャの前方宣言を含むファイルを、%Include を指定して別ファイルに組み込めます。クラスのプロパティとメソッドの前方宣言は、IDE に直接入力できます。

Public キーワードは、クラスのメンバを宣言するときを除いて、アプリケーションオブジェクトのスクリプトに直接記述したり、アプリケーションオブジェクトスクリプトの %Include ファイル内で使用することはできません。Public 宣言は (Globals) で使用してください。

前方宣言は、モジュール単位またはクラス内でのみ行えます。

プロシージャがあるときは、前方宣言と同じスコープ内で定義しなければなりません。プロシージャに前方宣言があっても定義されていない場合は、エラーになりません。宣言されていても定義されていないプロシージャを呼び出そうとするとエラーとなります。

クラス定義の中で宣言されたプロシージャは、Static として宣言できません。

Property Get 前方宣言で使用する Static、Public、Private キーワードは、それに対応する Property Set 前方宣言で使用されていれば、それと一致していなければなりません。