Función FILEINFO

Sintaxis

FILEINFO ( variable.archivo ,  clave)

El valor de variable.archivo es la variable de archivo de un archivo abierto.

El valor de clave es un número que indica la información concreta necesaria. Estos números de clave se describen en la tabla Claves y valores suministrados a la función FILEINFO.

Descripción

Utilice la función FILEINFO para devolver información sobre la configuración del archivo especificado, como los parámetros, el módulo y la carga, el nombre de archivo del sistema operativo y el nombre VOC. La información devuelta depende del tipo de archivo y el valor de la clave.

Si el primer argumento no es una variable de archivo, todas las claves excepto 0 devuelven una serie vacía. También se visualiza un mensaje de aviso. Se genera un error muy grave si se suministra una clave que no es válida.

Nombres de equivalencia de claves

Se proporciona un archivo de inserción de nombres de equivalencia para permitir al usuario emplear mnemónicos en lugar de números de clave. El archivo de inserción, denominado FILEINFO.INS.IBAS, se encuentra en el directorio INCLUDE del directorio de la cuenta UV. En las cuentas de tipo PIOPEN se hace referencia a él mediante un puntero de archivo VOC denominado SYSCOM. Utilice la sentencia $INCLUDE para insertar este archivo si desea utilizar los nombres de equivalencia, como se muestra en el ejemplo. La tabla siguiente muestra el nombre simbólico, el valor y la descripción:

Tabla 1. Claves y valores suministrados a la función FILEINFO
Nombre simbólico Valor Descripción
FINFO$IS.FILEVAR 0 1 si variable.archivo es una variable de archivo válida; 0 en caso contrario.
FINFO$VOCNAME 1 Nombre VOC del archivo.
FINFO$PATHNAME 2 Nombre de vía de acceso del archivo.
FINFO$TYPE 3 Tipo de archivo tal como se indica a continuación:

1 Hash estático

3 Hash dinámico

4 Tipo 1

5 Secuencial

7 Distribuido y multivolumen

FINFO$HASHALG 4 Algoritmo hash: 2 para GENERAL, 3 para SEQ.NUM.
FINFO$MODULUS 5 Módulo actual.
FINFO$MINMODULUS 6 Módulo mínimo.
FINFO$GROUPSIZE 7 Tamaño de grupo, en unidades de 1 KB.
FINFO$LARGERECORDSIZE 8 Tamaño de registro grande.
FINFO$MERGELOAD 9 Parámetro de carga con fusión.
FINFO$SPLITLOAD 10 Parámetro de carga partida.
FINFO$CURRENTLOAD 11 Carga actual del archivo (%).
FINFO$NODENAME 12 Serie vacía, si el archivo reside en el sistema local; en caso contrario, nombre del nodo donde reside el archivo.
FINFO$IS.AKFILE 13 1 si existen índices secundarios en el archivo; 0 en caso contrario.
FINFO$CURRENTLINE 14 Número de línea actual.
FINFO$PARTNUM 15 En el caso de un archivo distribuido, devuelve una lista de los números de componente abiertos actualmente.
FINFO$STATUS 16 En el caso de un archivo distribuido, devuelve una lista de los códigos de estado que muestran si la última operación de E/S se ha ejecutado correcta o incorrectamente para cada componente. El valor -1 indica que el archivo componente correspondiente no está abierto.
FINFO$RECOVERYTYPE 17 1 si el archivo está marcado como recuperable, 0 si no lo está. Devuelve una serie vacía si la posibilidad de recuperación no está permitida en el tipo de archivo (por ejemplo, los archivos de tipo 1 y de tipo 19).
FINFO$RECOVERYID 18 Siempre devuelve una serie vacía.
FINFO$IS.FIXED.MODULUS 19 Siempre devuelve 0.
FINFO$NLSMAP 20 Si el soporte multilingüístico está habilitado, nombre de correlación del archivo; en caso contrario, una serie vacía. Si el nombre de correlación es el valor predeterminado especificado en el archivo uvconfig, la serie devuelta es el nombre de correlación seguido del nombre del parámetro configurable entre paréntesis.
FINFO$MAXKEYSIZE 21 Devuelve el tamaño de caracteres máximo de la clave que se puede escribir en el archivo especificado. El tamaño de caracteres máximo varía en función del valor de separación, ya que no puede ser mayor que la mitad del valor de separación. Por ejemplo, si el valor de separación es 4, cada grupo contiene 2048 bytes, lo que significa que la clave más grande no puede tener más 1024 bytes. El tamaño máximo de cualquier clave, independientemente del tamaño de separación, es 2048 bytes.
FINFO$DISKCACHEMODE 22 0 - El archivo no está en la memoria caché de disco.

1 - El archivo está en la memoria caché de disco con la modalidad de lectura/grabación estándar.

2 - El archivo está en la memoria caché de disco con la modalidad de solo lectura.

