DCL

El Lenguaje de Comandos de DIGITAL (se refiere a Digital Equipment Corporation o DEC) es un antiguo intérprete de comandos. Se utilizaba como intérprete preferido en muchas de las mainframes y otros dispositivos de cómputo a tiempo compartido comercializados por la extinta Digital Equipment Corporation.

Historia

Desde mediados de los 70s DEC consolidó su línea de mainframes PDP-11. Estos podían utilizarse con una variedad creciente de sistemas operativos monousuarios, pero también con algunos multiusuario y con capacidad de cómputo concurrente o compartido. Entre ellos destacaba el sistema operativo RSX-11. Ante la necesidad de crearle una interfaz de manejo y que además fuese estructuralmente similar al FORTRAN tan en boga en los sistemas comerciales de la era, terminó implementándose DCL, ya que compartía condiciones de programación (de manera similar a la que el Bourne Again Shell o Bash puede utilizarse como intérprete de comandos pero con una capacidad de guiones de programación en los sistemas similares a UNIX).

Su uso se extendió y fue particularmente axitoso a principios de los 80s sobre el sistema operativo VMS, cuando se instalaba este en la arquitectura de computadoras DEC VAX.

Como máscara visible de RSX-11 podremos decir que ha influido por transición sobre toda la rama de implementaciones del CP/M de Intergalactic Digital Research, y en el Q-DOS de Seattle Computer Products, luego masificado como el Microsoft DOS y filosóficamente transicionado en intérpretes actuales como el MS PowerShell. Incluso han existido versiones de intérprete llamada VCL cuya inspiración era el DCL, pero estaban orientados ya para el MS-DOS (reemplazaba a intérprete nativo COMMAND.COM), OS/S y Windows.

La aquitectura DEC VAX fue reemplazada a principio de los 90s por equipamiento de la serie DEC Alpha. Esto coincidió con el apogeo de modelos de cómputo orientado a equipos comerciales más pequeños que corrían derivados similares al sistema operativo UNIX tradicional. Aunado a toda una serie de cambios corporativos hizo que la línea fuese cayendo progresivamente en obsolescencia tras la disolución de Digital Equipment Corporation a mediados de la década del 2000.

El sistema operativo VMS tradicional derivó en una implementación a código abierto, el OpenVMS escrito tanto para VAX como para Alpha. Afortunamente, la última versión 9 de OpenVMS representa un cambio fundamental ya que abandona las arquitecturas DEC para compatibilizar el sistema con otras de despliegue moderno, notablemente la x86_64. Esto hace posible de operarse en equipos de escritorio modernos. Sin embargo, el código permanece privativo.

DCL en OpenVMS 8.4 sobre DEC Alpha remoto

Como los sistemas VAX históricos y los ya obsoletos Alpha pueden emularse bajo SIMH en GNU con Linux, es posible crear entornos de emulación para estas plataformas si contamos con licencias de uso hobbista para el mismo. Lamentablemente, si bien las mismas se distribuyeron a través de un programa especial de Hewlett-Packard, actualmente el mismo ha sido descontinuado.

Es por ello que al manera más sencilla de operar en un sistema de estas características es darnos de alta en un sistema público que disponga del hardware antiguo correctamente licenciado. Una de estas instancias la proporciona DECUS.ORG, un grupo de usuarios hobbistas de equipamiento DEC, que cuenta con el apoyo institucional del actual poseedor de la propiedad intelectual del VMS, Hewlett-Packard.

Decus.org pone a disposición del público general su infraestructura de cómputo DEC Alpha 520 puesta en línea, y ofrece la creación de cuentas públicas de acceso remoto a intérprete de comandos.

Para dar de alta una cuenta a título individual, podremos usar nuestra terminal GNU con Linux mediante Secure Shell (SSH) a:

ssh REGISTRATION@eisner.decus.org -p 22867

