Differences between shared data tables services and VSAM
Because shared data table services replace VSAM for many data table requests, there are differences in the way that certain requests are implemented.
- Read while updating (different transactions)
-
In the case of a READ command for a data table record following a READ UPDATE issued for that record by another transaction and preceding the associated update request, when shared data table services are used the READ command is processed immediately.
When VSAM is used, the READ command waits until the update request is complete.
- Read while updating (same transaction)
-
In the case of a READ command for a data table record following
a READ UPDATE issued for that record by
the same
transaction
and preceding the associated update request, when shared data table
services are used the READ command is processed immediately.
When VSAM is used, the transaction incurs a deadlock abend AFCG.
- Delete during browse
-
When shared data table services are used for a STARTBR or RESETBR command for a data table record, it is possible for the record to be deleted before the associated READNEXT or READPREV command is issued. When VSAM is used, the record cannot be deleted before the associated READNEXT or READPREV command is issued.
Thus, when shared data table services are used, if a STARTBR or RESETBR command is issued with a key other than the special ‘last record' key, X'FF....', and the record selected is deleted before the READNEXT command, the READNEXT command reads the succeeding record.
If there is no succeeding record, the ENDFILE condition is returned. If the EQUAL option was used on the STARTBR or RESETBR, the key of the record that is read might not match the key specified.
If a STARTBR or RESETBR command is issued with the special ‘last record' key, and the selected record is deleted before the READPREV command, the READPREV command reads the preceding record, or returns the ENDFILE condition if there is none.
- Write during browse
-
When shared data table services are used, if a browse reads to the
end of a file, raising the
ENDFILE condition, and a new record is then inserted beyond the end of the
file, a subsequent
READNEXT is able to read the new record.
When VSAM is used, the subsequent READNEXT may not be able to find the new record, but instead reports the ENDFILE condition again.
- Delete while updating (same transaction)
-
When shared data table services are used for a DELETE command that specifies a RIDFLD for a data table record after a READ UPDATE has been issued for that record by the same transaction and before the associated update request, the DELETE command is processed successfully and the associated update request receives a NOTFND condition.