FINFO$PRECACHE 23 1 - El archivo se ha precargado en la memoria caché de disco; 0 en caso contrario.
FINFO$WRITEDEFER 24 1 - La grabación del archivo en la memoria caché de disco se ha diferido; 0 en caso contrario.
FINFO$MAXOPTION 20 Número máximo de claves de FINFO$.

Valor devuelto por la función STATUS

Si la función se ejecuta correctamente, el valor devuelto por la función STATUS es 0. Si la función no se ejecuta correctamente, STATUS devuelve un valor distinto de cero. La tabla siguiente muestra la clave, el tipo de archivo y el valor devuelto para clave:

Tabla 2. Valores de FILEINFO devueltos por tipo de archivo
Clave Dinámico Directorio Distribuido Secuencial
0 1 = archivo abierto 0 = archivo cerrado 1 = archivo abierto 0 = archivo cerrado Matriz dinámica de códigos: 1 = archivo abierto 0 = archivo cerrado 1 = archivo abierto 0 = archivo cerrado
1 Nombre VOC Nombre VOC Nombre VOC Nombre VOC
2 Nombre de vía de acceso del archivo Nombre de vía de acceso del archivo Matriz dinámica de nombres de vía de acceso completos por orden de registro VOC (nombre de vía de acceso como en VOC para archivos no disponibles) Nombre de vía de acceso del archivo
3 3 4 7 5
4 2 = GENERAL

3 = SEQ.NUM

Serie vacía Matriz dinámica de códigos: 2 = GENERAL 3 = SEQ.NUM Serie vacía
5 Módulo actual 1 Matriz dinámica del módulo actual de cada archivo componente  
6 Módulo mínimo Serie vacía Matriz dinámica del módulo mínimo de cada archivo componente Serie vacía
7 Tamaño de grupo en registros de disco Serie vacía Matriz dinámica del tamaño de grupo de cada archivo componente Serie vacía
8 Tamaño de registro grande Serie vacía Matriz dinámica del tamaño de registro grande de cada archivo componente Serie vacía
9 Valor de carga con fusión Serie vacía Matriz dinámica del % de carga con fusión de cada archivo componente Serie vacía
10 Valor de carga partida Serie vacía Matriz dinámica del valor de carga partida de cada archivo componente 1 Serie vacía
11 Valor de carga actual Serie vacía Matriz dinámica del valor de carga actual de cada archivo componente 1 Serie vacía
12 Archivo local: serie vacía Archivo remoto: nombre de nodo Serie vacía Matriz dinámica de valores donde valor es: Archivo local = serie vacía Archivo remoto = nombre de nodo Serie vacía
13 1 = índices 2 = no índices 0 1 = índices comunes presentes 2 = ninguno presente Serie vacía
15 Serie vacía Serie vacía Matriz dinámica de códigos por orden de registro VOC. Código: serie vacía si archivo componente no abierto; número de componente si archivo abierto. Serie vacía
16 Serie vacía Serie vacía Matriz dinámica de códigos por orden de registro VOC para cada archivo componente: 0 = operación de E/S correcta -1 = archivo componente no disponible >0 = código de error Serie vacía
19 0 = módulo no fijo 1 = módulo fijo Serie vacía Matriz dinámica de códigos para cada archivo componente: 0 = módulo no fijo 1 = módulo fijo Serie vacía

1Los valores devueltos para los archivos distribuidos son matrices dinámicas con el valor adecuado para archivo componente. Los valores individuales dependen del tipo de archivo del archivo componente. Por ejemplo, si el archivo componente es un archivo hash, algunos valores, como el módulo mínimo, tienen un valor vacío en la matriz dinámica para ese archivo componente.

Nota: La primera vez que una operación de E/S falla para un archivo componente en un archivo distribuido, la función FILEINFO devuelve un código de error para ese archivo componente. En las operaciones de E/S posteriores que se realizan en el archivo distribuido con el mismo archivo componente no disponible, la función FILEINFO devuelve -1.

Modalidad de soporte multilingüístico

La función FILEINFO determina el nombre de correlación de un archivo utilizando el valor de FINFO$NLSMAP. El soporte multilingüístico utiliza el archivo de inserción denominado FILEINFO.H.

Ejemplos

En el ejemplo siguiente, se inserta el archivo que contiene los nombres de equivalencia de claves con la sentencia $INCLUDE. Se abre el archivo FILMS y se visualiza su tipo de archivo.

$INCLUDE SYSCOM FILEINFO.INS.IBAS
OPEN '','FILMS' TO FILMS
        ELSE STOP 'CANT OPEN FILE'
PRINT FILEINFO(FILMS,FINFO$TYPE)

En el ejemplo siguiente, se abre el archivo FILMS y se visualiza su tipo de archivo al especificar la clave numérica:

OPEN '','FILMS' TO FILMS
        ELSE STOP 'CANT OPEN FILE'
PRINT FILEINFO(FILMS,3)