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 バイトであることに注意してください。