ВСЕ БАЗОВОЕ для OpenVMS
В этой статье есть несколько проблем. Пожалуйста, помогите улучшить его или обсудите эти проблемы на странице обсуждения . ( Узнайте, как и когда удалять эти шаблонные сообщения )
|
Парадигма | императив |
---|---|
Разработчик | Корпорация цифрового оборудования |
ТЫ | OpenVMS |
VSI BASIC для OpenVMS — это новейшее название диалекта BASIC, языка программирования созданного Digital Equipment Corporation (DEC) и теперь принадлежащего VMS Software Incorporated (VSI). Первоначально он был разработан как BASIC-PLUS в 1970-х годах для операционной системы RSTS-11 на миникомпьютере PDP-11 . Позже он был портирован на OpenVMS , сначала на VAX , затем на Alpha и совсем недавно на Integrity .
Прошлые названия продукта включают: 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». Это позволяет вам писать обработчики ошибок «WHEN ERROR» вокруг защищенных операторов . Более традиционному, но менее элегантному оператору «ON ERROR» не хватает такого контекста или объема.
Одной из наиболее примечательных особенностей VSI BASIC является встроенная поддержка OpenVMS мощных служб управления записями (RMS). До выпуска VAX BASIC встроенная поддержка RMS была доступна только в компиляторе COBOL от DEC .
История
[ редактировать ]История продукта 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. Язык также поддерживает использование условных модификаторов в одной строке. Например, строка " PRINT I UNLESS I < 10
" выведет значение "I", если только я не меньше 10.
БЕЙСИК Плюс 2
[ редактировать ]Basic Plus 2 ( BP2 или BASIC-Plus-2 ) был позже разработан DEC для добавления дополнительных функций и повышения производительности. Он использовал настоящую компиляцию в многопоточный код и записывал выходные данные в машинного языка объектные файлы . Они были совместимы с другими объектными файлами в системе и могли быть собраны в библиотеки. Затем компоновщик (построитель задач TKB) создал исполняемые файлы из них . TKB также поддерживает наложения; это позволяло при необходимости загружать отдельные процедуры в основную память.
Программы BP2 работали под управлением RSX-11 или системы времени выполнения RSX RSTS/E. Этот 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 BASIC для OpenVMS on Integrity для своих серверных платформ Integrity на базе процессоров Intel Позже HP Itanium .
В середине 2014 года HP продала всю экосистему OpenVMS компании VSI, которая переименовала продукт VSI BASIC в OpenVMS . [1]
Пример кода
[ редактировать ]VSI BASIC — это структурированный вариант BASIC, в котором номера строк не являются обязательными, а язык поддерживает как SUB, так и FUNCTION.
Привет, мир
[ редактировать ]print "Hello, world!"
Перевод Цельсия в Фаренгейт
[ редактировать ]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
Ссылки
[ редактировать ]- ^ «Руководство пользователя VSI BASIC для OpenVMS» (PDF) . 2018.