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、UnlockUNIX では、ファイルのロックは、明示的にも暗黙的にも実行できません。これは次のことを意味します。
  • 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 を返します。

関連項目