Variables de entorno

Timothy Swenson
Artículo aparecido en QL Hacker's Journal

Traducción:
Afx
Septiembre de 2009

El concepto de Variables de Entorno viene del mundo UNIX. Se utilizan también en MS-DOS pero de forma más limitada y no en la misma medida. Para el mundo QDOS, el archivo ENV_BIN proporciona una serie de extensiones que permiten el uso de Variables de Entorno en el Sinclair QL.

Si queremos disponer de estas facilidades debemos cargar previamente dicha extensión en nuestra sistema. Para ello basta con añadir en nuestro boot una línea similar a la siguiente (ver notas):

100 LRESPR flp1_env_bin

En esencia, una variable de entorno es una variable que puede ser "vista" por los programas ejecutables. En SuperBASIC podemos crear todo tipo de variables, pero si ejecutamos un programa desde SuperBASIC, estos programas no pueden "ver" dichas variables ni obtener datos de ellas.

El objetivo de las variables de entorno suele ser el cambiar la configuración de un programa. Estas variables funcionan como los "Bloques de Configuración" en QDOS, pero no requieren de la ejecución de un programa externo para hacer cualquier cambio en sus valores.

Echemos un vistazo a cómo podemos cambiar el comportamiento de los programas. Hay cinco maneras diferentes de hacer esto:

1] Intervención del usuario. Mediante esta estrategia, el usuario utiliza un menú o responde a las preguntas del programa.

2] Bloques de Configuración (Config Blocks). Esta característica es peculiar del QDOS y permite al usuario cambiar las opciones por defecto sin tener que saber cómo editar un archivo binario.

3] Fichero de Configuración. Este es un archivo separado que el programa lee para determinar cómo establecer los valores predeterminados para su ejecución.

4] Argumentos por la Línea de Comandos. En lugar de que el programa pregunte la de información al usuario, el usuario escribe dichos valores cuando ejecuta el programa desde la consola utilizando parámetros adicionales.

5] Variables de Entorno. El usuario establece una variable que luego es leída por el programa para cambiar su configuración predeterminada.

Cada una de las opciones tiene su propio lugar, sus ventajas y sus defectos. Algunas son más permanentes, como los Bloques de Configuración y los Archivos de Configuración, mientras que las otras opciones son más volátiles, como la "Intervención del Usuario" y de los "Argumentos por la Línea de Comandos". Las "Variables de Entorno" se encuentran entre las opciones que se pueden establecer en el BOOT (arranque del sistema), o en un programa cargador, pero se pueden cambiar con solo teclear en un nuevo comando. El fichero ENV_BIN viene con 4 extensiones. Éstas son:

SETENV     - Define una variable de entorno.
ENV_LIST   - Lista todas las variables de entorno definidas.
ENV_DEL    - Elimina una variable de entorno.
GETENV$    - Obtiene el valor de una variable de entorno.
Los dos comandos más relevantes son SETENV y GETENV$. SETENV se usa de esta forma:
SETENV "VARIABLE=valor"
SETENV toma un argumento de cadena del tipo "XXXXX=YYYYY", donde XXXXX y YYYYY son dos cadenas separadas por un signo igual. Cualquier espacio antes del signo igual es tratada como una parte de XXXXX y un espacio después del signo igual es tratada como una parte de YYYYY. El nombre de la variable es sensible a mayúsculas y minúsculas, así "VARIABLE" es diferente de "variable". Por convenio, las mayúsculas se utiliza como nombre de las variables de entono. El comando SETENV se puede ejecutar en el programa de inicio del sistema -BOOT- (el cual podría ser alterado por un programa instalador), o bien directamente por el usuario. El comando para que un ejecutable obtenga el contenido de una variable de entorno es GETENV$. El comando se usa así:
a$ = GETENV$("VARIABLE")

En este caso, a$ se le asignará el valor de "valor" establecido en nuestro ejemplo por la instrucción SETENV anterior. Si la variable de entorno "VARIABLE" no está definida (no existe), entonces la función GETENV$ devolvería una cadena vacía ("").

Hemos dicho que los ejecutables usan GETENV$ y no los programas SuperBASIC. Como las variables se utilizan ya de forma ordinaria en el entorno SuperBASIC, no ganaríamos mucho en el uso de variables de entorno (a no ser que pretendamos obtener algún valor preestablecido de forma personalizada en nuestro sistema). Por esto hemos destacado que el uso mayor de estos comandos es en los programas SuperBASIC compilados, que son ejecutables.

Vemos que el propósito de utilizar Variables de Entorno es la adición de flexibilidad para los programas que utilizan bloques de configuración. Ambos, Bloques de Configuración (Config Blocks) y Variables de Entorno se han diseñado realmente para cambiar la configuración predeterminada de los programas. La "Intervención del Usuario" y los "Argumentos por la Línea de Comandos" están diseñados para indicar al programa algunos datos adicionales. El uso de Variables de Entorno permite al usuario la posibilidad de hacer un cambio temporal en las opciones por defecto de un programa, sin tener que pasar por la molestia de usar "config". Las variables de entorno se utilizan para cambiar una configuración para una sola sesión y ya está.

No es difícil el uso de los "Bloques de Configuración" y las "Variables de Entorno" en conjunción de tal forma que sean complementarias. El programa obtendría primeramente su configuración por defecto del Bloque de Configuración (Config Block). A continuación, se comprueba si hay variables de entorno establecidas. Si hay, entonces los valores de configuración de las Variables de Entorno reemplazan los valores de configuración definidos en los Bloque de Configuración.

Notas:
- LRESPR requiere Toolkit 2
- La extensión ENV_BIN se puede obtener en la sección de Toolkits del sitio de Dilwyn Jones.

Artículo original: http://dilwynjones.topcities.com/qhj/qhj/qhj28.txt


Sinclair QL Recursos en Castellano Alojado en / Hosted at:
Sinclair QL Recursos en Castellano
Sinclair QL Spanish Resources