stringtranslate.com

VSI BÁSICO para OpenVMS

VSI BASIC para OpenVMS es el nombre más reciente de un dialecto del lenguaje de programación BASIC creado por Digital Equipment Corporation (DEC) y ahora propiedad de VMS Software Incorporated (VSI). Fue desarrollado originalmente como BASIC-PLUS en la década de 1970 para el sistema operativo RSTS-11 en la minicomputadora PDP-11 . Posteriormente fue portado a OpenVMS , primero a VAX , luego a Alpha y, más recientemente, a Integrity .

Los nombres anteriores del producto incluyen: BASIC-PLUS , Basic Plus 2 ( BP2 o BASIC-Plus-2 ), VAX BASIC , DEC BASIC , Compaq BASIC para OpenVMS y HP BASIC para OpenVMS . También existen múltiples variaciones de los títulos que indican la plataforma de hardware (VAX, AlphaServer, etc.).

Características notables

VSI BASIC tiene muchas extensiones similares a FORTRAN , además de admitir los operadores matriciales originales de Dartmouth BASIC .

Los números de línea son opcionales, a menos que la función "ERL" esté presente. Le permite escribir controladores de errores "CUANDO ERROR" alrededor de declaraciones protegidas . La declaración "EN ERROR", más tradicional pero menos elegante, carece de ese contexto o alcance.

Una de las características más notables de VSI BASIC es la compatibilidad integrada con los potentes servicios de gestión de registros (RMS) de OpenVMS . Antes del lanzamiento de VAX BASIC, la compatibilidad con RMS nativo solo estaba disponible en el compilador COBOL de DEC .

Historia

La historia del producto VSI BASIC para OpenVMS abarca un período de más de 30 años y ha pasado por muchos cambios de nombre y propiedad en ese tiempo. También se ha adaptado a una sucesión de nuevas plataformas desarrolladas por DEC, Compaq, HP y VSI. El nombre de la empresa y/o la plataforma a menudo se ha incluido en el nombre del producto, lo que contribuye a la proliferación de nombres.

BÁSICO-PLUS

VSI BASIC comenzó como BASIC-PLUS , creado por DEC para su sistema operativo RSTS-11 y minicomputadora PDP-11 . Las declaraciones del lenguaje de programación se pueden escribir directamente en el intérprete de comandos o ingresar en un editor de texto , guardarlas en un archivo y luego cargarlas en el intérprete de comandos desde el archivo. Los errores en el código fuente se informaron al usuario inmediatamente después de ingresar la línea.

Los programas se almacenaron como un archivo fuente .BAS , usando el comando "GUARDAR". Podría "compilarse" en un archivo binario .BAC no editable, utilizando el comando "COMPILE". Este comando no produjo verdaderos programas en lenguaje de máquina , sino más bien un código de bytes llamado "tokens". Los tokens se interpretaban durante la ejecución, de forma similar al Java más moderno .

Los programas se ingresaban en el intérprete de comandos comenzando con números de línea , números enteros del 1 al 32767. Las líneas podían continuar en varias líneas utilizando un carácter de avance de línea . Para facilitar la edición externa del archivo fuente, las versiones posteriores de BASIC-PLUS también permitieron el carácter & como carácter de continuación de línea. Se pueden colocar varias declaraciones en una sola línea utilizando \como separador de declaraciones.

Para los sistemas PDP-11 con memoria virtual ( RSTS/E ), el espacio de direcciones estaba limitado a aproximadamente 64 KB . Con BASIC-PLUS, aproximadamente la mitad de esto fue utilizado por el intérprete de comandos combinado y la biblioteca de tiempo de ejecución. Esto limitaba los programas de usuario a unos 32 KB de memoria. Los sistemas RSTS-11 más antiguos carecían de memoria virtual, por lo que el programa de usuario tenía que caber en lo que quedaba de memoria física después de que RSTS y BASIC-PLUS asumieran su parte. Por ejemplo, en un PDP-11/35 con 32 KB de memoria física, que ejecutaba RSTS-11 V04B-17, los programas de usuario estaban limitados a 7 KB. Los programas grandes se pueden dividir en varias partes mediante el uso de la instrucción "CHAIN". Los programas podrían encadenarse a números de línea específicos en un programa secundario. El uso de una sección de memoria compartida llamada núcleo común también permitió que los programas se pasaran datos entre sí según fuera necesario; También se podían utilizar archivos de disco , pero eran más lentos.

