|
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.
|