Toolkit II, Manual de Usuario
Anterior Siguiente

10 Abrir y Cerrar

Todos los comandos y funciones OPEN y CLOSE evitan el problema que ocurre usando las facilidades estándar del QL cuando se abren más de 32768 ficheros en una sesión de trabajo.

10.1 Comandos de Apertura

Los comandos OPEN del QL estándar han sido modificados para que usen los directorios de omisión para datos. Se han añadido dos comandos que permiten la apertura de ficheros sobreescribiendo el antiguo en el caso de que exista, y la apertura de un directorio.

OPEN #canal,nombre abre un fichero
OPEN_IN #canal,nombre abre un fichero sólo para lectura
OPEN_NEW #canal,nombre abre un nuevo fichero
OPEN_OVER #canal,nombre abre un nuevo fichero, y lo sobrescribe si existe
OPEN_DIR #canal,nombre abre un directorio

10.2 Estado de los Ficheros

La función FTEST determina el estado de un fichero o dispositivo. Abre un fichero sólo para lectura y lo cierra inmediatamente. Si el fichero existe devolverá los valores 0 o -9 (código de error "en uso"); si no existe, devolverá -7 (código de error "no encontrado"). Otras posibles respuestas son -11 ("nombre incorrecto"), -15 ("parámetro incorrecto"), -3 ("sin memoria") o -6 ("canal no abierto" por no haber sitio en la tabla de canales).

FTEST (nombre) verifica el estado del fichero

La función puede usarse para comprobar que un fichero no existe:

IF FTEST (file$) = -7: Print "Fichero ";file$;" existe"

10.3 Funciones para la Apertura de Ficheros

Hay un grupo de funciones para la apertura de ficheros. Estas funciones difieren de los procedimientos OPEN en dos cosas. La primera es que si ocurre un error en el sistema de ficheros (por ejemplo, "no encontrado" o "ya existe"), estas funciones devolverán el número de error y el programa podrá continuar. La segunda diferencia es que estas funciones pueden ser utilizadas para encontrar un hueco en la tabla de canales; en este caso, si el proceso de apertura acaba positivamente, el número devuelto será el del canal.

FOPEN (#canal,nombre) abre un fichero para lectura/escritura
FOP_IN (#canal,nombre) abre un fichero sólo para lectura
FOP_NEW (#canal,nombre) abre un fichero nuevo
FOP_OVER (#canal,nombre) abre un fichero nuevo, y lo sobrescribe si ya existe
FOP_DIR (#canal,nombre) abre un directorio

Cuando se llama a estas funciones con dos parámetros, devuelven un valor de cero si son completadas correctamente, o el código de error negativo, en caso contrario.

Un fichero puede ser abierto sólo para lectura con una extensión opcional, usando el código siguiente:

ferr=FOP_IN(#3,nombre$&"_ASM") : REMark trata de abrir el fichero "_ASM"
IF ferr=-1:ferr=FOP_IN(#3,nombre$) : REMark en caso de error "no encontrado" trata de abrir fichero no "_ASM"

El parámetro #canal es opcional: si no se da, las funciones buscarán un canal libre en la tabla de canales, y si se llega a abrir el canal, su número será devuelto por la función. Observa que los números de error son siempre negativos y que los números de canal son siempre positivos.

En el ejemplo:

numcan = FOP_NEW(fred) : REMark abre fred
IF numcan<0 : REPORT numcan : STOP : REMark fracasó open
PRINT #numcan, "Este es el fichero Fred"
CLOSE #numcan

no hay necesidad de conocer el número real del canal.

10.4 Cerrar

El comando CLOSE admite varios parámetros. Además, si se le llama sin ningún parámetro, cerrará los canales número #3 y superiores. No da ningún error si el canal no está abierto.

CLOSE #canales cierra canales

Por ejemplo

CLOSE #3,#4,#6 cierra #3,#4 y #6


Anterior Índice de Materias Siguiente
Control de tareas   Información de ficheros