Otros temas que te pueden interesar
|
||||
| Tema | Autor | Foro | Respuestas | Último post |
| [Duda] ThruEvents pone el puntero por defecto | Kuk | PowerCOBOL (ActiveX, v4 - v11) | 7 | 19 de mayo de 2017 13:57 |
![]() |
|
Forero Junior
![]()
|
Hola gente,
Tengo el siguiente código con el que uno se da cuenta que si el usuario introduce por consola "S" o "s" el programa debe devolver una frase por consola. Sin embargo, a mí siempre me termina el programa, meta lo que meta (S, n, números, etc). ¿Qué es lo que está fallando? Código COBOL:
He intentado poner todo en mayúsculas, por tonterías que uno prueba vaya, y ni aún así. Igualmente, cambié el perform de PROGRAMA dentro de las cláusulas if-else por un go to pero nada de nada. |
||||||||
|
|
|
|
Administrador
![]()
|
@DestinedBroken, tienes que usar los END-IF etc. (terminadores explícitos) y NO USAR los puntos.
Es la "enfermedad" de Cobol que se solucionó en el año 74. A ti lo que te pasa es que el segundo IF está dentro del primero. Así que si le dices "N" se va al FINALIZA-PROGRAMA, y si le das a cualquier otra cosa, simplemente no entra en inguno de los IF y pasa al FINALIZA-PROGRAMA. ---------- Post añadido el 3 de noviembre de 2021 a las 14:09 ---------- Usa Ctrl+SPACE de Eclipse para autocompletado de código, te pondrá los terminadores automáticamente. ![]() ---------- Post añadido el 3 de noviembre de 2021 a las 14:10 ---------- Y no uses los GO TO. Solo usa PERFORM. NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
Hostias es verdad, se me habían olvidado. Me estoy dando cuenta de las grandes diferencias de autocompletado que ofrecen los IDE de OpenCobol y VCobol entre sí y los fallos que me estoy comiendo por venir de uno y llegar a otro
¿Los puntos no son obligatorios, como los punto y coma en el resto de lenguajes? ¿o sólo te refieres a no ponernos dentro de las cláusulas if-else? Esto es algo que no termino nunca de entender del todo. Los puntos hay que colocarnos al final de una línea de código, pero cuando llega la hora de hacer unos if-else como los ponga empiezan a salirme fallos. Solamente tras la última instrucción no me sale error (en el código de arriba, sería tras la sentencia final dentro del ELSE).
Siempre leo lo mismo pero no termino de verle el por qué más allá de que al empezar el salto sigue hacia abajo sin volver desde donde se le llamó (hablo del GO TO obviamente). ![]() |
|||||||||
|
|
|
|
Moderador Global
![]()
|
No te preocupes, yo, cuando pasé del COBOL-74 al COBOL-85, todo eran errores.
Los puntos, y eso no ha cambiado, son obligatorios, en COBOL-74, para terminar sentencias condicionales (IF), sentencias de flujo (PERFOR, GO TO ...), sentencias imperativas, (AT END, INVALID KEY ...), en el COBOL-85, con la introducción de las sentencias END-xxxxx, la obligatoriedad del punto, (.), decayó bastante, aunque si se usan, ofrecen una comprensión más clara del código un salu2.- |
||||||||
|
|
|
|
Administrador
![]()
|
en PROCEDURE DIVISION el único punto obligatorio es el del final del párrafo (termina el párrafo). Ponlo en una línea separada al final. No pongan ningún otro punto en esta parte del programa.
La vuelta asegura la jerarquía anti-espagueti. Con los GO TO puedes ir a cualquier lado, y eso es más espagueti que los espagueti. ![]() ---------- Post añadido el 3 de noviembre de 2021 a las 19:55 ---------- En esto no estoy de acuerdo contigo compañero Para mi que al revés.NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
![]() entendido, gracias! |
|||||||||
|
|
|
|
Administrador
![]()
|
@DestinedBroken, lo primero es mejor que no pegues imágenes, sino código (texto) envuelto en el bloque de resalto de sintaxis (los botoncitos con nombres de lenguajes) así te podemos copiarlo y corregirlo.
Se necesita un punto despues de PROCEDURE DIVISION. Y luego al final de cada párrafo. O sea dentro de un párrafo un solo punto al final del mismo ![]() NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
|
Forero Junior
![]()
|
Perdona @Kuk, no pensé en poner el código.
Cuando dices párrafos, ¿estamos hablando de las rutinas? Si es así debería funcionarme como te pongo a continuación (pero sigue dando errores). Sé que esto es sintaxis básicas, pero vengo de que me den caña poniendo puntos detrás de cada línea ![]() Mira, el código es el del otro hilo, básicamente lo he cogido para esto de los puntos (por si te suena): Código COBOL:
|
||||||||
|
|
|
|
Administrador
![]()
|
@DestinedBroken, ya no hay errores. Fíjate en los puntos:
Código COBOL:
NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro. ![]() ¿Te han ayudado? NO TE OLVIDES de darle a ![]() ¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick |
||||||||
|
|
|
![]() |
|
|
| Archivo - Cobol Foro | Contactar con Nosotros - Cobol Foro | |||||||