ノーツ/ドミノ(Notes/ Domino)で使用する主要な言語にはロータススクリプト(Lotus Script)とロータス式言語(Lotus 式言語、アットマーク関数)があります。ロータススクリプトは VBScript に似たところがある言語です。
Windows上でノーツ/ドミノ サーバーを動かしていると、管理用のプログラムを VBScript や C# で書くことがあります。
ここではこれらの言語をとりあげます。
Do ’ Exit や Goto がなれけば永遠に Do~Loop の中を繰り返します
Exit Do ’ 直近の Do から抜けることができます
Loop
Do While 式 ’ 式が True のうちは Do~Loop の中を繰り返します
Exit Do ’ 直近の Do から抜けることができます
Loop
Do Until 式 ’ 式が False のうちは Do~Loop の中を繰り返します
Exit Do ’ 直近の Do から抜けることができます
Loop
Do
Exit Do ’ 直近の Do から抜けることができます
Loop While 式 ’ 式が True のうちは Do~Loop の中を繰り返します
Do
Exit Do ’ 直近の Do から抜けることができます
Loop Until 式 ’ 式が False のうちは Do~Loop の中を繰り返します
While 式 ’ 式が True のうちは While~Wend の中を繰り返します
’ Exit を使えません
Wend
注意
@Do (式1; ...; 式最大254);
※名前は似ていますが @Do には条件式がないため繰り返しません
注意
ノーツ/ドミノ サーバーに配置したアプリは、再コンパイルなしで複数のプラットフォームで動作します
注意
Variant型変数を Empty に戻すには、未使用の Variant型変数を利用します
例: Variant型変数 = 宣言したまま使用していない Variant型変数
注意
Variant型変数を Empty に戻すには、Empty を使用します
例: Variant型変数 = Empty
() は省略できることが多いです
Call を省略するときは () も省略します
Call だけ省略し () を付けると、意味が変わります
次のとおり色々な書き方ができます
受け渡し値がないとき
* Call 関数名 ()
* Call 関数名
* 戻り値 = 関数名 ()
* 戻り値 = 関数名
* 関数名
受け渡し値があるとき(関数側の ByVal/ByRef 設定どおり)
* Call 関数名 (受け渡し値)
* Call 関数名 受け渡し値
* 戻り値 = 関数名 (受け渡し値)
* 関数名 受け渡し値
これはエラーになります
* 戻り値 = 関数名 受け渡し値
受け渡し値があるとき(常に ByVal を強制)
* 関数名 (受け渡し値) ’ Call を省略して () を付けます
Call を付けるときは () も付けます
Call を省略するときは () も省略します
Call だけ省略し () を付けると、意味が変わります
次のとおり色々な書き方ができます
受け渡し値がないとき
* Call 関数名 ()
* 戻り値 = 関数名 ()
* 関数名
受け渡し値があるとき(関数側の ByVal/ByRef 設定どおり)
* 戻り値 = 関数名 (受け渡し値)
* Call 関数名 (受け渡し値)
* 関数名 受け渡し値
受け渡し値があるとき(常に ByVal を強制)
* 関数名 (受け渡し値) ’ Call を省略して () を付けます
クラスの値を受け渡すと動作が変わります(アクセス権がどうの)
クラス名.パラメータ = 値
関数名 (クラス名.パラメータ) ’ クラス名.パラメータの値は変化しません
New : クラスからオブジェクトをつくります
注意
設定できる値部分には、計算式や変数を書くことができません
Const に限りませんが、標準で Lotus Script は Private になり、VBScript は Public になります
Forall 参照変数 In 変数
キー = ListTag (参照変数)
値 = 参照変数
End Forall
※参照変数は Forall で有効な特別な変数で Dim で宣言しません
※参照変数を更新すると In に続く変数の値が更新されます
Forall : 値の数だけ繰り返します
* キーを削除 : Erase 変数名 (キー)
* キーをすべて削除 : Erase 変数名
※キーは文字値になります
※一般的に List は配列よりも多くの値を保存できます
連想配列の機能がありません
Class クラス名 As 元クラス ’別のクラスから引き継ぐことができます
’最初に実行されます
Sub New (変数名 As 型).元クラス (変数名 As 型) ’値を受け取ることができます
End Sub
’最後に実行されます
Sub Delete ()
End Sub
Public Sub 戻り値がない関数名 (変数名 As 型)
End Sub
Public Function 戻り値がある関数名 (変数名 As 型) As 型
Me.戻り値がある関数名 = 戻り値 ’値を返します
End Function
Public Property Set プロパティ名 As 型
変数名 = Me.プロパティ名 ’値を受け取ります
End Property
Public Property Get プロパティ名 As 型
Me.プロパティ名 = 戻り値 ’値を返します
End Property
End Class
※基本は Private、ByRef です。現在のクラスにある関数名、プロパティ名、変数名の先頭に Me.をつけておけばOKです
Class クラス名 ’独立したクラスとして作成します
’最初に実行されます
Sub Class_Initialize () ’値を受け取れません
End Sub
’最後に実行されます
Sub Class_Terminate ()
End Sub
Sub 戻り値がない関数名 (変数名)
End Sub
Function 戻り値がある関数名 (変数名)
戻り値がある関数名 = 戻り値 ’値を返します
End Function
Public Property Set プロパティ名 ’Set はオブジェクトを受け取ります
Set 変数名 = プロパティ名 ’値を受け取ります
End Property
Public Property Let プロパティ名 ’Let はオブジェクト以外を受け取ります
変数名 = プロパティ名 ’値を受け取ります
End Property
Public Property Get プロパティ名
プロパティ名 = 戻り値 ’値を返します
End Property
End Class
めい
※基本は Public、ByRef です。現在のクラスにあるプロパティ名の先頭に Me.をつけるときがあります
注意
& は両辺が null のときに null を返します
+ は片方が null のときに null を返します
+ は数値とあわせて使うと、数値に変換できる文字値を数値へ変換して加算することがあります演算子ではないところで使用される&記号
変数名や値の末尾に&を付けると、Long型ですよという意味になります(接尾辞)
&B、&O、&H は、それぞれ2進数、8進数、16進数ですよという意味になります(接頭辞)
演算子として&記号を書くときは、コンピューターが困惑しないように、&の前後に空白をはさむとよいでしょう
注意
& は両辺が null のときに null を返します演算子ではないところで使用される&記号
&O、&H は、それぞれ8進数、16進数ですよという意味になります
演算子として&記号を書くときは、コンピューターが困惑しないように、&の後に空白をはさむとよいでしょう
エラーになる例
ArrayAppend (単数値, 単数値または配列)
動的配列とは
Lotus Script の配列は2種類あります
ひとつは Redim で値の数を変更できる動的配列、もうひとつは値の数を変えられない静的配列です
既存の配列に値を追加する方法
動的配列に入る値の数を変更するには Redim Preserve 配列名 (上限値) を使用します
初期値では下限値が 0 となっているため、上限値を 1 にすると配列の値の数は (0) と (1) の2つになります
Preserve キーワードを忘れると、配列の値が初期化されます
新しく増やした部分に値を入れるには 配列名 (Ubound (配列名)) = 値 とします
Lotus Script 言語の既存の配列に値を追加する方法でおこないます
%REM
複数行コメント
%END REM
注意
%REM と %END REM は行の先頭から記載します
注意
論理型を数値に置き換えると紛らわしいです
True や False を数値に置き換えることはできますが控えたほうが無難です
等しい
=
等しくない
<>, ><
等しい
=
等しくない
<>
反転(Not, !, ~しない, ~ではない)
重ねて使うと、否定の否定って何!?って、何だかわからなくなりそうです
等しい
=
等しくない
<>, ><, !=, =!
エラーになる例
Asc (長さがゼロの文字値)
Asc (Null値)
UString (1, -1)
UString (1, 65536)
注意
@Ascii は Asc とは異なります
@Ascii はロータスマルチバイト文字セット (LMBCS) を ASCII文字にする関数です