LotusScript での UNIX プラットフォームの違い

言語の定数の違い

構成要素

UNIX における使用

ActivateApp

使用できません。ランタイムエラーとなります。

ChDir

引数にドライブ名が入っている場合など、LotusScript® で ChDir の引数を解釈できないときは、ランタイムエラーとなります。

ChDrive

ドライブ引数が既定のドライブを示す空の文字列 ("") でない限り、ランタイムエラーとなります。

CreateObject

使用できません。ランタイムエラーとなります。

CurDir、CurDir$

ドライブ引数が既定のドライブを示す空の文字列 ("") でない限り、ランタイムエラーとなります。

CurDrive、CurDrive$

UNIX 上ではドライブ名を使用しないため、空の文字列 ("") を返します。

Date、Date$

セキュリティとシステムの保全性の関係で、UNIX 上で日付を変更できるのはスーパーユーザーだけです。他のユーザー名を使用して日付を変更しようとすると、ランタイムエラーとなります。スーパーユーザーとしてログイン中に日付を変更しようとすると、システム全体で日付が変更されます。

Declare

外部関数呼び出し用の Pascal 呼び出し規則はサポートされていません。すべての外部関数呼び出しには CDECL 呼び出し規則を使用する必要があります。

Alias 節を使用して整数を指定することはできません。整数を指定すると、不正に宣言された関数を呼び出す時点でランタイムエラーとなります

Dir、Dir$

ATTR_VOLUME のみが指定されていると空の文字列を返します。別の属性が指定されていると attributeMask 引数を無視し、すべてのファイルが Normal 属性を持っているかのように動作します。「*.*」に対しては、「.」を含むファイルだけでなくすべてのファイルを返します。「*.」に対しては、拡張子のないファイルではなく、「.」で終わるすべてのファイルを返します。

FileLen、Len、

LenB、LenBP、

LOF

行終了文字を含む文字列は、DOS/Windows プラットフォーム上よりも小さくなります。行終了終端文字は 2 文字ではなく 1 文字 (改行) です。したがって、これらの関数の戻り値として返される UNIX 上の文字列は、Windows 上の文字列よりも短くなります。

GetFileAttr

ドライブ文字が引数に含まれているとランタイムエラーになります。

次の属性を返しません。ATTR_HIDDEN、ATTR_ARCHIVE、ATTR_VOLUME、ATTR_SYSTEM。

GetObject

使用できません。ランタイムエラーとなります。

Input #、Input、

Input$、InputB、

InputB$、Line Input、

Print、Write #

これらのコンストラクトを使用してコンパイルしたスクリプトは、ファイルのデータがプラットフォーム固有の方法で格納されるため、プラットフォーム固有になることがあります。UNIX の文字セット、バイト順、行終了文字、数値精度指定子は、これらの関数を使用するスクリプトの移植性に影響することがあります。

IsObject、IsUnknown

「その他の違い」を参照してください。

Open、Lock、Unlock

UNIX では、ファイルのロックは、明示的にも暗黙的にも実行できません。これは次のことを意味します。

  • UNIX 用の LotusScript では、すでに読み込み用に開いているファイルをコピーしたり、開いたりできます。したがって、UNIX 上では Name ステートメントの動作が異なります。
  • Open ステートメントは、ロック状態として Shared しか指定できません。Lock Read、Lock Write、Lock Read Write を指定するとランタイムエラーとなります。
  • Lock と Unlock ステートメントはランタイムエラーとなります。

SendKeys

使用できません。ランタイムエラーとなります。

SetFileAttr

属性 ATTR_HIDDEN、ATTR_ARCHIVE、ATTR_VOLUME は無視されます。

Shell

ウィンドウの種類は無視されます。

Time、Time$

セキュリティとシステム保全性の関係で、UNIX 上で時刻を変更できるのはスーパーユーザーだけです。他のユーザー名を使用して時刻を変更しようとすると、ランタイムエラーとなります。スーパーユーザーとしてログイン中に時刻を変更しようとすると、システム全体で変更されます。

ファイルシステムの違い

LotusScript では、UNIX ファイルシステムのセキュリティがあらゆる面で尊重されます。この違いは、Kill、Open、RmDir に影響します。

UNIX 上ではドライブ名を使用しません。すべてのデバイスはルートディレクトリの下に配置されます。ドライブ名を含むパス名を使用すると、エラーとなることがあります。%Include 命令を使用する場合、これはコンパイルエラーとして扱われ、その他の場合は実行エラーとして扱われます。(UNIX では「:」をファイル名に使用できるため、ステートメント Dir$("a:") は有効です。カレントディレクトリ内で a: というファイルが検索されます。)

UNIX では「/」文字 (スラッシュ) をディレクトリ区切り記号として使用しますが、DOS/Windows プラットフォームでは「¥」(円記号) を使用します。LotusScript では、次の制限に従ってスラッシュと円記号を使用します。

UNIX では、DOS/Windows プラットフォームよりも多様な文字をパス名に使用できます。例えば、複数の「.」を有効な UNIX パス名に使用できます。

円記号は他のプラットフォーム上では常にパス区切り記号になるため、LotusScript では円記号を含む UNIX ファイル名を使用できません。ただし、パス名は使用できます。

UNIX では、行終了文字として改行 (ASCII 10) 文字を使用します。他のプラットフォーム上では他の文字を使用します。この違いがあるため、同じ LotusScript のコードを使用して操作したファイルを異なるプラットフォーム上で実行すると、そのサイズは異なることがあります。例えば、Macintosh プラットフォーム上では復帰文字を行終了文字として使用するため、このプラットフォーム上で作成したテキストファイルの長さは、UNIX 上で作成したファイルと同じになります。Windows プラットフォーム上では 2 文字の行終了文字を使用するため、作成したテキストファイルは同じソースコードを使用したとしても UNIX 上で作成したファイルより大きくなります。

その他の違い

UNIX には共有ライブラリ内のルーチンに番号を付ける表記法がないため、Declare ステートメントの Alias 節を使用して別名として整数を指定することはできません。

ファイルパスの文字列にワイルドカードを使用できる場合は、「*」文字と「?」文字だけでなく UNIX の正規表現が使用できます。ただし、ファイルパス文字列で正規表現を使用すると、そのスクリプトはプラットフォームに依存することになります。

LIKE 演算子では、UNIX シェルと同じ正規表現の構文を使用しません。LotusScript の正規表現を使用します。

UNIX プラットフォーム用の LotusScript リリース 3 では、OLE はサポートされていません。この違いは、CreateObject、GetObject、IsObject、IsUnknown に影響します。CreateObject 関数と GetObject 関数は、UNIX プラットフォーム上で実行するとランタイムエラーとなります。IsObject 関数は、変数がネイティブなオブジェクトを参照するか製品固有のオブジェクトを参照するかを指示します。ただし、UNIX プラットフォーム上には OLE オブジェクトがないため、OLE オブジェクトについては指示しません。UNIX 上では、Variant 型の式で V_UNKNOWN 値を受け取る方法がないため、IsUnknown 関数は常に FALSE を返します。