Revistas en papel
 Amiga World Nº39 - Enero 1993
Anterior
MenĂº
Logotipo

El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España
para ofrecer los artículos de la revista Amiga World España.

     CURSO     
Amiga World

CURSO DE AREXX


Por Jesús Diez

El Amiga 4000 tiene incorporado a su sistema operativo el ARexx. Cualquier usuario tiene la posibilidad de mejorar las prestaciones de sus aplicaciones mediante rutinas creadas en ARexx. Es más que un lenguaje de programación y con este curso se espera demostrar a todos los usuarios la potencia de este sistema.

Comienza aquí el primer capítulo de una nueva serie dedicada al lenguaje ARexx... (¡Oh no! ¡Otro curso de programación por capítulos!, mejor pasemos unas cuantas páginas hacia delante)... ¡Espere, espere! Esta vez va a ser diferente... (¡Y por si fuera poco dice lo que dicen todos al principio!). ¡No! ¡En serio! Siga leyendo, y verá como el ARexx puede revolucionar la forma en que trabajamos con nuestro Amiga, multiplicando espectacularmente su capacidad. (Bueeeeno, seguiré un ratito, a ver qué tal...). Ahora en serio, mucha gente habla del ARexx y hoy en día se ha convertido en un argumento publicitario tan extendido, que parece que no pudiera venderse un producto serio de Amiga, si en la caja no se lee claramente "Incorpora soporte de ARexx2. Por otra parte la documentación sobre él que facilita Commodore es bastante limitada y orientado al técnico. Por ello entre la gente no iniciada, siempre queda flotando la idea de que el ARexx es una de esas características superavanzadas de los programas, que hacen que el software cueste cantidades de seis cifras, y que sólo aprovechan programadores en bata blanca y profesionales con suelto de otras 8 cifras. Nada más lejos de la realidad.

El ARexx está incluido en todas las máquinas vendidas desde que comenzó a distribuir la versión 2.0 del Workbench, de forma que cualquiera puede (¡debe!) sacar partido de él. Los requerimientos en cuanto a hardware son mínimos, y se adapta con facilidad a configuraciónes con poca memoria RAM. En estas series voy a intentar atraer su atención sobre la potencia, elegancia y sencillez de manejo de este lenguaje, con la promesa de que al finalizarla, nunca volverán a ver su Amiga de la misma manera.


ALGO DE HISTORIA

El ARexx es la versión para el Amiga del REXX, un lenguaje desarrollado en el año 1979 por Mike Cowlishaw para grandes máquinas de IBM. Originalmente fue diseñado como un lenguaje para automatización de procesos, que fuera fácil de aprender y que fuese lo más parecido que se pudiera al lenguaje natural el usuario, capaz de asumir muchos datos por el contexto, y sin obligar al usuario a una rígida disciplina a la hora de planificar su programa como ocurre con otros lenguajes. Esto hace del Arexx un lenguaje multipropósito ideal de iniciación enla programación siendo ésta probablemente una de las razones por las que Commodore ha decidido dejar de incluir su (admitamoslo) mediocre Amiga Basic con el software del sistema.

Como iba diciendo, el Rexx, con el tiempo, se constituyó en un estándar y llegó a los micro-ordenadores pasando, como no, por los omnipresentes PC, donde ha tenido gran aceptación en algunos entornos. En su reencarnación en el Amiga, el ARexx ha ganado en flexibilidad y capacidad multitarea, gracias a su creador William S. Hawes, convirtiéndose en el entorno ideal de control automático e los programas, o de creación de "macros", como algunos prefieren llamarlo. Un "macro" no es más que un pequeño programa que ejecuta en un solo paso varias acciones repetitivas de las que usamos habitualmente al trabajar con el ordenador. Por ejemplo, dentro del procesador de textos, yo acostumbro a usar un texto en Helvética a 16 puntos y negrita como título. Cada vez que tuviera que marcar un texto de esa forma me obligaría a seleccionar la línea y hacer tres viajes con el puntero a los menús para seleccionar sucesivamente las características mencionadas. pero aquí viene el mi ayuda el ARexx y para este caso tengo diseñado un "macro" que me hace los tres cambios de una sola vez en el texto marcado con solo presionar las teclas "Control + T". Este pequeño ejemplo no hace justicia a un lenguaje en el que se pueden escribir aplicaciones completas, pero sin duda ilustra lo que son los macros y cómo usándolos para personalizar el manejo de nuestros programas, podemos mejorar nuestra productividad. Al fin y al cabo, nuestro ordenador debería servir teóricamente para liberarnos de todo lo repetitivo y aburrido de nuestro trabajo (lo que mejor sabe hacer en realidad), dejándonos a nosotros la parte más creativa. Pues bien, ésta y no otra es la finalidad del Rexx, que en el Amiga alcanza su máxima expresión, bajo un entorno multitarea, al permitirnos el control simultáneo de varios programas, fundiendo sus capacidades como si de un solo programa se tratara. Este es el segundo "punto fuerte" del ARexx. la integración de programas. Ahí va otro ejemplo: Supongamos que estamos trabajando con un programa de maquetación en un extenso documento, con numerosas ilustraciones gráficas incluidas entre el texto. El ARexx nos permitiría comunicar el programa de maquetación con un procesador de textos y con otro programa de proceso de imágenes, como el Art Department. De esta forma que podríamos usar el diccionario del procesador para comprobar el texto ya maquetado y por ejemplo transformar las ilustraciones a escala de grises sin moverlas de su situación en el documento, usando las capacidades del Art Department. El efecto final es realmente espectacular: hemos multiplicado la capacidad de un programa añadiéndole de forma transparente las capacidades de otros dos, personalizando el entorno de trabajo según nuestras necesidades.

