Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol GnuCOBOL (OpenCOBOL)
GnuCOBOL (OpenCOBOL) El compilador gratuito y Open Source cada vez más popular.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Duda] Diferencia resultados consulta en MariaDB y PWC9 Josber PowerCOBOL (ActiveX, v4 - v11) 27 2 de octubre de 2024 03:33
[Herramienta] Servidor no actualiza en su pantalla lo de client orlando PowerCOBOL (ActiveX, v4 - v11) 20 1 de febrero de 2021 20:29
[Componente] Conectar RM/Cobol con MySQL enchegar RM/COBOL 0 22 de abril de 2020 10:26
[Sintaxis] Error sintaxis ADODB Mariadb variables host dmosca PowerCOBOL (ActiveX, v4 - v11) 17 29 de julio de 2017 00:19
[Sintaxis] Conectar con MySQL via ADO dmosca PowerCOBOL (ActiveX, v4 - v11) 7 29 de junio de 2017 16:59

Respuesta
 
Herramientas

  #1
Antiguo 14 de diciembre de 2024, 23:38
nbiker
Forero Junior
Última Actividad 09.02.2025 15:31
Posts Posts: 5
Likes enviados Enviados: 6
Likes recibidos Recibidos: 1
Base de datos Aplicacion CURD conectar servidor de MariaDB
0 Inactivo Inactivo

Hola a todos, soy bastante nuevo por el foro.

He estado realizando diferentes programas para desoxidar mi COBOL, por ahora todo Bien. Uso gnu-Cobol, compilo el programa así:

Código:
$ cobc -v -debug -trace -x -free -L/usr/lib64 -lmariadb -o demo-sql demo-sql.cbl
En el siguiente nivel, he querido hacer la típica aplicación CURD guardando los datos en local. Todo OK,

Aquí vienen mis problemas, la misma programa lo he adaptado para conectarse a un MariaDB en un Red-hat 9, he hecho diferentes pruebas de conexión y todo correcto, desde C/C++/Rust/Python todos se conectan.

Os adjunto dos códigos, el primero sería una parte Cobol sencilla de solo conexión y que me responda con si ha realizado la conexión o no … Y a su vez así ha sido erróneo, que me dé tipo de error.

En el segundo código, sería la aplicación CURD que estoy realizando.

A ver si me podéis dar algún tipo de ayuda o pincelada por donde van los tiros.

La salida por pantalla del primer programa de conexión a MariaDB, me da esto:

Código Bash:
  1. [natxo@rh94 cobol]$ ./demo-sql
  2. Starting MySQL connection test...
  3. MySQL Client Version:
  4. Initial DB-HANDLE: 0x0000000000000000
  5. Status after init: 0004211024
  6. DB-HANDLE after init: 0x0000000000000000
  7. mysql_init failed - NULL handle returned
  8. $

Codigo 1: https://pastebin.com/ehwjpLyr
Codigo 2: https://pastebin.com/7CbBp5L3
nbiker is offline   Responder Con Cita
  #2
Antiguo 15 de diciembre de 2024, 10:56
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@nbiker, prueba así:

Código COBOL:
  1.        WORKING-STORAGE SECTION.
  2.        01  DB-HANDLE  PIC S9(9) COMP-5.
  3.  
  4.        PROCEDURE DIVISION.
  5.          
  6.            *> Intentar inicializar MySQL
  7.            CALL "mysql_init" RETURNING DB-HANDLE
  8.  
  9.            IF  DB-HANDLE = 0 *> entonces ERROR, no debe ser 0 (nulo)



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
Kuk is offline   Responder Con Cita
  #3
Antiguo 26 de diciembre de 2024, 19:09
nbiker
Forero Junior
Última Actividad 09.02.2025 15:31
Posts Posts: 5
Likes enviados Enviados: 6
Likes recibidos Recibidos: 1

Gracias @Kuk, disculpa la contestacion a tu ayuda, entre fiestas y he estado enfermo, hasta hoy no he podido hacer pruebas de tu propuesta.

