stringtranslate.com

Lenguaje de comando DIGITAL

DIGITAL Command Language ( DCL ) es el lenguaje de comandos estándar adoptado por muchos de los sistemas operativos creados por Digital Equipment Corporation . DCL tuvo sus raíces en IAS , TOPS-20 y RT-11 y se implementó como estándar en la mayoría de los sistemas operativos de Digital, en particular RSX-11 y RSTS/E , pero tomó su forma más poderosa en VAX/VMS (más tarde OpenVMS) . ). DCL continúa siendo desarrollado por VSI como parte de OpenVMS. [3]

Escrito cuando el lenguaje de programación Fortran se usaba mucho, DCL es un lenguaje de programación que admite varios tipos de datos , incluidas cadenas, números enteros , matrices de bits , matrices y valores booleanos, pero no números de coma flotante . El acceso a los servicios del sistema OpenVMS ( API del núcleo ) se realiza a través de funciones léxicas , que funcionan igual que sus homólogos del lenguaje compilado y permiten que los scripts obtengan información sobre el estado del sistema. DCL incluye IF-THEN-ELSE , acceso a todos los tipos de archivos de Record Management Services (RMS), incluidos los de flujo, indexados y secuenciales, pero carece de DO-WHILE u otra construcción de bucle , lo que requiere que los usuarios se conformen con IF y GOTO -label declaraciones en su lugar.

DCL también está disponible para otros sistemas operativos, incluido

DCL es la base del lenguaje XLNT , implementado en Windows mediante una combinación de motor intérprete-IDE-WSH con capacidades CGI distribuida por Advanced System Concepts Inc. desde 1997.

Analizador de línea de comandos

Para la implementación de OpenVMS, el analizador de línea de comandos es una biblioteca en tiempo de ejecución ( CLI$ ) que se puede compilar en aplicaciones de usuario y, por lo tanto, proporciona una interfaz de línea de comandos coherente tanto para los comandos proporcionados por el sistema operativo como para los comandos escritos por el usuario. La línea de comando debe comenzar con un verbo y luego va seguida de hasta 8 parámetros (argumentos) y/o calificadores (conmutadores en la terminología Unix ) que comienzan con un carácter '/'. A diferencia de Unix (pero similar a DOS ), no se requiere un espacio antes de '/'. Los calificadores pueden ser independientes de la posición (ocurren en cualquier lugar de la línea de comando) o dependientes de la posición, en cuyo caso el calificador afecta el parámetro que aparece después. La mayoría de los clasificados son independientes de la posición. A los calificadores también se les pueden asignar valores o una serie de valores. Sólo se requiere la primera parte más significativa del verbo y el nombre del calificador. Los parámetros pueden ser números enteros o texto alfanumérico.

Un comando del sistema operativo de ejemplo puede verse así:

configurar auditoría  / alarma  / habilitar =( autorización ,  interrupción = todo ) mostrar  dispositivo  / archivos  $1$DGA1424 :

El segundo comando show también podría escribirse como:

desarrollador sho $1$DGA1424:/fil

Si bien la documentación DCL generalmente muestra todos los comandos DCL en mayúsculas, los comandos DCL no distinguen entre mayúsculas y minúsculas y pueden escribirse en mayúsculas, minúsculas o mixtas.

Algunas implementaciones, como OpenVMS y RSX, utilizaron un esquema de unicidad mínima para permitir acortar los comandos.

A diferencia de otros sistemas que utilizan rutas para localizar comandos, DCL requiere que los comandos se definan explícitamente, ya sea mediante definiciones CLD (Definición de lenguaje de comandos) o un símbolo foráneo . La mayoría de los comandos nativos de OpenVMS se definen mediante archivos CLD; estos son compilados por la CDU, la utilidad de definición de comandos, y se agregan a una 'tabla' DCL ( SYS$LIBRARY:DCLTABLES.EXEde forma predeterminada, aunque los procesos son libres de usar sus propias tablas) y luego pueden ser invocados por el usuario. Por ejemplo, definir un comando FOO que acepte la opción "/BAR" y se implemente mediante la imagen SYS$SYSEXE:FOO.EXEse podría hacer con un archivo CLD similar a:

