VSI BASIC для OpenVMS - это последнее название диалекта языка программирования BASIC, созданного Digital Equipment Corporation (DEC) и теперь принадлежащего VMS Software Incorporated (VSI). Первоначально он был разработан как BASIC-PLUS в 1970-х годах для операционной системы RSTS-11 на миникомпьютере PDP-11 . Позже он был перенесен на OpenVMS , сначала на VAX , затем на Alpha и совсем недавно на Integrity .
Парадигма | императив |
---|---|
Разработчик | Корпорация цифрового оборудования |
Операционные системы | OpenVMS |
Предыдущие названия продукта включают: BASIC-PLUS , Basic Plus 2 ( BP2 или BASIC-Plus-2 ), VAX BASIC , DEC BASIC , Compaq BASIC для OpenVMS и HP BASIC для OpenVMS . Также существует множество вариантов названий с указанием аппаратной платформы (VAX, AlphaServer и т. Д.).
Примечательные особенности
VSI BASIC имеет множество расширений, подобных FORTRAN , а также поддерживает оригинальные матричные операторы Dartmouth BASIC .
номера строк не являются обязательными, если не присутствует функция «ERL». Это позволяет вам писать обработчики ошибок типа «КОГДА ОШИБКА» вокруг защищенных операторов . Более традиционный, но менее элегантный оператор «ON ERROR» не имеет такого контекста или области действия.
Одна из наиболее примечательных особенностей VSI BASIC - встроенная поддержка мощных служб управления записями (RMS) OpenVMS . До выпуска VAX BASIC встроенная поддержка RMS была доступна только в компиляторе DEC COBOL .
История
История продукта VSI BASIC для OpenVMS насчитывает более 30 лет, и за это время он претерпел много изменений в названии и владельце. Он также был перенесен на ряд новых платформ , разработанных DEC, Compaq, HP и VSI. Название компании и / или платформы часто включается в название продукта, что способствует увеличению количества названий.
БАЗОВЫЙ-ПЛЮС
VSI BASIC начинался как BASIC-PLUS , созданный DEC для их операционной системы RSTS-11 и миникомпьютера PDP-11 . Операторы языка программирования могут быть либо набраны непосредственно в интерпретаторе команд , либо введены в текстовый редактор , сохранены в файл, а затем загружены в интерпретатор команд из файла. Об ошибках в исходном коде пользователю сообщалось сразу после ввода строки.
Программы хранились как исходный файл .BAS с помощью команды «СОХРАНИТЬ». Его можно "скомпилировать" в нередактируемый двоичный файл .BAC с помощью команды "COMPILE". Эта команда создавала не настоящие программы на машинном языке , а скорее байт-код, называемый «токенами». При исполнении токены интерпретировались аналогично более современной Java .
Программы вводились в интерпретатор команд, начиная с номеров строк , целых чисел от 1 до 32767. Строки можно было продолжить на несколько строк с помощью символа перевода строки . Для облегчения внешнего редактирования исходного файла более поздние версии BASIC-PLUS также допускали использование символа & в качестве символа продолжения строки. Несколько операторов могут быть помещены в одну строку, используя \
в качестве разделителя операторов.
Для систем PDP-11 с виртуальной памятью ( RSTS / E ) адресное пространство было ограничено примерно 64 КБ . В BASIC-PLUS примерно половина из них использовалась объединенным интерпретатором команд и библиотекой времени выполнения. Это ограничивало пользовательские программы примерно 32 КБ памяти. В старых системах RSTS-11 не хватало виртуальной памяти, поэтому пользовательская программа должна была вписаться во все, что осталось от физической памяти после того, как RSTS и BASIC-PLUS заняли свою долю. Например, на PDP-11/35 с 32 КБ физической памяти, работающей под управлением RSTS-11 V04B-17, пользовательские программы были ограничены 7 КБ. Большие программы могут быть разбиты на различные части с помощью инструкции «CHAIN». Программы могут быть связаны с определенными номерами строк во вторичной программе. Использование раздела разделяемой памяти, называемого общим ядром, также позволяло программам передавать данные друг другу по мере необходимости; файлы на диске также можно было использовать, но они работали медленнее.
Интерпретатор включал диспетчер памяти для сбора мусора, используемый как для строковых данных, так и для байт-кода. Работающую программу можно прервать, проверить и изменить переменные, а затем возобновить. Многие управляющие структуры, используемые в других языках высокого уровня, существовали в BASIC-PLUS, включая WHILE и UNTIL. Язык также поддерживает использование условных модификаторов в одной строке. Например, в строке « » будет напечатано значение «I», если я не меньше 10.PRINT I UNLESS I < 10
БАЗОВЫЙ Плюс 2
Basic Plus 2 ( BP2 или BASIC-Plus-2 ) был позже разработан DEC для добавления дополнительных функций и повышения производительности. Он использовал настоящую компиляцию в многопоточный код и записывал свои выходные данные в объектные файлы машинного языка . Они были совместимы с другими объектными файлами в системе и могли быть собраны в библиотеки. Затем компоновщик (конструктор задач TKB) создал из них исполняемые файлы . TKB также поддерживает оверлеи; это позволяло при необходимости переносить отдельные подпрограммы в основную память.
Программы BP2 работают под управлением RSX-11 или RSTS / E Run Time System. Этот RTS занимал только 8 КБ (позже 2 КБ) адресного пространства пользователя, оставляя 56 КБ для программы пользователя. Эти два фактора позволили отдельным программам BP2 быть намного больше, чем программы BASIC-PLUS, часто устраняя необходимость в ЦЕПИ. В отличие от BASIC-PLUS (который был доступен только в RSTS-11), BP2 также допускал использование в операционной системе RSX-11.
VAX BASIC и DEC BASIC
С созданием миникомпьютера VAX компания DEC перенесла BASIC-PLUS-2 в новую операционную систему VMS и назвала ее VAX BASIC . VAX BASIC использовал стандартные стандарты вызовов VMS, поэтому объектный код, созданный VAX BASIC, мог быть связан с объектным кодом, созданным на любом из других языков VMS. Исходный код BASIC Plus 2 обычно запускается без серьезных изменений на VAX BASIC.
Когда DEC создала свой микропроцессор Alpha , VMS была перенесена на него и переименована в OpenVMS . VAX BASIC был также перенесен на Alpha и переименован в DEC BASIC . На этом этапе интерпретатор BASIC был окончательно удален, а это означало, что программы DEC BASIC могли запускаться только как исполняемые файлы OpenVMS , созданные путем компиляции с последующей ссылкой .
Compaq, HP и VSI
Когда DEC была приобретена Compaq в 1997/98 году, продукты были переименованы в Compaq BASIC для OpenVMS VAX и Compaq BASIC для OpenVMS Alpha .
Аналогичным образом, когда Compaq объединилась с HP в 2001/02 году, продукты были переименованы в HP BASIC для OpenVMS на VAX и HP BASIC для OpenVMS на AlphaServer . HP позже выпустила HP BASIC для OpenVMS на целостности для их целостности серверных платформ , основанных на Intel «s Itanium процессоров.
В середине 2014 года HP продала всю экосистему OpenVMS компании VSI, которая переименовала продукт VSI BASIC в OpenVMS [1].
Образец кода
Привет мир
ПЕЧАТЬ "Привет, мир!"
Конвертация из Цельсия в Фаренгейта
10 ПЕЧАТЬ «Введите температуру в градусах Цельсия» ; ВХОД C, когда ошибка в X = REAL ( C ) PRINT «Температура в градусах Фаренгейта равна» ; ( X * 1.8 ) + 32 используйте PRINT «Ошибка: введите допустимое числовое значение». конец, когда 40 КОНЕЦ
- Примечание. VSI Basic не требует номеров строк.
Рекомендации
- ^ "Руководство пользователя VSI BASIC для OpenVMS" (PDF) . 2018.
Внешние ссылки
- Официальная документация по BASIC в HP
- HP BASIC для OpenVMS "демонстрации и примеры исходного кода"