Lock、Unlock ステートメント
Open ステートメントを使用して開かれたファイルのすべてまたは一部への他のプロセスによるアクセスを制御します。
構文
Lock [ # ] filenumber, [ recordrange ] . . .ロック解除 [ # ] filenumber, [ recordrange ]
Lock および Unlock ステートメントの構文には、次の指定項目があります。
指定項目 | 説明 |
---|---|
filenumber | 必須。 任意の有効なファイル番号です。 |
recordrange | オプション。 ロックまたはロック解除するレコードの範囲です。 |
Settings
recordrange引数の設定は次のとおりです。
recnumber |[ start ]終了するには
設定 | 説明 |
---|---|
recnumber | ロックまたはロック解除が開始される場所のレコード番号 (Random モード ファイル) あるいはバイト番号 (Binary モード ファイル)。 |
start | ロックまたはロック解除する最初のレコードあるいはバイトの番号。 |
end | ロックまたはロック解除する最後のレコードあるいはバイトの番号。 |
解説
Lock および Unlock ステートメントは、複数のプロセスによる同じファイルへのアクセスが必要になる場合がある環境で使用されます。
Lock および Unlock ステートメントは常にペアで使用されます。 Lock および Unlock への引数は厳密に一致する必要があります。
ファイルの最初のレコードまたはバイトは位置 1 になり、2 番目のレコードまたはバイトは位置 2 になります。これ以降も同様です。 レコードを 1 つだけ指定した場合、そのレコードのみがロックまたはロック解除されます。 レコード範囲を指定し、開始レコード (開始) を省略すると、最初のレコードから範囲の末尾 (末尾) までのすべてのレコードがロックまたはロック解除されます。 recnumber なしで Lock を使用すると、ファイル全体がロックされます。recnumber なしで Unlock を使用すると、ファイル全体がロック解除されます。
シーケンシャル入力またはシーケンシャル出力用にファイルが開かれている場合、Lock および Unlock は、start および end によって指定された範囲に関係なくファイル全体に影響します。
重要
ファイルを閉じたり、プログラムを終了したりする前に、Unlock ステートメントを使用してすべてのロックを必ず削除してください。 ロックを削除しない場合、予期しない結果が生じます。
例
この例は、Lock および Unlock ステートメントの使用方法を示しています。 レコードが変更されている間、レコードへの他のプロセスによるアクセスは拒否されます。 この例では、 TESTFILE
がユーザー定義型 Record
の 5 つのレコードを含むファイルであることを前提としています。
Type Record ' Define user-defined type.
ID As Integer
Name As String * 20
End Type
Dim MyRecord As Record, RecordNumber ' Declare variables.
' Open sample file for random access.
Open "TESTFILE" For Random Shared As #1 Len = Len(MyRecord)
RecordNumber = 4 ' Define record number.
Lock #1, RecordNumber ' Lock record.
Get #1, RecordNumber, MyRecord ' Read record.
MyRecord.ID = 234 ' Modify record.
MyRecord.Name = "John Smith"
Put #1, RecordNumber, MyRecord ' Write modified record.
Unlock #1, RecordNumber ' Unlock current record.
Close #1 ' Close file.
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。