z/OS DFSMS Using Data Sets
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Restrictions on the Use of the ISAM Interface

z/OS DFSMS Using Data Sets
SC23-6855-00

Some restrictions indicated earlier in this topic can require you to modify an ISAM processing program to process a key-sequenced data set. All operating system and VSAM restrictions apply to the use of the ISAM interface, including the following restrictions:
  • VSAM does not allow the OPEN TYPE=J macro. If your program issues it, remove TYPE=J and the RDJFCB macro.
  • VSAM does not allow an empty data set to be opened for input.
  • If a GET macro is issued for an empty data set, the resulting messages indicate "no record found (NRF)" rather than "end of data (EOD)", as it would appear in the QISAM environment.
  • The DUMMY DD statement is not supported for the ISAM interface. An attempt to use the DUMMY DD statement with the ISAM interface will result in a system 03B ABEND. If your program uses a DUMMY DD statement, you might be able to change your JCL to use a temporary or permanent VSAM data set. See Examples Using JCL to Allocate VSAM Data Sets for examples.
Sharing Restrictions:
  • You can share data among subtasks that specify the same DD statement in their DCB(s), and VSAM ensures data integrity. But, if you share data among subtasks that specify different DD statements for the data, you are responsible for data integrity. The ISAM interface does not ensure DCB integrity when two or more DCBs are opened for a data set. All of the fields in a DCB cannot be depended on to contain valid information.
  • Processing programs that issue concurrent requests requiring exclusive control can encounter exclusive-use conflicts if the requests are for the same control interval. For more information, see Sharing VSAM Data Sets.
  • When a data set is shared by several jobs (DISP=SHR), you must use the ENQ and DEQ macros to ensure exclusive control of the data set. Exclusive control is necessary to ensure data integrity when your program adds or updates records in the data set. You can share the data set with other users (that is, relinquish exclusive control) when reading records.
Additional restrictions:
  • A program must run successfully under ISAM using standard ISAM interfaces; the interface does not check for parameters that are nonvalid for ISAM.
  • VSAM path processing is not supported by the ISAM interface.
  • Your ISAM program (on TSO/E) cannot dynamically allocate a VSAM data set (use LOGON PROC).
  • CATALOG/DADSM macros in the ISAM processing program must be replaced with access method services commands.
  • ISAM programs will run, with sequential processing, if the key length is defined as smaller than it actually is. This is not permitted with the ISAM interface.
  • If your ISAM program creates dummy records with a maximum key to avoid overflow, remove that code for VSAM.
  • If your program counts overflow records to determine reorganization needs, its results will be meaningless with VSAM data sets.
  • For processing programs that use locate processing, the ISAM interface constructs buffers to simulate locate processing.
  • For blocked-record processing, the ISAM interface simulates unblocked-record processing by setting the overflow-record indicator for each record. (In ISAM, an overflow record is never blocked with other records.) Programs that examine ISAM internal data areas (for example, block descriptor words (BDW) or the MBBCCHHR address of the next overflow record) must be modified to use only standard ISAM interfaces.The ISAM RELSE instruction causes no action to take place.
  • If your DCB exit list contains an entry for a JFCBE exit routine, remove it. The interface does not support the use of a JFCBE exit routine. If the DCB exit list contains an entry for a DCB open exit routine, that exit is taken.
  • The work area into which data records are read must not be shorter than a record. If your processing program is designed to read a portion of a record into a work area, you must change the design. The interface takes the record length indicated in the DCB to be the actual length of the data record. The record length in a BISAM DECB is ignored, except when you are replacing a variable-length record with the WRITE macro.
  • If your processing program issues the SETL I or SETL ID instruction, you must modify the instruction to some other form of the SETL or remove it. The ISAM interface cannot translate a request that depends on a specific block or device address.
  • Although asynchronous processing can be specified in an ISAM processing program, all ISAM requests are handled synchronously by the ISAM interface; WAIT and CHECK requests are always satisfied immediately. The ISAM CHECK macro does not result in a VSAM CHECK macro's being issued but merely causes exception codes in the DECB (data event control block) to be tested.
  • If your ISAM SYNAD routine examines information that cannot be supported by the ISAM interface (for example, the IOB), specify a replacement ISAM SYNAD routine in the AMP parameter of the VSAM DD statement.
  • The ISAM interface uses the same RPL over and over, thus, for BISAM, a READ for update uses up an RPL until a WRITE or FREEDBUF is issued (when the interface issues an ENDREQ for the RPL). (When using ISAM you can merely issue another READ if you do not want to update a record after issuing a BISAM READ for update.)
  • The ISAM interface does not support RELOAD processing. RELOAD processing is implied when an attempt is made to open a VSAM data set for output, specifying DISP=OLD, and, also, the number of logical records in the data set is greater than zero.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014