ユーザー定義の定数

LotusScript® で認識できるスカラーデータ型を使用する限り、ユーザーはモジュールまたはプロシージャ内で独自の定数を定義できます。定数は、次の構文を使用して定義します。

[Public | Private] Const constName = expression

それぞれの意味は次のとおりです。

要素

説明

Public、Private

プロシージャ内ではなくモジュールレベルで定数を宣言するときのみ使用できます。Public は、定数が定義されたモジュールの外でも使用できることを意味します。Private は、定数が定義されたモジュールの中だけで使用できることを意味します。既定では、定数は Private です。

constName

定数の名前です。名前にはデータ型の接尾辞を付けることができ、LotusScript の有効な識別子でなければなりません (「スクリプトとステートメントの作成規則」を参照してください)。別の定数、変数、または同一モジュール内で使用される同じスコープのプロシージャと同じ名前であってはいけません。

expression

定数の値を示す式です。式にはリテラルや他の定数を指定できます。式では、算術演算子と論理演算子を使用できます。LotusScript 関数 (Abs や UCase$ など) は、コンパイル時に評価が可能で、その引数 (ある場合) が定数であれば、式に使用できます。

データ型の接尾辞を constName の最後に付けることにより、特定のデータ型になるように定数を定義できます。

接尾辞

データ型

%

整数

&

Long

!

Single 型

#

二重線

@

通貨

$

文字列

以下に例を示します。

' Define a String constant, MYNAME.
Const MYNAME$ = "Andrea"
' Define a Single constant, MYPERCENT.
Const MYPERCENT! = 0.125
' Define a Currency constant, MYMONEY.
Const MYMONEY@ = 123.45

代替方法として、定数が数値であり、expression が数値リテラルである場合、expression に適切なデータ型の接尾辞を付けることにより、特定の数値データ型を指定できます。以下に例を示します。

' Define a Currency constant, MYCUR, with the value 123.45.
Const MYCUR = 123.45@

constName または式に接尾辞を付けない場合、expression の値によって定数のデータ型が決まります。

以下に例を示します。

Const MYNAME = "Sara"
' MYNAME is a constant of type String.
Const MYDOUBLE = 123.45
' MYDOUBLE is a constant of type Double.
Const MYINT = 123
' MYINT is an constant of type Integer.
Const MYLONG = 123456
' MYLONG is a constant of type Long.

定数を定義する Const ステートメントで接尾辞を使用したかどうかに関係なく、LotusScript アプリケーションで定数を参照する際は、常にデータ型の接尾辞を付けられます。接尾辞を使用する必要はありませんが、使用したほうがコードが読みやすくなります。

以下に例を示します。

Const MYADDRESS$ = "722 Smith Place"
Print MYADDRESS
' Output: 722 Smith Place
Const YOURADDRESS = "75 rue St. Viateur"
Print YOURADDRESS$
' Output: 75 rue St. Viateur
' Print MYADDRESS%, YOURADDRESS@ would cause an error.

定数のデータ型をチェックする

TypeName または DataType という LotusScript 関数のいずれかを呼び出すことにより、定数のデータ型を調べられます。TypeName は、調べようとしている式のデータ型を示す文字列を返します。DataType は、式のデータ型を表す数値を返します。

以下に例を示します。

Const MYMONEY@ = 123.45
Const MOREMONEY = MYMONEY * 2
Print TypeName(MOREMONEY)
' Output: CURRENCY
Print DataType(MOREMONEY)
' Output: 6

定数のスコープ

変数と同様に、プロシージャ内またはモジュールレベル (プロシージャ、ユーザー定義のデータ型、またはクラスの定義の外) で定数を定義できます。プロシージャ内で定義する定数は、プロシージャ自体がモジュール全体またはアプリケーション全体で有効であったとしても、そのプロシージャの中だけで有効です。定数がプロシージャの外部で定義された定数や変数と同じ名前である場合、プロシージャ内での参照は、狭い方のスコープを持つ定数に適用する名前として解釈され、広い方のスコープを持つ定数や変数は無視されます。

以下に例を示します。

Const MYINT% = 10
' This MYINT% is defined at module level.
Sub MySub
   Const MYINT% = 100
   ' This MYINT% is defined within a procedure.
   Print MYINT%
End Sub
Call MySub
' Output: 100 
Print MYINT%
' Output: 10 

既定では、モジュールレベルで定義する定数は Private となり、そのモジュール内だけで有効です。この既定を無効にして定数をアプリケーション内の他のモジュールでも有効にするには、次のいずれかの方法を使用します。

別のモジュールで定義された Public 定数にアクセスするには、そのモジュールをコンパイルし、アクセスする側のモジュール内の Use ステートメントで、コンパイルしたモジュールを参照します(これは、定数、変数、プロシージャ、ユーザー定義のデータ型、クラス定義のどれであれ、Public として定義した項目にはこの方法でアクセスします)。例えば、モジュール A の Public 定数にモジュール B からアクセスするには、モジュール A をコンパイルし、次のステートメントをモジュール B に含めます。

Use "A"