Interface to an Alternate VSAM Emulator
CMS provides the support necessary to define and access an alternate VSAM emulator. Instead of using the VSE/VSAM support provided by CMS, you can write your own emulator or use some other VSAM emulator.
Note: Programs that intend to use an alternate VSAM emulator
must be OS/VSAM programs.
To define an alternate VSAM emulator use the FILEDEF command. For
example, if you have an emulator named FAST, you could use the following
FILEDEF command:
FILEDEF VSAM SUBSYS FAST
The emulator
(in this case, FAST) must already exist as a nucleus extension, be
available as a module, or a be member of a loadlib. For more information
on the SUBSYS option of FILEDEF, see z/VM: CMS Commands and Utilities Reference.For the OPEN, CLOSE, and TCLOSE macros, the interface branches
and returns by BALR to the origin of the alternate VSAM emulator module.
On the call entry, the register contents are as follows:
- R1
- Standard subcommand PLIST address
- R2
- Address emulator nucleus extension SCBLOCK
- R12
- Entry point address
- R13
- 24-word save area address
- R14
- Return address
- R15
- Entry point address
For OPEN requests:
For CLOSE or TCLOSE requests: The emulator's OPEN processing initializes the appropriate fields within the ACB according
to the file processing macros (for example, GET, PUT, POINT, and so on).
The connection to the emulator is established as a result of issuing the FILEDEF command. The connection is an address pointer, at displacement 256 (X'100') within the OS/CVT simulated by CMS, to the origin of the emulator module. The address pointer is used by the control block manipulation macros (GENCB, MODCB, TESTCB, and so on) to establish the base address of the branch vector defined by OS/VSAM interface. The macros then branch directly to the appropriate branch table entry for the function being executed.