Citación del post de
DestinedBroken
|
❞
hay 2 en concreto que no muestra, "se los salta" por así decirlo
|
A ver Destined, esos que se "salta", creo que no es que se los salte, si no que la condición que le has puesto al contador con MAXIMO-REGISTROS = 5, (en la línea tuya número 41), creo que debe de ser 4 en vez de 5, ya que no te cogen 5 registros en pantalla, las pantallas en modo texto, como máximo admiten 24 líneas x 80 columnas, (25 x 132 en algunas tty's especiales), y tú muestras 5 registros a 6 líneas por registro, son 30 líneas, te sobran 6.
He copiado tu código lo he modificado un poco, y sin modificarlo, funciona correctamente, yo lo he modificado para esclarecerlo un poco, poner (puntos, ect) a mi me ha quedado así y funciona perfectamente
Código COBOL:
identification division.
program-id. BB-DD-2.
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.
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 FIN-DEL-ARCHIVO PIC X value "1".
01 MAXIMO-REGISTROS PIC 99 value zeroes.
01 siguiente PIC X.
procedure division.
empieza-programa.
move zeroes to MAXIMO-REGISTROS.
open input empleados-archivo.
* perform lee-siguiente-registro
* perform muestra-campos
perform lee-siguiente-registro
until fin-del-archivo = "0".
close empleados-archivo.
stop run.
muestra-campos.
if MAXIMO-REGISTROS = 4
perform siguiente-pagina
end-if.
display "ID:" empleados-id
display "Nombre:" empleados-nombre
display "Apellidos:" empleados-apellidos
display "Edad:" empleados-edad
display "Telefono:" empleados-telefono
display "Direccion:" empleados-direccion.
ADD 1 TO MAXIMO-REGISTROS.
lee-siguiente-registro.
read empleados-archivo next record
at end
move "0" to FIN-DEL-ARCHIVO
display "*****FIN DEL FICHERO******"
not at end
perform muestra-campos
end-read.
siguiente-pagina.
display
"Presiona ENTER para ver la siguiente pagina...".
accept siguiente no beep.
move zeroes to MAXIMO-REGISTROS.
*
end program BB-DD-2.
Te he "anulado", esa doble lectura que haces al principio del programa, primero lees un registro y luego creas un bucle para leer desde el segundo hasta el último, no entiendo por qué lo haces así, pero desde luego, no es lo correcto. La anulación ha sido "comentando" la línea, no sé si te habrán explicado para qué sirve la columna 7 pero, entre otras muchas cosas, cuando pones un asterisco en esa columna, esa línea pasa a ser ignorada por el compilador, es lo que se llama comentar una línea.
El "
no beep", que he puesto al final del
ACCEPT, es para que no pite cada vez que pida pulsar la tecla
Dime si hay algo que no entiendas o no tengas claro.
Un salu2.-