DestinedBroken
30 de noviembre de 2021, 17:28
Hola comunidad,
Estoy empezando a trabajar con bases de datos en Cobol y este es mi primer ejercicio. Es muy sencillo. Solamente se le pide al usuario que rellene una serie de campos para introducir una persona con sus atributos en un registro de la base. Lo extraño del código es que funcionar, funciona todo bien. Me introduce correctamente todo, pero al final, cuando le digo que no quiero seguir con el programa, es cuando me tira el error:
https://i.ibb.co/R9h3f8N/image.png
El código:
program-id. create-files as "primero bases de datos".
environment division.
configuration section.
input-output section.
file-control.
select optional empleados-archivo
assign to "f:\empleados.dat"
organization is line sequential.
data division.
file section.
fd empleados-archivo.
*label etiqueta-antigua-para-cintas.
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 numero de telefono:".
01 direccion pic x(25) value "Introduce una direccion:".
01 si-no pic x.
01 entrada pic x.
procedure division.
program-begin.
perform procedimiento-de-apertura
move "s" to si-no
perform agregar-registros
until si-no = "n"
perform procedimiento-de-cierre
.
procedimiento-de-apertura.
open extend empleados-archivo
.
procedimiento-de-cierre.
close empleados-archivo
.
agregar-registros.
move "n" to si-no
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
end-if
.
escribir-registro.
write empleados-registro
.
reiniciar.
display "Almacenar otro registro en la base de datos (s/n)??"
accept si-no
if si-no = "s"
move "s" to si-no
end-if
if si-no not = "s"
move "n" to si-no
end-if
.
end program create-files.
Estoy empezando a trabajar con bases de datos en Cobol y este es mi primer ejercicio. Es muy sencillo. Solamente se le pide al usuario que rellene una serie de campos para introducir una persona con sus atributos en un registro de la base. Lo extraño del código es que funcionar, funciona todo bien. Me introduce correctamente todo, pero al final, cuando le digo que no quiero seguir con el programa, es cuando me tira el error:
https://i.ibb.co/R9h3f8N/image.png
El código:
program-id. create-files as "primero bases de datos".
environment division.
configuration section.
input-output section.
file-control.
select optional empleados-archivo
assign to "f:\empleados.dat"
organization is line sequential.
data division.
file section.
fd empleados-archivo.
*label etiqueta-antigua-para-cintas.
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 numero de telefono:".
01 direccion pic x(25) value "Introduce una direccion:".
01 si-no pic x.
01 entrada pic x.
procedure division.
program-begin.
perform procedimiento-de-apertura
move "s" to si-no
perform agregar-registros
until si-no = "n"
perform procedimiento-de-cierre
.
procedimiento-de-apertura.
open extend empleados-archivo
.
procedimiento-de-cierre.
close empleados-archivo
.
agregar-registros.
move "n" to si-no
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
end-if
.
escribir-registro.
write empleados-registro
.
reiniciar.
display "Almacenar otro registro en la base de datos (s/n)??"
accept si-no
if si-no = "s"
move "s" to si-no
end-if
if si-no not = "s"
move "n" to si-no
end-if
.
end program create-files.