DEFINIR EL VERBO FOO IMAGEN "SYS$SYSEXE:FOO.EXE" BARRA DE CALIFICACIÓN

Luego, el usuario puede escribir " FOO " o " FOO/BAR " y se invocará el programa FOO. El lenguaje de definición de comandos admite muchos tipos de opciones, por ejemplo fechas y especificaciones de archivos, y permite que un calificador cambie la imagen invocada; por ejemplo, " CREAR ", para crear un archivo, versus " CREAR/DIRECTORIO " para crear un directorio.

El otro método (más simple, pero menos flexible) para definir comandos es mediante comandos externos . Esto es más parecido al método Unix de invocar programas. Al dar el comando:

foo :== $sys$sysexe:foo.exe

el comando 'FOO' invocará FOO.EXE y proporcionará cualquier argumento adicional literalmente al programa, por ejemplo, " foo -v". Este método se utiliza generalmente para programas portados desde Unix y otros sistemas no nativos; para programas en C que utilizan la sintaxis de comandos argc y argv.

Las versiones de OpenVMS DCL que comienzan con V6.2 admiten el nombre lógico DCL$PATH para establecer rutas de comando de estilo Unix. Este mecanismo se conoce como Comando Extranjero Automático. DCL$PATH permite especificar una lista de directorios, y luego se buscan en estos directorios procedimientos de comando DCL ( comando .COM) y luego imágenes ejecutables ( comando .EXE) con nombres de archivo que coincidan con el comando ingresado por el usuario. Al igual que los comandos externos tradicionales, los comandos externos automáticos también permiten la entrada de comandos al estilo Unix.

secuencias de comandos

Los scripts DCL se parecen mucho a cualquier otro lenguaje de scripting, con algunas excepciones. Todos los verbos DCL en un script están precedidos por el símbolo $; otras líneas se consideran entradas del comando anterior. Por ejemplo, para usar el comando TIPO para imprimir un párrafo en la pantalla, se podría usar un script similar a:

$ TYPE  SYS $INPUT : Este es un ejemplo del uso del verbo TYPE en el lenguaje DCL. $ SALIR

Referenciación de variables indirectas

Es posible crear matrices en DCL a las que se hace referencia mediante símbolos traducidos. Esto permite al programador construir estructuras de datos de tamaño arbitrario utilizando los datos mismos como función de indexación.

$ i = 1 $ variable 'i' = "azul" $ i = 2 $ variable 'i' = "verde" $ j = 1 $ color = variable 'j' $ arcoiris 'color' = "rojo" $ color = variable 'i' $ arcoiris 'color' = "amarillo"                   

En este ejemplo, a la variable rainbowblue se le asigna el valor "rojo" y a la variable rainbowgreen se le asigna el valor "amarillo".

Comandos

La siguiente es una lista de comandos DCL para tareas informáticas comunes que son compatibles con la interfaz de línea de comandos de OpenVMS . [2]

Funciones léxicas

Las funciones léxicas proporcionan funciones de cadena y acceso a datos mantenidos por VMS.

Algunos léxicos son:

Ver también

Referencias

  1. ^ "Manual de herramientas y lenguaje del software VAX/VMS" (PDF) . bitsavers.org . 1985 . Consultado el 31 de diciembre de 2020 .
  2. ^ ab "Manual del usuario de VSI OpenVMS" (PDF) . VSI. julio de 2020 . Consultado el 27 de enero de 2021 .
  3. ^ "Descripción del producto de software y especificaciones rápidas: VSI OpenVMS versión 8.4-2L1 para servidores Integrity" (PDF) . VMS Software Inc. julio de 2019 . Consultado el 2 de enero de 2021 .
  4. ^ "MichelValentin/PC-DCL". GitHub . 29 de mayo de 2022.
  5. ^ "Comparación de PC-DCL con Open DCL Lite". Una comparación entre Valentin's PC-DCL y Accelr8 Open DCL Lite

Otras lecturas

enlaces externos