LOTUSSCRIPT 言語


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

[Public | Private] Const constName = expression

それぞれの意味は次のとおりです。
要素説明
Public、Privateプロシージャ内ではなくモジュールレベルで定数を宣言するときのみ使用できます。Public は、定数が定義されたモジュールの外でも使用できることを意味します。Private は、定数が定義されたモジュールの中だけで使用できることを意味します。既定では、定数は Private です。
constName定数の名前です。名前にはデータ型の接尾辞を付けることができ、LotusScript の有効な識別子でなければなりません (「スクリプトとステートメントの作成規則」を参照してください)。別の定数、変数、または同一モジュール内で使用される同じスコープのプロシージャと同じ名前であってはいけません。
expression定数の値を示す式です。式にはリテラルや他の定数を指定できます。式では、算術演算子と論理演算子を使用できます。LotusScript 関数 (Abs や UCase$ など) は、コンパイル時に評価が可能で、その引数 (ある場合) が定数であれば、式に使用できます。
データ型の接尾辞を constName の最後に付けることにより、特定のデータ型になるように定数を定義できます。
接尾辞データ型
%Integer 型
&Long 型
!Single 型
#Double 型
@Currency 型
$String 型
以下に例を示します。

' 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"

関連項目