Revistas en papel
 Amiga World Nº10 - Mayo 1990
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.

P A R T E   2

C R E A C I Ó N

Amiga World
DE MACROS

Por Mark L. Van Name y Bill Catchings

En la primera parte de esta pequeña serie se ha podido ver cómo se crean
y ejecutan ficheros macro. Este mes se mostrará cómo poder crear macros mucho más
poderosos, trabajando con diferentes opciones de entrada. Usted añadirá esta
ventaja mediante la definición de parámetros.

Un parámetro es una opción sustituible dentro de un macro, con el cual se puede variar alguna de las funciones a realizar. Para la declaración de un parámetro se utiliza la sentencia:

    .KEY nombre-parámetro

La cual se puede abreviar de la siguiente forma:

    .K nombre-parámetro

Esta sentencia deberá ser la primera línea en el macro. Un macro puede componerse únicamente de un parámetro; por ejemplo un macro que realizase una copia de un fichero (un Backup) se resolvería de la siguiente forma:

    .KEY fichero
    COPY <fichero><fichero>.BAK

Observe la presencia de los caracteres < y > enredador de la palabra 'fichero'. Usted deberá emplazarlos enrededor del nombre utilizado en el parámetro siempre que se use en el macro, salvo en el estamento inicial .KEY.

Cuando usted ejecute el macro, el comando EXECUTE reemplaza el parámetro con un valor dado en el argumento del macro, justo como habrá podido observar en algún comando del AmigaDOS. Para ejecutar un Backup (siguiendo con el ejemplo anteriormente mencionado) de un fichero llamado 'mi-fichero' deberá introducir:

    EXECUTE BACLUP mi-fichero

El resultado será un fichero que se llamará mi-fichero.BAK.


Uno es bueno, pero mejor si son más

En algunos casos, un único parámetro en el macro no es suficiente para realizar todas las operaciones deseadas. Por ejemplo usted podría desear controlar el disco en el que se emplazará el fichero .BAK. Afortunadamente un macro puede incluir varios parámetros por ejemplo:

    .KEY fichero,disco
    COPY <fichero><disco>:<fichero>.BAK

No se deben dejar espacios entre los parámetros definidos; si usted lo hace, al ejecutar el macro recibirá el mensaje:

    EXECUTE: Parameters unsuitable for Key "file, disk"

(Donde la cadena entre las comillas es el texto incluido en el estamento .KEY). Si usted incluye más de dos parámetros, y deja un espacio entre el segundo y el tercero; EXECUTE nunca contemplará el tercero de ellos.

Como usted puede observar, todos los parámetros definidos aparecen en el mismo estamento .KEY. Si usted define dos o más estamentos .KEY, en un mismo macro, al ejecutar éste mediante el comando EXECUTE, obtendrá el siguiente mensaje de error:

    EXECUTE: More than one K directive.

La forma que se posee para relacionar los diferentes argumentos, con los parámetros definidos en la función .KEY, es la de asociar el primer argumento con el primero de los parámetros definido, el segundo con el segundo de ellos, etc. En nuestro ejemplo, la ejecución del programa sería la siguiente:

    EXECUTE BACKUP foo DF0

Con esta sintaxis, foo se asociará al nombre del fichero, asociando como unidad de disco 'DF0'; por tanto se crearía el fichero foo.BAK en la unidad DF0. También puede comprobar que no es necesario separar los diferentes argumentos mediante comas, ya que éstos han sido separados en el listado del macro.

Otro tipo de sintaxis en el macro es la siguiente, donde se usa el nombre de los parámetros para asociar el argumento contiguo:

    EXECUTE BACKUP fichero foo disco DF0

O bien:

    EXECTE BACKUP disco DF0 fichero foo.

Como han podido comprobar, cuando se usa el nombre de los parámetros, para identificar el argumento, el orden en la sintaxis se puede alterar. También se pueden juntar los dos métodos descritos, con lo cual sólo se define uno de los argumentos (mediante el parámetro):

    EXECUTE BACKUP disco DF0 foo.

Execute asocia DF0 al parámetro 'disco' puesto que dicho nombre aparece anteriormente al argumento, asociando 'foo' al parámetro fichero (el único posible).


Ausencia de argumentos

En los anteriores ejemplos ha visto que se debía asociar un argumento a cada parámetro, lo cual no es del todo cierto; técnicamente se puede omitir uno, varios o incluso todos los argumentos precisos para que el macro funcione.

