LOTUSSCRIPT 言語


Declare ステートメント (外部 C 呼び出し)

外部 C 関数を呼び出す LotusScript の関数やサブルーチンを宣言して、C ルーチンの共有ライブラリで定義されている関数を呼び出せるようにします。

Declare ステートメント (外部 C 呼び出し) は OS/2 ではサポートされません。

構文

Declare [ Public | Private ] { Function | Sub } LSname Lib libName [ Alias aliasName ]
( [
argList ] ) [ As returnType ]

要素

Public | Private


Function | Sub
LSname
libName
aliasName
argList
returnType
使用法

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

外部関数の宣言は、モジュールレベルでのみ行えます。関数に戻り値のデータ型またはデータ型の接尾辞がないときは、エラーとなります。

「_」は、Lotus Notes 固有の DLL 用に予約されています。これは、Lotus Notes R4.5.1 で行われた変更です。Lotus Notes R4.5.1 以降で LotusScript を使用して DLL をロードしようとする場合に、DLL 名の前に下線が付いていると、「DLL 読み込み時のエラーです。」というエラーを受け取ります。

引数を渡す

既定では、引数は参照渡しで外部関数に渡されます。ByVal キーワードを使用して、引数を値で渡すこともできます。ただし、LotusScript が値を対応する C 関数の引数のデータ型に変換できるときに限ります。

配列、型変数、ユーザー定義オブジェクトは、参照渡ししなければなりません。

リストを引数として C 関数に渡すことはできません。

固定長の String 型を引数として渡すことはできません。

製品オブジェクトは、参照渡し (参照をインスタンスハンドルに渡す)、または値渡し (インスタンスハンドルそのものを渡す) できます。値渡しするには、キーワード ByVal を使用しなければなりません。実際の引数にカッコは使用できません。

Any 型は、引数のデータ型の制限を防げます。Any 型の引数は、内容に関係なく常に参照渡しです。Any 型として宣言されている C 関数の引数には、配列やリストを含む Variant 型を渡すことができます。

LMBCS または Unicode 文字列を使用する

オプションキーワードの LMBCS と Unicode を String 型の argument または returnType と一緒に使用すると、文字セットを指定できます。

Unicode は、プラットフォーム固有のバイト順を使用して 2 バイト文字 (単語) を指定します。

LMBCS は、LMBCS 最適化グループ 1 の文字列 (複数バイト文字) を指定します。

LMBCS も Unicode も指定しない場合、文字列変数にはプラットフォーム固有の文字セットが使用されます。

32 ビット版 Windows で提供されているライブラリ関数の呼び出し

32 ビット版 Windows を使用している場合は、提供されているライブラリの関数名では大文字と小文字が区別されますが、LotusScript の Declare ステートメントでは自動的に大文字に変換されてしまいます。提供されているライブラリの関数を正しく呼び出すには、Alias 節を使用して大文字と小文字を正確に区別して関数名を指定します (LotusScript では別名がそのまま残ります)。


関連項目