VSI BASIC for OpenVMS

Source: Wikipedia, the free encyclopedia.
VSI BASIC for OpenVMS
Developer
Digital Equipment Corporation
OSOpenVMS

VSI BASIC for OpenVMS is the latest name for a dialect of the

RSTS-11 operating system on the PDP-11 minicomputer. It was later ported to OpenVMS, first on VAX, then Alpha, and most recently Integrity
.

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

.

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

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 .BAS

byte code called "tokens". The tokens were interpreted upon execution, in a manner similar to the more modern Java
.

Programs were entered into the command interpreter starting with

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 (

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 "PRINT I UNLESS I < 10" 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

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 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 microprocessor, 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.[1]

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

  1. ^ "VSI BASIC for OpenVMS User Manual" (PDF). 2018.

External links