VX/RT

Register to Download a Free 30-day trial for Unix

VX/RT is a collection of libraries written by Sector7 that provides the equivalent VMS API functionality on the target Linux/UNIX. In order for VX/RT to function, the following toolkits must also be installed: VX/DCL , VX/RMS. More than 400 of the most commonly used VMS APIs have been faithfully reproduced with the identical names, arguments, return code and functionality. The VX/RT (and other libraries) link into the application to provide the functionality the VMS application requires to perform the application intended task.

Key Benefits

Introduction

The technical issues of migrating VMS applications from VMS to Linux/UNIX can be summarized in three ways; Language differences; Data Files (RMS, RDB) VMS library calls. The language differences can be solved using a mixture of native compilers and language translators. The data files can be moved from the VMS system to the target environment and the data formats translated into a form usable on the target environment (see VX/DATAX).

Once the VMS specific language extensions and behaviors have been resolved the program can be compiled to object form ready for linking with any external subprograms. Most VMS applications make calls to the VMS operating system to perform system tasks ( BAS$ , CLI$ , CONV$ , EDT$ , FDL$ , FDV$ , FOR$ , LBR$ , LIB$ , MTH$ , OTS$ , SOR$ , SMG$ , STR$ , and SYS$.)

These VMS APIs allow VMS applications to perform complex tasks without the programmer having to write the equivalent functions. It is also these same APIs that cause the greatest difficulty when moving those applications to an operating system that does not support the equivalent APIs.

Sector7 designed VX/RT to enable the application to be ported with the minimum number of code changes. To this end, the VX/RT APIs accept VMS file specifications and return VMS return codes. For example SYS$OPEN takes a pointer to a FAB and would return RMS$_FNF (98964) if the fine is not found. The FAB requires no changes and most of the fields are supported (obviously some field such as number of extents make no sense on some target systems).

The list of supported APIs logical functions can be broken down into the following:

Click on one of the following APIs to be taken to that section
Command Line Interpreter
Data Conversion Routines
DCL
Devices
Event Flags
File Management
I/O
Interprocess Communication
Librarian
Lock Management
Logicals
Mailboxes
Mathematical Routines
Message Files
Memory Management
Process Control
Relational Database
Reliable Distributed Transactions
Screen And Forms Management
Sorting
Strings
Symbols
Timers And VMS Date Time Format

Command Line Interpreter

Many applications make use of the very powerful DEC COMMAND LINE INTERPRETER. Commands formats are created and the CLI will scan the input command line and apply the syntax rules programmed into the definition file (CLD). Sector7 provides VX/CLI , which combines a command line definition compiler and a command line interpreter.

Data Conversion Programs

VX/RT includes a number of user callable data conversion routines. The primary problem when moving data between VMS and other architectures is that the internal data representation is different, not only in byte ordering but also the default floating point format on most OPEN systems is IEEE488 and VMS is DFLOAT. Sector7 provides VX/DataX that will convert RMS data records to any machine architecture. Variable format records are handled by Sector7 data scripting language.

DCL

Most applications are invoked through a DCL script or call DCL from within the program to perform functions. VX/DCL is a complete DCL for open systems which allows both "standard" command line usage together with programmable APIs callable from the user applications ( LIB$SPAWN, LIB$DO_COMMAND, LIB$GET_SYMBOL, LIB$GET_SYMBOL ). VX/DCL is responsible for the maintenance of the LOGICAL TABLES and the SYMBOL tables. Programs report completion status backs VX/DCL via IPC mechanisms. VX/DCL allows full VMS filespecs to be used for operations and will execute "on the fly" conversion to the pen system specification. VX/DCL supports an interface to VX/JSP , which provides BATCH and PRINT services through a VMS queue management system implemented on open systems.

Devices