El tercer punto fuerte del ARexx, es la posibilidad de usarlo como cualquier otro lenguaje, es decir para escribir ya no macros, sino programas independientes de cualquier tipo. Para este propósito el ARexx es a mi juicio, una opción mucho mejor que el, ya achacoso, Amiga Basic, y es el aspecto sobre el que me gustaría hacer mayor hincapié durante la serie.


EL ENTORNO AREXX

Ahora vamos a hablar de qué ficheros componen el ARexx y dónde deben de estar situados para que el lenguaje funcione correctamente. En principio, en el disco original del Workbench 2.0 están todos los ficheros necesarios en sus lugares correctos, y la startup-sequence contiene todas las asignaciones necesarias para que todo vaya bien, pero como es frecuente que mucha gente tenga disquetes de arranque "personalizados" o discos duros, repasaremos todo:

1.- En el directorio Libs deben estar los ficheros, "rexxsyslib.library" y "rexxsuport.library". Estas dos librerías contienen el corazón del lenguaje, y es dónde residen la definición de sus comandos y funciones.

2.- En el directorio System debe de estar el fichero "RexxMast". Este programa es ejecutable y es el que pone en marcha el ARexx en el sistema.

3.- En el directorio denominado "Rexxc" deben estar los ficheros siguientes: "RX", "RXC", "RXLUB", "RXSET", "TCC", "TCO", "TE", "TS". La utilidad de estos programas la iremos comentando más adelante. De momento el que más nos interesa el comando "RX" que nos sirve para arrancar los programas que queramos, a la manera del comando RUN del basic.

4.- Es conveniente también disponer de un directorio llamado "Rexx" donde guardar nuestros programas. Este puede ser un directorio real con ese nombre en el disco de arranque (lo mejor) ó una asignación a un directorio cualquiera a nuestro gusto (Por ejemplo: "assign rexx: df0:rexx" o "assign rexx: df0:mis_programas"). Así el ARexx buscará por defecto los programas que queramos ejecutar en este directorio, sin necesidad de decírselo explícitamente.

5.- Por último, pero no menos importante, el fichero "startup-sequence" del directorio "s", debe contener en algún punto las siguientes líneas, además de la ya mencionada con la asignación del directorio rexx:

path sys:system sys:rexx add
Rexxmast >nil:

que sirven para poner en marcha el ARexx en el sistema.

Arexx consta de una serie de funciones y comandos propios
que residen en la librería rexxsyslib. Dentro de un programa
ARexx pueden convivir, sin necesidad de hacer declaración
explícita alguna, comandos propios, funciones de librerías y
comandos de las aplicaciones comerciales

Insisto en que en el disco original todo debería estar correctamente situado, así que para los que no se sientan seguros en el manejo del Workbench y el CLI, mi recomendación es que hagan una copia de su disco original y que después consigan algo de espacio libre borrando ficheros que no utilicen, por ejemplo del directorio de Utilidades. Para los usuarios de disco duro, la situación es más sencilla.

Con esto estamos ya realmente preparados para comenzar, bastará con arrancar el ordenador desde nuestro nuevo disco.


PROGRAMANDO EN AREXX

Los programas en ARexx son ficheros de texto normales, que contienen la lista de instrucciones y funciones que deseamos que se ejecuten, de forma muy parecida al Basic. Por otro lado, y al igual que el AmigaBasic, el ARexx es un lenguaje interpretado, lo que hace que los programas no sean muy rápidos (no vas a programar un juego de matar marcianos en ARexx, ¿no?... ¿o si?), pero si extremadamente sencillos de realizar y de depurar. Otra característica común, es que los programas no necesitan números de línea, sino que usan etiquetas para la definición de saltos y de funciones. A los programadores experimentados, que no suelen ver con buenos ojos los lenguajes interpretados, debo advertirles que acelera considerablemente los programas, y que amplía sus horizontes de aplicación, permitiéndonos afrontar proyectos más ambiciosos desde ARexx.

