ノーツ/ドミノ(Notes/ Domino)で使用する主要な言語にはロータススクリプト(Lotus Script)とロータス式言語(Lotus 式言語、アットマーク関数)があります。ロータススクリプトは VBScript に似たところがある言語です。
Windows上でノーツ/ドミノ サーバーを動かしていると、管理用のプログラムを VBScript や C# で書くことがあります。
ここではこれらの言語をとりあげます。
日時の形式の例
2020/11/29 = Format (Now, {Short Date})
※オペレーティングシステムで指定された日付形式になります
14:51 = Format (Now, {Short Time})
※オペレーティングシステムで指定された時刻形式になります
2020/11/29 14:51:06 = Format (Now, {yyyy/mm/dd hh:mm:ss})
11/29 11:06 = Format (Now, {mm/dd mm:ss})
02:51:06 PM = Format (Now, {hh:mm:ss AM/PM})
※月と時はどちらもmmで指定しますが、hhのあとのmmは時と解釈されます
※スラッシュ(/)とコロン(:)はオペレーティングシステムで指定された記号に変換されます
※AM/PMと記載するとhhは01~12になり、AMまたはPMが付加されます
※am/pmと小文字で記載すると、amまたはpmが付加されます
2020/11/29 14:51:06 = Format (Now, {General Date})
日時の形式の例
2020/11/29 14:51:06 = @Text (@Now);
2020/11/29 14:51:06 = @Text (@Now; {S2});
2020/11/29 = @Text (@Now; {S0});
14:51:06 = @Text (@Now; {S1});
14:51 = @Text (@Now; {T1});
数値の形式の例
¥123,457 = Format (123456.789, {Currency})
123,456.79 = Format (123456.789, {Standard})
12345678.90% = Format (123456.789, {Percent})
1.23E+05 = Format (123456.789, {Scientific})
98% = Format (0.98, {#0%})
¥123,456. = Format (123456, {$#,##0.})
※桁区切記号(,)、小数点(.)、通貨記号($)はオペレーティングシステムで指定された記号に変換されます
数値の形式の例
123456.789 = @Text (123456.789);
123456.79 = @Text (123456.789, {F});
1.23E+05 = @Text (123456.789, {S});
\123456.79 = @Text (123456.789, {C});
123,456.789 = @Text (123456.789, {,});
123,45678.9 = @Text (123456.789, {%});
戻り値の要素数
-1 : 指定なし。すべての区切記号で分割
0 : 戻り値に値なし。戻り値の要素数は無し
1 : 分割なし。戻り値の要素数は-1と同じ
2 : 最初の区切記号だけで2つに分割。戻り値の要素数は2つまで
3 : 最初と2つ目の区切記号だけで3つに分割。戻り値の要素数は3つまで
評価方法
0 : 大文字小文字、全角半角を区別します
1 : 大文字小文字を区別しません
4 : 全角半角を区別しません
5 : 大文字小文字、全角半角を区別しません
評価方法
0 : バイナリーモード
1 : テキストモード(大文字小文字を区別しません)
区切記号
区切記号の長さは1文字です
区切記号に「ab」を指定すると「a」と「b」が区切記号になります
戻り値にブランクを含めるか?
False : (初期値)文字列の最初や最後に区切記号がある、または区切記号が連続しているとき、戻り値にブランクが含まれないようにします
True : 戻り値からブランを取り除きません
改行を区切り記号として扱うか?
True : (初期値)改行を区切記号に含めます
False : 改行は区切記号ではありません
注意
クライアントで実行しているときはステータスバーへ表示し、サーバーで実行しているときはログ(log.nsf)へ記録します
ステータスバーへ表示されるメッセージをログへ記録するには notes.ini に LogStatusBar=1 を設定します
ログをテキスト形式のコンソールログ(console.log)にも記録するには notes.ini に Console_Log_Enabled=1 を設定します
コマンドプロンプトから実行する CScript モードのとき
WScript.echo 値
WScript.StdOut.WriteLine 値
WScript.StdOut.Write 値 ' 改行が追加されません
※標準出力へ表示されますダブルクリックで実行する WScript モードのとき
WScript.echo 値
※ダイアログボックスが表示されます
@StatusBar (値);
注意
クライアントで実行しているときはステータスバーへ表示し、サーバーで実行しているときはログ(log.nsf)へ記録します
ステータスバーへ表示されるメッセージをログへ記録するには notes.ini に LogStatusBar=1 を設定します
ログをテキスト形式のコンソールログ(console.log)にも記録するには notes.ini に Console_Log_Enabled=1 を設定します
例:
Forall 参照変数 In 複数値
式
Exit Forall ' Forall から抜け出します
End Forall
注意
参照変数は Forall で使用する特別な変数で、Dim では宣言できません
参照変数の値を書き換えると In に続く複数値が変更されます
List : キーと値のペアで記憶する連想配列(辞書、ディクショナリー)を使います
For Each 変数名 In 複数値
式
Exit For ' For から抜け出します
Next
左側から検索される文字値を検索します
文字値 = StrLeft (検索される文字値,検索値,比較方法,何番目の検索値?)
文字値 = StrLeft (検索される文字値,検索値,比較方法)
文字値 = StrLeft (検索される文字値,検索値)
右側から検索される文字値を検索します
文字値 = StrLeftBack (検索される文字値,検索値,比較方法,何番目の検索値?)
文字値 = StrLeftBack (検索される文字値,検索値,比較方法)
文字値 = StrLeftBack (検索される文字値,検索値)
比較方法
0 = 大文字小文字、全角半角を区別します
1 = 大文字小文字を区別しません
4 = 全角半角を区別しません
5 = 大文字小文字、全角半角を区別しません
戻り値には検索値を含みません
例: {ABCAB} = Strleft ({ABCABC},{c},1,2)
左側から検索される文字値を検索します
文字値 = @Left (検索される文字値,検索値)
右側から検索される文字値を検索します
文字値 = @LeftBack (検索される文字値,検索値)
戻り値には検索値を含みません
例: {AB} = @Left ({ABCABC},{C})
大文字小文字、全角半角を区別します
例: {ABCab} = @Left ({ABCabc},{c})
例: 1899/12/30 00:00:00 = Cdat (0)
日時値 = @TextToTime (日時に変換できる文字値);
時刻値 = @ToTime (時刻に変換できる値);
日時値 = @Time (日時に変換できる値);
日時値 = @Time (年; 月; 日);
日時値 = @Time (年; 月; 日; 時; 分; 秒);
エラーが発生したときにどうするか定義します
On Error Resume Next
On Error Goto ラベル
例:
On Error Goto ラベル
処理
Exit Sub
ラベル:
エラー処理
Resume Next ’ エラーの次の行へ戻る
似ている命令
On 番号 Goto ラベル1, ラベル2, ... ’ 番号によって異なるラベルへ制御を移す命令です。番号がゼロのときは何もしません
例 : On Err Goto ラベル ’ Err 変数の値(初期値は0)によってラベルへ制御を移します
初期化
Call Err.Clear ()
※ On Error や Exit でも Err が初期化されます
On Error は Resume Next だけです
On Error Resume Next
注意
最初の On Error より前は Err オブジェクトが存在しません
例:
On Error Resume Next
Call Err.Clear ()
処理
If 0 <> Err.Number Then
エラー処理
Call Err.Clear ()
End If
例 : @If (@IsError (評価式); エラー時の式; 正常時の式);
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 : クラスからオブジェクトをつくります