タグ: Lotus Script

  • [言語比較]切り上げ・切り捨て・四捨五入

    [言語比較]切り上げ・切り捨て・四捨五入

    Excel

     切り上げ

    =ROUNDUP(数値,桁数)
     「数値」:切り上げしたい数値または、セルの位置を指定します。
     「桁数」:切り上げしたい桁数を指定します。

    切り捨て

    =ROUNDDOWN(数値,桁数)
    =TRUNK(数値,桁数)
     「数値」:切り捨てしたい数値またはセルの位置を指定します。
     「桁数」:切り捨てしたい桁数を指定します。※桁数のあつかいに関しては、ROUND 関数と同様です。
    
    =INT(数値)
    =TRUNK(数値)
     小数点以下の数値を切り捨てて整数にするときに使う関数です。

    四捨五入

    =ROUND(数値,桁数)
     「数値」:四捨五入したい数値または、セルの位置を指定します。
     「桁数」:四捨五入したい桁数を整数で指定します。指定した桁数のひとつ下の桁が四捨五入されます。

    Java

    整数除算

    整数 = 整数 / 整数;
     整数(intやlong)同士の割り算(/)の結果は整数になります

    Lotus Script

    切り捨て

    整数 = Fix(数値)
     絶対値が小さい方向に丸めます
     (例)98 = Fix(98.7)
     (例)-98 = Fix(-98.7)
    整数 = Int(数値)
     値が小さいほうに丸めます
     (例)98 = Fix(98.7)
     (例)-99 = Fix(-98.7)

    整数除算

    数値 = 整数 ¥ 整数
     ¥(エンマーク)での割り算は、割り算をする前に値を整数にします
     3÷3.3は、3÷3としてから割り算されます

    Lotus 式言語

    切り捨て

    整数 = @Integer(数値)
  • [言語比較]プログラムのファイルパス

    [言語比較]プログラムのファイルパス

     今動いているプログラムファイルのパス(ディレクトリとファイル)を取得してみましょう。現在のプログラムファイルであって、カレントディレクトリとは異なります

    C#

     いくつかの方法があります。プログラムを使用する環境で正しい値が返ってくることを確認しましょう

    // .NET5 以降のばあい(ディレクトリのみ)
    using System;
    string ディレクトリ = System.AppContext.BaseDirectory;

     カミュプリィがつくった次のプログラム↓は、↑この方法を使っています

    // プロセスを使う方法
    using System.Diagnostics;
    string パス = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
    // フォームを使う方法(コンソールアプリ可)
    using System.Windows.Forms;
    パス = Application.ExecutablePath;
    // コマンドラインを使う方法
    // デバッグでは *.dll になり、単一ファイルにまとめると *.exe になる
    using System;
    using System.IO;
    c.IO.FileInfo ファイル = new System.IO.FileInfo(System.Environment.CommandLine.Replace("\"", "")); // パラメータがないと仮定
    string パス = System.IO.Path.Combine(ファイル.DirectoryName, ファイル.Name);
    // 与えられた情報を使う方法
    // デバッグでは *.dll になり、単一ファイルにまとめるとブランクになる
    using System.Reflection;
    パス = System.Reflection.Assembly.GetExecutingAssembly().Location;

    Python

     CGIとCronで共通のパスを取得できませんでした。詳しくは次の記事にまとめてあります↓

    Lotus Script

     ノーツドミノではデータベースにプログラムが含まれますので、データベースのパスを取得します

     データベースのファイル名に日本語を使うと、環境によって問題が起こることがあります。また&記号を使うと、検索で問題が起こることがありますので注意しましょう

    バックエンド

     Lotus Script には普遍的な方法と、ユーザーインターフェース(UI)から取得する方法のふたつがあります。ここでは便宜的に、普遍的な方法をバックエンドといい、ユーザーインターフェースをフロントエンドといいます

     ↓次はバックエンドの方法です。フロントエンドでも動きます

    Dim セッション As New NotesSession()
    パス = セッション.CurrentDatabase.FilePath

    フロントエンド

     ↓こちらはユーザーインターフェース(UI)から取得する方法です

    Dim ユーザーインターフェース As New NotesUIWorkspace()
    パス = ユーザーインターフェース.CurrentDatabase.FilePath

    Lotus 式言語

     式言語では、Lotus Script でいうフロントエンドしかありません

    パス = @Subset(@DbName; -1);

     @DbNameは{サーバー; パス}を複数値で戻します。ここから最後のひとつの値を得るために@Subset(; -1)を使います

  • [言語比較]今の日時

    [言語比較]今の日時

     ほとんどの命令はコードを実行しているコンピュータの日時を返します

    Java

    import java.util.Calendar;
    Calendar 日時値 = Calendar.getInstance();

    Java Script

    日時 = New Date();

    Lotus Script

    Dim 日時値 As Variant
    日時値 = Now

    Lotus 式言語

     コードを実行しているコンピュータの日時の他に、サーバーの日時を取得する方法が用意されています

    日時値 = @Now
    Rem {実行環境の日時を取得}
    サーバーの日時値 = @Now([SERVERTIME]:[LOCALTIMEONERROR])
    Rem {サーバーの日時を得られないときはクライアントの日時を取得}

    C++

    #include <chrono>
    time_t 経過秒 = time(nullptr);

     くわしくはこちらの記事に記載しています↓

  • [言語比較]型名を調べる

    [言語比較]型名を調べる

    値の型名を調べます

    C#
    string 型名 = 値.GetType().FullName;
    Visual Basic
    型名 = Microsoft.VisualBasic.TypeName(値) // 戻り値はString
    Lotus Script 言語
    型名 = Typename(値) // 戻り値はString
  • [言語比較]数値が範囲に納まるか

    [言語比較]数値が範囲に納まるか

    値が範囲内に収まるか否かを確認します

    C#

    ↓戻り値がTrueなら範囲に収まる、Falseなら収まらないとしています。型はintやdoubleなどにします

    bool 関数名(型 下限, 型 上限, 型 値)
    {
    	if (下限 > 上限)
    	{
    		型 一時的 = 下限;
    		下限 = 上限;
    		上限 = 一時的;
    	}
    	if (下限 > 値)
    	{
    		return false;
    	}
    	if (上限 < 値)
    	{
    		return false;
    	}
    	return true;
    }
    Lotus Script 言語

    ↓戻り値がTrueなら範囲に収まる、Falseなら収まらないとしています。型はLongやDoubleなどにします

    Function 関数名 (下限 As 型, 上限 As 型, 値 As 型) As Boolean
    	関数名 = False
    	If 値 > 上限 Then
    		Exit Function
    	Elseif 値 < 下限 Then
    		Exit Function
    	End If
    	関数名 = True
    End Function

     また Select を使って書くこともできます↓

    Function 関数名 (下限 As 型, 上限 As 型, 値 As 型) As Boolean
    	関数名 = False
    	Select Case 値
    		Case Is > 上限
    			Exit Function
    		Case Is < 下限
    			Exit Function
    	End Select
    	関数名 = True
    End Function
  • [Domino]ノーツドミノでつかう言語

    [Domino]ノーツドミノでつかう言語

     ノーツ/ドミノ(Notes/ Domino)で使われるおもな言語にはロータススクリプト(Lotus Script)とロータス式言語(Lotus 式言語やアットマーク関数と呼ばれます)があります。サーバーサイドではJavaも使えます。ロータススクリプトもロータス式言語もコードを保存するときに自動でコンパイルされますので、普段はコンパイルを意識することはありません。
     ロータススクリプトは VBScript に似たところがある言語ですが、後発だけあってエラー処理や変数の型などはかなり改善されて使いやすくなっています。Visual Basic にそっくりです。

     ノーツ/ドミノをウェブ関係で使うと、JavaScriptやJavaを使います。表示まわりではHTML/CSSも使うでしょう。

     Windows上でドミノサーバーを動かしていると、管理用のプログラムを C# や VBScript で書くことがあります。C#コンパイラ(csc.exe)は.NETの実行環境に含まれています。VBScriptはWindows標準コマンドWScriptやCScriptからソースコードをコンパイルせずにコマンドプロンプトやマウスダブルクリックで実行することができます。

  • [Domino]エクセルを操作する

    [Domino]エクセルを操作する

     ノーツからエクセルを操作するにはエクセルオブジェクトを作成して操作します。

    Dim アプリ As Variant
    Set アプリ = CreateObject ({Excel.Application})

     詳しくは次のリンクを参照してください。

    [中級][LotusScript]ノーツからエクセルを操作するには

    オブジェクト モデル (Excel)

  • [言語比較]比較演算子

    [言語比較]比較演算子

     ふたつの値を比較する演算子を紹介します。

    Lotus Script 言語、Lotus 式言語

    • 値 = 値 ’ 一致するとき True または @True を返す
    • 値 <> 値 ’ 一致しないとき True または @True を返す
    • 値 >< 値 ’ 一致しないとき True または @True を返す
    • Not 値 = 値 ’ 一致しないとき True または @True を返す
    • 値1 > 値2 ’ 値1 は 値2 より大きいとき True または @True を返す
    • 値1 >= 値2 ’ 値1 は 値2 より大きいか等しいとき True または @True を返す
    • 値1 => 値2 ’ 値1 は 値2 より大きいか等しいとき True または @True を返す
    • 値1 < 値2 ’ 値1 は 値2 より小さいとき True または @True を返す
    • 値1 <= 値2 ’ 値1 は 値2 より小さいか等しいとき True または @True を返す
    • 値1 =< 値2 ’ 値1 は 値2 より小さいか等しいとき True または @True を返す
    注意

     どちらかの値が Null のときは結果が Null になります

    VbScript 言語

    • 値 = 値 ’ 一致するとき True を返す
    • 値 <> 値 ’ 一致しないとき True を返す
    • Not 値 = 値 ’ 一致しないとき True を返す
    • 値1 > 値2 ’ 値1 は 値2 より大きいとき True を返す
    • 値1 >= 値2 ’ 値1 は 値2 より大きいか等しいとき True を返す
    • 値1 < 値2 ’ 値1 は 値2 より小さいとき True を返す
    • 値1 <= 値2 ’ 値1 は 値2 より小さいか等しいとき True を返す
    注意

     どちらかの値が Null のときは結果が Null になります

    Windowsバッチファイル (.bat)

    • 値1 EQU 値2 ‘ 値が一致する
    • 値1 NEQ 値2 ‘ 値が等しくない
    • 値1 GTR 値2 ‘ 値1 は 値2 より大きい
    • 値1 GEQ 値2 ‘ 値1 は 値2 より大きいか等しい
    • 値1 LSS 値2 ‘ 値1 は 値2 より小さい
    • 値1 LEQ 値2 ‘ 値1 は 値2 より小さいか等しい
  • [言語比較]Replace, ArrayReplace : 配列の一部を置き換える

    [言語比較]Replace, ArrayReplace : 配列の一部を置き換える

    Lotus Script 言語

    • ArrayReplace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列, 文字の開始位置)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列, 文字の開始位置, 置換回数の上限)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列, 文字の開始位置, 置換回数の上限, 比較方法)

    比較方法
    0 = 大文字小文字、全角半角を区別します
    1 = 大文字小文字を区別しません
    4 = 全角半角を区別しません
    5 = 大文字小文字、全角半角を区別しません

    VbScript 言語

    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列, 文字の開始位置)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列, 文字の開始位置, 置換回数の上限)
    • Replace (元の配列, 置換前の値を含む配列, 置換後の値を含む配列, 文字の開始位置, 置換回数の上限, 比較方法)

    評価方法
    0 : バイナリーモード
    1 : テキストモード(大文字小文字を区別しません)

    Lotus 式言語

    @Replace (元の配列; 置換前の値を含む配列; 置換後の値を含む配列)

    評価方法
    大文字小文字を区別します

  • [言語比較]Instr : 検索する文字列の位置を調べる

    [言語比較]Instr : 検索する文字列の位置を調べる

    Lotus Script 言語

    • Instr (検索する文字列, 検索される文字列)
    • Instr (検索開始位置, 検索する文字列, 検索される文字列)
    • Instr (検索開始位置, 検索する文字列, 検索される文字列, 比較方法)

    検索開始位置を省略したときは 1 とみなされます
    数値を設定する検索開始位置や比較方法にNULL値を設定するとエラーになります

    戻り値
    1~ : 検索する文字の位置
    0 : 見つからなかった
    検索開始位置(初期値は1) : 検索される文字列が空
    NULL : NULL値が設定された

    評価方法
    0 : 大文字小文字、全角半角を区別します
    1 : 大文字小文字を区別しません
    4 : 全角半角を区別しません
    5 : 大文字小文字、全角半角を区別しません

    VbScript 言語

    • Instr (検索する文字列, 検索される文字列)
    • Instr (検索開始位置, 検索する文字列, 検索される文字列)
    • Instr (検索開始位置, 検索する文字列, 検索される文字列, 比較方法)

    検索開始位置を省略したときは 1 とみなされます
    数値を設定する検索開始位置や比較方法にNULL値を設定するとエラーになります

    戻り値
    1~ : 検索する文字の位置
    0 : 見つからなかった
    検索開始位置(初期値は1) : 検索される文字列が空
    NULL : NULL値が設定された

    評価方法
    0 : バイナリーモード
    1 : テキストモード(大文字小文字を区別しません)

    Lotus 式言語

    • @True/@False = @Contains (検索される文字列; 検索する文字列);
       ※空の文字列を渡すと@Trueが戻ります
    • @True/@False = @Begins (検索される文字列; 検索する文字列);
       ※検索される文字列の先頭に見つかると@Trueが戻ります
    • @True/@False = @Ends (検索される文字列; 検索する文字列);
       ※検索される文字列の末尾に見つかると@Trueが戻ります  ※いずれも大文字小文字を区別します
  • [言語比較]If : 条件によって分岐

    [言語比較]If : 条件によって分岐

    Lotus Script 言語

    If 条件式 Then
     式
    Elseif 条件式 Then
     式
    Else
     式
    End If

     ※If ~ Elseif ~ Elseif と繰り返せます
     ※Elseif Else ともに使わないことができます

    If 条件式 Goto ラベル
    ラベル:
    式
    If 条件式 Goto ラベル Else 式
    ラベル:
    式

     ※If ~ Goto ~ Else ~ は改行せずに書きます

    VbScript 言語

    If 条件式 Then
     式
    Elseif 条件式 Then
     式
    Else
     式
    End If

     ※If ~ Elseif ~ Elseif と繰り返せます
     ※Elseif Else ともに使わないことができます

    Lotus 式言語

    • @If (条件式; 式; 式);
       『条件式; 式; 』は最大99回繰り返せます
    • @V2If (条件式; 式; 式);
       ※@V2If は旧バージョン用です、上位互換がある @If に書き換えることができます
  • [言語比較]ArrayGetIndex : 配列のどこに値が含まれているか調べる

    [言語比較]ArrayGetIndex : 配列のどこに値が含まれているか調べる

    Lotus Script 言語

    • 見つかった検索値の位置 = ArrayGetIndex (配列, 検索値)
    • 見つかった検索値の位置 = ArrayGetIndex (配列, 検索値, 比較方法)
       ※文字値へ変換してから比較します

    比較方法
    0 = 大文字小文字、全角半角を区別します
    1 = 大文字小文字を区別しません
    4 = 全角半角を区別しません
    5 = 大文字小文字、全角半角を区別しません
     ※規定は 0 ですが、規定を Option Compare で変更することができます

    Lotus 式言語

    • 見つかった検索値の位置 = @Member (検索値; 配列); ‘ 見つからなかったときは 0 を返します
    • True/False = @IsMember (検索値(文字値); 配列); ‘ 見つかったとき @True を返します
    • True/False = @IsMember (検索値(配列値); 配列); ‘ 検索値がすべて見つかったとき @True を返します
    • True/False = @IsNotMember (検索値(文字値); 配列); ‘ 見つかったとき @False を返します
    • True/False = @IsNotMember (検索値(配列値); 配列); ‘ 検索値のいずれかが見つかったとき @False を返します
       ※@IsNotMember は !@IsMember と一致しません
  • [言語比較]StrToken : 区切記号で区切られた文字値の一部を拾う

    [言語比較]StrToken : 区切記号で区切られた文字値の一部を拾う

    Lotus Script 言語

    • StrToken (文字値, 区切記号, 場所)
    • StrToken (文字値, 区切記号, 場所, 比較方法)

    場所
    0 のとき 1 とみなされます
    0 より大きいとき、左から何番目か?
    0 より小さいとき、右から何番目か?

    比較方法
    0 = 大文字小文字、全角半角を区別します
    1 = 大文字小文字を区別しません
    4 = 全角半角を区別しません
    5 = 大文字小文字、全角半角を区別しません
     ※規定は 0 ですが、規定を Option Compare で変更することができます


    えおか = StrToken ({あいう,えおか,きくけ}, {,}, 2)

    Lotus 式言語

    • @Word (文字値; 区切記号; 場所);

    場所
    0 のとき 1 とみなされます
    0 より大きいとき、左から何番目か?
    0 より小さいとき、右から何番目か?

  • [言語比較]ArrayUnique : 配列から重複を取り除く

    [言語比較]ArrayUnique : 配列から重複を取り除く

    Lotus Script 言語

    • ArrayUnique (1次元配列)
    • ArrayUnique (1次元配列, 比較方法)

    比較方法
    0 = 大文字小文字、全角半角を区別します
    1 = 大文字小文字を区別しません
    4 = 全角半角を区別しません
    5 = 大文字小文字、全角半角を区別しません
     ※規定は 0 ですが、規定を Option Compare で変更することができます
     ※配列が文字列のときに比較方法を選択できます

    Lotus 式言語

    • @Unique (配列)
       ※パラメータなしの @Unique は、呼び出すたびに異なる文字列を返します

    比較方法
     ※大文字小文字を区別します

  • [言語比較]StrCompare : 文字列を比較

    [言語比較]StrCompare : 文字列を比較

    Lotus Script 言語

    • 数値 = StrCompare (文字列1, 文字列2) ‘ 別名として StrComp があります
    • 数値 = StrCompare (文字列1, 文字列2, 比較方法)

    比較方法
    0 = 大文字小文字、全角半角を区別します
    1 = 大文字小文字を区別しません
    2 = プラットフォームの並び順で比較
    4 = 全角半角を区別しません
    5 = 大文字小文字、全角半角を区別しません
     ※規定は 0 ですが、規定を Option Compare で変更することができます

    戻り値
    -1 = 文字列1 < 文字列2 0 = 文字列1 = 文字列2 1 = 文字列1 > 文字列2
    Null値 = 文字列1または文字列2がNull値

    VBScript 言語

    • 数値 = StrComp (文字列1, 文字列2)
    • 数値 = StrComp (文字列1, 文字列2, 比較方法)

    比較方法
    0 = バイナリモードで比較します
    1 = テキストモードで比較します
     ※規定は 0 です

    戻り値
    -1 = 文字列1 < 文字列2 0 = 文字列1 = 文字列2 1 = 文字列1 > 文字列2
    Null値 = 文字列1または文字列2がNull値

    Lotus 式言語

    • 数値 = @Compare (文字列1, 文字列2)
    • 数値 = @Compare (文字列1, 文字列2, 比較方法)
       ※文字列に複数値を設定できます
       ※文字列1と文字列2の値の数をそろえてから比較します

    比較方法
    [CASESENSITIVE]/[CASEINSENSITIVE] = 大文字小文字を区別/区別しないで比較します
    [ACCENTSENSITIVE]/[ACCENTINSENSITIVE] = アクセントを区別/区別しないで比較します
    [PITCHSENSITIVE]/[PITCHINSENSITIVE] = 全角半角を区別/区別しないで比較します
     ※規定は [CASESENSITIVE] : [ACCENTSENSITIVE] : [PITCHSENSITIVE] です
     ※Unicodeスタンダードソートを設定しているときは使えない比較方法があります

    戻り値
    -1 = 文字列1 < 文字列2 0 = 文字列1 = 文字列2 1 = 文字列1 > 文字列2

  • [言語比較]Format : 日時値を文字値へ変換

    [言語比較]Format : 日時値を文字値へ変換

    Lotus Script 言語

    • Format (日時)
    • Format (日時, 形式)

    日時の形式の例
    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})

    VbScript 言語

    • FormatDateTime (日時)
       ※色々とオプションを指定できます

    Lotus 式言語

    • @Text (日時);
    • @Text (日時; 形式);

    日時の形式の例
    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});

  • [言語比較]Format : 数値を文字値へ変換

    [言語比較]Format : 数値を文字値へ変換

    Lotus Script 言語

    • 文字値 = Format (数値)
    • 文字値 = Format (数値, 形式)

    数値の形式の例
    ¥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.})
     ※桁区切記号(,)、小数点(.)、通貨記号($)はオペレーティングシステムで指定された記号に変換されます

    VbScript 言語

    • FormatCurrency (数値)
    • FormatNumber (数値)
    • FormatPercent (数値)
       ※オプションを色々と指定できます

    Lotus 式言語

    • @Text (数値);
    • @Text (数値; 形式);

    数値の形式の例
    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, {%});

  • [言語比較]Split : 区切記号で文字列を配列へ変換

    [言語比較]Split : 区切記号で文字列を配列へ変換

    Lotus Script 言語

    • 配列 = Split (文字列) ‘ 区切記号は空白になります
    • 配列 = Split (文字列, 区切記号)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数, 評価方法)

    戻り値の要素数
    -1 : 指定なし。すべての区切記号で分割
    0 : 戻り値に値なし。戻り値の要素数は無し
    1 : 分割なし。戻り値の要素数は-1と同じ
    2 : 最初の区切記号だけで2つに分割。戻り値の要素数は2つまで
    3 : 最初と2つ目の区切記号だけで3つに分割。戻り値の要素数は3つまで

    評価方法
    0 : 大文字小文字、全角半角を区別します
    1 : 大文字小文字を区別しません
    4 : 全角半角を区別しません
    5 : 大文字小文字、全角半角を区別しません

    VbScript 言語

    • 配列 = Split (文字列) ‘ 区切記号は空白になります
    • 配列 = Split (文字列, 区切記号)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数)
    • 配列 = Split (文字列, 区切記号, 戻り値の要素数, 評価方法)

    評価方法
    0 : バイナリーモード
    1 : テキストモード(大文字小文字を区別しません)

    Lotus 式言語

    • @Explode (文字列); ‘ 区切記号は空白・カンマ(,)・セミコロン(;)になります
    • @Explode (文字列, 区切記号);
    • @Explode (文字列, 区切記号, 戻り値にブランクを含めるか?);
    • @Explode (文字列, 区切記号, 改行を区切り記号として扱うか?);

    区切記号
    区切記号の長さは1文字です
    区切記号に「ab」を指定すると「a」と「b」が区切記号になります

    戻り値にブランクを含めるか?
    False : (初期値)文字列の最初や最後に区切記号がある、または区切記号が連続しているとき、戻り値にブランクが含まれないようにします
    True : 戻り値からブランを取り除きません

    改行を区切り記号として扱うか?
    True : (初期値)改行を区切記号に含めます
    False : 改行は区切記号ではありません

  • [言語比較]Print : メッセージを表示したりログへ記録

    [言語比較]Print : メッセージを表示したりログへ記録

    Lotus Script 言語

    • Print 値
       ※改行は Chr (10) を使用します。プラットフォーム固有の改行へ変換されます

    注意
    クライアントで実行しているときはステータスバーへ表示し、サーバーで実行しているときはログ(log.nsf)へ記録します
    ステータスバーへ表示されるメッセージをログへ記録するには notes.ini に LogStatusBar=1 を設定します
    ログをテキスト形式のコンソールログ(console.log)にも記録するには notes.ini に Console_Log_Enabled=1 を設定します

    VbScript 言語

    コマンドプロンプトから実行する CScript モードのとき
    WScript.Echo 値
    WScript.StdOut.WriteLine 値
    WScript.StdOut.Write 値 ‘ 改行が追加されません
     ※標準出力へ表示されます

    ダブルクリックで実行する WScript モードのとき
    WScript.Echo 値
     ※ダイアログボックスが表示されます

    Lotus 式言語

    @StatusBar (値);

    注意
    クライアントで実行しているときはステータスバーへ表示し、サーバーで実行しているときはログ(log.nsf)へ記録します
    ステータスバーへ表示されるメッセージをログへ記録するには notes.ini に LogStatusBar=1 を設定します
    ログをテキスト形式のコンソールログ(console.log)にも記録するには notes.ini に Console_Log_Enabled=1 を設定します

  • [言語比較]Forall : 値の数だけ繰り返す

    [言語比較]Forall : 値の数だけ繰り返す

    Lotus Script 言語

    例:

    Forall 参照変数 In 複数値
     式
     Exit Forall ' Forall から抜け出します
    End Forall

    注意
    参照変数は Forall で使用する特別な変数で、Dim では宣言できません
    参照変数の値を書き換えると In に続く複数値が変更されます

    List : キーと値のペアで記憶する連想配列(辞書、ディクショナリー)を使います

    VbScript 言語

    For Each 変数名 In 複数値
     式
     Exit For ‘ For から抜け出します
    Next

  • [言語比較]StrLeft,StrLeftBack : 検索される文字値の検索値より左側を返す

    [言語比較]StrLeft,StrLeftBack : 検索される文字値の検索値より左側を返す

    Lotus Script 言語

    左側から検索される文字値を検索します
    文字値 = StrLeft (検索される文字値,検索値,比較方法,何番目の検索値?)
    文字値 = StrLeft (検索される文字値,検索値,比較方法)
    文字値 = StrLeft (検索される文字値,検索値)

    右側から検索される文字値を検索します
    文字値 = StrLeftBack (検索される文字値,検索値,比較方法,何番目の検索値?)
    文字値 = StrLeftBack (検索される文字値,検索値,比較方法)
    文字値 = StrLeftBack (検索される文字値,検索値)

    比較方法
    0 = 大文字小文字、全角半角を区別します
    1 = 大文字小文字を区別しません
    4 = 全角半角を区別しません
    5 = 大文字小文字、全角半角を区別しません

    戻り値には検索値を含みません
    例: {ABCAB} = Strleft ({ABCABC},{c},1,2)

    Lotus 式言語

    左側から検索される文字値を検索します
    文字値 = @Left (検索される文字値,検索値)

    右側から検索される文字値を検索します
    文字値 = @LeftBack (検索される文字値,検索値)

    戻り値には検索値を含みません
    例: {AB} = @Left ({ABCABC},{C})

    大文字小文字、全角半角を区別します
    例: {ABCab} = @Left ({ABCabc},{c})

  • [言語比較]Cdat,DateValue,DateNumber,TimeValue,TimeValue : 日時値へ変換

    [言語比較]Cdat,DateValue,DateNumber,TimeValue,TimeValue : 日時値へ変換

    Lotus Script 言語

    • 日時値 = Cdat (日時に変換できる値) ’ CVDate と別名で書くこともできます
    • 日付値 = DateValue (日付に変換できる文字値)
    • 日付値 = DateNumber (年, 月, 日) ’ DateSerial と別名で書くこともできます
    • 時刻値 = TimeValue (時刻に変換できる文字値)
    • 時刻値 = TimeNumber (時, 分, 秒) ’ TimeSerial と別名で書くこともできます

    例: 1899/12/30 00:00:00 = Cdat (0)

    VbScript 言語

    • 日時値 = Cdate (日時に変換できる値)
    • 日付値 = DateValue (日付に変換できる値)
    • 日付値 = DateSerial (年, 月, 日)
    • 時刻値 = TimeValue (時刻に変換できる値)
    • 時刻値 = TimeSerial (時, 分, 秒)

    Lotus 式言語

    日時値 = @TextToTime (日時に変換できる文字値);
    時刻値 = @ToTime (時刻に変換できる値);
    日時値 = @Time (日時に変換できる値);
    日時値 = @Time (年; 月; 日);
    日時値 = @Time (年; 月; 日; 時; 分; 秒);

  • [言語比較]Err,Erl,Error : エラーを処理

    [言語比較]Err,Erl,Error : エラーを処理

     実行時エラー(ランタイムエラー)が発生したときにどうするのか?というものです。

    Lotus Script 言語

    • Err : エラーが発生すると、エラー番号(数値)が入ります
    • Erl : エラーが発生すると、ソースコードの何行目という場所(数値)が入ります
    • Error : エラーが発生すると、エラーメッセージが入ります

    エラーが発生したときにどうするか定義します
    On Error Resume Next
    On Error Goto ラベル

    例:

    On Error Goto ラベル
     処理
     Exit Sub ' または Exit Function や Exit Property
    ラベル:
     エラー処理
     Resume Next ’ エラーの次の行へ戻る

     エラーが発生したときに『何もせず異常終了する』というときは次のようにします。この行より先はエラー対応をしません。

    On Error Goto 0

    似ている命令
    On 番号 Goto ラベル1, ラベル2, ... ’ 番号によって異なるラベルへ制御を移す命令です。番号がゼロのときは何もしません
    例 : On Err Goto ラベル ’ Err 変数の値(初期値は0)によってラベルへ制御を移します
    On 番号 Gosub ラベル, ・・・もあります。

    VbScript 言語

    • Err.Number : エラーが発生すると、エラー番号(数値)が入ります
    • Err.Source : エラーが発生した場所の名前が入ります
    • Err.Description : エラーが発生すると、エラーメッセージが入ります

    初期化
    Call Err.Clear ()
     ※ On Error や Exit でも Err が初期化されます

    On Error は Resume Next だけで、On Error Goto は使えません
    On Error Resume Next

    注意
    最初の On Error より前は Err オブジェクトが存在しません

    例:

    On Error Resume Next
    Call Err.Clear ()
     処理
     If 0 <> Err.Number Then
      エラー処理
      Call Err.Clear ()
     End If

    Lotus 式言語

    • @IsError (評価式) : 評価式がエラーを返すと @True になります
    • @IfError : 廃止されました。「何がエラーなのか」というところが @IsError と異なりました

    例 : @If (@IsError (評価式); エラー時の式; 正常時の式);

  • [言語比較]Do,While,Until : 繰り返す

    [言語比較]Do,While,Until : 繰り返す

    Lotus Script 言語,VbScript 言語

    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

    Lotus 式言語

    • @While (条件式; 式1; ...; 式最大254); ※条件式が @True のあいだ式を繰り返します
    • @DoWhile (式1; ...; 式最大254; 条件式); ※条件式が @True のあいだ式を繰り返します

    注意
    @Do (式1; ...; 式最大254);
     ※名前は似ていますが @Do は繰り返しません

  • [言語比較]Chr (10) : 改行記号

    [言語比較]Chr (10) : 改行記号

    Lotus Script 言語

    • Chr (10) : プラットフォーム固有の改行記号に自動変換されます

    注意
    ノーツ/ドミノ サーバーに配置したアプリは、再コンパイルなしで複数のプラットフォームで動作します

    VbScript 言語

    • vbCrLf : Windows プラットフォームの改行記号です
    • vbCr : Mac プラットフォームの改行記号です
    • vbLf : UNIX や Linux プラットフォームの改行記号です

    Lotus 式言語

    • @Char (10) : 改行記号として扱われます
    • @Char (13) : @Prompt 内で改行記号として扱われます
    • @NewLine : 改行記号ですが、使用できないところがいくつかあります
  • [言語比較]ByVal : コピーした値を受け取る

    [言語比較]ByVal : コピーした値を受け取る

    Lotus Script 言語

    • 値のありかを受け取る ByRef(参照渡し)が規定ですが、わざわざ ByRef と明記するとエラーになります
    • ByVal と記載するとコピーされた値を受け取ることができます(値渡し)

    VbScript 言語

    • 値のありかを受け取る(参照渡し)が規定です。わざわざ ByRef と明記することができます
    • ByVal と記載するとコピーされた値を受け取ることができます(値渡し)
  • [言語比較]変数の初期値(既定値)

    [言語比較]変数の初期値(既定値)

    Java, C#, Python

    初期化されていない変数を使うとエラーになります

    Lotus Script

    • 数値型: 0
    • 文字値型: ブランク
    • Boolean型: False
    • オブジェクト型: Nothing
    • Variant型: Empty
    • List型: 初期化されません。アクセスする前に Redim で初期化します

    注意
    Variant型変数を Empty に戻すには、未使用の Variant型変数を利用します
    例: Variant型変数 = 宣言したまま使用していない Variant型変数

    VbScript

    • Variant型: Empty

    注意
    Variant型変数を Empty に戻すには、Empty を使用します
    例: Variant型変数 = Empty

    Lotus 式言語

    • Variant型: Empty
  • [言語比較]””{}|| : 文字列定数をあらわす記号

    [言語比較]””{}|| : 文字列定数をあらわす記号

     文字列を囲う記号を整理してみましょう。

    Java

    • ”文字列値”

    C#

    • @”文字列値” : ¥をそのまま円マークとして扱う
    • ”文字列値”

    Python

    • r”文字列値” : ¥をそのまま円マークとして扱う
    • ”文字列値”

    PHP

    • ‘文字列値’
    • ”文字列値” : $から始まる変数を設定できます

    Lotus Script 言語

    • ”文字列値”
    • {文字列値}
    • |文字列値|

    VbScript 言語

    • ”文字列値”

    Lotus 式言語

    • ”文字列値”
    • {文字列値}

    {}(ちゅうかっこ)は””(ダブルコーテーション)に自動変換されます

  • [言語比較]Call : 関数を呼ぶ

    [言語比較]Call : 関数を呼ぶ

    Lotus Script 言語

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

    受け渡し値がないとき

    • Call 関数名 ()
    • Call 関数名
    • 戻り値 = 関数名 ()
    • 戻り値 = 関数名
    • 関数名

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

    • Call 関数名 (受け渡し値)
    • Call 関数名 受け渡し値
    • 戻り値 = 関数名 (受け渡し値)
    • 関数名 受け渡し値

    これはエラーになります

    • 戻り値 = 関数名 受け渡し値

    受け渡し値があるとき(常に ByVal を強制)

    • 関数名 (受け渡し値) ’ Call を省略して () を付けます

    VbScript 言語

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

    受け渡し値がないとき

    • Call 関数名 ()
    • 戻り値 = 関数名 ()
    • 関数名

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

    • 戻り値 = 関数名 (受け渡し値)
    • Call 関数名 (受け渡し値)
    • 関数名 受け渡し値

    受け渡し値があるとき(常に ByVal を強制)

    • 関数名 (受け渡し値) ’ Call を省略して () を付けます

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

    クラス名.パラメータ = 値
    関数名 (クラス名.パラメータ) ’ クラス名.パラメータの値は変化しません
  • [言語比較]New : クラスからオブジェクトをつくる

    [言語比較]New : クラスからオブジェクトをつくる

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

    Lotus Script 言語

    • Set 変数 = New クラス名 ()
    • Set 変数 = New クラス名 (値)
    • Set 変数 = New クラス名
       ※最初に実行される New 関数は値を受け取ることができます
       ※New クラス名へ値を渡さないときは括弧を省略できます

    VbScript 言語

    • Set 変数 = New クラス名
       ※最初に実行される Class_Initialize 関数は値を受け取ることができません
       ※クラス名のうしろに括弧をつけるとエラーになります