Explicando como funcionan los archivos de COBOL
Capítulo 25: Funcionamiento del programa de archivo
En este capítulo explico el funcionamiento de todo el código del programa.
Aquí lo tienes:
IDENTIFICATION DIVISION.
PROGRAM-ID. CREATE-FILES.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT OPTIONAL EMPLEADOS-ARCHIVO
ASSIGN TO "g:/cobol/empleados.dat"
ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD EMPLEADOS-ARCHIVO.
01 EMPLEADOS-REGISTRO.
05 EMPLEADOS-ID PIC X(6).
05 EMPLEADOS-NOMBRE PIC X(25).
05 EMPLEADOS-APELLIDOS PIC X(35).
05 EMPLEADOS-EDAD PIC X(3).
05 EMPLEADOS-TELEFONO PIC X(9).
05 EMPLEADOS-DIRECCION PIC X(35).
WORKING-STORAGE SECTION.
01 IDENTIFICADOR PIC X(36)
VALUE "Introduce un ID del nuevo empleado: ".
01 NOMBRE PIC X(33)
VALUE "Introduce un nombre de empleado: ".
01 APELLIDOS PIC X(25)
VALUE "Introduce los apellidos: ".
01 EDAD PIC X(19)
VALUE "Introduce la edad: ".
01 TELEFONO PIC X(33)
VALUE "Introduce un número de teléfono: ".
01 DIRECCION PIC X(25)
VALUE "Introduce una dirección: ".
01 SI-NO PIC X.
01 ENTRADA PIC X.
PROCEDURE DIVISION.
MAIN-LOGIC SECTION.
PROGRAM-BEGIN.
PERFORM PROCEDIMIENTO-DE-APERTURA.
MOVE "S" TO SI-NO.
PERFORM AGREGAR-REGISTROS
UNTIL SI-NO = "N".
PERFORM PROCEDIMIENTO-DE-CIERRE.
PROGRAM-DONE.
STOP RUN.
PROCEDIMIENTO-DE-APERTURA.
OPEN EXTEND EMPLEADOS-ARCHIVO.
PROCEDIMIENTO-DE-CIERRE.
CLOSE EMPLEADOS-ARCHIVO.
AGREGAR-REGISTROS.
MOVE "N" TO ENTRADA.
PERFORM OBTENER-CAMPOS
UNTIL ENTRADA = "S".
PERFORM ESCRIBIR-REGISTRO.
PERFORM REINICIAR.
OBTENER-CAMPOS.
MOVE SPACE TO EMPLEADOS-REGISTRO.
DISPLAY IDENTIFICADOR " ? ".
ACCEPT EMPLEADOS-ID.
DISPLAY NOMBRE " ? ".
ACCEPT EMPLEADOS-NOMBRE.
DISPLAY APELLIDOS " ? ".
ACCEPT EMPLEADOS-APELLIDOS.
DISPLAY EDAD " ? ".
ACCEPT EMPLEADOS-EDAD.
DISPLAY TELEFONO "?".
ACCEPT EMPLEADOS-TELEFONO
DISPLAY DIRECCION.
ACCEPT EMPLEADOS-DIRECCION.
PERFORM CONTINUAR.
CONTINUAR.
MOVE "S" TO ENTRADA.
IF EMPLEADOS-NOMBRE = SPACE
MOVE "N" TO ENTRADA.
ESCRIBIR-REGISTRO.
WRITE EMPLEADOS-REGISTRO.
REINICIAR.
DISPLAY "¿Desea almacenar otro registro en la base de datos?".
ACCEPT SI-NO.
IF SI-NO = "s"
MOVE "S" TO SI-NO.
IF SI-NO NOT = "S"
MOVE "N" TO SI-NO.
END PROGRAM CREATE-FILES.
Veamos un poco como funciona. Puedes verlo en detalle y en ejecución en el vídeo de arriba.
Empecemos con la sección FILE CONTROL
. En ella, ya he explicado, que se vincula con un SELECT
el archivo lógico, en este caso EMPLEADOS-ARCHIVO
.
Estos datos lógicos son almacenados en un archivo físico gracias al ASSIGN
. Si ejecutamos el programa, si el archivo no está creado, lo crea.
Pasemos a la DATA DIVISION
.
En la FILE SECTION
se escribe el archivo lógico con su registro y este con sus campos.
Hasta aquí, seguramente, ya más o menos lo sabías por los capítulos anteriores.
En la WORKING-STORAGE SECTION
añadimos las variables que harán funcionar este programa.
SI-NO
y ENTRADA
son las variables que almacenan el caracter s
o n
para decidir si añadimos otro registro más o no.
No voy explicar el funcionamiento de cada PERFORM
, porque con lo que ya sabes puedes revisarlo con calma y saber lo que hace cada uno.
Además, cómo práctica, podrías intentar cambiar a algo más simple el mecanismo de introducir una s
o una n
para continuar. Creo que en algún capítulo anterior vimos otra forma más sencilla de hacerlo.
Si decidimos agregar un registro, pasamos al procedimiento AGREGAR-REGISTROS
el cual se encarga de hacer eso mismo.
A partir de aquí irá preguntando en consola los diferentes datos, NOMBRE
, APELLIDOS
, etc.
Después de obtener todos los campos el programa nos va a preguntar si queremos añadir otro registro más o no. Esto se decide en el procedimiento CONTINUAR
.
Independientemente de si la respuesta es S
o N
, va a escribir los cambios en el registro con el WRITE
.
Comentarios
Si te quedan dudas sobre el temario, sobre COBOL, o cualquier otra cosa relacionada o simplemente quieres agradecer, aquí tienes tu sitio para dejar tu granito de arena. Gracias por tus comentarios y por darle vida a este sitio web.