LOTUSSCRIPT 言語


LotusScript での OS/400 プラットフォームの違い
言語の定数の違い

構成要素OS/400 における使い方
ActivateApp使えません。ランタイムエラーとなります
ChDir引数中にドライブを表す文字が指定されている場合など、引数を ChDir に解釈できないときは、ランタイムエラーとなります
ChDriveドライブ引数が既定のドライブを示す空の文字列 ("") でない限り、ランタイムエラーとなります
CreateObject使えません。ランタイムエラーとなります
CurDir、CurDir$ドライブ引数が既定のドライブを示す空の文字列 ("") でない限り、ランタイムエラーとなります
CurDrive、CurDrive$iSeries のサーバーにはドライブがないので、空の文字列 ("") が返されます
Date、Date$LotusScript を通して OS/400 上で日付を変更することはできません。ランタイムエラーとなります
Declare外部関数呼び出し用の Pascal 呼び出し規則はサポートされていません。すべての外部関数呼び出しには CDECL 呼び出し規則を使用する必要があります。また、ポインタ以外の引数を渡すときは、_System リンケージキーワードを使用しなければいけません
Dir、Dir$attributeMask 引数を無視し、すべてのファイルが Normal 属性を持っているかのように動作します。「*.*」に対しては、「.」を含むファイルだけでなくすべてのファイルを返します。「*.」には、拡張子のないすべてのファイルではなく、ピリオドで終わるファイルを返します
FileLen、Len、LenB、LenBP、LOF行終了文字を含む文字列は、DOS/Windows プラットフォーム上よりも小さくなります。行終了文字は 2 文字ではなく 1 文字 (行送り) です。したがって、これらの関数の戻り値は、文字列については OS/400 上では Windows 上より短くなります
GetFileAttrドライブ文字が引数に含まれているとランタイムエラーになります。次の属性を返しません。 ATTR_HIDDEN, ATTR_ARCHIVE, ATTR_VOLUME, ATTR_SYSTEM.
GetObject使えません。ランタイムエラーとなります
Input #、Input、Input$、InputB、InputB$、Line Input、Print、Write #これらのコンストラクトを使ってコンパイルしたスクリプトは、ファイルのデータがプラットフォーム固有の方法で格納されるので、プラットフォーム固有になることがあります。OS/400 の文字セット、バイト順、行終了文字、数値精度指定子は、これらの関数を使うスクリプトの移植性に影響することがあります
IsObject、IsUnknown「その他の違い」を参照してください
Open、Lock、Unlockファイルのロックは、明示的にも暗黙的にも実行できません。これは次のことを意味します。
  • OS/400 用の LotusScript では、すでに読み込み用に開いているファイルに対して操作 (コピーや開くなど) を実行できます。したがって、OS/400 上では Name ステートメントの動作が異なります。
  • Open ステートメントは、ロック状態として Shared しか指定できません。Lock Read、Lock Write、Lock Read Write を指定するとランタイムエラーとなります。
  • Lock と Unlock ステートメントはランタイムエラーとなります
SendKeys使えません。ランタイムエラーとなります
SetFileAttr属性 ATTR_HIDDEN、ATTR_ARCHIVE、ATTR_VOLUME は無視されます
Shellウィンドウの種類は無視されます
Time、Time$LotusScript を通して OS/400 上で時刻を変更することはできません。ランタイムエラーとなります
ファイルシステムの違い
iSeries サーバー上ではドライブ名を使いません。ドライブ名を含むパス名を使うと、エラーとなることがあります。

ディレクトリ区切り文字は、DOS/Windows では円記号 (\) ですが、OS/400 ではスラッシュ (/) が使われます。LotusScript ではスラッシュと円記号の両方をサポートしています。ただし、次のような制限があります。


OS/400 上のテキストファイルには CCSID (文字セット) 属性があります。Charset が指定されておらず、ファイルに UTF-16 または UTF-8 BOM (バイトオーダーマーク) が含まれていない場合、Open ステートメントは CCSID 属性を使ってファイルのコードページを判断します。

その他の違い
OS/400 では、(Declare ステートメントの Alias クラスを使って) 序数を使った関数の別名は使えません。

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

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

ポインタ引数を C 関数に渡すとき、OS/400 上でのポインタサイズは 4 バイトではなく 16 バイトであることに注意してください。

関連項目