Click or drag to resize

NetErr Function (Logic)

Detect a concurrency conflict.

Namespace:  XSharp.Core
Assembly:  XSharp.Core (in XSharp.Core.dll) Version: 2.19
	lNewError AS LOGIC
Request Example View Source


Type: Logic
Sets the value returned by NetErr() to either TRUE or FALSE. Setting NetErr() allows the runtime error handler to control the way certain concurrency control errors are handled.

Return Value

Type: Logic
TRUE if a concurrency conflict occurs or if programmatically set to TRUE via the lNewError argument; otherwise, FALSE.
The initial value is FALSE.
NetErr() is a global flag set by certain operations that is used to test for concurrency control conflicts in the following situations: Operation Attempted NetErr() is TRUE Append a blank record with APPEND BLANK or DBAppend() If another process has a file lock in place or a record lock of LastRec() + 1 (with, for example, a simultaneous append blank operation) File open in either shared or exclusive mode (with, for example, USE or DBUseArea()) If another process has exclusive use of the file File open in exclusive mode (with, for example, USE...EXCLUSIVE or DBUseArea() with lShared set to FALSE) If another process has the file open, in either shared or exclusive mode Internally, these situations result in a runtime error, invoking the installed error handler. The source code for the default error handler, defined in the ERRORSYS.PRG file located in your X# \SAMPLES directory, does not display an error message in these cases, allowing your application to continue. NetErr() is generally applied in a program by testing one of these operations. If the function returns FALSE, you can perform the next operation.
Otherwise, you must handle the error either by retrying the operation or by terminating it with a BREAK or RETURN.
This example demonstrates typical usage of NetErr().
If the USE succeeds, the index files are opened and processing continues.
If the USE fails, a message is displayed, and control returns to the nearest BEGIN SEQUENCE construct:
1USE customer SHARED NEW
2IF !NetErr()
3    SET INDEX TO custnum, custorders, custzip
5    ? "File is in use by another"
See Also