ノーツ/ドミノの言語

2020-11-04に作成

 ノーツ/ドミノ(Notes/ Domino)で使用する主要な言語にはロータススクリプト(Lotus Script)とロータス式言語(Lotus 式言語、アットマーク関数)があります。ロータススクリプトは VBScript に似たところがある言語です。
 Windows上でノーツ/ドミノ サーバーを動かしていると、管理用のプログラムを VBScript や C# で書くことがあります。
 ここではこれらの言語をとりあげます。

所有者限定モードのためこのボードには投稿できません ボードとは?

””{}|| : 文字列定数をあらわす記号

Lotus Script 言語
  • ”文字列値”
  • {文字列値}
  • |文字列値|
VbScript 言語
  • ”文字列値”
Lotus 式言語
  • ”文字列値”
  • {文字列値}

Call : 関数を呼びます

Lotus Script 言語

() は省略できることが多いです
Call を省略するときは () も省略します
Call だけ省略し () を付けると、意味が変わります
次のとおり色々な書き方ができます

受け渡し値がないとき
* Call 関数名 ()
* Call 関数名
* 戻り値 = 関数名 ()
* 戻り値 = 関数名
* 関数名

受け渡し値があるとき(関数側の ByVal/ByRef 設定どおり)
* Call 関数名 (受け渡し値)
* Call 関数名 受け渡し値
* 戻り値 = 関数名 (受け渡し値)
* 関数名 受け渡し値

これはエラーになります
* 戻り値 = 関数名 受け渡し値

受け渡し値があるとき(常に ByVal を強制)
* 関数名 (受け渡し値) ’ Call を省略して () を付けます

VbScript 言語

Call を付けるときは () も付けます
Call を省略するときは () も省略します
Call だけ省略し () を付けると、意味が変わります
次のとおり色々な書き方ができます

受け渡し値がないとき
* Call 関数名 ()
* 戻り値 = 関数名 ()
* 関数名

受け渡し値があるとき(関数側の ByVal/ByRef 設定どおり)
* 戻り値 = 関数名 (受け渡し値)
* Call 関数名 (受け渡し値)
* 関数名 受け渡し値

受け渡し値があるとき(常に ByVal を強制)
* 関数名 (受け渡し値) ’ Call を省略して () を付けます

クラスの値を受け渡すと動作が変わります(アクセス権がどうの)

クラス名.パラメータ = 値
関数名 (クラス名.パラメータ) ’ クラス名.パラメータの値は変化しません

Argument in a Class 部分、ByRef and ByVal Parameters ページ

New : クラスからオブジェクトをつくります

New : クラスからオブジェクトをつくります

Lotus Script 言語
  • Set 変数 = New クラス名 ()
  • Set 変数 = New クラス名 (値)
  • Set 変数 = New クラス名
     ※最初に実行される New 関数は値を受け取ることができます
     ※New へ値を渡さないときは括弧を省略できます
VbScript 言語
  • Set 変数 = New クラス名
     ※最初に実行される Class_Initialize 関数は値を受け取ることができません
     ※クラス名のうしろに括弧をつけるとエラーになります

Const : 変更されない値に名前を設定します

Lotus Script 言語, VBScript 言語
  • Const 名前 = 値

注意
設定できる値部分には、計算式や変数を書くことができません
Const に限りませんが、標準で Lotus Script は Private になり、VBScript は Public になります

Class : クラスを定義します

Lotus Script 言語

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です

VbScript 言語

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.をつけるときがあります

& : 文字列連結演算子

Lotus Script 言語
  • 文字値 = 値 & 値
  • 文字値 = 文字値 + 文字値

注意
& は両辺が null のときに null を返します
+ は片方が null のときに null を返します
+ は数値とあわせて使うと、数値に変換できる文字値を数値へ変換して加算することがあります

演算子ではないところで使用される&記号
変数名や値の末尾に&を付けると、Long型ですよという意味になります(接尾辞)
&B、&O、&H は、それぞれ2進数、8進数、16進数ですよという意味になります(接頭辞)
演算子として&記号を書くときは、コンピューターが困惑しないように、&の前後に空白をはさむとよいでしょう

VbScript 言語
  • 文字値 = 値 & 値

注意
& は両辺が null のときに null を返します

演算子ではないところで使用される&記号
&O、&H は、それぞれ8進数、16進数ですよという意味になります
演算子として&記号を書くときは、コンピューターが困惑しないように、&の後に空白をはさむとよいでしょう

Lotus 式言語
  • 文字値 = 文字値 + 文字値

Rem : コメントを付けます

Lotus Script 言語
  • ’ 行末までコメント
  • Rem 行末までコメント
%REM
複数行コメント
%END REM

注意
%REM と %END REM は行の先頭から記載します

VbScript 言語
  • ’ 行末までコメント
  • Rem 行末までコメント
Lotus 式言語
  • REM {括弧で囲んだ範囲がコメント};
  • REM ”括弧で囲んだ範囲がコメント”;

Boolean,True,False : 論理型について

Lotus Script 言語
  • False は 数値の 0 と表すこともできます
  • True は 数値の -1 と表すこともできます
  • True と False を反転させるには Not を使います
  • Boolean型は False に初期化されます

注意
論理型を数値に置き換えると紛らわしいです
True や False を数値に置き換えることはできますが控えたほうが無難です

等しい

等しくない
<>, ><

VbScript 言語
  • False は 数値の 0 と表すこともできます
  • True は 数値の -1 と表すこともできます
  • True と False を反転させるには Not を使います

等しい

等しくない
<>

Lotus 式言語
  • @False は 数値の 0 と表すこともできます
  • @True は 数値の 1 と表すこともできます (Lotus Script 言語と異なります)
  • @True と @False を反転させるには !(びっくりマーク) を使います

反転(Not, !, ~しない, ~ではない)
重ねて使うと、否定の否定って何!?って、何だかわからなくなりそうです

等しい

等しくない
<>, ><, !=, =!

Asc,Uni,String,Chr,UChr,UString : 一文字を文字コードへ、またはその反対へ変換します

Lotus Script 言語
  • 数値 = Asc (プラットフォーム固有の文字値)
  • 数値 = Uni (ユニコード文字値)
  • プラットフォーム固有の一文字値 = Chr (数値)
  • プラットフォーム固有の一文字値 = String (1, 数値)
  • ユニコードの一文字値 = UChr (数値)
  • ユニコードの一文字値 = UString (1, 数値)
    Asc,Chr で扱う数値の範囲は 0 ~ 255
    String は一バイト文字または二バイト文字のコードのどちらでも使用できます
    Uni,UChr,UString で扱う数値の範囲は 0 ~ 65,535

エラーになる例
Asc (長さがゼロの文字値)
Asc (Null値)
UString (1, -1)
UString (1, 65536)

VbScript 言語
  • 数値 = Asc (文字値)
  • 一文字値 = Chr (数値)
Lotus 式言語
  • 文字値 = @Char (数値)
  • 文字の複数値 = @Char (数の複数値)
  • 改行 = @Char (10)
  • タブ = @Char (9)
    数値の範囲は 0 ~ 255

注意
@Ascii は Asc とは異なります
@Ascii はロータスマルチバイト文字セット (LMBCS) を ASCII文字にする関数です

Abs : 数値を符号のない絶対値へ変換します

Lotus Script 言語, VbScript 言語
  • 数値 = Abs (数値)
  • Null値 = Abs (Null値)

エラーになる例
Abs (複数値)
Abs (文字値)

Lotus 式言語
  • 数値 = @Abs (数値)
  • 数の複数値 = @Abs (数の複数値)