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