Put ステートメント (LotusScript 言語)

変数からのデータをバイナリファイルまたはランダムファイルに書き込みます。

構文

Put [#] fileNumber , [ recordNumber ] , variableName

要素

fileNumber

Open ステートメントでファイルを開いたときに割り当てられたファイル番号です。シャープ記号 (#)、fileNumbervariableName はいずれも必要です。

recordNumber

オプション。データを書き込むファイルの位置です (バイナリファイルではバイト位置、ランダムファイルではレコード番号)。recordNumber を省略すると、データは現在のファイル位置から書き込まれます。

variableName

書き込むデータを保持している変数です。variableName に配列は指定できません。ただし、型内部で定義された固定長配列を除きます (この配列にさらに別の配列を要素として含めることができます)。

使用法

ファイル内のバイトまたはレコードの最初の位置は常に 1 です。書き込み処理のたびに、ファイル内の位置の値は次のように増加します。

variableName がファイル内のレコード長より短いと、Put はファイル内のレコードの残りの部分に存在するデータを上書きまたは削除しません。

次の表は、各データ型に対する Put ステートメントの動作を示しています。

variableName のデータ型

Put ステートメントの動作

Variant 型

Put ステートメントは値自体の前に最初の 2 バイトとして DataType を書き込みます。

DataType が EMPTY か NULL なら、それ以上何も書き込みません。

DataType が数値なら、Put ステートメントはその DataType に適したデータのバイト数分を書き込みます。

Byte: 1 バイト

Boolean: 2 バイト

Integer: 2 バイト

Long: 4 バイト

Single: 4 バイト

Double: 8 バイト

Currency: 8 バイト

日付/時刻: 8 バイト

固定長 String 型

Put ステートメントは指定した文字数分を書き込みます。例えば、変数を String * 10 として宣言すると、正確に 10 文字を書き込みます。

可変長 String 型

Put ステートメントの動作は、使用しているファイルの種類によって異なります。

ランダムファイル: 最初の 2 バイトに文字列の長さを書き込みます。次に、その長さで指定された文字数を書き込みます。variableName を初期化していないと、Put ステートメントは長さゼロの文字列を書き込みます。

variableName がレコードより長い場合は、「不正なレコード長」エラーが発生します。variableName がレコード長より短いと、レコードの残りの部分は残されます。

バイナリファイル: その時点で variableName に保存されている文字列の長さと等しいバイト数がファイルに書き込まれます。variableName を初期化していないと、ファイルには何もデータが書き込まれません。バイナリファイルの場合、データはレコード長に関係なく書き込まれるため、注意が必要です。

ユーザー定義のデータ型

Put ステートメントはユーザー定義型のすべてのメンバを書き込むのに必要なバイト数の合計分を書き込みます。メンバに動的配列、リスト、オブジェクトを含めることはできません。

注: LotusScript® 4 では 64K より長い文字列が可能ですが、GET と PUT ステートメントを使用して読み書きできる文字列の長さにはまだ制限があります。長い文字列を処理するファイルタイプの唯一の組み合わせは、バイナリファイルと可変長文字列です。固定長文字列、Variant 型の変数内の文字列、ランダムファイルは 64K を超える文字列を処理しません。これは、それらに、文字列の長さを含む 2 バイトのヘッダーがあるためです。2 バイトでは 64K を超える長さを表せません。