Para que usted pruebe esta posibilidad, puede probar a omitir algún parámetro en el comando COPY; recibiendo como respuesta el siguiente mensaje:

    Bad arguments
    Copy failed returncode 20.

Sin embargo, algunos macros pueden trabajar perfectamente sin haber definido todos los argumentos. Considere un nuevo macro, que llamaremos 'NEW DISK', el cual copiará un fichero a otro disco, usando opcionalmente un nuevo nombre para el fichero copiado:

    .KEY fichero,disco,nuevo-nombre
    COPY <fichero><disco>:<nuevo-nombre>

Ejecútelo con:

    EXECUTE NEW-DISK mi-fichero DF0 fred

El macro copiará el fichero 'mi-fichero' al drive DF0, con el nuevo nombre de 'fred'. Ahora ejecútelo sin introducir el tercer argumento:

    EXECUTE NEW-DISK mi-fichero DF0

Ahora copiará el fichero 'mi-fichero' en el drive DF0, pero reteniendo el mismo nombre para el fichero copiado.


Cuando se usa el nombre de los

parámetros, para identificar el

argumento, el orden en la

sintaxis se puede alterar.

Otro punto a tomar en consideración es el de introducir correctamente el argumento correspondiente a un parámetro, ya que si se comete el siguiente paso:

    .KEY fichero,disco,nuevo-nombre
    COPY <fichero><disco>:<nuevonombre>

Al ejecutar el macro asumirá que el parámetro no está definido, sustituyendo éste por una cadena nula; con lo cual la tercera opción no se contemplará.

Dos 'switches' especiales, le permitirán un mayor control sobre los parámetros. Dichos 'switches' deberán situarse a continuación del parámetro en la función .KEY. La opción '/a' hace que la argumentación de un parámetro sea obligatoria. Para forzar a los usuarios de NEW-DISK, la introducción de por lo menos dos de los primeros argumentos, cambie la instrucción .KEY por la siguiente:

    .KEY fichero/a,disco/a,nuevo-nombre

(Recuerde de nuevo el no dejar espacios entre la definición de los parámetros). Si usted intenta ejecutar EXECUTE NEW-DISK sin argumentar los dos primeros parámetros, usted recibirá el siguiente mensaje de error.

    EXECUTE: Parameters unsuitable for key
    "fichero/a,disco/a,nuevo-nombre".

Por otro lado la inclusión de la opción '/k', hace que el parámetro resulte opcional, si usted argumenta dicho parámetro opcional, deberá incluir el nombre del parámetro en cuestión antes del argumento:

    .KEY fichero/a,disco/a,nuevo-nombre/k

Al cambiar de nuevo dicha línea, ejecute otra vez el macro con la siguiente sintaxis:

    EXECUTE NEW-DISK mi-fichero DF0 nuevo-nombre fred

Si usted omite el parámetro nuevo-nombre, usted obtendrá el conocido mensaje:

    EXECUTE: Parameters unsuitable for key
    "fichero/a,disco/a,nuevo-nombre/k".          


Obtener un valor por defecto

A veces resulta de una gran ayuda el obtener un valor por defecto en vez de una cadena nula. Usted puede definir valores por defecto, para cada uno de los parámetros, de dos formas diferentes.

La primera de las formas, es mediante la instrucción .DEF:

    .DEF nuevo-nombre "fred"

Esta instrucción hace que EXECUTE asuma el valor de 'fred' cada vez que usted, al ejecutar NEW-DISK, omita el argumento correspondiente al parámetro nuevo-nombre. Usted necesitará un .DEF por parámetro; pudiendo utilizar más de un .DEF en un parámetro, aunque el asignado por defecto sea siempre el primero. Por ejemplo, las dos siguientes líneas:

    .DEF nuevo-nombre "fred"
    .DEF nuevo-nombre "joe"

Se corresponden a la única línea:

    .DEF nuevo-nombre "fred".

La segunda opción, es la de definir un valor por defecto cuando se usa el parámetro. Usted deberá poner el signo '$' a continuación del parámetro y antes del valor. En la instrucción COPY, correspondiente a la macro NEW-DISK, introduzca la siguiente línea:

    COPY <fichero><disco>:<nuevo-nombre$freed>

Cuando use este método no deberá insertar el valor por defecto entre comillas.


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