Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol GnuCOBOL (OpenCOBOL) IDE-s para GnuCOBOL
IDE-s para GnuCOBOL IDE-s compatibles con GnuCOBOL
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] CALL en OPENCOBOLIDE 4.7.6 da error (no encuentra) etilico2022 IDE-s para GnuCOBOL 17 31 de julio de 2023 20:53
[Compilador] Imprimir desde el OpenCobolIde Michel GnuCOBOL (OpenCOBOL) 8 30 de septiembre de 2021 18:28
[Duda] OpenCobolIDE 4.7.6 ALJ GnuCOBOL (OpenCOBOL) 1 2 de abril de 2020 09:10

Respuesta

  #1
Antiguo 3 de agosto de 2022, 20:02
Paco_Diaz
Forero
Última Actividad 09.11.2024 09:15
Posts Posts: 56
Likes enviados Enviados: 11
Likes recibidos Recibidos: 14
Predeterminado OpenCobolIde Error alucinante
0 Inactivo Inactivo

Hola.

Estoy haciendo como repaso un programin que deberia funcionar a la primera por su simpleza, pero estoy atascado en un error al que le he dado unas pocas de vueltas y aun no he podido solucionar.

El programa detecta si un numero de 3 cifras nada mas, es capicua. Lo mas facil que se me ha ocurrido es comprobar si el primer digito es un 0, y si lo es, se termina, si no es 0, comparo el primero con el tercero, si son iguales, visualiza que si, y si no, visualiza que no. Como podeis ver, una chorrada.

El codigo es este:
Código COBOL:
  1.        IDENTIFICATION DIVISION.
  2.  
  3.        PROGRAM-ID. capicua.
  4.  
  5.        ENVIRONMENT DIVISION.
  6.  
  7.        CONFIGURATION SECTION.
  8.  
  9.        INPUT-OUTPUT SECTION.
  10.  
  11.        DATA DIVISION.
  12.  
  13.        FILE SECTION.
  14.  
  15.        WORKING-STORAGE SECTION.
  16.        77  sw PICTURE 9 VALUE 0.
  17.        01  capicua.
  18.            03 primero PICTURE 9 VALUE 0.  
  19.            03 segundo PICTURE 9 VALUE 0.
  20.            03 tercero PICTURE 9 VALUE 0.
  21.        01  numero.
  22.            03 digito1 PICTURE 9 VALUE 0.
  23.            03 digito2 PICTURE 9 VALUE 0.
  24.            03 digito3 PICTURE 9 VALUE 0.
  25.  
  26.        PROCEDURE DIVISION.
  27.  
  28.        MAIN-PROCEDURE.
  29.             DISPLAY "Introduzca un numero de 3 cifras: "
  30.             ACCEPT primero
  31.             ACCEPT segundo
  32.             ACCEPT tercero
  33.  
  34.             MOVE capicua TO numero
  35.             MOVE primero to digito1
  36.             MOVE segundo to digito2
  37.             MOVE tercero to digito3
  38.  
  39.             IF digito1 EQUAL 0
  40.                 sw = 1
  41.                 IF sw = 1
  42.                     DISPLAY "El numero no tiene 3 cifras"
  43.                 ELSE
  44.                     IF digito1 NOT EQUAL digito3
  45.                         DISPLAY "NO es un numero capicua"
  46.                     ELSE
  47.                         DISPLAY "SI es un numero capicua"
  48.             .
  49.             STOP RUN.
  50.  
  51.        END PROGRAM capicua.

La variable numero, la he creado por si no podia hacer un IF directamente sobre la variable del ACCEPT.

El error lo da en la linea: "IF digito1 EQUAL 0", como "Invalid expression", o sea, increible. Tambien lo he puesto con "=", y tampoco.

A ver si alguien puede echarme una mano.

Muchas gracias. Un saludo.

Última edición por Josber fecha: 3 de agosto de 2022 a las 21:40.
Paco_Diaz is offline   Responder Con Cita
  #2
Antiguo 3 de agosto de 2022, 21: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 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

A ver, el fallo lo tienes en

Código COBOL:
  1. sw = 1

en COBOL, no existe esa forma, para darle valor a una variable, ha de hacerse con la instrucción MOVE,

Código COBOL:
  1. MOVE 1 TO SW

o, como es una variable numérica, también valdría

Código COBOL:
  1. COMPUTE SW = 1

Otra cosa, ya que en COBOL, se escribe muchíiiiiiisimo, puedes cambiar la instrucción PICTURE, (que no usa nadie), por su abreviatura PIC

Estos es idéntico

Código COBOL:
  1. 01  sw   PICTURE 9 VALUE 0.
  2.  
  3. 01  sw   PIC 9 VALUE 0.


Pruébalo y dinos algo.

Por cierto, todo lo que sea código COBOL, tienes un botón que pone CBL, que es para resaltar la sintaxis de ese lenguaje, (hay un botón para cada uno de los lenguajes más usados), úsalo la próxima vez, por favor.

Un salu2.-
Josber is offline   Responder Con Cita
  #3
Antiguo 4 de agosto de 2022, 13:08
Paco_Diaz
Forero
Última Actividad 09.11.2024 09:15
Posts Posts: 56
Likes enviados Enviados: 11
Likes recibidos Recibidos: 14

Muchas gracias Josber, funciono a la primera. Creo que arrastre los habitos de la programación en clipper, que es ultimo lenguaje con el que he estado "reviviendo" la programacion, y por eso lo habre escrito asi.

La segunda parte del mensaje, no la he entendido. Ya tengo la sintaxis resaltada en OpenCobolIDE, hice un copia/pega del codigo. Lo del boton "cbl" tampoco lo he entendido.

Muchas gracias. Un saludo.
Paco_Diaz is offline   Responder Con Cita
  #4
Antiguo 4 de agosto de 2022, 13:56
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 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

De nada @Paco_Diaz, lo de resaltar CBL, es que, cuando escribas código COBOL, seleccionas todo el código y, una vez seleccionado, pulsas en el "botón" que hay en azul claro casi al final de la línea desde la que puedes resaltar en negrita, cursiva, subrayado, etc, el que hay justo después de una silueta con un símbolo de @, que encima en pequeño, pone CBL, eso hace que imite a un editor de texto específico para COBOL y sea más fácil de leer por los usuarios.

Un salu2.-
Josber is offline   Responder Con Cita
Respuesta


Herramientas

Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:41.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.