Toolkit II, Manual de Usuario
Anterior Siguiente

4. Control de Directorios

4.1 Estructuras de Directorio

En la terminología del QDOS, un directorio es el lugar donde el sistema espera encontrar un fichero. Un directorio puede ser tan sencillo como el nombre de un dispositivo (por ejemplo, el nombre del Microdrive 2: MDV2_) o mucho más complejo, formando parte de un "árbol de directorio". Por ejemplo, el directorio MDV2_ puede incluir los directorios JOHN_ y OLD_ (nota: todos los nombres de directorio acaban en "_"), y JOHN puede incluir los ficheros DATA1 y TEST.

		                 MDV2_ 

		                  |

		          +-------+-------+	

		          |               |

		        JOHN_           OLD_

		          |

		  +-------+-------+

		  |               |

		DATA1            TEST

Obsérvese que los árboles de directorio crecen hacia abajo. El nombre de fichero completo en el QDOS para DATA1 en el ejemplo anterior es MDV2_JOHN_DATA1.

Una característica inusual de la estructura de directorios del QDOS es la ausencia formal de una "extensión" al nombre de fichero: no son estrictamente necesarias ya que las "extensiones" (como _aba para los ficheros de ABACUS o _asm para los ficheros fuente en ensamblador) son tratadas como ficheros dentro de un directorio.

Lo dicho puede ser ilustrado en el caso de un programa en ensamblador TEST, procesado usando el macro ensamblador y editor de GST. El fichero fuente en ensamblador (TEST_ASM), el listado de salida del ensamblador (TEST_LIST), la salida relocalizable del ensamblador (TEST_REL), el fichero de control del enlazador ("linker") (TEST_LINK), el listado de salida del enlazador (TEST_MAP) y el programa ejecutable producido por el enlazador (TEST_BIN) son todos tratados como ficheros del directorio TEST_.

		                    MDV2_ 

		                      |

		              +-------+	

		              |

		            JOHN_

		              |

		      +-------+

		      |

		    TEST

		      |
+----+---+-------+-------+-------+-------+
| | | | | | ASM LIST REL LINK MAP BIN

El Toolkit II permite seleccionar directorios de omisión. Los valores de omisión se pueden utilizar en todas las operaciones del sistema de ficheros. Un valor de omisión puede ser seleccionado en cualquier nivel de complejidad, dando el punto de partida para encontrar un fichero en la estructura de árbol. Así, en el ejemplo anterior, si el valor de defecto es MDV2_, bastará dar el nombre JOHN_TEST_ASM para encontrar el fichero fuente en ensamblador. Si el valor de omisión es MDV2_JOHN, dicho fichero será encontrado en TEST_ASM. Con el nombre entero MDV2_JOHN_TEST_ASM, se encontrará el fichero independientemente del valor de omisión.

4.2 Seleccionando los Valores de Omisión

Inusualmente, las extensiones del Toolkit II al QDOS, posibilitan tres valores de omisión distintos para la estructura de directorio. Ello es debido a que el QDOS es intrínsecamente un sistema operativo multi-dispositivo. Es de esperar que los programas ejecutables estén en un directorio diferente, y probablemente también en un dispositivo diferente, que los ficheros con los datos manipulados.

Además, los procedimientos de copia serán usados más probablemente para copiar de un directorio a otro, o a una impresora o otro dispositivo de salida, que para copiar al mismo directorio.

Hay tres comandos para seleccionar los tres valores de omisión:

DATA_USE nombre directorio selecciona omisión datos
PROG_USE nombre directorio selecciona omisión programas
DEST_USE nombre directorio selecciona omisión destino

Si el nombre de directorio dado no acaba en "_", el subrayado será añadido al nombre de directorio.

El valor de DATA_USE se utiliza para la mayoría de comandos del sistema de ficheros del Toolkit. PROG_USE se usa sólo para buscar los ficheros de programas en los comandos EX/EXEC. DEST_USE se usa para encontrar el nombre de fichero destino cuando se usan los comandos que copian o renombran ficheros (SPL, COPY, RENAME, etc) con un solo nombre de fichero.

Hay una forma especial de DEST_USE que no añade "_" al nombre dado. Dicha forma define el dispositivo de omisión del "spooler":