He realizado el cambio en el codigo de cobol, y ahora me sale un error nuevo de compilacion que no tenia antes ... y esta vez no se por donde pillarlo.

Te adjunto error al compilar:

Código Bash:
  1. [nvarona@rh94 cobol]$ cobc -x -free -L/usr/lib64 -lmariadb -o demo-sql demo-sql.cbl
  2. /tmp/cob2842_0.c: En la función ‘CustomerMaria_’:
  3. /tmp/cob2842_0.c:138:19: aviso: la asignación a ‘int’ desde ‘unsigned char *’ crea un entero desde un puntero sin una conversión [-Wint-conversion]
  4.   138 |   (*(int *)(b_8)) = (cob_u8_ptr)NULL;
  5.       |                   ^
  6. [nvarona@rh94 cobol]$
nbiker is offline   Responder Con Cita
  #4
Antiguo 26 de diciembre de 2024, 22:20
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@nbiker, no te disculpes, las fiestas son la mejor causa que se me occurre para la ausencia de alguien. Lo menos bueno es que hayas estado pachucho, espero que nada grave

La verdad es que no he trabajado con GnuCOBOL, hace mucho tiempo trabajé con COBOL-IT que es un fork del anterior, comercializado por un grupo de franceses hace unos 15 años y posteriormente comprado por Micro Focus. Así que voy un poco a ciegas.
Por lo que entiendo, en GnuCOBOL hemos de respetar la tipología C, (y ahora que lo pienso es lógico, porque el código Cobol se convierte en código C y después se compila con un compilador C).
Prueba la misma llamada pero con el campo declarado como lo tenías antes, con tipo POINTER.
Es decir:
Código COBOL:
  1.            WORKING-STORAGE SECTION.
  2.            01  DB-HANDLE  POINTER.
  3.      
  4.            PROCEDURE DIVISION.
  5.              
  6.                *> Intentar inicializar MySQL
  7.                CALL "mysql_init" RETURNING DB-HANDLE
  8.      
  9.                IF  DB-HANDLE = 0 *> entonces ERROR, no debe ser 0 (nulo)



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
Kuk is offline   Responder Con Cita
  #5
Antiguo 27 de diciembre de 2024, 12:30
Joseg
El Foro es mi casa
Activista del Foro: Activista del Foro - Issue reason: Por participación activa Innovación: Por aportar innovaciones - Issue reason: Por aportar soluciones innovadoras en varias ocasiones 
Última Actividad 17.09.2026 18:23
Posts Posts: 401
Likes enviados Enviados: 130
Likes recibidos Recibidos: 179

La forma más fácil que encontré para acceder a Bases de Datos con GnuCobol es usando la siguiente biblioteca:
https://github.com/mridoni/gixsql

Si tiene dificultades para instalar, este IDE instala todo automáticamente y está listo para usar (también se ejecuta en Linux)
https://github.com/mridoni/gix.

José
Joseg is offline   Responder Con Cita
  #6
Antiguo 27 de diciembre de 2024, 20:33
nbiker
Forero Junior
Última Actividad 09.02.2025 15:31
Posts Posts: 5
Likes enviados Enviados: 6
Likes recibidos Recibidos: 1

Gracias @Joseg lo miro este proyecto y tu sugerencia. Al final estoy moviendo todo lo que había empezado en Red-hat a una Raspberry Pi CM4 que tengo, y estoy haciendo pruebas de nuevo, a ver como me va ... a nivel de crear programas de cobol, bien, funcionan, pero quería meterle base de datos ...
nbiker is offline   Responder Con Cita
  #7
Antiguo 28 de diciembre de 2024, 15:16
Gusaiello
Forero Activo
Concurso: Segundo puesto: Ganador/a del Segundo puesto en un concurso - Issue reason: Generador de código QR encriptado Activista del Foro: Activista del Foro - Issue reason: Por aportar ejecrcicios para los novatos 
Última Actividad 17.09.2026 14:29
Posts Posts: 236
Likes enviados Enviados: 150
Likes recibidos Recibidos: 139