Ahora paso a comentar uno de los aspectos del lenguaje que le confiere su peculiar personalidad. El Arexx consta de una serie de funciones y comandos propios que residen en la librería rexxsyslib, pero fácilmente puede incorporar los de cualquier otra librería del sistema (lo que le hace fácilmente expandible). Cuando el interprete de Arexx encuentra un comando o función que no es suyo, ni pertenece a ninguna librería accesible, simplemente se lo pasa al puerto de comunicación con la aplicación que hayamos designado y espera a ver si lo acepta, recogiendo los datos que devuelva, mientras que si no lo acepta emite un mensaje de error. Así vemos que dentro de un programa ARexx puden convivir, sin necesidad de hacer declaración explícita alguna, comandos propios, funciones de librerías y comandos de las aplicaciones comerciales que deseamos controlar, decidiendo el ordenador por el contexto qué debe hacer en cada caso. Los comandos que acepta cada aplicación se llaman de manera diferente y es necesario consultarlos en la documentación y manuales de cada utilidad. Por ello de momento mi intención es hablar de la estructura del lenguaje Arexx en si mismo.

Y bien, llegó el momento de hacer algo práctico. No estaría bien acabar el primer capítulo del curso sin incluir algún pequeño ejemplo que nos permita estrenar nuestro flamante ARexx. para ello solo necesitamos tener correctamente instalado el ARexx en nuestro disco de arranque tal y como expliqué anteriormente, y un editor de textos en el que vamos a escribir la lista de instrucciones del programa. Para evitar problemas, voy a referirme al editor ED del Workbench 2.0 ya que aunque es muy limitado y primitivo, por lo menos tengo la certeza de que está a la disposición de todos. De todas formas, mi recomendación es que si pueden disponer de otro editor, lo usen para su comodidad, ya que el programa que se use para escribir los programas no tiene importancia con tal de que los grabe en el disco como ficheros ASCII estandar.

Así que abrimos una ventana de Shell y tecleamos:


ED REXX:CUBO.REXX

Esto abrirá el editor y lo dejará preparado para escribir nuestro primer porgrama. El único problema que puede surgir es que no exista o no esté correctamente asignado el directorio rexx, como ya mencioné anteriormente. Después de esto, ya podéis comenzar a teclear el texto siguiente. Se trata de un programa de prueba, así que no es preocupéis si de momento no entendéis su estructura, ya que todo lo iremos viendo con detalle próximamente.

La verdad es que me resistía a poner como primer ejemplo el típico programa que ilustra las primeras páginas de todos los libros de programación a este lado del universo, ya sabéis, el que escribe en la pantalla "Hola mundo". Esta vez en cambio, pretendo (ya me diréis si lo consigo) que cada ejemplo ilustre un aspecto práctico, aunque sea simple. Acepto que esta primera muestra no es realmente una maravilla de la computación moderna, pero por lo menos realiza la meritoria tarea de calcular el cubo de un número, en vez de saludar en la pantalla... algo es algo. Es MUY importante introducirlo íntegramente, incluyendo las líneas de comentario del comienzo:

/* Nuestro primer ejemplo en ARexx*/
/* Sirve para calcular el cubo de cualquier numero */
    continuar ="S"
    Do while continuar ~= "N"
    say "Introduzca numero:"
    pull numero
    resultado=cubo(numero)
      say "El cubo de" numero "es" resultado "."
      say "¿Desea continuar? (s/n)"
    say " "
    pull continuar
end
exit
/* Definicion de la funcion cubo */
cubo:
arg n    /* Recoge argumento numero */
return n**3

Antes de terminar, procure asegurarse de que no hay errores de transcripción, sobre todo en los signos de puntuación y especialmente con el carácter "~" que aparece delante del signo "=" en una de las líneas. Este símbolo reside en la tecla situada a la izquierda del uno, en nuestro Amiga, y aparece al pulsarla junto a la tecla mayúsculas. Si ya está seguro de que todo está correcto, bastará con ir a la barra de menú con el ratón y seleccionar la opción Save, para tener nuestro primer programa llamado cubo.rexx bien guardado en el disco, en el directorio rexx:

El siguiente paso será ponerlo en marcha, cosa que haremos tecleando, en la misma ventana de Shell, la orden:

rx cubo.rexx

Si todo ha ido bien, deberíamos ver un mensaje en el que se nos solicita un número. Tras introducirlo y teclear la tecla return, nos devolverá un mensaje con el cubo de ese número, y nos hará la pregunta de si queremos continuar introduciendo números. En este momento si se teclea "n", el programa saldrá al Shell. En caso de que aparezca mensajes de error, podrá revisar la estructura del programa, a la caza de errores, volviendo a teclear la orden: "ED rexx:cubo.rexx".

En fin, llegó la hora de acabar por hoy. Confío en que ahora lleguen a este párrafo sin aburrirse y sin haber cumplido la amenaza al lector imaginario del comienzo. En el próximo número, si me lo permiten, pretendo usar este mismo ejemplo para analizarlo línea a línea y dar a conocer algunos aspectos generales adicionales del lenguaje, antes de acometer la futura empresa de analizar la lista de comandos y funciones del polifacético ARexx. Un saludo y hasta el próximo capítulo.


Envía esta página web a un amigo:
Esta opción está desactivada temporalmente, rogamos disculpen las molestias

Volver a la página anterior

Al menú principal