El intérprete incluía un administrador de memoria de recolección de basura, utilizado tanto para datos de cadena como para código de bytes. Un programa en ejecución podría interrumpirse, examinarse y modificarse variables y luego reanudarse. Muchas de las estructuras de control utilizadas en otros lenguajes de alto nivel existían en BASIC-PLUS, incluidos WHILE y UNTIL. El lenguaje también admitía el uso de modificadores condicionales en una sola línea. Por ejemplo, la línea " " imprimiría el valor de "I" a menos que fuera menor de 10.PRINT I UNLESS I < 10

BÁSICO Plus 2

Posteriormente, DEC desarrolló Basic Plus 2 ( BP2 o BASIC-Plus-2 ) para agregar funciones adicionales y aumentar el rendimiento. Utilizó una verdadera compilación en código enhebrado y escribió su salida en archivos objeto en lenguaje de máquina . Estos eran compatibles con otros archivos objeto del sistema y podían ensamblarse en bibliotecas. Luego, un vinculador (el creador de tareas TKB) creó archivos ejecutables a partir de ellos. TKB también admitía superposiciones; esto permitió intercambiar rutinas individuales en el espacio de la memoria principal según fuera necesario.

Los programas BP2 se ejecutaron bajo RSX-11 o RSX Run Time System de RSTS/E. Este RTS solo ocupaba 8 KB (más tarde, 2 KB) del espacio de direcciones del usuario, dejando 56 KB para el programa del usuario. Estos dos factores permitieron que los programas BP2 individuales fueran mucho más grandes que los programas BASIC-PLUS, eliminando a menudo la necesidad de CADENA. A diferencia de BASIC-PLUS (que sólo estaba disponible en RSTS-11), BP2 también permitía su uso en el sistema operativo RSX-11.

VAX BÁSICO y DEC BÁSICO

Con la creación de la minicomputadora VAX , DEC portó BASIC-PLUS-2 al nuevo sistema operativo VMS y lo llamó VAX BASIC . VAX BASIC utilizó los estándares de llamadas VMS estándar, por lo que el código objeto producido por VAX BASIC podría vincularse con el código objeto producido por cualquiera de los otros lenguajes VMS. El código fuente de BASIC Plus 2 normalmente se ejecutaría sin cambios importantes en VAX BASIC.

Cuando DEC creó su microprocesador Alpha , se le transfirió VMS y se le cambió el nombre a OpenVMS . VAX BASIC también fue portado a Alpha y renombrado DEC BASIC . El intérprete BASIC se eliminó permanentemente en este punto, lo que significó que los programas DEC BASIC solo podían ejecutarse como ejecutables OpenVMS , producidos por una compilación seguida de un enlace .

Compaq, HP y VSI

Cuando Compaq compró DEC en 1997/98, los productos pasaron a llamarse Compaq BASIC para OpenVMS VAX y Compaq BASIC para OpenVMS Alpha .

Asimismo, cuando Compaq se fusionó con HP en 2001/02, los productos pasaron a llamarse HP BASIC para OpenVMS en VAX y HP BASIC para OpenVMS en AlphaServer . Posteriormente, HP lanzó HP BASIC para OpenVMS en Integrity para sus plataformas de servidor Integrity basadas en los procesadores Itanium de Intel .

A mediados de 2014, HP vendió todo el ecosistema OpenVMS a VSI, quien cambió el nombre del producto a VSI BASIC por OpenVMS . [1]

Código de muestra

VSI BASIC es una variante estructurada de BASIC en la que los números de línea son opcionales y el lenguaje admite tanto SUB como FUNCTION.

Hola Mundo

imprime "¡Hola mundo!"

Conversión de grados Celsius a Fahrenheit

función real to_fahrenheit (grados centígrados reales) to_fahrenheit = (celsius * 1,8) + 32función final función real externa to_fahrenheit(real)declarar temp_celsius realcuando hay un error en imprimir "Ingrese una temperatura en grados centígrados"; entrada x temp_celsius = real(x)usar print "Error: ingrese un valor numérico válido, por favor."terminar cuandoimprimir "La temperatura en grados Fahrenheit es"; a_fahrenheit(temp_celsius)fin

Referencias

  1. ^ "Manual de usuario de VSI BASIC para OpenVMS" (PDF) . 2018.

enlaces externos