Perdón @nbiker, que me meta con una pregunta que no tiene nada que ver, pero recuerdo que era como una encuesta de opinión que había puesto Andrés en su foro y nunca supe cual era el motivo.
Hay alguna ventaja que tengan las bases de datos sobre los archivos indexados?
Desde ya muchas gracias.
Gusaiello is offline   Responder Con Cita
  #8
Antiguo 28 de diciembre de 2024, 17:36
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

@Gusaiello, las ventajas de las BBDD son las siguientes:
  1. Facilidad de manejo: tratas con una capa de abstracción mediante el lenguaje SQL (una gran parte del cual es común para todas las BBDD relacionales). Y lo que dices es qué es lo que quieres y no cómo. Es el motor de la BBDD quién se ocupa de cómo hacerlo
  2. Reducción de líneas de código: puesto que dices qué es lo que quieres y no cómo obtenerlo, generalmente las líneas de código son inferiores en comparación con el tratamiento de ficheros. Sobre todo teniendo en cuenta las múltiples condiciones (filtros) que se le aplican a los datos. En SQL se pueden codificar cosas bastante complejas como un programa entero con bastantes menos líneas de código.
  3. Añadir o quitar columnas es dinámico, no necesitas reemplazar el fichero, tratar con FILLERs y demás historias, el motor lo hace por ti
  4. El motor crea unos metadatos que le sirven para mejorar el acceso y la recuperación de los datos, proporcionando (generalmente) el mejor rendimiento posible para cada filtro de condiciones
  5. Transaccionalidad - posibilidad de confirmar las modificaciones o anular todo el trabajo si algo falla por el medio, (concepto de Transacción = todo o nada).

Las desventajas son:
  1. Suelen ser de pago
  2. Instalación de componentes adicionales, su mantenimiento (el único motor portable que se me viene a la cabeza es SQLite, que no se usa con grandes cantidades de datos porque no rinde lo suficiente)
  3. Necesidad de adquirir al menos ciertos conocimientos de DBA (administración).
  4. Evidentemente una capa de abstracción (el motor) reduce el rendimiento, aunque hoy en día, con los avances del hardware y mejoras de algoritmos del motor, la verdad es que es irrelevante (salvo algunos casos Batch).

Posiblemente se me escapa algo, dejo a los compañeros completar la información.



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
Kuk is offline   Responder Con Cita
  #9
Antiguo 30 de diciembre de 2024, 15:48
Fito
Guardián del Foro
Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos de parte de los Foreros Guardián del Foro: Guardián del espíritu y clima del Foro - Issue reason: Por el Avatar Activista del Foro: Activista del Foro - Issue reason: Por aportar ideas 
Última Actividad 19.09.2026 13:19
Posts Posts: 458
Likes enviados Enviados: 267
Likes recibidos Recibidos: 243

Hola Amigos. Este tema daría para un post aparte, pero siguiendo el hilo de lo que pregunta Gustavo, todas las consideraciones de Carlos son reales.

Los grandes temas que me seducen de las BBDD son:
1-) Transacciones
2-) Manejo de Integridad Referencial
3-) Replicación de Datos

Recién estoy tratando de meterme en el tema. todavía no tengo nada en producción. Dentro de lo Open Source, me parece que Postgres es ideal y de los de pago Microsoft SQL Server (que es con el que estoy probando).

Otro tema no menor es que trabajando con BBDD, nosotros que estamos en COBOL, tenemos la posibilidad de empezar a desarrollar con otras herramientas fuera de COBOL (Pyton, Windev, etc). Está muy complicado conseguir gente que programe en COBOL, Ahora se viene todo el tema de la IA y me parece que ya tenemos que empezar a manejas herramientas más adecuadas para eso.
También está lo web, aunque todavía en COBOL se puede trabajar muy bien para eso.

Pero necesitamos ir avanzando en tecnologías más nuevas para no quedarnos.

Saludos...

Fito...
Fito is offline   Responder Con Cita
Respuesta



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:09.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.