La colección de registros pertenecientes a una misma entidad se conoce como Archivo . Estos registros se almacenan permanentemente. El manejo de archivos ayuda a organizar estos registros en orden ascendente/descendente. Hace que la búsqueda y el acceso a estos registros sean más fáciles y eficientes. Los registros generalmente se almacenan en una cinta magnética o en un disco.
Ventajas del manejo de archivos:
- Tiene almacenamiento ilimitado y, por lo tanto, almacena un gran volumen de datos.
- Almacena los datos de forma permanente en el dispositivo.
- Reduce la reedición de datos.
Desventajas del manejo de archivos:
- Proporciona un acceso lento.
- No puede realizar operaciones de manera eficiente.
Los verbos de manejo de archivos en COBOL ayudan a realizar diferentes operaciones deseadas en los archivos. Estos verbos son:
- ABIERTO
- CERCA
- LEER
- ESCRIBE
- VOLVER A ESCRIBIR
- COMIENZO
- ELIMINAR
A continuación se muestra una descripción detallada de estos verbos de manejo de archivos.
- OPEN: el verbo OPEN abre el archivo para realizar más operaciones en él, es decir, hace que el archivo esté disponible para realizar cualquier operación. No puede realizar ninguna operación sin abrir el archivo, por lo que esta debe ser la primera operación que debe realizarse en un archivo. Hay 4 modos en los que se puede abrir un archivo:
- Modo INPUT: ayuda a leer los registros/datos de un archivo.
- Modo SALIDA: Ayuda a escribir los registros/datos en un archivo.
- Modo EXTEND: Ayuda a escribir el nuevo registro/dato al final del archivo, es decir, no elimina los registros anteriores del archivo, a diferencia del modo SALIDA.
- Modo IO: Abre el archivo tanto en modo ENTRADA como en modo SALIDA.
Sintaxis:
OPEN {INPUT/OUTPUT/EXTEND/I-O} file_name_1[,file_name_2,...].
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN OUTPUT FILE1. DISPLAY "FILE1 OPENED". CLOSE FILE1. STOP RUN.
- CERRAR: Un archivo debe cerrarse después de realizar todas las operaciones. El verbo CLOSE deshabilita el vínculo entre el archivo y el programa. Después de realizar una operación de cierre, las variables del archivo ya no estarán disponibles para realizar la operación.
Sintaxis:
CLOSE file_name_1[,file_name_2,....].
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN OUTPUT FILE1. DISPLAY "FILE1 OPENED". CLOSE FILE1. DISPLAY "FILE1 CLOSED". STOP RUN.
- READ: El verbo READ permite leer los registros de un archivo. A la vez, solo se puede leer un registro en la estructura del archivo y, después de leer un registro, el puntero del archivo se incrementa en uno. Para leer los registros, el archivo debe abrirse en modo INPUT o en modo IO. Tan pronto como el puntero del archivo llega al final del archivo, se ejecuta la declaración imperativa escrita en la cláusula «AT END».
Sintaxis:
READ file-name RECORD [INTO identifier-1] AT END imperative statement.
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN INPUT FILE1. PERFORM W-PARA UNTIL EOF = 1. CLOSE FILE1. STOP RUN. W-PARA. READ FILE1 AT END MOVE 1 TO EOF. IF EOF = 0 DISPLAY "RNO: ",RNO,"NAME: ",NAME,"PERCENTAGE: ",PERC.
- ESCRIBIR: El verbo ESCRIBIR permite escribir el registro en el archivo. A la vez, solo se puede escribir un registro en la estructura del archivo y, después de escribir un registro, el puntero del archivo se incrementa en uno, por lo que los registros se escriben uno tras otro. Para escribir los registros en el archivo, el archivo debe abrirse en modo SALIDA o modo E/S. Si queremos escribir los valores del identificador-1 en el archivo, se ejecuta la cláusula «FROM».
Sintaxis:
WRITE record-name [ FROM identifier-1].
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN OUTPUT FILE1. MOVE 1 TO RNO. MOVE 'XYZ' TO NAME. MOVE 34.56 TO PERC. WRITE STUDENT. CLOSE FILE1. STOP RUN.
- REESCRIBIR: el verbo REESCRIBIR ayuda a actualizar un registro existente, es decir, si el usuario desea reescribir o realizar cambios en el registro existente, utilice el verbo REESCRIBIR. Para reescribir el registro, el archivo debe abrirse en modo IO. Si el usuario desea escribir los valores del identificador-1 en el archivo, se ejecuta la cláusula «FROM».
Sintaxis:
REWRITE record-name [FROM identifier-1].
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION LINE SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN I-O FILE1. READ FILE1 AT END MOVE 1 TO EOF. IF EOF = 0 IF RNO = 5 MOVE 'XYZ' TO NAME REWRITE STUDENT. CLOSE FILE1. STOP RUN.
- INICIO: si el usuario desea comenzar a leer el registro desde una ubicación en particular, utilice el verbo INICIO. El archivo debe abrirse en modo IO y el modo de acceso al archivo debe ser SECUENCIAL o DINÁMICO. Si la comparación no se satisface con ninguna clave o se accede al archivo desde una posición indefinida, se ejecuta la cláusula «CLAVE NO VÁLIDA».
Sintaxis:
START file-name [KEY IS {EQUAL TO/ = /GREATER THAN/ > /NOT LESS THAN/NOT < THAN} data-name] [INVALID KEY imperative statement].
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION IS INDEXED. ACCESS MODE IS DYNAMIC. RECORD-KEY IS RNO. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN I-O FILE1. START FILE1 KEY IS NOT LESS THAN 5 INVALID KEY DISPLAY " WRONG KEY". CLOSE FILE1. STOP RUN.
- ELIMINAR: Para eliminar cualquier registro del archivo, use el verbo ELIMINAR. El archivo debe abrirse en modo IO. Si el modo de acceso del archivo es SECUENCIAL, no se debe especificar la frase CLAVE INVÁLIDA y el verbo DELETE debe estar precedido por la instrucción READ en el archivo. Si el usuario intenta eliminar el registro que no existe en el archivo, se ejecuta la cláusula «CLAVE NO VÁLIDA».
Sintaxis:
DELETE file-name [ INVALID KEY imperative statement].
Ejemplo:
Cobol
IDENTIFICATION DIVISION. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FILE1 ASSIGN TO DISK ORGANIZATION IS INDEXED. ACCESS MODE IS DYNAMIC. RECORD-KEY IS RNO. DATA DIVISION. FILE SECTION. FD FILE1. 01 STUDENT. 02 RNO PIC 99. 02 NAME PIC A(7). 02 PERC PIC 99.99. WORKING-STORAGE SECTION. 77 CHOICE PIC 9. 77 EOF PIC 9. PROCEDURE DIVISION. OPEN I-O FILE1. MOVE 5 TO RNO. DELETE FILE1 INVALID KEY DISPLAY " WRONG KEY". CLOSE FILE1. STOP RUN.