LotusScript の仕様に対する一般的な例外

LotusScript® または COM による Domino オブジェクトへのアクセスには、一般的に次のような違いがあります。

  • COM アプリケーションでは、NotesSession を除き、New 修飾子を使用して Domino オブジェクトを作成できません。NotesSession オブジェクトを初期化して、Domino オブジェクトを返すプロパティやメソッドを使用しなければなりません。
  • COM ではバックエンドクラスのみがサポートされます。Button、Field、Navigator、NotesTimer、NotesUIDatabase、NotesUIDocument、NotesUIScheduler、NotesUIView、NotesUIWorkspace の各クラスはサポートされません。

  • COM では現在の環境という概念はサポートされません (例えば、現在のデータベース、現在のエージェント、文書のコンテキストなどはサポートされません)。
  • Boolean 値は、COM では Boolean として入力されますが、LotusScript では Boolean、Variant または Integer として入力されます。これは、LotusScript から COM へのポーティングでは問題になりませんが、Variant と integer の場合、逆方向のポーティングで問題となることがあります。

  • LotusScript で Integer 型として定義されているパラメータは COM では Long 型として定義されています。これは LotusScript と COM 間でデータ転送するときは問題になりません。
  • 定数を取る値は COM では Enum 型として定義されていますが、LotusScript では Variant または Integer 型として定義されています。これは LotusScript と COM 間でデータ転送するときは問題になりません。
  • COM ではアイテム名を NotesDocument のプロパティとして使用できません。例えば、LotusScript では、Subject アイテムを doc.Subject として参照できます (doc は NotesDocument オブジェクト)。しかし、COM ではこのように参照できないため、アイテム値を取得し、設定するプロパティやメソッドを使用しなければなりません。
  • レイトバインディングアプリケーションで、Domino のプロパティやメソッドが Domino オブジェクトの配列を返す場合、変数を配列として分類する前に、変数に戻り値を割り当てなければなりません。例えば、次のコードでは、レイトバインディングではランタイムエラーになります (アーリーバインディングでは機能します)。
    Set col = view.Columns(2)

    次のように Columns プロパティを最初に変数に割り当てなければなりません。

    cols = view.Columns
    Set col = cols(2)
  • COM のエラーコードは 4 バイトです。最初の 2 バイトは &H8004 という値を含んでいます。後半の 2 バイトは Domino エラーコードを含んでいます。このコードは Domino または Notes プログラムディレクトリの lsxbeerr.lss ファイルに指定されています。定数値の説明については、「定数」を参照してください。
  • プロパティやメソッドの戻り値の型が不明なオブジェクトの場合、COM ではコンパイルタイムエラー「Method or data member not found」や、「Object required」か「Type mismatch」のいずれかのランタイムエラーが表示されることがあります。この例としては、NotesViewEntry の Parent プロパティのように NotesViewEntryCollection や NotesViewNavigator または NotesView のオブジェクトとしても考えられる場合などです。LotusScript ではこのオブジェクトを解析できますが、COM ではできません。この問題の回避策はありません。