El lenguaje de comandos DIGITAL ( DCL ) es el lenguaje de comandos estándar adoptado por la mayoría de los sistemas operativos vendidos por la antigua 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 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]
Paradigma | imperativo |
---|---|
Diseñada por | Corporación de equipos digitales [1] |
Desarrollador | VMS Software Inc. (VSI) [2] |
SO | RSTS / E , RSX-11 , RT-11 , OpenVMS , VAXELN , MICA |
Influenciado | |
Windows PowerShell |
Escrito cuando el lenguaje de programación Fortran estaba en uso intensivo, DCL es un lenguaje de scripting que admite varios tipos de datos , incluidas cadenas, enteros , matrices de bits , matrices y booleanos, pero no números de punto flotante . El acceso a los servicios del sistema OpenVMS ( API del kernel ) se realiza a través de funciones léxicas , que realizan lo mismo que sus contrapartes en el 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 stream, indexados y secuenciales, pero desafortunadamente carece de DO-WHILE u otra construcción de bucle , lo que requiere que los usuarios se las arreglen con IF y GOTO - etiquetas de declaraciones en su lugar.
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 y Open DCL para Windows / Linux
- y Accelr8 DCL Lite para Windows. [4]
DCL es la base del lenguaje XLNT , implementado en Windows mediante una combinación de motor intérprete-IDE-WSH con capacidades CGI distribuidas 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 es seguida por hasta 8 parámetros (argumentos) y / o calificadores (modificadores en terminología Unix ) que comienzan con un carácter '/'. A diferencia de Unix (pero similar a DOS ), no se requiere un espacio antes de la '/'. Los calificadores pueden ser independientes de la posición (que ocurren en cualquier lugar de la línea de comando) o dependientes de la posición, en cuyo caso el calificador afecta al 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. 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 comando de sistema operativo de ejemplo puede 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 como:
sho dev $ 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 con una combinación de mayúsculas y minúsculas.
Algunas implementaciones, como OpenVMS, utilizaban un esquema de unicidad mínimo para permitir que los comandos se acortaran, mientras que otras, como RSX-11, permitían que los comandos se abreviaran a un mínimo de tres caracteres.
A diferencia de otros sistemas que utilizan rutas para localizar comandos, DCL requiere que los comandos se definan explícitamente, ya sea a través de definiciones CLD (Definición del 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.EXE de 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 sea implementado por la imagen SYS $ SYSEXE: FOO.EXE podría hacerse con un archivo CLD similar a:
DEFINIR VERBO FOO IMAGEN "SYS $ SYSEXE: FOO.EXE" BARRA DE CALIFICACIÓN
A continuación, 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," CREATE ", para crear un archivo. , frente a "CREAR / DIRECTORIO" para crear un directorio.
El otro método (más simple, pero menos flexible) para definir comandos es a través de 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 usa 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 la DCL $ PATH Nombre lógico 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 luego estos directorios se buscan para procedimientos de comando DCL ( comando .COM) y luego imágenes ejecutables ( comando .EXE) con nombres de archivo que coincidan con el comando que ingresó el usuario. Al igual que los comandos externos tradicionales, los comandos externos automáticos también permiten la entrada de comandos al estilo Unix.
Scripting
Las secuencias de comandos DCL se parecen mucho a cualquier otro lenguaje de secuencias de comandos, con algunas excepciones. Todos los verbos DCL de una secuencia de comandos están precedidos por un 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 puede usar un guión 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 construir 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 en sí como una función de indexación.
$ i = 1 $ variable 'i' = "azul" $ i = 2 $ variable 'i' = "verde" $ j = 1 $ color = variable 'j' $ arco iris 'color' = "rojo" $ color = variable 'i' $ rainbow 'color' = "amarillo"
En este ejemplo, la variable A rainbowblue se le asigna el valor "rojo", y A 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]
- COPIAR
- COPIA / FTP
- CREAR
- ELIMINAR
- DIRECTORIO
- EDITAR
- CERRAR SESIÓN
- IMPRESIÓN
- REBAUTIZAR
- COLOCAR
- SHOW
- TIPO
Funciones léxicas
Las funciones léxicas proporcionan funciones de cadena y acceso a datos mantenidos por VMS.
Algunos léxicos son:
F$EXTRACT(start,length,string)
- extraer una subcadenaF$CVTIME
- obtener información de fecha / hora, p. Ej.YEST_DOW=F$EXTRACT(0,3,F$CVTIME(DATE_EXPR,,"WEEKDAY"))
F$ELEMENT(0," ",ABC_DEF)
- porqueABC_DEF = "ABC DEF"
volvería"ABC"
F$SEARCH
- busca un archivo, devuelve un valor nulo ("") si no se encuentraF$LOCATE(needle,haystack)
F$SetPRV("BYPASS,CMKRNL,ALTPRI")
- Es un privilegio tener acceso a esto.
Ver también
- Comparación de proyectiles de comando
Referencias
- ^ "Manual de herramientas y lenguaje del software VAX / VMS" (PDF) . bitsavers.org . 1985 . Consultado el 31 de diciembre de 2020 .
- ^ a b "Manual del usuario de VSI OpenVMS" (PDF) . VSI. Julio de 2020 . Consultado el 27 de enero de 2021 .
- ^ "Descripción del producto de software y QuickSpecs - VSI OpenVMS versión 8.4-2L1 para servidores Integrity" (PDF) . VMS Software Inc. Julio de 2019 . Consultado el 2 de enero de 2021 .
- ^ "Comparación de PC-DCL vs Open DCL Lite" .
Una comparación de PC-DCL de Valentin frente a Accelr8 Open DCL Lite
Otras lecturas
- Paul C. Anagnostopoulos; Steve Hoffman (1998). Redacción de programas reales en DCL (Segunda ed.). Prensa digital. ISBN 1-55558-191-9.
enlaces externos
- Diccionario VSI OpenVMS DCL: AM
- Diccionario VSI OpenVMS DCL: NZ
- Archivo DCL de OpenVMS.org