Cuando el sistema nos solicite contraseña no ingresamos ninguna y simplemente presionamos ENTER. Se activará a continuación programa de registro en la máquina DEC Alpha, que constará de varias pantallas. En ellas se nos solicitará ingresar un nombre de usuario y debemos proporcionar una casilla de correo electrónico válida. También se nos solicitará indicar qué tipo de editor deseamos (normalmente uno llamado LSE).

Una vez recibido un correo de parte de DECUS conteniendo una contraseña pasavante, podremos ya conectarnos a nuestra cuenta de OpenVMS remoto. Por tanto, nos logueamos utilizando SSH y nuestro nombre de usuario, con:

ssh usuario@eisner.decus.org -p 22867

Tras ingresar la contraseña provista por DECUS, podremos ver nuestra pantaslla incial. Por ejemplo:

%DCL-S-SPAWNED, process USUARIO_10419 spawned
  User [USUARIO] has 842 blocks used, 9158 available,
  of 10000 authorized and permitted overdraft of 0 blocks on DISK_USER
 * * * * * *  * * * * * * * < Hola USUARIO! > * * * * * * * * * * * * * *
                        RECIBA UNA CORDIAL BIENVENIDA
                          ____ al sistema computado 
                         |  _ \  ___  ___ _   _ ___    
                         | | | |/ _ \/ __| | | / __|
                         | |_| |  __/ (__| |_| \__ \
                         |____/ \___|\___|\__,_|___/
                          DEC Alpha con OpenVMS 8.4
  +-----------------------------------------------------------------------+
|      Nombre del nodo: EISNER.  Hardware: AlphaServer DS20 500 MHz     |
|   Este mainframe pertenece al Grupo Hobbista "Asociacion de Usuarios  |
|            de Digital Equipment Computers", DECUS.ORG.                |
+-----------------------------------------------------------------------+
- Su directorio es DECUSERVE_USER.USUARIO.  
- Su casilla de correo electronico en este equipo es: usuario@eisner.decus.org.
- Para abandonar este sistema utilice el comando LOGOUT.
$
Subprocess USUARIO_xxxxx has completed

El prompt de DCL es un "$".

Uso básico de DCL

El DCL presentaba un conjunto de instrucciones en inglés que el usuario ingresaba para comandar al sistema operativo (en este caso OpenVMS), qué hacer. Constaba de más de 200 comandos y funciones.

Al igual que otros intérpretes posteriores como Bashm, ols comandos en DCL se ingresan en dos formas. La más común es la manera interactiva, en la cual se escriben en la terminal de manera insensible a mayúsculas. Generalmente se usan secuencias de comandos y modificadores.

La otra es "en lotes", y esto equivale a la creación de programas y guiones de programación (scripts). Nos conectraremso en la primera manera.

Asimismo, DCL tiene varias combinaciones de control que interrumpen o anulan la execución de comandos.

Ctrl+z: Sale de un comando de DCL

Ctrl+c: interrumpe la ejecución de un comando (pero lo deja en memoria).

Ctrl+b: Repite el comando anterior.

Ctrl+a: Conmuta entre modo Inserción de caracteres y Sobreescritura de Caracteres.

Ctrl+s: Suspende la salida de texto a la terminal.

Ctrl+o: Reactiva la salida de texto a la terminal. Si se la presiona alternativamente, pausa y continúa el flujo de texto.

AYUDA ONLINE

El DCL es difícil de usar, pero tiene una ayuda tipo "árbol" jerarquizada. Ingresando "help" se ingresa al subsistema de ayuda. También se puede usar en forma "HELP tema". Por ejemplo:

$ help instructions

Normalmente el subsistema de ayuda permite ingresar y presentar en pantalla cada uno de los temas o "topics" escribiéndolos por su nombre indicado, y a su vez cada tema podría presentarnos nuevas temáticas de ayuda relacionadas. Si oprimimos ENTER generalmente retrocederemos un nivel. Al volver al nivel inicial del subsistema de ayuda, abandonaremos el mismo y quedaremos depositados nuevamente en el prompt $ del DCL.

Recordemos que siempre podremos salir del subsistema de ayuda (y muchos otros programas ejecutados por DCL) con Ctrl+z.

COMANDOS COMUNES

Hay muchísimos comandos y programas capaces de corren en OpenVMS, pero ciertos son comandos comunes directamente equivalentes o muy parecidos a los comandos presentes en sistemas de operación similares a UNIX. Por ejemplo:

copyCopia un fichero especificado, cp

copy/ftptransfiere ficheros entre huespedes sobre red tcp/ip, ftp

createcrea ficheros y directorios, touch

deleteborra un fichero especificado y lo quita del directorio, rm

directory o dirpresenta los contenidos de un directorio (listado de ficheros), ls

editmuestra y cambia los contenidos de un fichero de texto, ed

logoutdesconecta la sesión remota, logout, exit

printenvia un fichero especificado a la impresora

renamecambia el nombre o la localización de un fichero especificado, mv

setcontrola como usar el sistema en pantalla

showpresenta el status de sistema

typepresenta los contenidos de un fichero especificado en la pantalla, cat

CREAR Y MOVERNOS EN DIRECTORIOS

El sistema de ficheros de OpenVMS representa una estructura arbolada. En ella, el usuario de DECUS recibirá una carpeta de usuario localizada dentro de la carpeta "DECUSERVE_USER", que generalmente se encuentra en una particiçon en una unidad de disco del sistema, como por ejemplo DSA3:.

DCL es idiosincrásicamente mas complejo y laborioso de usar que UNIX. En particular, suele requerir la necesidad de ingresar entre corchetes "[]" toda la ruta del directorio a fin de desplazarnos por la estructura de árbol. Los niveles de directorios se separan utilizando un "." en lugar de una barra como en UNIX u otros sistemas.

Para ver el contenido del directorio actual ingresamos:

$directory

o más sencillo, su la abreviación "dir".

Por ejemplo, si quisiéramos crear un directorio llamado "pruebas" en nuestra carpeta de usuario, deberíamos usar:

$CREATE /DIR [DECUSERVE_USER.USUARIO.prueba]

Para comprobar su creación efectiva, ingresamos el comando "dir". Deberíamos ver ahora un directorio nomenclado como prueba.dir;1. Para ingresar a dicho directorio usamos el comando cd ("cambiar directorio"), seguido por toda la ruta estructurada. Por ejemplo:

$cd DSA3:[DECUSERVE_USER.USUARIO.prueba]

o bien:

$set default [.prueba]

Para volver al directorio anterior:

$cd DSA3:[DECUSERVE_USER.USUARIO]

...o bien:

$SET default

Si quisiéramos borrar el directorio prueba.dir, debemos primero asignar los permisos de borrado. Podremos hacerlo con:

$SET FILE/PROTECTION=O:RWED prueba.dir;1

...y a continuación podremos borrarlo:

$delete prueba.dir;1

Si quisiéramos usar un equivalente al pwd de UNIX (presentar directorio actual), debemos usar:

$SHOW default

Se nos hará obvio que todos los archivos cuentan con un sufijo de versión, indicado con punto y coma. Por ejemplo: archivo.txt;1 archivo.txt;2, etcétera. De esta manera podremos contar con múltiples versiones de un mismo fichero. Siempre se activa la última, pero se conservan las anteriores. Si queremos eliminar un fichero se usa el comando DELETE, pero debemos especificar cuál versión queremos borrar. Por ejemplo,

$DELETE archivo.txt;3

...o bien, eliminamos todas las versiones de un fichero con comodines, por ejemplo:

$DELETE archivo.txt;*

Para borrar el directorio creado tenemos que retroceder al nivel anterior en el árbol (no podemos eliminar un directorio desde dentro del mismo). Finalmente indicamos un comando como:

$delete prueba.dir;1

Crear un fichero finger

Los sistemas de cómputo a tiempo compartidos podían contar con un fichero de texto .plan o .project, encargados de operar como descripción del usuario. Como los sistemas solían ser anónimos pero contar con un "handle" o nombre de usuario específico, estos ficheros de texto podían servir como una descripción o información de contaco. Sin embargo, no era extraño contar con extavagantes descripciones o texto ASCII, lo que pasaba a formar parte del folklore típico de los sistemas de cómputo a tiempo compartido.

Para crear nuestro fichero podremos aprovechar y utilizar el editor de texto visual "LSE". Ingresaremos a él con:

lse

El editor de texto LSE consta de dos secciones. Una principal con la ventana de texto, y otra inferior en la que podremos ingresar comandos de operación. En este caso simplemente escribiremos un texto que deseemos. Cuando finalicemos de hacerlo, presionaremos Ctrl+z. Esto nos desplazará a la sección inferior para ingresar los comandos de operación, lo cual se nos hará patente por medio del prompt LSE>. En él ingresaremos exit. El editor LSE nos solicitará el nombre de archivo a fin de guardarlo con dicha denominación y salir al intérprete DCL. Le introducimos el nombre .plan y presionamos Enter.

Esto cerrará el editor LSE y nos retornará al prompt de DCL. Debemos ahora asignar los permisos de fichero requeridos al fichero .plan que hemos creado. Ello lo haremos ingresando el comando:

set file/prot=w:re .plan

Ver quién está online

Podremos hacer eso ingresando:

$SHOW users

      OpenVMS User Processes at  8-JUL-2021 23:34:39.87
    Total number of users = 4,  number of processes = 6

 Username      Interactive  Subprocess   Batch
 CARTER_S           1         1
 GOATLEY            1
 JACKSON            2
 PERON              1

Podrás chatear en línea con dicho usuario mediante el programa phone. Utiliza:

$phone usuario

El usuario recibirá el alerta y podrá tocar la combinación indicada en pantalla para responder. Al aceptar se presentará el OpenVMS Phone Facility:

                            OpenVMS Phone Facility                   8-JUL-2021
%

-------------------------------------------------------------------------------
                                 EISNER::PERON
Viva Peron! Esta es una prueba de comunicaciC3n en Eisner.
Como estC!s?
El texto introducido no se puede borrar.
Se puede borrar en tanto no presiones Enter.

-------------------------------------------------------------------------------
                                 EISNER::EVITA
Hola como estás. Gracias por el Mensaje.
Estoy introduciendo el texto, va apareciendo de a poco.
Muy interesante!.

-------------------------------------------------------------------------------

...Para abandonar el programa phone puedes utilizar Ctrl+z

Notes

VAXnotes es un programa de conferencia de ayuda computado, con áreas. Podrás utilizarlo para comunicarte con otros usuarios de DECUS. Cada área de conferencia tiene un nombre, como 1ST_AIDE ("primeros auxilios"), SOFTWARE_DEVELOPMENT. Ingresa a un área con OPEN área. Lee un mensaje con READ nro.nota Usa HELP para recibir ayuda y EXIT para salir de Notes.

Comandos de status

Existen muchísimos comandos de este tipo, pero tal vez el más simple sea show. Utiliza help show, o prueba alguno de los siguientes:

show system

show network

show cpu

show memory

Crear una web de DECUS

La URL base para su página web será:

http://eisner.decus.org/~usuario

La web se almacena en el subdirectorio WWW localizado en nuestro directorio de usuario.

Para ello creamos un subdirectorio y le otorgamos los permisos requeridos

$ set default sys$login

$ create/dir [.www] /protection=w:re

$ set security /acl=(default_protection, s:rwed, o:rwed, g:r, w:r) www.dir

$ set default sys$login

$ set security /acl=(identifier=WASD_HTTP_SERVER,access=read) [-]usuario.DIR

Acto seguido creamos un archivo index.html o bien lo transferimos a través de FTP. Podremos crear subdirectorios adicionales delntro de [WWW] si lo deseamos.

Documentación

El manual puede conseguirse online, pero está disponible en formato HTML desde la antigua web de Compaq (actualmente disponible desde HP).

Podrán encontrar las secciones e índice de base en aquí.

En tanto que podrán dirigirse al uso de DCL desde esta sección del mismo manual.

Una web interesante: raymii

Volver