stringtranslate.com

Lenguaje de comandos DIGITAL

El lenguaje de comandos DIGITAL ( DCL ) es el lenguaje de comandos estándar adoptado por muchos de los sistemas operativos creados por Digital Equipment Corporation . DCL tiene 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 adoptó su forma más potente en VAX/VMS (posteriormente OpenVMS ). DCL continúa siendo desarrollado por VSI como parte de OpenVMS. [3]

Escrito cuando el lenguaje de programación Fortran era de uso intensivo, DCL es un lenguaje de script que admite varios tipos de datos , incluidas cadenas, números enteros , matrices de bits , matrices y booleanos, pero no números de punto flotante . El acceso a los servicios del sistema OpenVMS ( API del núcleo ) se realiza a través de funciones léxicas , que realizan lo mismo que sus contrapartes 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 un DO-WHILE u otra construcción de bucle , lo que requiere que los usuarios se las arreglen con declaraciones IF y GOTO -label en su lugar.

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

DCL es la base del lenguaje XLNT , implementado en Windows mediante una combinación de intérprete-IDE-motor WSH con capacidades CGI distribuido 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 de 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 consistente tanto para los comandos proporcionados por el sistema operativo como para los comandos escritos por el usuario. La línea de comandos debe comenzar con un verbo y luego es seguida por hasta 8 parámetros (argumentos) y/o calificadores (interruptores en la terminología de Unix ) que comienzan con un carácter '/'. A diferencia de Unix (pero similar a DOS ), no se requiere un espacio antes del '/'. Los calificadores pueden ser independientes de la posición (apareciendo en cualquier parte de la línea de comandos) o dependientes de la posición, en cuyo caso el calificador afecta al parámetro después del cual aparece. La mayoría de los calificadores son independientes de la posición. A los calificadores también se les pueden asignar valores o una serie de valores. Solo 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 ejemplo de comando del sistema operativo podría verse así:

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

El segundo comando show también se puede escribir así:

Debe desarrollar $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 una combinación de ambas.

Algunas implementaciones como OpenVMS y RSX utilizaron un esquema de unicidad mínima para permitir que los comandos se acorten.

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 (Command Language Definition) o un símbolo externo . 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 agregados a una 'tabla' DCL ( SYS$LIBRARY:DCLTABLES.EXEde manera predeterminada, aunque los procesos tienen la libertad 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 sea implementado por la imagen SYS$SYSEXE:FOO.EXEpodría hacerse con un archivo CLD similar a:

DEFINIR EL VERBO FOO IMAGEN "SYS$SYSEXE:FOO.EXE" BARRA CALIFICADORA

El usuario puede escribir entonces " 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, en lugar de " 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á literalmente cualquier argumento adicional al programa, por ejemplo, " foo -v". Este método se utiliza generalmente para programas portados desde Unix y otros sistemas no nativos; para programas C que utilizan la sintaxis de comandos argc y argv.

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

Creación de guiones

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

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

Referencia variable indirecta

Es posible crear matrices en DCL a las que se hace referencia mediante símbolos traducidos. Esto permite al programador crear 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 OpenVMS . [2]

Funciones léxicas

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

Algunos léxicos son:

Véase también

Referencias

  1. ^ "Manual de herramientas y lenguaje de 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 entre PC-DCL y Open DCL Lite". Comparación entre PC-DCL de Valentin y Open DCL Lite de Accelr8

Lectura adicional

Enlaces externos