Other devices

z/OS® XL C/C++ supports several other devices for input and output. You can open these devices only by ddname. Table 1 lists a number of these devices and describes which record formats are valid for them. None of the devices listed can be opened for update except the DUMMY data set.

Table 1. Other devices supported for input and output
Device Valid open modes Repositioning? fldata()__device
Printer w, wb, a, ab No __PRINTER
Card reader r, rb rewind() only __OTHER
Card punch w, wb, a, ab No __OTHER
Optical reader r, rb rewind() only __OTHER
DUMMY data set r, rb, r+, rb+, r+b, w, wb, w+, wb+ w+b, a, ab, a+, ab+, a+b rewind() only __DUMMY
SUBSYS= r, rb No __OTHER
Note: For all devices above that support open modes a or ab, the modes are treated as if you had specified w or wb.

z/OS XL C/C++ queries each device to find out its maximum BLKSIZE.

The DUMMY data set is not truly a device, although z/OS XL C/C++ treats it as one. To use the DUMMY data set, specify DD DUMMY in your JCL. On input, the DUMMY data set always returns EOF; on output, it is always successful. This is the way to specify a DUMMY data set:
   //MYDD   DD  DUMMY

For more information on DUMMY data sets, see z/OS MVS JCL User's Guide.

z/OS XL C/C++ provides minimal support for subsystem (SUBSYS=) managed data sets. Support is limited to opening for read using the dd:ddname(member) syntax with the fopen() filename. The ddname in the JCL stream must specify the SUBSYS= parameter. In this case, fopen() will open the DCB as DSORG=PS, required for subsystem managed data sets, but will perform the BLDL/FIND sequence to allow the subsystem to manage processing of the desired member.