{{fbdoc item="title" value="LOCK"}}----
Restricts read/write access to a file or portion of a file

{{fbdoc item="syntax"}}##
	**Lock** #//filenum//, //record//
	**Lock** #//filenum//, //start// To //end//
##
{{fbdoc item="param"}}
	##//filenum//##
		The file number used to ##[[KeyPgOpen|Open]]## the file.
	##//record//##
		The record (##[[KeyPgRandom|Random]]## files) to lock.
	##//start//##
		The first byte position (##[[KeyPgBinary|Binary]]## files) to lock from.
	##//end//##
		The last byte position (##[[KeyPgBinary|Binary]]## files) to lock to.

{{fbdoc item="desc"}}
	##**Lock**## temporarily restricts access by other threads or programs to a file, or portion of a file, usually to allow safe writing to it.
	
	After modifying the data, an ##[[KeyPgUnlock|Unlock]]## with the same parameters as the ##**Lock**## should be issued.
	
	**Note: This command does not always work, neither as documented nor as expected. It appears to be broken at the moment.**

{{fbdoc item="ex"}}
{{fbdoc item="filename" value="examples/manual/fileio/lock.bas"}}%%(freebasic)
'' e.g. locking a file, reading 100 bytes, and unlocking it. 
'' To run, make sure there exists a file called 'file.ext' 
'' in the current directory that is at least 100 bytes.

dim array(1 to 100) as integer
dim f as integer, i as integer
f = freefile
open "file.ext" for binary as #f
lock #f, 1 to 100
for i = 1 to 100
	get #f, i, array(i)
next
unlock #f, 1 to 100
close #f
%%

{{fbdoc item="diff"}}
	- Currently, FB cannot implicitly lock the entire file
	- In ##[[KeyPgRandom|Random]]## mode, FB cannot lock a range of records

{{fbdoc item="see"}}
	- ##[[KeyPgOpen|Open]]##
	- ##[[KeyPgUnlock|Unlock]]##
	- ##[[KeyPgScreenlock|ScreenLock]]##

{{fbdoc item="back" value="CatPgFile|File I/O Functions"}}
