Ver Mensaje Individual
  #7
Antiguo 3 de febrero de 2022, 19:48
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 02.10.2026 11:51
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

Citación del post de DestinedBroken Ver Mensaje
❞
Lo siguiente es que me baneen
Banearte por eso no pero, que el que ha hecho el curso, se merece una buena mano de bofetadas....

A ver, el END-READ, has de ponerlo, no para que termine de leer, si no, para indicarle que termine de hacer cosas, es como el END-IF, (o el punto en su caso), si no lo pones, el compilador puede presuponer que no se han terminado de hacer cosas y añadirlas en AT END, por ejemplo,

No es lo mismo

Código COBOL:
  1. READ fichero
  2.            NEXT RECORD
  3.                       AT END
  4.                             MOVE 0 TO FIN-FICHERO
  5.                       NOT AT END
  6.                                PERFORM MOSTRAR
  7. ADD 20 TO CONTADOR
  8. PERFORM COMPROBAR

que

Código COBOL:
  1. READ fichero
  2.            NEXT RECORD
  3.                       AT END
  4.                             MOVE 0 TO FIN-FICHERO
  5.                       NOT AT END
  6.                                PERFORM MOSTRAR
  7. END-READ
  8. ADD 20 TO CONTADOR
  9. PERFORM COMPROBAR

o el equivalente sin el END-READ, pero con sus correspondientes puntos (.) de fin de sentencia

Código COBOL:
  1. READ fichero
  2.            NEXT RECORD
  3.                       AT END
  4.                             MOVE 0 TO FIN-FICHERO
  5.                       NOT AT END
  6.                                PERFORM MOSTRAR.
  7. ADD 20 TO CONTADOR.
  8. PERFORM COMPROBAR.

En el primer caso, suma 20 a CONTADOR y va al párrafo COMPROBAR, mientras haya registros en el fichero, puesto que no encuentra nada que le diga que ha terminado el bloque de instrucciones en el READ, y en el segundo caso, sólo lo hace cuando haya termina de leer el fichero.

Los puntos y las sentencias END-...., no son obligatorias, pero si son muy esclarecedoras, para los que nos enseñamos COBOL, con la versión del 74, el poder usar un simple END-IF, END-READ o END-algo, fue uno de los mayores hitos en la programación con este lenguaje, si te descargas el manual que hice sobre POWER-COBOL, verás que, en todos los ejemplos que hay, y hay un buen montón, uso siempre las sentencias END, los puntos de fin de instrucción y la INDETANCIÓN, es algo a lo que me he acostumbrado y, ya no sé hacerlo de otra forma.

Un salu2.-
Josber is offline   Responder Con Cita