タグ: 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(数値)
  • [言語比較]今の日時

    [言語比較]今の日時

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

    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#

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

    // .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)を使います

  • [言語比較]Asc,Uni,String,Chr,UChr,UString : 一文字を文字コードへ、またはその反対へ

    [言語比較]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文字にする関数です

  • [言語比較]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

  • [言語比較]Boolean,True,False : 論理型

    [言語比較]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, !, ~しない, ~ではない)
    重ねて使うと、否定の否定って何!?って、何だかわからなくなりそうです

    等しい

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

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

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

    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 式言語

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

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

  • [言語比較]Rem : コメント

    [言語比較]Rem : コメント

    Lotus Script

    ' 行末までコメント
    
    Rem 行末までコメント
    
    %REM
    複数行コメント
     注意 : %REM と %END REM は行の先頭から記載します
    %END REM

    VbScript

    ' 行末までコメント
    
    Rem 行末までコメント

    Lotus 式言語

    REM {括弧で囲んだ範囲がコメント};
    
    REM "括弧で囲んだ範囲がコメント";
  • [言語比較]& : 文字列連結演算子

    [言語比較]& : 文字列連結演算子

    Java

    • 文字値 = 文字値 + 文字値;

    C#

    • 文字値 = 文字値 + 文字値;
    • 文字値 += 文字値;
    • 文字値 = $”文字値{変数名}文字値”;

    Python

    • 文字値 = 文字値 + 文字値
    • 文字値 += 文字値

    Lotus Script 言語

    • 文字値 = 値 & 値
    • 文字値 = 文字値 + 文字値

    &(アンド)は異なる意味でも使われますので、半角空白を使わずに詰めて書くとコンパライラに誤解されることがあります

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

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

    VbScript 言語

    • 文字値 = 値 & 値

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

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

    Lotus 式言語

    • 文字値 = 文字値 + 文字値
  • [言語比較]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が戻ります  ※いずれも大文字小文字を区別します
  • [言語比較]Replace, ArrayReplace : 配列の一部を置き換える

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

    Lotus Script 言語

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

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

    VbScript 言語

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

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

    Lotus 式言語

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

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

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

    [言語比較]比較演算子

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

    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 より小さいか等しい
  • [言語比較]ByVal : コピーした値を受け取る

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

    Lotus Script 言語

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

    VbScript 言語

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

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

    Lotus Script 言語

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

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

    VbScript 言語

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

    Lotus 式言語

    • @Char (10) : 改行記号として扱われます
    • @Char (13) : @Prompt 内で改行記号として扱われます
    • @NewLine : 改行記号ですが、使用できないところがいくつかあります
  • [言語比較]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 は繰り返しません

  • [言語比較]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 (評価式); エラー時の式; 正常時の式);

  • [言語比較]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 (年; 月; 日; 時; 分; 秒);

  • [言語比較]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})

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

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

    Lotus Script 言語

    例:

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

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

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

    VbScript 言語

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

  • [言語比較]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 を設定します

  • [言語比較]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 : 改行は区切記号ではありません

  • [言語比較]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, {%});

  • [言語比較]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});

  • [言語比較]Const : 変更されない値に名前を設定

    [言語比較]Const : 変更されない値に名前を設定

    C#

    Const 名前 = 値;

    Lotus Script 言語, VBScript 言語

    Const 名前 = 値

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

  • [言語比較]List,Listtag : キーと値のペアで記憶する連想配列(辞書、ディクショナリー)

    [言語比較]List,Listtag : キーと値のペアで記憶する連想配列(辞書、ディクショナリー)

    Lotus Script 言語

    • 宣言 : Dim 変数名 List As 型
    • 辞書? : True または False = IsList (変数名)
    • キーを追加 : 変数名 (キー) = 値
    • 既にキーが存在する? : True または False = IsElement (変数名 (キー))
    • 値を取り出す : 値 = 変数名 (キー)
    • すべて取り出す :
    Forall 参照変数 In 変数
     キー = ListTag (参照変数)
     値 = 参照変数
    End Forall
     ※参照変数は Forall で有効な特別な変数で Dim で宣言しません
     ※参照変数を更新すると In に続く変数の値が更新されます

    Forall : 値の数だけ繰り返します

    • キーを削除 : Erase 変数名 (キー)
    • キーをすべて削除 : Erase 変数名
       ※キーは文字値になります
       ※一般的に List は配列よりも多くの値を保存できます

    VbScript 言語

    • 言語として連想配列の機能がありません
    • Set 変数名 = CreateObject (“Scripting.Dictionary”) として、オブジェクトで連想配列を使います

    Lotus 式言語

    連想配列の機能がありません

  • [言語比較]Class : クラスをつくる

    [言語比較]Class : クラスをつくる

     Lotus Scriptのクラスは、VBScriptと異なっているところが多いです。

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

  • [言語比較]ArrayAppend : 値をまとめて新しい配列へ

    [言語比較]ArrayAppend : 値をまとめて新しい配列へ

    Lotus Script 言語

    • 動的配列 = ArrayAppend (配列, 単数値または配列)

    エラーになる例
    ArrayAppend (単数値, 単数値または配列)

    動的配列とは
    Lotus Script の配列は2種類あります
    ひとつは Redim で値の数を変更できる動的配列、もうひとつは値の数を変えられない静的配列です

    既存の配列に値を追加する方法
    動的配列に入る値の数を変更するには Redim Preserve 配列名 (上限値) を使用します
    初期値では下限値が 0 となっているため、上限値を 1 にすると配列の値の数は (0) と (1) の2つになります
    Preserve キーワードを忘れると、配列の値が初期化されます
    新しく増やした部分に値を入れるには 配列名 (Ubound (配列名)) = 値 とします

    VbScript 言語

    Lotus Script 言語の既存の配列に値を追加する方法でおこないます

    Lotus 式言語

    • 配列 = 単数値または配列 : 単数値または配列
  • [言語比較]Abs : 数値を符号のない絶対値へ

    [言語比較]Abs : 数値を符号のない絶対値へ

    Lotus Script 言語, VbScript 言語

    • 数値 = Abs (数値)
    • Null値 = Abs (Null値)

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

    Lotus 式言語

    • 数値 = @Abs (数値)
    • 数の複数値 = @Abs (数の複数値)
  • [言語比較]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 に書き換えることができます