VSI BASIC for OpenVMS is the latest name for a dialect of the
BASIC
Basic or BASIC may refer to:
Science and technology
* BASIC, a computer programming language
* Basic (chemistry), having the properties of a base
* Basic access authentication, in HTTP
Entertainment
* Basic (film), ''Basic'' (film), a 2003 film
...
programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
created by
Digital Equipment Corporation (DEC) and now owned by VMS Software Incorporated (VSI). It was originally developed as
BASIC-PLUS in the 1970s for the
RSTS-11 operating system on the
PDP-11 minicomputer. It was later ported to
OpenVMS, first on
VAX, then
Alpha
Alpha (uppercase , lowercase ) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician letter ''aleph'' , whose name comes from the West Semitic word for ' ...
,
Integrity, and most recently
x86-64.
Past names for the product include: BASIC-PLUS, Basic Plus 2 (BP2 or BASIC-Plus-2), VAX BASIC, DEC BASIC, Compaq BASIC for OpenVMS and HP BASIC for OpenVMS. Multiple variations of the titles noting the hardware platform (VAX, AlphaServer, etc.) also exist.
Notable features
VSI BASIC has many
FORTRAN-like extensions, as well as supporting the original
Dartmouth BASIC matrix operators.
Line numbers are optional, unless the "ERL" function is present. It allows you to write "WHEN ERROR"
error handlers around protected
statements. The more traditional but less elegant "ON ERROR" statement lacks such context or scope.
One of VSI BASIC's more noteworthy features is built-in support for
OpenVMS's powerful
Record Management Services (RMS). Before the release VAX BASIC, native RMS support was only available in DEC's
COBOL compiler.
History
The VSI BASIC for OpenVMS product history spans a period of more than 30 years, and it has gone through many name and ownership changes in that time. It has also been
ported to a succession of new
platforms as they were developed by DEC, Compaq, HP and VSI. The company and/or platform name has often been included in the product name, contributing to the proliferation of names.
BASIC-PLUS
VSI BASIC began as BASIC-PLUS, created by DEC for their
RSTS-11 operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
and
PDP-11 minicomputer. Programming language statements could either be typed into the
command interpreter directly, or entered into a
text editor, saved to a file, and then loaded into the command interpreter from the file. Errors in source code were reported to the user immediately after the line was entered.
Programs were stored as a
source file, using the "SAVE" command. It could be "compiled" into a non-editable binary file, using the "COMPILE" command. This command did not produce true
machine language programs, but rather a
byte code called "tokens". The tokens were interpreted upon execution, in a manner similar to the more modern
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
.
Programs were entered into the command interpreter starting with
line numbers, integers from 1 to 32767. Lines could be continued onto multiple lines by using a
line feed character. For ease of external editing of the source file, later versions of BASIC-PLUS also allowed the & character as a line-continuation character. Multiple statements could be placed on a single line using as the statement separator.
For PDP-11 systems with virtual memory (
RSTS/E), address space was limited to about 64
KB. With BASIC-PLUS, about half of this was used by the combined command interpreter and run-time library. This limited user programs to about 32 KB of memory. Older
RSTS-11 systems lacked virtual memory, so the user program had to fit into whatever was left of physical memory after RSTS and BASIC-PLUS took up their share. For example, on a PDP-11/35 with 32K of physical memory, running RSTS-11 V04B-17, user programs were limited to 7 KB. Large programs could be broken up into various pieces by use of the "CHAIN" instruction. Programs could
chain to specific line numbers in a secondary program. The use of a shared memory section called
core common also allowed programs to pass data among each other as needed;
disk files could also be used but were slower.
The interpreter included a garbage collecting memory manager, used for both string data and byte-code. A running program could be interrupted, have variables examined and modified, and then be resumed. Many of the control structures used in other high-level languages existed in BASIC-PLUS, including WHILE and UNTIL. The language also supported the use of conditional modifiers on a single line. For example, the line "" would print the value of "I" unless I was less than 10.
BASIC Plus 2
Basic Plus 2 (BP2 or BASIC-Plus-2) was later developed by DEC to add additional features and increase performance. It used true compilation into
threaded code, and wrote its output to
machine language object files. These were compatible with other object files on the system, and could be assembled into libraries. A linker (the TKB taskbuilder) then created
executable files from them. TKB also supported overlays; this allowed individual routines to be swapped into the main memory space as needed.
BP2 programs ran under
RSX-11
RSX-11 is a discontinued family of multi-user real-time operating systems for PDP-11 computers created by Digital Equipment Corporation. In widespread use through the late 1970s and early 1980s, RSX-11 was influential in the development of later ...
or RSTS/E's RSX Run Time System. This RTS only occupied 8KB (later, 2KB) of the user's address space, leaving 56KB for the user's program. These two factors allowed individual BP2 programs to be much larger than BASIC-PLUS programs, often eliminating the need for CHAINing. Unlike BASIC-PLUS (which was only available on RSTS-11), BP2 allowed use on the RSX-11 operating system as well.
VAX BASIC and DEC BASIC
With the creation of the
VAX minicomputer, DEC ported BASIC-PLUS-2 to the new
VMS operating system, and called it VAX BASIC. VAX BASIC used the standard VMS calling standards, so object code produced by VAX BASIC could be linked with object code produced by any of the other VMS languages. Source code for BASIC Plus 2 would usually run without major changes on VAX BASIC.
When DEC created their
Alpha
Alpha (uppercase , lowercase ) is the first letter of the Greek alphabet. In the system of Greek numerals, it has a value of one. Alpha is derived from the Phoenician letter ''aleph'' , whose name comes from the West Semitic word for ' ...
microprocessor
A microprocessor is a computer processor (computing), processor for which the data processing logic and control is included on a single integrated circuit (IC), or a small number of ICs. The microprocessor contains the arithmetic, logic, a ...
, VMS was ported to it and renamed
OpenVMS. VAX BASIC was likewise ported to Alpha and renamed DEC BASIC. The BASIC
interpreter was permanently dropped at this point, which meant that DEC BASIC programs could only be run as OpenVMS
executables, produced by a
compile followed by a
link.
Compaq, HP and VSI
When DEC was purchased by
Compaq in 1997/98, the products were renamed Compaq BASIC for OpenVMS VAX and Compaq BASIC for OpenVMS Alpha.
Likewise, when
Compaq merged with
HP in 2001/02, the products were renamed HP BASIC for OpenVMS on VAX and HP BASIC for OpenVMS on AlphaServer. HP later released HP BASIC for OpenVMS on Integrity for their Integrity
server platforms based upon
Intel's
Itanium processors.
In mid 2014, HP sold the whole OpenVMS ecosystem to VSI who renamed the product VSI BASIC for OpenVMS.
Sample code
VSI BASIC is a structured variant of BASIC in which line numbers are optional, and the language supports both SUBs and FUNCTIONs.
Hello, world
print "Hello, world!"
Celsius to Fahrenheit conversion
function real to_fahrenheit(real celsius)
to_fahrenheit = (celsius * 1.8) + 32
end function
external real function to_fahrenheit(real)
declare real temp_celsius
when error in
print "Enter a temperature in celsius";
input x
temp_celsius = real(x)
use
print "Error: enter a valid numeric value, please."
end when
print "Temperature in degrees fahrenheit is "; to_fahrenheit(temp_celsius)
end
References
External links
Official BASIC documentation at HP
{{BASIC
Articles with example BASIC code
OpenVMS software
BASIC compilers
BASIC programming language family