Articulo de referencia

Lenguaje de comandos digital

{{cite web|url=http://bitsavers.org/pdf/dec/vax/handbook/VMS_Language_and_Tools_Handbook_1985.pdf|title=VAX/VMS Software Language and Tools Handbook|date=1985|access-date=2020-1...

El lenguaje de comandos DIGITAL ( DCL ) es el lenguaje de comandos estándar para muchos de los sistemas operativos creados por Digital Equipment Corporation . DCL se implementó originalmente para IAS como el Sistema de Desarrollo de Programas (PDS), [ 3 ] [ 4 ] y posteriormente se añadió a RSX-11M , RT-11 y RSTS/E , pero alcanzó su forma más potente en VAX/VMS (más tarde OpenVMS ). VSI continúa desarrollando DCL como parte de OpenVMS. [ 5 ]

DCL es un lenguaje de scripting que admite varios tipos de datos , incluyendo cadenas, enteros , matrices de bits , matrices y booleanos, pero no números de coma flotante . El acceso a los servicios del sistema OpenVMS ( API del kernel ) se realiza a través de funciones léxicas , que se comportan igual que sus contrapartes en 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), incluyendo flujo, indexados y secuenciales, pero carece de DO-WHILE u otra estructura de bucle , lo que obliga a los usuarios a utilizar sentencias IF y GOTO -label.

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

  • VCL y VX/DCL para Unix,
  • VCL para MS-DOS , OS/2 y Windows ,
  • PC-DCL [ 6 ] y Open DCL para Windows/Linux
  • y Accelr8 DCL Lite para Windows. [ 7 ]

DCL es la base del lenguaje XLNT , implementado en Windows mediante una combinación de intérprete, IDE y 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, seguido de hasta 8 parámetros (argumentos) y/o calificadores (interruptores en la terminología de Unix ) que comienzan con el carácter '/'. A diferencia de Unix, no se requiere un espacio antes de la '/'. Los calificadores pueden ser independientes de la posición (aparecer en cualquier parte de la línea de comandos) o dependientes de la posición, en cuyo caso el calificador afecta al parámetro que le sigue. 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 del nombre del calificador. Los parámetros pueden ser enteros o texto alfanumérico.

Un ejemplo de comando del sistema operativo podría ser:

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

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

mostrar dev $1$DGA1424:/fil

Aunque la documentación de DCL suele mostrar todos los comandos de DCL en mayúsculas, los comandos de 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, utilizaban un esquema de unicidad mínima para permitir que los comandos se acortaran.

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 (Command Definition Utility) y añadidos a una "tabla" DCL —porSYS$LIBRARY:DCLTABLES.EXE defecto, aunque los procesos pueden 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 podría hacerse con un archivo CLD similar a:SYS$SYSEXE:FOO.EXE

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

El usuario puede entonces escribir " ", o " ", 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 un calificador para cambiar la imagen invocada; por ejemplo, " ", para crear un archivo, en lugar de para crear un directorio.FOOFOO/BARCREATECREATE/DIRECTORY

El otro método (más sencillo, pero menos flexible) para definir comandos es mediante comandos externos . Esto se asemeja más al método de Unix para 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, . Este método se usa generalmente para programas portados de Unix y otros sistemas no nativos; para programas C que usan la sintaxis de comandos argc y argv.foo -v

Las versiones de OpenVMS DCL a partir de la V6.2 admiten el nombre lógico para establecer rutas de comandos al estilo Unix. Este mecanismo se conoce como Comando Foráneo Automático (Automatic Foreign Command). Permite especificar una lista de directorios, que luego se buscan en ellos para encontrar procedimientos de comandos DCL ( comando .COM) y, posteriormente, imágenes ejecutables ( comando .EXE) cuyos nombres de archivo coincidan con el comando introducido por el usuario. Al igual que los comandos foráneos tradicionales, los comandos foráneos automáticos también permiten la entrada de comandos al estilo Unix.DCL$PATHDCL$PATH

Programación de scripts

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

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

Referencia indirecta de variables

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

$ i = 1 $ variable 'i' = "azul" $ i = 2 $ variable 'i' = "verde" $ j = 1 $ color = variable 'j' $ arcoíris 'color' = "rojo" $ color = variable 'i' $ arcoíris 'color' = "amarillo"

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

Comandos

A continuación se muestra una lista de comandos DCL para tareas informáticas comunes 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 los datos mantenidos por VMS.

Algunos léxicos son:

  • F$EXTRACT(start,length,string) extraer una subcadena
  • F$CVTIME obtener información de fecha/hora, por ejemplo
    YEST_DOW=F$EXTRACT(0,3,F$CVTIME(DATE_EXPR,,"WEEKDAY"))
  • F$ELEMENT(0," ",ABC_DEF) porque ABC_DEF = "ABC DEF"regresaría"ABC"
  • F$SEARCH Busca un archivo; si no lo encuentra, devuelve un valor nulo ("").
  • F$LOCATE(needle,haystack)
  • F$SetPRV("BYPASS,CMKRNL,ALTPRI") Es un privilegio tener acceso a esto.

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. 1 2 "Manual del usuario de VSI OpenVMS" (PDF) . VSI. Julio de 2020. Consultado el 27 de enero de 2021 .
  3. Guía del usuario de IAS MCR (PDF) . Digital Equipment Corporation. Mayo de 1990.
  4. DIGITAL EQUIPMENT CORPORATION - Desde 1957 hasta la actualidad (PDF) . Digital Equipment Corporation. 1975.
  5. "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 .
  6. "MichelValentin/PC-DCL" . GitHub . 29 de mayo de 2022.
  7. "Comparación de PC-DCL vs. Open DCL Lite" . Una comparación de PC-DCL de Valentin vs. Accelr8 Open DCL Lite.

Lecturas adicionales

  • Paul C. Anagnostopoulos; Steve Hoffman (1998). Escritura de programas reales en DCL (Segunda  edición). Digital Press. ISBN 1-55558-191-9.
  • Diccionario DCL de VSI OpenVMS: AM
  • Diccionario DCL de VSI OpenVMS: NZ
  • Archivo DCL de OpenVMS.org