Previous topic |
Next topic |
Contents |
Contact z/OS |
Library |
PDF
Deleting List Entries from a List z/OS MVS Programming: Sysplex Services Guide SA23-1400-00 |
|
Using IXLLSTM REQUEST=DELETE_LIST to request that a list scan process be performed such that entries meeting a specified set of criteria are removed from the list on which they reside and returned to the pool of free entries for reuse. Processing begins with the entry located by the LOCATOR keyword and proceeds sequentially along the list in the direction specified by DIRECTION until the head or tail of the list is reached, or if entry key comparison or secondary key comparison is requested, until the scan has progressed past all entries for which those key comparisons could be successful. Specifying AUTHCOMPARE=YES in conjunction with AUTHCOMP causes list authority comparison for the designated list to precede processing of any list entries. If the list authority verification fails, the list authority, the list control information and appropriate return and reason codes are provided. Specifying LOCKINDEX in conjunction with LOCKOPER causes lock comparison to precede processing of any list entries. LOCKINDEX may optionally be specified to indicate the index of the serialized list lock to be compared within the lock table for the list structure. If the lock comparison fails, the lock table entry and appropriate return and reason codes are provided. Note: The use of serialized list functions might be useful to serialize
the list against other concurrent operations that could otherwise
execute in parallel with the DELETE_LIST scan, because these concurrent
operations can cause entries on the list to be skipped or scanned
more than once during DELETE_LIST processing.
Specifying LISTCOMPARE=YES in conjunction with LISTNUM causes list number comparison for the designated starting list entry to precede processing of any list entries. If the designated list entry exists, but the list number verification fails, the list entry controls and appropriate return and reason codes are provided. Specifying VERSCOMPARE=YES in conjunction with VERSCOMP can optionally be used as a filter to restrict processing to those entries with a version number matching that specified by VERSCOMPTYPE. Specifying KEYCOMPARE=YES in conjunction with ENTRYKEY causes entry key comparison to be performed as a filter, as specified by KEYREQTYPE. Specifying SKEYCOMPARE=YES in conjunction with SECONDARYKEY causes secondary key comparison to be performed as a filter, as specified by SKEYREQTYPE. DIRECTION can optionally be specified to indicate direction of processing for traversing the list. The absence of AUTHCOMPARE or LISTCOMPARE or specifying AUTHCOMPARE=NO or LISTCOMPARE=NO indicates no list authority or list number comparisons are to be performed before processing any list entries. The absence of LOCKINDEX indicates that no lock comparison is to be performed before processing any list entries. The absence of VERSCOMPARE, KEYCOMPARE, or SKEYCOMPARE, or specifying VERSCOMPARE=NO, KEYCOMPARE=NO or SKEYCOMPARE=NO indicates no version number, entry key value, or secondary key value comparisons are performed as a filter when selecting entries to be processed. For any list entries to be processed, the list number comparison, the list authority comparison, and the lock operation, must succeed if they are requested. For a particular list entry to be deleted, the version number comparison, the entry key comparison, and the secondary key comparison, must succeed if they are requested. Otherwise, no processing is performed for the current entry and processing continues with the next entry to be considered. When the request completes successfully the number of entries deleted for this request is returned in the answer area specified by ANSAREA. A DELETE_LIST request might complete prematurely if the coupling facility model dependent timeout criteria is exceeded. In this event appropriate return and reason codes, and the number of entries which have been deleted by the current request are provided. The list entry controls for the next appropriate entry in the list sequence to be processed is returned in ANSAREA. These list entry controls can be used to designate the entry with which to resume processing on a subsequent, resuming DELETE_LIST request, so as to continue the overall scan process for the list. Note: The disposition of this list entry might change as a result
of another operation (for example, the entry might be deleted or moved
to another position on the same list or a different list) after the
completion of the first DELETE_LIST request and before the invocation
of the resuming DELETE_LIST request. This might cause the resuming
DELETE_LIST request to fail, skip entries, or reprocess some entries
that have already been processed. If a resuming DELETE_LIST request
fails with an "entry not found" condition, the list might not yet
have been completely scanned and the scan needs to be restarted from
the beginning.
If other concurrent operations, such as other commands which can
create entries, delete entries, or move entries to a different position
on the same list or a different list, are permitted to execute while
DELETE_LIST processing is ongoing, this can result in anomalous behavior
for the overall DELETE_LIST scan process. Entries on the list might
be skipped or reprocessed more than once, and this might result in
entries that should have been deleted being "missed" by the scan.
For example:
Note: Such anomalies can occur both within the processing of
a single DELETE_LIST request, and in the gap between the completion
of one DELETE_LIST request and the initiation of a subsequent, resuming
one.
To avoid such anomalies, consider using serialized list functions (LOCKINDEX and LOCKOPER) to lock out concurrent operations for the duration of the entire DELETE_LIST scan process, from before initiating the first request, through any premature completion and re-drive processing that may occur, until the scan process indicates that the list has been processed to completion. Resumed requests are processed identically to non-resumed requests, and they must meet the same interface requirements as non-resumed requests. Resumed requests might in turn experience premature completion. This is a new list services function introduced in Release 9 and cannot be invoked on systems running a level of OS/390® lower than Release 9. DELETE_LIST is only valid when the structure is allocated in a CFLEVEL=9 or higher CF. |
Copyright IBM Corporation 1990, 2014
|