VOS provides compilers for PL/I, COBOL, Pascal, FORTRAN, VOS C, BASIC, and C++. Each of these programming languages can make VOS system calls (e.g. s$seq_read to read a record from a file), and has extensions to support varying-length strings in PL/I style. Developers typically code in their favourite VOS text editor, or offline, before compiling on the system; there are no VOS IDE applications.
In its history, Stratus has offered hardware platforms based on the Motorola 68000 microprocessor family (“FT” and “XA” series), the Intel i860 microprocessor family (“XA/R” series), the HP PA-RISC processor family (“Continuum” series), and the Intel Xeon x86 processor family (“V Series”). All versions of VOS offer compilers targeted at the native instruction set, and some versions of VOS offer cross-compilers.
Stratus added support for the POSIX API in VOS Release 14.3 (on Continuum), and added support for the GNU C/C++ compiler, GNU gdb debugger, and many POSIX commands in VOS Release 14.4. Each additional release of VOS has added more POSIX.1 capabilities, to the point where many user-mode open-source packages can now be successfully built. For this reason, beginning with Release 17.0, Stratus renamed VOS to OpenVOS.
Stratus offers supported ports of Samba, OpenSSL, OpenSSH, GNU Privacy Guard, OpenLDAP, Berkeley DB, MySQL Community Server, Apache, IBM WebSphere MQ, and the community edition of Java.
Numeric values in VOS are always big endian, regardless of the endianness of the underlying hardware platform. On little endian servers with x86 processors, the compilers do a byte swap before reading or writing values to memory to transform the data to or from the native little endian format.
What is VOS?
VOS has a fairly complete command macro language which can be used to create menu systems, automate tasks etc. VOS command macros accept arguments on the command-line or via a user interface “form”. Arguments are defined at the beginning of the command macro in a “parameters” section. The language supports a range of statements, including if/then/else, boolean operations, “while” loops, “goto” and excellent error reporting. The command macro language can be executed in interactive and non-interactive modes. It can be used to automate programs, capturing prompts and sending appropriate responses. This has led Stratus to limit the capabilities of the command macro language.
The macro language lacks support for user-defined functions and does not easily support include files. The string handling is prone to errors, especially with embedded control characters.