VMS / OpenVMS RMS (Record Management System) compatibility library (SYS$) for x86 Linux and Windows
VX/RMS provides a call compatible library for the migration of VMS / OpenVMS RMS to x86 Intel Linux
VX/RMS is an implementation of Digitals VMS / OpenVMS RMS (Record Management System) system for Linux/Windows. VX/RMS allows VMS / OpenVMS programs, which access RMS directly, to function without change. All VMS / OpenVMS file types and access modes are supported. Support for relative, sequential and block mode files is supplied by direct access to the Linux/Windows file system.
VX/RMS supports all the VMS / OpenVMS RMS file types and formats.
you can access the system identically on Linux as with VMS / OpenVMS via the SYS$ API set.
VX/RMS supports all of the major VMS/RMS file types. Relative and sequential file types are mapped directly onto the Linux/Windows file systems.
Keyed files are mapped onto an extended version of the industry-standard index file system D-ISAM.
Fixed and variable length data objects are supported for index and sequential data files.
Relative record files support direct access with fixed record lengths.
VX/RMS is VMS / OpenVMS RMS call-compatible and uses identical RAB, FAB, XAB and NAM data structure for information exchange between the users, program and VX/RMS.
All of the fields are compatible, thereby eliminating the need to change application code when porting VMS/RMS to VX/RMS hosted on Linux/Windows.
VMS / OpenVMS file and record locking is fully supported in order to provide the same level of functionality and integrity as VMS/RMS in a multi-user environment. In addition to VMS/RMS record-locking compatibility, VX/RMS also retains Linux/Windows record-locking standards, thereby allowing concurrent access to the data from both migrated and native applications.
VX/RMS allows the user to set up and maintain VMS device names and device attributes in a device database. VMS device allocation and de-allocation integrity is maintained allowing shared and exclusive access to specific devices.
VX/RMS will recognize I/O to mailboxes, files, and terminal devices.
VX/RMS allows optional re-use of deleted record space thereby reducing the need to re-organize index files.
VX/RMS supports an optional synchronous data and asynchronous index update mode for fast secure file I/O.
ODBC support for accessing VX/RMS files
VMS / OpenVMS RMS FILESPECS AND LOGICALS for Linux
VX/RMS supports VMS logical names and file specifications. VX/RMS will fully decode VMS-style file specs and then automatically convert the final string to a valid Linux file specification. VX/RMS has four file translation schemes, all selectable at run-time. The VMS file-name translation routines fully understand VMS devices, logicals and rooted directories, etc. For example, on a Linux/Windows system the file specification "LOG1:[mydir.logs.rtr.data]1996.log" would translate to (assuming the logical LOG1 as assigned "[disk1]") "/disk1/mydir/logs/rtr/data/1996.log".
VMS / OpenVMS RMS ERROR CODES
Where appropriate, VX/RMS will convert Linux/Windows error codes to their RMS equivalents. If a file were opened for input, and it did not exist, the Linux/Windows system would return ENOFILE. This would be translated by VX/RMS to 98964 (RMS$_FNF). By keeping the same errors code, programs that check for specific return code from RMS APIs, will continue to function correctly on VMS and the target system.
VMS / OpenVMS RMS KEYED INDEXED FILES
All VMS operations on keyed files are fully supported. Sequential, keyed , GET by RFA, all perform identically to VMS. By default, VX/RMS supports up to 32 keys per file and each key can be split into 32 segments. These values can be extended, but D-ISAM data file compatibility may be lost. VX/RMS supports the following key types:
BYTE (signed and unsigned)
WORD (signed and unsigned)
LONG (signed and unsigned)
FLOAT
DOUBLE
STRING
QUADWORD (signed and unsigned)
DECIMAL
All keys may be declared ascending or descending. SYS$DISPLAY will correctly return the file organization. Various forms of key compression are optionally available at run-time. NULL keys are not currently supported. Unlike VMS/RMS, when a key is deleted, VX/RMS has the option to re-use old data space thereby making file reorganizations less frequent.
For users who rely on RFA uniqueness, a run-time option prevents the re-use of deleted data. For those users familiar with D-ISAM functionality, Sector7 has added extra capabilities to the base index package. GET by RFA will not change the current key sequence, UPDATE, DELETE/GET NEXT operations will always return the correct record as defined by VMS/RMS. Manual and automatic locking is supported. A standardized interface allowing your RMS files to be accessed. Your previous proprietary data files can now be accessed from many different Linux fourth-generation report writers, query languages and databases.
By using a file format package based on the industry standard D-ISAM structure, the benefits of increased performance, data integrity and compatibility with other products, based on the D-ISAM file system, are gained.
VMS / OpenVMS RMS FIXED & SEQUENTIAL FILES
Relative record files are fully implemented on top of the native Linux/Windows file system. VARIABLE and FIXED formats are supported and unwritten, deleted and filled records detected. DIRECT (RFA) access is fully supported.
Sequential file access is fully supported. Both FIXED and VARIABLE length is implemented. In addition to supporting the regular VMS sequential file types, VX/RMS will read Linux/Windows files. DIRECT (RFA) access is fully supported.
VMS / OpenVMS RMS RECORD LOCKING AND FILE POSITIONING
VX/RMS uses the identical record Locking Model as Open VMS. DISAM (the core ISAM manager for VX/RMS) has been modified to provide file positioning (RFA after RECORD LOCKED for example) and also KEY of REFERENCE following GET BY RFA as RMS on VMS / OpenVMS.
VX/RMS uses the standard Linux and Windows record locking mechanisms. These record locking models have been enhanced for Multi Stream Enabled File I/O.
VMS / OpenVMS RMS Call Compatible Libraries SYS$ for Linux