Funcionamiento del programa de archivo - Bases de datos 3 - Capítulo 25

Curso de COBOL desde cero


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 AGREAGAR-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.


Suscríbete a mi canal de YouTube para apoyarme

Si te ha gustado este curso y crees que el trabajo merece la pena, te agradeceré eternamente que te suscribas a mi canal de YouTube para apoyarme y que pueda seguir haciendo cursos gratuitos.

Además, si te encanta la programación, tienes un montón más de cursos gratuitos para ver.

No solo eso, podrás participar enviándome comentarios con tus sugerencias para temas específicos o cursos completos o incluso las dudas que tengas y las intentaré ir resolviendo en los cursos que estén todavía abiertos.


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.