SPL_USE nombre de dispositivo

De esta forma se selecciona también el dispositivo de omisión, pero si el nombre del dispositivo no acaba en "_", no se le considera un directorio, de manera que el valor de omisión para el nombre de fichero de destino, se utiliza sin modificación.

Así, en los dos ejemplos siguientes:

DEST_USE flp2_old (el valor de omisión es FLP2_OLD_)
......
SPL fred

o

SPL_USE flp2_old_ (el valor de omisión es FLP2_OLD_)
......
SPL fred

el fichero "fred" será volcado a "flp2_old_fred". Sin embargo, si, como en el ejemplo siguiente, se utiliza SPL_USE con un nombre que no acaba en "_" (es decir, un nombre que no sea de tipo directorio):

SPL_USE ser (el valor de omisión es SER)
......
SPL fred

el fichero "fred" será volcado a "ser" en lugar de a "ser_fred".

Obsérvese que SPL_USE y DEST_USE definen en mismo valor de omisión (el de destino).

4.3 Navegación a través de los Directorios

Hay tres comandos que permiten moverse a través de un árbol de directorio.

DDOWN nombre desciende (añade "nombre" al valor de omisión)
DUP asciende (elimina el último nivel del directorio)
DNEXT nombre asciende y a continuación desciendepor una rama diferente del árbol

No es posible ascender más allá del nombre del dispositivo mediante el comando DUP. La longitud del valor de omisión no puede de ninguna manera exceder los 32 caracteres.

Estos comandos operan sobre el directorio de omisión para los datos. Bajo ciertas condicionas, pueden también actuar sobre los otros valores de omisión:

Si el valor de omisión para programas es el mismo que para datos, ambos valores se unen y los comandos anteriores operarán también sobre el valor de omisión para PROG_USE. Si el valor de omisión para la destinación, acaba en "_" (es decir, si es un directorio y no un dispositivo), los comandos anteriores actuarán también sobre dicho valor.

A continuación se da un ejemplo de la aplicación de las reglas anteriores:

	                    datos       programas   destino

	valores iniciales   mdv2_       mdv1_       ser

	DDOWN john          mdv2_john_  mdv1_       ser

	DNEXT fred          mdv2_fred_  mdv1_       ser

	PROG_USE mdv2_fred  mdv2_fred_  mdv2_fred_  ser

	DNEXT john          mdv2_john_  mdv2_john_  ser

	DUP                 mdv2_       mdv2_       ser

	DEST_USE mdv1_      mdv2_       mdv2_       mdv1_

	DDOWN john          mdv2_john_  mdv2_john_  mdv1_john_

	SPL_USE ser1c       mdv2_john_  mdv2_john_  ser1c

4.4 Orientándose

Mediante el siguiente comando, que lista los tres valores de omisión, podrás saber en qué nivel del árbol de directorios te encuentras:

DLIST lista valores de omisión para datos, programas y destinaciones
o DLIST #canal
o DLIST \ nombre

Cuando no se especifica canal de salida, los valores de omisión se listan en la ventana #1.

Existen tres funciones que permiten encontrar los valores de omisión desde un programa en SuperBASIC:

DATAD$ devuelve la omisión para datos
PROGD$ devuelve la omisión para programas
DESTD$ devuelve la omisión para destinaciones

Estas funciones se usan sin ningún parámetro:

IF DATAD$<>PROGD$: PRINT "Directorios Separados"
DEST$ = DESTD$
IF DEST$(LEN(DEST$))="_": PRINT "Destino"!DEST$

Tanto en el Sinclair QL Toolkit original, como en este Toolkit, existen facilidades para permitir a los programas ejecutables el encontrar los valores de omisión de los directorios, aunque estas facilidades apenas son empleadas por los programas comerciales para el QL.

Lo solución real para permitir el uso de directorios de omisión al nivel de "traps" del QDOS, sólo puede ser obtenida mediante el uso de accesorios adicionales en la puerta para expansiones o mediante el cambio de las ROMs que contienen el sistema operativo. Sin embargo, la mayoría de los programas comerciales no reconocerían los valores definidos. En el apéndice B se da un ejemplo de como superar este problema.


Anterior Índice de Materias Siguiente
Editando ficheros   Mantenimiento de ficheros