Joined: 26 Apr 2004 Posts: 4650 Location: Raleigh, NC, USA
Does this help (taken from a Google search)?:
Under native VSAM, physical updating occurs immediately as update requests are issued. If a transaction fails, its updates are backed out. Query applications may, on occasion, encounter a ?dirty read? showing the results of another transaction?s uncommitted updates. To eliminate dirty reads, the application must incur the overhead of ?consistent read? locking.
as well as this:
The "Dirty Read" Technique
The "dirty read" technique can be used to provide a high degree of concurrent access to VSAM files while avoiding the complications associated with CI and CA splits. The dirty read protocol can be summarized as follows:
The VSAM file must be defined with cross-region SHAREOPTIONS 4.
The file must be allocated with DISP=SHR.
All operations on the file, including reads, must be preceded with an ENQ for the data set. The data set name is specified for the ENQ "rname", but any string can be used for the ENQ "qname" (though it must be the same string for all accessors).
After a lock is obtained, the user's buffer must be refreshed with a GET request. This step also applies to new record insertions.
At the end of all file operations, the enqueue is released with a DEQ function call.
No lock is held during a wait (such as terminal input wait).
Before updating a previously read record, a fresh copy of the record must be obtained and compared to the original to ensure that no other user has updated the record while it was being browsed and modified. As always, the second read, the record comparison, and the update must be shielded by a lock.