De macro a script
Aunque cuando expliqué las macros en OOo Basic ya hable de estos temas, me interesa volver sobre ello para hacerlo desde una perspectiva general y también más utilitaria, esto es: desde la perspectiva del uso que podemos hacer de la combinación de macros (entendidas como código resultante de Grabar macro) y script (entendidos como secuencias de código desarrollados desde el IDE) y los procedimientos de conversión de una macro en un script.
En la entrada en que expliqué (brevemente) la diferencia entre la programación imperativa y la estructurada, dije que retomaríamos el tema cuando se tratara sobre las macros y su conversión en script, así que vamos a ello, ya que cuando hable de las macros desde OOo Basic poco se dijo al respecto, puesto que el objetivo era otro. De todos modos esa entrada puede serte ahora de interés, así que, si quieres, accede a ella desde este enlace.
Si te fijas, una macro (Grabar macro) es, en realidad, un ejemplo de programación lineal o jerárquica: Grabar macro sólo es capaz de generar una secuencia lineal en la que una instrucción sigue a otra. Es lógico que esto sea así, ya que lo que hace esta funcionalidad de LO-Writer es grabar y convertir en sentencias OOo Basic la sucesión de acciones que realizamos en el documento desde el teclado. Es el uso que nosotros hacemos de las macros creadas el que da al funcionamiento de conjunto la "apariencia" de ejecución asimilable a lo que define a la programación estructurada: el uso sucesivo de subrutinas, pero una subrutina-macro únicamente es una sucesión de instrucciones. Más aun, no es posible que Grabar macro genere código ni con condicionales, ni con bucles, ni siquiera con sentencias GoTo; en resumen, Grabar macro no equivale a programar.
Esto supone una grave limitación que sólo es posible superar trasformando una macro en un script, utilizando OOo Basic y desde el IDE. Afortunadamente esto es perfectamente posible, aunque con un coste: tenemos que entender la lógica de programación de la macro y conocer el lenguaje OOo Basic, algo que, a estas alturas tú ya sabes.
Empezamos usando Grabar macro como puerta de entrada a la programación (en OOo Basic, y por tanto, desde la perspectiva de la competencia ofimática y desde el interior de los documentos), y necesitamos ahora, para mejorar nuestra capacidad de uso de lo aprendido respecto a ese lenguaje, detenernos en los modos o procedimientos de trabajar con el código de una macro para convertirlos en script; esto equivale a pasar de un modelo estrictamente lineal a otro estructurado, e incluso modular.
¿Por qué necesitamos trabajar desde el modelo estructurado, incluso aun mejor desde el modular?. O dicho de un modo más práctico: ¿por qué necesitamos programar en lugar de limitarnos a generar secuencias de macros?.
Desde un punto de vista práctico y de utilidad inmediata, algunos problemas, algunos objetivos, si prefieres, podemos abordarlos exclusivamente con macros, pero la gestión de procedimientos de cierta (no mucho) complejidad requiere algo más, especialmente si nuestro objetivo es la automatización de documentos. Con macros podemos automatizar secuencias fijas de manejo del documento, bien de forma estrictamente lineal (una única macro resuelve todo el conjunto de acciones), bien de forma estructurada pero manual: activamos una secuencia de macros, una tras otra, conforme deseemos que se desarrolle el procedimiento.
Pero en el mismo momento en que nos interesa generar una secuencia de macros de forma automática, ya necesitamos realizar la primera conversión de macros en script: necesitamos crear un script que llame sucesivamente a las macros en vez de hacerlo nosotros.
Esta es la forma más simple de trabajar con macros desde script, y tiene sus ventajas respecto a crear una macro que las incluya a todas: podemos simplificar nuestro trabajo de generar macros (que no deja de ser tedioso) aplicando una forma elemental del modelo estructurado: generar piezas reutilizables de código mediante Grabar macro, que podemos llamar desde diferentes script, cuando las necesitemos, las veces que deseemos y en el orden que nos interese. Este procedimiento es siempre más económico en tiempos de programación que crear una y otra macro que se ajuste a la secuencia de acciones necesarias.
El siguiente paso puede ser condicionar la llamada a una macro a un resultado u a otro (condicionalidad), o llamar de forma repetida a una macro para que una secuencia de acciones se repita un número determinado de veces (iteración). Sin escritura de script desde el IDE no podemos hacer nada de eso.
El tercero y último (para no extenderme más), es incluir dentro de la misma macro esas estructuras cíclicas o condicionales de las que hablamos antes.
Para todo ello necesitamos trabajar desde el IDE y con OOo Basic, y especialmente para la tercera, saber descifrar el código que genera Grabar macro, lo que equivale a leer y entender código OOo Basic.
A explicar estos procedimientos que ahora sólo he enunciado dedicaré las siguientes entradas.
No hay comentarios:
Publicar un comentario
Comenta esta entrada