Bueno si, de hecho, el proceso BATCH es primero hacer capturas en un programa y me refiero a altas, bajas, modificaciones, etc, pero sin tocar al archivo maestro, luego en otro programa, se suben todos las altas al archivo maestro, luego, se toman las bajas y se busca la clave que se desea dar de baja y se elimina fisicamente del archivo maestro, esto se hace, primero, guardando todos los registros anteriores al que se va a eliminar en un archivo temporal, y todos los registros posteriores, luego se reescribe el archivo maestro y se pegan los dos archivos temporales... para modificar pues es casi lo mismo, solo que se modifica el campo que se desea y luego se saca el registro, se hace lo que en eliminacion y al final el registro se escribe al final del archivo maestro... y bueno ese es el PROCESO BATCH, ahora, mi problema era que, el el programa de actualizacion, tenía que crear un archivo indice en el que tuviera una clave y el número de bloque en el que estaba, osea, no directamente, si no que por ejemplo tenía:
03450731 y lo buscamos en el
Archivo indice
03450731 1
03450779 2
03450696 1
eso significaba que la primera y la tercer clave la tenía en el primer bloque, y la segunda en el segundo bloque... ahora, tenía que irme directamente a un bloque específico para buscar la clave solo en ese bloque, y ese era el problema, como irme a un bloque específico de un archivo... tenía primero, que cargar dicho bloque en memoria (en un arreglo) y ahi empezar a buscar la clave, he ahí el gran dilema, el primer programa no lo toque lo dejé como file of, pero en el segundo de actualizacion tuve que manejarlo como file para usar blockread, el cual lleva como parámetros, el archivo, el buffer, el numero de registros que se desean leer, y finalmente una variable que me regresa el número de registros que leyó... y ese era el gran problema porque en el arreglo o buffer me metía los registros que eran pero aparte e metía un chorro de basura, y me regresaba que habia leído 20040 y cosas asi, cuando debía leer 3 o 4 registros...