IBM uses the term data set in official documentation as a synonym of file, and DASD instead of disk drive.
VSAM records can be of fixed or variable length. They are organised in fixed-size blocks called Control Intervals (CIs), and then into larger divisions called Control Areas (CAs). Control Interval sizes are measured in bytes — for example 4 kilobytes — while Control Area sizes are measured in disk tracks or cylinders. Control Intervals are the units of transfer between disk and computer so a read request will read one complete Control Interval. Control Areas are the units of allocation so, when a VSAM data set is defined, an integral number of Control Areas will be allocated.
The Access Method Services utility program IDCAMS is commonly used to manipulate ("delete and define") VSAM data sets.
The physical organization of VSAM data sets differs considerably from the organizations used by other access methods.
VSAM data sets consist of control intervals (CI) and control areas (CA). The size of the CI and CA is normally determined by the access method, and the way in which they are used is not visible to the user. There will be a fixed number of control intervals in each control area.
A control interval normally contains multiple records. The records are stored within the control interval starting from the low address upwards. Control information is stored at the other end of the control interval, starting from the high address and moving downwards. The space between the records and the control information is free space. The control information comprises two types of entry: a control interval descriptor field (CIDF) which is always present, and record descriptor fields (RDF) which are present when there are records within the control interval and describe the length of the associated record. Free space within a CI is always contiguous.
When records are inserted into a control interval, they are placed in the correct order relative to other records. This may require that records have to be moved up the control interval. Conversely, when a record is deleted, later records are moved down so that the free space remains contiguous. If there is not enough free space in a control interval for a record to be inserted, the control interval is split. Roughly half the records are stored in the original control interval while the remaining records are moved into a new control interval. The new control interval is taken from a pool of free control intervals within the same control area as the original control interval. If there is no remaining free control interval within that control area, the control area itself is split and the control intervals are distributed equally between the old and the new control areas.
You can use three types of record-orientated file organization with VSAM (the contents of linear data sets have no record structure):
Also referred to as VSAM ESDS (entry-sequenced data set) organization, VSAM sequential file records are stored in the order in which they were entered.
VSAM entry-sequenced data sets are equivalent to QSAM sequential files. The order of the records is fixed.
Also referred to as VSAM KSDS (key-sequenced data set) organization, VSAM indexed file records are ordered according to the collating sequence of a user-defined embedded prime key field. The prime key consists of one or more consecutive characters in the records. It uniquely identifies the record and determines the sequence in which it is accessed with respect to other records. The most important that has to be noted while going for the KSDS is that, the key value has to be in a sorted order in the file. A prime key for a record might be, for example, an employee number or an invoice number.
A KSDS has two parts: the index component and the data component. These may be stored on separate disk volumes.
A KSDS may have more than one key. A secondary key is provided by an alternate index which is itself a KSDS.
Also referred to as VSAM fixed-length or variable-length RRDS (relative-record data set) organization, VSAM relative file records are ordered by their relative key. The relative key is the relative record number, which represents the location of the record relative to where the file begins. The relative record number identifies the fixed- or variable-length record.
In a VSAM fixed-length RRDS, records are placed in a series of fixed-length slots in storage. Each slot is associated with a relative record number. For example, in a fixed-length RRDS containing 10 slots, the first slot has a relative record number of one, and the tenth slot has a relative record number of 10.
In a VSAM variable-length RRDS, the records are ordered according to their relative record number. Records are stored and retrieved according to the relative record number that you set.
There are three types of access technique for VSAM data:
Each is optimised for different access patterns. For example, LSR is optimised for "random" or direct access, whereas NSR is optimised for sequential access.
Another difference is that some access techniques are more available than others for specific execution and programming environments. For example, LSR access is easy to achieve from CICS while NSR access has historically been easier to use than LSR for batch programs.
Sharing of VSAM data between CICS regions can be done by VSAM Record-Level Sharing (RLS). This adds record caching and, more importantly, record locking. Logging and commit processing remain the responsibility of CICS which means that sharing of VSAM data outside a CICS environment is severely restricted.
Sharing between CICS regions and batch jobs requires Transactional VSAM, DFSMStvs. This is an optional program that builds on VSAM RLS by adding logging and two-phase commit, using underlying z/OS system services. This permits generalised sharing of VSAM data.
VSAM was introduced as a replacement for older access methods and was intended to add function, to be easier to use and to overcome problems of performance and device-dependence.
The KSDS organization was designed to replace ISAM, the Indexed Sequential Access Method. Changes in disk technology had meant that searching for data in ISAM data sets had become very inefficient. It was also difficult to move ISAM data sets as there were imbedded pointers to physical disk locations which became invalid if the data set was moved.
The RRDS organization was designed to replace BDAM, the Basic Direct Access Method. In some cases, BDAM data sets contained imbedded pointers which prevented them from being moved. However, most BDAM data sets did not and the incentive to move from BDAM to VSAM RRDS was much less compelling than that to move from ISAM to VSAM KSDS.
Linear data sets were added later, followed by VSAM RLS and then Transactional VSAM.