@Fito, Esta es una de las cosas que me he dado cuenta. Gracias compañero.
@Kuk, Paso a poner mi código mejorado. He quitado muchas cosas que no tenían sentido. Como rutinas de solo una línea de código. El trozo de código del if-else también lo he cambiado. Creo que ahora está mejor.
El problema está resuelto, pero no funciona cuando quiero meter más personas en la base de datos. Me explico:
Código COBOL:
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_escritura.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.
open extend empleados-archivo
* move "s" to si-no
perform agregar-registros until si-no = "n"
close empleados-archivo
stop run
.
agregar-registros.
* move "n" to si-no
perform obtener-campos until entrada = "s"
write empleados-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
display
"ERROR: No ha introducido un nombre para el empleado,"
- "vuelva a intentarlo"
move "n" to entrada
end-if
.
reiniciar.
display "Almacenar otro registro en la base de datos (s/n)??"
accept si-no
if si-no = "s"
move "s" to si-no
else
move "n" to si-no
end-if
.
end program create-files.