Fstat
fstat
is a numeric status that is returned upon execution of a database operation, a sequential file operation, or a lock instruction.Syntax
fstat
Examples
# MYTABLE is a table with a key called KEY1, that has a unique component called KEYVAL
# Create a record in the table MYTABLE with they key value 1 if it doesn't exist
Local File MYTABLE [MYT]
Read [MYT]KEY1=1
If fstat
[MYT]KEYVAL=1 : Write [MYT]
If fstat
MSG="The key was created in the mean time"
Else
MSG="Key created"
Endif
Else
MSG="Key already exists"
Endif
Details
fstat
is always set to '0' if the operation is successfully completed, and has a non-null value if there is an error:- In a sequential read (Getseq and Rdseq),
fstat
is set to '1' at the end of the file. - On Lock,
fstat
is set to '1' if the lock could not be performed. - For a database operation (Read, Look, Readlock, For, Write, Delete, Rewrite, DeleteByKey, and RewriteByKey), the error statuses are from 1 to 7, as shown in the following table.
Note that the use of literal numbers should be avoided: dedicated constants exist for this purpose.
Constant | Value | Explanation |
---|---|---|
[V]CST_AOK | 0 | Operation succeeded. |
[V]CST_ALOCK | 1 | Record is locked. |
[V]CST_AOUTSEARCH | 2 | In <= or >= read mode, indicates that read succeeded, but the key found is not equal to the value. |
[V]CST_ADUPKEY | 3 | Duplicate value on unique index. |
[V]CST_AOUTKEYS | 4 | Attempt of reading a key value that is smaller or greater than all existing key values. |
[V]CST_ANOREC | 5 | Record not read (no current record exists). |
[V]CST_ARECTICKUPD | 6 | Update conflict: the line no longer exists with the right updtick value (concurrency error during an update operation). |
[V]CST_ARECTICKDEL | 7 | Delete conflict: The line no longer exists with the right updtick value (concurrency error during a delete operation). |