|
 |
 |
Instr. de Archivos
página(s) : 2/5 (6114 palabras totales en este texto) (124090 Lecturas) 
CLOSE, ésta es la instrucción contraria a OPEN, es
decir termina la conexión establecida con el archivo, a partir del momento que aparezca
ésta instrucción el archivo no estará disponible para operar con él, hasta la próxima
vez que se abra. Obviamente antes de cerrarlo debe de estar abierto.
CLOSE nombre de archivo (
WITH LOCK) (WITH NO REWIND
)
El nombre de archivo corresponderá a algún archivo abierto anteriormente.
Las opciones WITH LOCK y WITH NO REWIND
, tienen la misma explicación que la vista en la orden OPEN.
|
...
PROCEDURE DIVISION.
INICIO.
OPEN INPUT ARTICULOS.
OPEN I-O CLIENTES
OPEN EXTEND IMPRE.
...
...
...
CERRAR.
CLOSE ARTICULOS CLIENTES IMPRE.
... |
|
Nota: Apuntaré que si finalizamos el programa con la sentencia
STOP RUN, que luego veremos, los archivos que estuvieran abiertos
se cierran automáticamente aunque no se haya especificado la orden CLOSE.
Anque siempre es preferible utilizarla, ya que puede haber algunos compiladores mas
antiguos que no los cierren.
Me gustraría destacar
de éstas dos instrucciones vistas que lo mas normal es no utilizar ninguna de las
opciones, es decir solo abrir de una manera el archivo para su uso y una vez hayamos
acabado con él, cerrarlo.
|
READ, es la instrucción que utilizamos para leer
registros de un archivo, debe de estar abierto. Con ella conseguimos que los datos
referentes al registro accedido queden en la descripción de dicho fichero, es decir,
conseguimos que los campos declarados en la FD, tengan el valor correspondiente al
registro leido.
La sentencia READ, se utiliza para leer
ficheros secuanciales o indexados, o para leer indexados de manera secuencial, por lo que
su sintaxis tiene dos formatos principales.
Formato para leer ficheros de
manera secuncial. (Indexados o secuenciales)
READ nombre de archivo (
NEXT/PREVIOUS RECORD) (
INTO descripción)
(AT END / NO AT END sentencia)
END-READ
nombre de archivo
corresponderá a algún archivo abierto anteriormente.
La opción NEXT RECORD,
indica que se va a leer el siguiente registro y es la que se toma por defecto, ya que,
cuando estamos leyendo un archivo de forma secuencial, éste leerá registros uno tras
otro, hasta llegar al final.
La opción PREVIOUS RECORD leería el registro anterior. Esta opción es la única que no es válida
para ficheros secuenciales de éste formato.
La opción INTO, indica cual de las descripciones de registro que hayamos podido declarar será la que almacene
los datos del registro leido. Tenemos que tener en cuenta que Cobol nos permite mantener
mas de una descripción de registro para un mismo archivo. Si tuvieramos mas de una, ésta
sería la opción para indicarle cual es la que queremos utilizar en ésta lectura.
La sentencia que va después de AT END
, indica que debe de hacer el programa al llegar al final del fichero.
Puede ser cualquier orden de cobol, pero es evidente que si volvemos a leer una vez
llegado al final, producirá un error.
|
...
PROCEDURE DIVISION.
INICIO.
OPEN INPUT ARTICULOS.
LECTURA.
READ ARTICULOS NEXT RECORD AT END GO CERRAR.
...
...
...
GO LECTURA.
CERRAR.
CLOSE ARTICULOS.
... |
|
Nota: Si bien este formato nos sirve para leer cualquier tipo de archivo de
manera secuencial, en el caso de que el archivo fuera secuencial, éste solo se podría
leer así.
Existen muchas ocasiones en que un
archivo indexado nos interesa leerlo de manera secuencial. Si lo hicieramos éste sería
su formato, además en éste caso podriamos leerlo tanto del principio al final con la
opción NEXT, como del final al principio con la opción PREVIOUS.
Para poder leer un fichero indexado de manera secuencial,
deberemos de haber especificado en la SELECT, que su acceso
va a ser DYNAMIC o SEQUENTIAL.
|
| (1/5) | | (3/5) |
|
|