Saltar al contenido principal
eLearner.app
Módulo 5 · Lección 2 de 210/10 en el curso~15 min
Lecciones del módulo (2/2)

Operazioni di Input/Output

Una vez asociado y declarado un archivo en la DATA DIVISION, podemos manipularlo dentro de la PROCEDURE DIVISION. En COBOL, la gestión del ciclo de vida de los archivos sigue un flujo estándar e imperativo: apertura, operación (lectura o escritura) y cierre.


1. Apertura de archivos: instrucción OPEN

Antes de poder leer o escribir en un archivo, este debe abrirse indicando el modo de acceso adecuado:

Code
       OPEN INPUT SALES-FILE.

Los modos principales son:

  • INPUT: El archivo se abre en modo de solo lectura. El archivo debe existir en el disco, de lo contrario el programa fallará.
  • OUTPUT: El archivo se abre en modo de escritura. Si el archivo ya existe, su contenido anterior se borra (sobrescritura). Si no existe, se crea.
  • EXTEND: El archivo se abre para añadir datos (append). Los nuevos registros se escribirán a partir del final del archivo existente.
  • I-O: El archivo se abre tanto en lectura como en escritura (utilizado principalmente para archivos de acceso relativo o indexado, no secuencial lineal).

2. Lectura de datos: instrucción READ

Para leer un registro de un archivo secuencial, usamos la instrucción READ. Como no sabemos de antemano cuántos registros contiene el archivo, siempre se debe gestionar la condición de fin de archivo (EOF - End Of File) usando la cláusula AT END:

Code
       READ SALES-FILE
           AT END MOVE "Y" TO WS-EOF
       END-READ.
  • READ SALES-FILE: Nota que la instrucción hace referencia al nombre lógico del archivo (definido en SELECT y FD), no al registro.
  • AT END: Especifica las instrucciones a ejecutar cuando se intenta leer más allá del último registro disponible. Comúnmente se establece una variable flag (como WS-EOF) en "Y".
  • END-READ: Termina de forma explícita la instrucción de lectura.

3. Escritura de datos: instrucción WRITE

Para insertar datos en un archivo, usamos la instrucción WRITE.

[!WARNING] En COBOL se lee un archivo (READ SALES-FILE), pero se escribe un registro (WRITE SALES-RECORD). Escribir WRITE SALES-FILE es un error sintáctico común que impide la compilación.

Code
       MOVE 1001 TO EMP-ID.
       MOVE "MARIO ROSSI" TO EMP-NAME.
       WRITE SALES-RECORD.

Antes de ejecutar la instrucción WRITE, los campos subordinados de la estructura de grupo del registro FD (en este caso SALES-RECORD) deben tener asignados los valores correspondientes en memoria.


4. Cierre de archivos: instrucción CLOSE

Al finalizar los procesos, cada archivo abierto debe cerrarse obligatoriamente para liberar los recursos del sistema y asegurar que todos los datos se escriban realmente en el disco:

Code
       CLOSE SALES-FILE.

Nota que la instrucción CLOSE toma como argumento el nombre lógico del archivo (y no el registro).


Pruébalo tú mismo

Ejercicio#cobol.m5.l2.e1
Intentos: 0Cargando...

Completa la PROCEDURE DIVISION abriendo el archivo SALES-FILE en modo INPUT, leyendo el primer registro y estableciendo la variable de control WS-EOF en 'Y' al alcanzar el fin del archivo. Finalmente, recuerda cerrar el archivo antes de terminar.

Cargando editor...
Mostrar pista

Escribe en orden: OPEN INPUT SALES-FILE. luego READ SALES-FILE AT END MOVE 'Y' TO WS-EOF END-READ. luego CLOSE SALES-FILE. y finalmente STOP RUN.

Solución disponible después de 3 intentos

Ejercicio#cobol.m5.l2.e2
Intentos: 0Cargando...

Completa la PROCEDURE DIVISION abriendo el archivo SALES-FILE en modo OUTPUT. Mueve el valor 1001 al campo SALES-ID y 250.50 al campo SALES-AMOUNT, luego escribe el registro SALES-RECORD en el archivo. Finalmente, cierra el archivo antes de detener el programa.

Cargando editor...
Mostrar pista

Apri el file con OPEN OUTPUT SALES-FILE., usa MOVE per valorizzare SALES-ID e SALES-AMOUNT, esegui WRITE SALES-RECORD. (scrivendo il record, non il file!), chiudi con CLOSE SALES-FILE. e termina con STOP RUN.

Solución disponible después de 3 intentos