stringtranslate.com

VSI BASIC для 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. Язык также поддерживает использование условных модификаторов в одной строке. Например, в строке « » будет печататься значение «I», если только я не меньше 10.PRINT I UNLESS 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 выпустила HP BASIC для OpenVMS on Integrity для своих серверных платформ Integrity на базе процессоров Intel Itanium .

В середине 2014 года HP продала всю экосистему OpenVMS компании VSI, которая переименовала продукт VSI BASIC в OpenVMS . [1]

Образец кода

VSI BASIC — это структурированный вариант BASIC, в котором номера строк не являются обязательными, а язык поддерживает как SUB, так и FUNCTION.

Привет, мир

напечатать «Привет, мир!»

Перевод Цельсия в Фаренгейт

функция реальный to_fahrenheit (реальный градус Цельсия) to_fahrenheit = (по Цельсию * 1,8) + 32конечная функция внешняя действительная функция to_fahrenheit(real)объявить реальный temp_celsiusкогда ошибка в print «Введите температуру в градусах Цельсия»; ввод х temp_celsius = реальный (х)использовать напечатайте «Ошибка: введите допустимое числовое значение, пожалуйста».закончиться, когданапечатать «Температура в градусах Фаренгейта»; to_fahrenheit (temp_celsius)конец

Рекомендации

  1. ^ «Руководство пользователя VSI BASIC для OpenVMS» (PDF) . 2018.

Внешние ссылки