Resultados 1 al 9 de 9

Tema: No se muestra lo que pone el código.

  1. #1
      Acabo de llegar...
    Avatar de DestinedBroken

    Registrado
    octubre de 2021
    Mensajes
    28
    Última visita
    16.02.2022

    Agradecimientos
     
    Recibidos
    4
    Enviados
    16

    Citaciones y menciones
     
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado No se muestra lo que pone el código.

    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?

    COBOL Código:
    1.  IDENTIFICATION DIVISION.
    2.        PROGRAM-ID. CAPITULO11.
    3.      *GO TO salta a donde se le manda, y continua hasta el final
    4.      *PERFORM luego de hacer lo que sea, vuelve a donde estaba
    5.        DATA DIVISION.
    6.  
    7.        WORKING-STORAGE SECTION.
    8.        01 RES pic x.
    9.        PROCEDURE DIVISION.
    10.  
    11.        PREGUNTA.
    12.  
    13.            PERFORM CONTINUACION
    14.            .
    15.  
    16.            IF RES = "N" OR RES = "n"
    17.                GO TO FINALIZA-PROGRAMA
    18.            IF RES = "S" OR RES = "s"
    19.                perform PROGRAMA
    20.            ELSE
    21.                DISPLAY " Introduce una 'N' o 'S'"
    22.            .
    23.  
    24.        FINALIZA-PROGRAMA.
    25.            STOP RUN
    26.            .
    27.  
    28.        CONTINUACION.
    29.            DISPLAY "Ejecutar el programa (S/N)?"
    30.            .
    31.            ACCEPT res
    32.            .
    33.        PROGRAMA.
    34.            DISPLAY "Se ejecuta el programa"
    35.            .
    36.        END PROGRAM CAPITULO11.

    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.

    0 Not allowed!

  2. #2
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,286
    Última visita
    Hoy a las 18:48

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    102 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado
    ¡Solución!1 usuarios han marcado el post como Solución

    @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.

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  3. #3
      Acabo de llegar...
    Avatar de DestinedBroken

    Registrado
    octubre de 2021
    Mensajes
    28
    Última visita
    16.02.2022

    Agradecimientos
     
    Recibidos
    4
    Enviados
    16

    Citaciones y menciones
     
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Cita Iniciado por Kuk Ver Mensaje
    tienes que usar los END-IF
    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

    Cita Iniciado por Kuk Ver Mensaje
    y NO USAR los puntos.
    ¿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).


    Cita Iniciado por Kuk Ver Mensaje
    Usa Ctrl+SPACE de Eclipse para autocompletado de código, te pondrá los terminadores automáticamente.
    yeh



    Cita Iniciado por Kuk Ver Mensaje
    Y no uses los GO TO. Solo usa PERFORM.
    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).

    0 Not allowed!

  4. #4
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Ubicación
    Alicante
    Mensajes
    796
    Última visita
    Hoy a las 12:00

    Agradecimientos
     
    Recibidos
    440
    Enviados
    362

    Citaciones y menciones
     
    Mentioned
    77 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    13 Post(s)
    Poder de Reputación
    37
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    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.-

    0 Not allowed!

  5. #5
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,286
    Última visita
    Hoy a las 18:48

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    102 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado

    Cita Iniciado por DestinedBroken Ver Mensaje
    ¿Los puntos no son obligatorios,
    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.

    Cita Iniciado por DestinedBroken Ver Mensaje
    no termino de verle el por qué más allá
    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 ----------

    Cita Iniciado por Josber Ver Mensaje
    ofrecen una comprensión más clara del código
    En esto no estoy de acuerdo contigo compañero Para mi que al revés.

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  6. #6
      Acabo de llegar...
    Avatar de DestinedBroken

    Registrado
    octubre de 2021
    Mensajes
    28
    Última visita
    16.02.2022

    Agradecimientos
     
    Recibidos
    4
    Enviados
    16

    Citaciones y menciones
     
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Cita Iniciado por Kuk Ver Mensaje
    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.
    ¿Un solo punto? A mí me da fallos por todos lados...




    Cita Iniciado por Kuk Ver Mensaje
    y eso es más espagueti que los espagueti
    entendido, gracias!

    0 Not allowed!

  7. #7
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,286
    Última visita
    Hoy a las 18:48

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    102 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado

    @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

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

  8. #8
      Acabo de llegar...
    Avatar de DestinedBroken

    Registrado
    octubre de 2021
    Mensajes
    28
    Última visita
    16.02.2022

    Agradecimientos
     
    Recibidos
    4
    Enviados
    16

    Citaciones y menciones
     
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    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):

    COBOL Código:
    1. IDENTIFICATION DIVISION.
    2.        PROGRAM-ID. CAPITULO11.
    3.      *GO TO salta a donde se le manda, y continua hasta el final
    4.      *no recomendado -> codigo spaghetti!
    5.      *PERFORM luego de hacer lo que sea, vuelve a donde estaba
    6.      *usarlo en vez de GO TO!
    7.        DATA DIVISION.
    8.  
    9.        WORKING-STORAGE SECTION.
    10.        01 RES pic x.
    11.        PROCEDURE DIVISION.
    12.  
    13.        PREGUNTA.
    14.  
    15.            PERFORM CONTINUACION.
    16.            
    17.  
    18.            IF RES = "N" OR RES = "n"
    19.                perform FINALIZA-PROGRAMA.
    20.            end-if
    21.            IF RES = "S" OR RES = "s"
    22.                perform PROGRAMA.
    23.            ELSE
    24.                DISPLAY " Introduce una 'N' o 'S'"
    25.            
    26.            
    27.        FINALIZA-PROGRAMA.
    28.            STOP RUN
    29.            
    30.  
    31.        CONTINUACION.
    32.            DISPLAY "Ejecutar el programa (S/N)?"
    33.            
    34.            ACCEPT res
    35.            
    36.        PROGRAMA.
    37.            DISPLAY "Se ejecuta el programa"
    38.            
    39.            
    40.            
    41.        END PROGRAM CAPITULO11.

    0 Not allowed!

  9. #9
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,286
    Última visita
    Hoy a las 18:48

    Agradecimientos
     
    Recibidos
    1,036
    Enviados
    888

    Citaciones y menciones
     
    Mentioned
    102 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    31 Post(s)
    Poder de Reputación
    10

    Predeterminado
    ¡Solución!1 usuarios han marcado el post como Solución

    @DestinedBroken, ya no hay errores. Fíjate en los puntos:

    COBOL Código:
    1.        IDENTIFICATION DIVISION.
    2.        PROGRAM-ID. CAPITULO11.
    3.      *GO TO salta a donde se le manda, y continua hasta el final
    4.      *no recomendado -> codigo spaghetti!
    5.      *PERFORM luego de hacer lo que sea, vuelve a donde estaba
    6.      *usarlo en vez de GO TO!
    7.        DATA DIVISION.
    8.  
    9.        WORKING-STORAGE SECTION.
    10.        01 RES pic x.
    11.        
    12.            
    13.        PROCEDURE DIVISION.
    14.  
    15.        PREGUNTA.
    16.  
    17.            PERFORM CONTINUACION
    18.            
    19.  
    20.            IF RES = "N" OR RES = "n"
    21.                PERFORM FINALIZA-PROGRAMA
    22.            END-IF
    23.            
    24.            IF RES = "S" OR RES = "s"
    25.                PERFORM PROGRAMA
    26.                
    27.            ELSE
    28.                DISPLAY " Introduce una 'N' o 'S'"
    29.            END-IF
    30.            .
    31.            
    32.        FINALIZA-PROGRAMA.
    33.            STOP RUN
    34.            .
    35.            
    36.  
    37.        CONTINUACION.
    38.            DISPLAY "Ejecutar el programa (S/N)?"
    39.            
    40.            ACCEPT res
    41.            .
    42.            
    43.        PROGRAMA.
    44.            DISPLAY "Se ejecuta el programa"
    45.            .
    46.            
    47.        END PROGRAM CAPITULO11.

    0 Not allowed!
    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el botón en el editor y escribiendo su nick.

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Información] ThruEvents pone el puntero por defecto
    Por Kuk en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 7
    Último Mensaje: 19.05.2017, 13:57

Marcadores

Marcadores

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •