Allocation of virtual I/O

Temporary data sets can be handled by a facility called virtual input/output (VIO). VIO data sets reside in the paging space; but, to the problem program and the access method, the data sets appear to reside on a direct access storage device.

You cannot use VIO for permanent data sets, VSAM data sets, or partitioned data sets extended (PDSEs).

VIO provides two advantages:
  • VIO speeds reading or writing of a data set. All reading and writing operations are done at the speed of main storage access rather than at the speed of I/O to a device.
  • The virtual data set does not occupy space in the user's private area. Thus, unlike a large data area in a program, a virtual data set does not use up program space.

Only the job that creates a VIO data set has access to it to read and write data and to scratch the data set.

SMS manages a VIO data set if (1) you specify a storage classfor the data set with the STORCLAS parameter or (2) an installation-written automatic class selection (ACS) routine selects a storage class for the data set. An SMS-managed VIO data set requires that the assigned storage class supports VIO data sets. Check with your storage administrator.

Requesting VIO: To request a VIO data set, code a DD statement as follows:
  • You may code or omit the DSNAME parameter. If coded, it must specify a temporary data set:
       DSNAME=&&dsname
       DSNAME=&&dsname(member)  
  • You may code or omit the DISP parameter. If coded, it must specify:
       DISP=(NEW,DELETE)
       DISP=(NEW,PASS)
       DISP=(,PASS)  
  • Code a UNIT parameter for non-SMS-managed data sets. UNIT must specify a VIO unit name. During system initialization the installation must define new and/or existing unit names as VIO; the installation should maintain a list of the VIO unit names.

    The unit count subparameter is ignored, if coded.

  • You may code or omit the VOLUME parameter. If you code it, do not specify volume serial numbers.
  • You may code or omit the SPACE parameter. If coded, the parameter can request up to the size of the simulated volume. The system will allocate as the primary quantity plus 15 secondary quantities an entire simulated volume.

    If the requested primary quantity is larger than 65,535 tracks, the job will fail. If the primary request is met, but the primary quantity plus 15 times the secondary quantity is greater than 65,535 tracks, the system allocates 65,535 tracks. When allocating by average block length for a VIO data set, the secondary request is computed using the average block length specified in the SPACE parameter.

    If you omit the SPACE parameter, the system uses a default value: 4 primary and 24 secondary blocks, with an average block length of 8192. If the VIO data set is directed to SMS and space values are specified for the data class chosen by the ACS routines, the data class values will take effect rather than the allocation defaults.

  • You may code or omit the DCB parameter. If you code it, do not specify IS or ISU in the DSORG subparameter.

The system will allocate a VIO data set request to actual direct access storage if the DD statement contains unacceptable parameters; however, if the primary quantity is too big, the system terminates the job.

Example 1:
//EX1  DD  UNIT=VIO
//EX2  DD  DSNAME=&&TEMPDS,UNIT=SYSDA
//EX3  DD  DSNAME=&&TEMPDS(MEM1),UNIT=VIRT3
//EX4  DD  DSNAME=&&MYDS,UNIT=VIO,SPACE=(360,(5,30)),
//      DISP=(,PASS),DCB=(RECFM=FB,LRECL=80,BLKSIZE=360)  

In these examples, the system assigned during system initialization the group names VIO, SYSDA, and VIRT3 as eligible for VIO processing.

Example 2:
//EXSMS DD  DSNAME=&&TEMP,STORCLAS=SCLASVIO  

In the example, EXSMS defines an SMS-managed VIO data set because the storage administrator has defined storage class SCLASVIO with support for VIO.