バイナリファイルは、データの読み込みと書き込みのための編成を管理するために設計されています。ただし、ファイルがどのように書き込まれたかを正確に知る必要があります。
構文は次のとおりです。
Open fileName For Binary As fileNumber
レコード長の引数を指定しても、無視されます。
開こうとするファイルがない場合、Open ステートメントで指定したアクセスの種類に関係なく、新しいファイルが作られます。
バイナリファイルは可変長のレコードを保持します。読み込む文字列のサイズを知る必要があるため、各可変長レコード (各文字列) に長さのフィールドを代入します。ただし、文字列がユーザー定義型の構成要素のときは、その必要はありません。この場合、LotusScript® によって、ファイルの長さフィールドが可変長文字列に自動的に代入されます。
バイナリアクセスでは、ファイルが 1 バイトずつ表示されます。ファイルは英数字であってもなくても、連続するバイトストリームとして表示されます。
バイナリファイルへ書き込むには、Put ステートメントを次の構文で使用します。
Put fileNumber , bytePosition , variableName
bytePosition パラメータは、書き込みを開始するファイル内の位置です。ファイルの先頭バイトの場合、位置は 1 になります。位置ゼロは不正で、エラーとなります。
バイナリファイルからデータを読み込むには、次のステートメントを使用します。
Get ステートメントは、固定長文字列や整数など、長さの分かっている変数に正確なバイト数を読み込みます。可変長文字列の場合、読み込まれる文字数は文字列の current length に等しくなります。これは、初期化していない可変長文字列ではゼロになるため、まず、読み込む文字列の長さに、現在の長さを設定する必要があります。ファイルの文字列がユーザー定義型にあれば、文字列長は文字列と共に LotusScript によって保存されています。
Seek ステートメントは、開いたファイルにバイト位置を設定します。構文は次のとおりです。
Seek [#] fileNumber, position
fileNumber は、ファイルが開かれたときに割り当てられた番号で、position は次回の読み込みを開始するファイル位置です。バイナリファイルでは、これはゼロ以外のバイト位置です。Get または Put ステートメントの中のレコード番号は、Seek ステートメントで設定されるファイル位置をオーバーライドします。
Input 関数や Input$ 関数を使用しても、バイナリファイルからデータを読み込めます。構文は次のとおりです。
dataHold = Input ( numBytes , fileNumber )
ここで、dataHold は Variant 型です。(Input 関数の代わりに Input$ 関数を使用する場合は、dataHold を String 型にします。)この関数はファイルから numBytes バイトを読み込み、それを変数 dataHold で返します。