VX/RT provides a mechanism for VMS device to Open system device mapping. Devices can be assigned in their VMS form ( SYS$ASSIGN ("LA43:,.)), and the internal mapping function of VX/RT will resolve the VMS device to the open equivalent. Devices can be assigned and allocated, following the VMS specifications for multi-user access to shared devices.

Event Flags

Most VMS applications, especially those using asynchronous and inter-process communication I/O will use VMS event flags to synchronize code fragments. VMS event flags differ in many ways from UNIX or NT semaphores. Sector7 has implemented full VMS event flag functionality allowing the application to make full use of LOCAL and GLOBAL clustered event flags. All of the VMS APIs for controlling access to event flags are fully supported.

File and RecordManagement

VX/RT includes VX/RMS a full RMS file system for Linux/UNIX. VX/RMS provides all VMS file formats (KEYED, RELATIVE, SEQUENTIAL, BLOCK) and all record and key types. VX/RMS maps RMS keyed files are mapped to a C-ISAM V4 B_ tree file system, which can be accessed by gateways from most relational databases and report writers. In addition Sector7 provides an ODBC interface to VX/RMS allowing concurrent data retrieval in a client server mode from Windows based systems and applications. VX/RMS is accessible from the standard SYS$ interface and provides full support for FAB, RAB, NAM and XABs. VX/RMS also includes a full FDL$ API set with the corresponding FDL command line programs (ANALYZE/RMS CONVERT/FDL).

I/O

VX/RT provides both a synchronous and asynchronous QIO mechanism for mailboxes, terminal, serial, DECNET and TCP/IP devices. The interface is identical to QIO under VMS and provides item lists, terminators and I/O status blocks in the expected format. All terminal modes are supported including editing and picture fields.

Interprocess Communication

VX/RT supports many APIs for interprocess communication including mailboxes, global sections and event flags. IPC is also supported through Sector7's implementation of the digital distributed lock manager.

Librarian

VX/RT includes VX/LBR which provides VAX librarian functionality at the DCL command level and the LBR$ API. VX/LBR allows text and binary files to be added to archives for fast retrieval and manipulation. User extendible DCL HELP is fully implemented using LBR$ command.

Lock Management

Lock management ($ENQ, $DEQ, $GETLKI) is included in VX/RT and allows all DEC DLM (Distributed Lock Management) functionality. Data can be passed between processes using the value block and all blocking mode ASTs are fully functional through the Sector7 AST management service. In the current lock manager (as of 28th July 1996), locks cannot be distributed over a cluster, check the Sector7 web pages for updates.

Logicals

VX/RT supports a VMS compliant logical manager allowing user definable tables and logical inheritance classes for sub processes. User mode and kernel mode logical are supported and persistence rules adhered to. In addition to the standard logical management, Sector7 has extended the logical subsystem to allow logicals to be accessed and set from UNIX style APIs.

Mailboxes

VMS style mailboxes have been implemented in VX/RT. To implements the full functionality of VMS mailboxes, Sector7 created its own subsystem that allows asynchronous completion, completion mailboxes and high throughput communication. A mailbox manager allows users to administer the mailboxes from a command line interface.

Mathematical Routines

Sector7 has implemented all of the VMS MTH$ routines including complex math routines. All of the MTH$ routines have been implemented using IEEE488 precision and may differ slightly from the VMS originals in both precision and range.

Message Files

VX/MSG allows users to use their message files from VMS on Linux/UNIX. VX/MSG is a VMS message compiler that will accept VMS style messages and output a fast indexed hash file or a shared memory file (for almost instant access). Included in the message compiler is the ability for the user to specify C, FORTRAN or BASIC including files for the message values.

Memory Management

VMS memory management APIs have been faithfully reproduced in the Sector7 library system. PAGED based allocation (VM_PAGE), ZONE based allocation (VM_ZONE) and GLOBAL PSECT ($CRMPSC) functionality is implemented. Certain restrictions apply to mapping global sections due to the memory architecture of the target systems, generally mapping of I/O ports to memory addresses is NOT supported.

Process Control

A full set of APIs for controlling processes is available in VX/RT. VX/RT maintains its own additional process block, which stores the additional information, services such as $GETJPI require. $CREPRC, $DELPRC, $SPAWN, $DO_COMMAND, $RUN_PROGRAM, $WAKE, $HIBER allow VMS applications to function as a cohesive application unit.

Relational Database

Sector7 provides many tools and utilities for converting RDB databases to ORACLE, SYBASE and INFORMIX formats. VX/RDO is a translator for automatically converting RDB RDO (pre SQL) into run-able embedded SQL or SQLMOD programs.

Reliable Distributed Transactions

Sector7 has engineered a version 2 asynchronous API to Digital's Reliable Transaction Router V3.0, on most popular machines that support some implementation of POSIX threads. Sector7 also offers consulting services for users wishing to add distributed reliable computing power to their existing environments. Sector7 also provides ISIS and MQSeries APIs.

Screen and Forms Management

In addition to the LIB$ APIs for controlling I/O to the screen, Sector7 supplies VX/SMG and VX/FMS. Versions of TDMS and DEC FORMS for UNIX will be released in upcoming releases. VX/SMG provides a character cell "window" manager based on Digital's SMG APIs and functionality, VX/FMS provides an open API for Digital's FMS product ( FDV$ ).

Sorting

VX/SOR enables the application for SORT data either from multiple files of fed directly from the application. In addition to the VMS API, a DCL command line option is included. All SORT/MERGE functionality exists including the ability to limit the working set of the sort process.

Strings

A full set of STR$ APIs exist for programs to manipulate strings from high level languages such as FORTRAN, C, BASIC, ADA, PASCAL and BLISS. The STR$ APIs are identical to the VMS counterparts and continue to take string descriptors and return VMS error codes.

Symbols

The closest analogue to SYMBOLS on a UNIX system is the environment, however an environment variable set in a program CANNOT be exported to the calling shell. This one way behavior severely restricts the ability of VMS applications to use environment variables in the place of VMS SYMBOLS. VX/RT implements L IB$GET_SYMBOL and LIB$SET_SYMBOL via IPC to VX/DCL , thereby, allowing user programs to set symbols in the parent process. The requirement is that VX/DCL must be used to run the executable if symbol manipulation is required.

Timers and VMS Date Time Format

VX/RT provides a QUADWORD data/time format exactly compliant with the VMS internal format. VX/RT supports both delta and absolute times and a range of LIB$ and SYS$ routines to use the data. Unlike some open systems, VX/RT allows the stacking of alarm events and notification is through the Sector7 AST control.