The DataServer processes query statements marked with SHARE-LOCK and EXCLUSIVE-LOCK queries very differently from NO-LOCK queries.
Note: There is an exception to the previous statement; queries marked SHARE-LOCK when the record isolation level is read uncommitted are treated like a NO-LOCK.
The records of a NO-LOCK query are pre-fetched, which means that changes to the result set after the query has been executed are unknown. Records modified in the database after the query is established will not be reflected in the result set. SHARE-LOCK and EXCLUSIVE-LOCK queries do not pre-fetch records, but do preselect record keys. The query behavior is that of a "keyset-driven" cursor. Since the record keys are stored at the time an ABL query is first executed, new records added to the database since the key list was established are not included in the query result set. However, records that have been deleted or modified in the database will be reflected in the query results as records are accessed by the application.