Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Entornos de desarrollo y compiladores Cobol Cocina Casera Cocina PowerCOBOL
Cocina PowerCOBOL Rutinas y ejemplos codificados por nuestros foreros.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] SQL embebido - cursor con COUNT() en PowerCOBOL 7 drvedia1981 PowerCOBOL (ActiveX, v4 - v11) 13 7 de junio de 2023 11:28
Microsoft ADO con PowerCobol fastpho PowerCOBOL (ActiveX, v4 - v11) 0 27 de abril de 2022 18:47
[Sintaxis] Compratir variable con un EXE de PowerCOBOL Recato53 PowerCOBOL (ActiveX, v4 - v11) 10 14 de febrero de 2017 17:18
[Duda] PowerCOBOL ejecutado en tablet con Windows Breew PowerCOBOL (ActiveX, v4 - v11) 2 3 de diciembre de 2016 13:31
[Duda] Leer archivo AcuCobol con PowerCobol Roger PowerCOBOL (ActiveX, v4 - v11) 7 28 de septiembre de 2016 10:44

Respuesta
 
Herramientas

  #1
Antiguo 28 de abril de 2023, 13:22
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Permite integrar el motor de base de datos de SQlite con nuestras aplicaciones.
En mi caso es para poder interactuar con una aplicacion que hice para Android
y poder leer la informacion de la BD y evitar utilizar archivos con formato .CSV
como interface.
Su implementacion es muy sencilla descargar Binarios precompilados
para Windows para su version 32 bits (sqlite3.dll) no hace falta registrarla.

1 - Copiar Sqlite3.dll en la carpeta del proyecto
2 - Agregar la funciones de la libreria en el Archivo COBOL85
3 - Luego llamar a esas funciones via call
4 - Informacion de las funciones en : https://sqlite.org/c3ref/funclist.html

Ejemplo para abrir , crear , insertar , actualizar un registro y cerrar

Declaracion Variables
Código COBOL:
  1.  01  BD-HANDLE                      PIC 9(9) COMP-5  IS GLOBAL. *>Handle de la BD
  2.  01  BD-FILE-NAME                   PIC X(50)        IS GLOBAL. *>Nombre de la BD
  3.  01  BD-SQL-QUERY                   PIC X(256)       IS GLOBAL. *>string sql (Create , Insert , Delete , Update , Select)
  4.  01  BD-SQL-STRING-LENGHT           PIC S9(9) COMP-5 IS GLOBAL.
  5.  01  BD-HANDLE-STMT                 PIC 9(9) COMP-5  IS GLOBAL.  *>Puntero Statement
  6.  01  BD-STMT-PTR REDEFINES BD-HANDLE-STMT POINTER    IS GLOBAL.  *>Redefines del Puntero Statement
  7.  
  8.  01  BD-INT-POINTER                 POINTER          IS GLOBAL.
  9.  01  BD-INT                         PIC 9(9) COMP-5  IS GLOBAL. *> INTEGER
  10.  01  BD-DOB                         PIC 9(9) COMP-5  IS GLOBAL. *> DOUBLE
  11.  
  12.  01  BD-TEXT-POINTER                POINTER          IS GLOBAL.
  13.  01  BD-TEXT                        PIC X(256)       IS GLOBAL. *> TEXT
  14.  01  BD-SQL-ERROR                   POINTER          IS GLOBAL.
  15.  
  16.  
  17.  01  BD-FILA-ID                     PIC 9(9) COMP-5  IS GLOBAL.
  18.  01  BD-COLUMNA-CANTIDAD            PIC 9(9) COMP-5  IS GLOBAL.
  19.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5  IS GLOBAL.
  20.  01  BD-COLUMNA-NOMBRE              PIC X(256)       IS GLOBAL.
  21.  01  BD-COLUMNA-POINTER             POINTER          IS GLOBAL.
  22.  
  23.  
  24. * Estado de la Base de Datos
  25.  01  BD-STATUS                      PIC 9(9) COMP-5  IS GLOBAL.
  26. *>Estado de la BD
  27.  01  ESTADOS-BD IS GLOBAL.
  28.      03 SQLITE_OK       PIC 9(9) COMP-5  VALUE 0.   *> /* Successful result */
  29.      03 SQLITE_ERROR    PIC 9(9) COMP-5  VALUE 1.   *> /* Generic error */
  30.      03 SQLITE_BUSY     PIC 9(9) COMP-5  VALUE 5.   *> /* The database file is locked */
  31.      03 SQLITE_LOCKED   PIC 9(9) COMP-5  VALUE 6.   *> /*  A table in the database is locked */
  32.      03 SQLITE_READONLY PIC 9(9) COMP-5  VALUE 8.   *> /*  Attempt to write a readonly database */
  33.      03 SQLITE_EMPTY    PIC 9(9) COMP-5  VALUE 16.  *> /*  Attempt to write a readonly database */
  34.      
  35.      
  36.      03 SQLITE_MISUSE   PIC 9(9) COMP-5  VALUE 21.  *> /* Library used incorrectly */
  37.      03 SQLITE_WARNING  PIC 9(9) COMP-5  VALUE 28.  *> /* unusual and possibly ill-advised operation is taking place.*/
  38.      
  39.      03 SQLITE-ROW      PIC 9(9) COMP-5  VALUE 100. *> /* sqlite3_step() has another row ready */
  40.      03 SQLITE-DONE     PIC 9(9) COMP-5  VALUE 101. *> /* sqlite3_step() has finished executing */
  41. * Tipos de Datos sqlite    
  42.  01  BD-COLUMNA-TIPO       PIC 9(4) COMP-5 IS GLOBAL.
  43.       88  SQL-INTEGER        VALUE 1. *>
  44.       88  SQL-REAL           VALUE 2. *>  
  45.       88  SQL-TEXT           VALUE 3. *>
  46.       88  SQL-BLOB           VALUE 4. *>
  47.       88  SQL-NULL           VALUE 5. *>
  48.      
  49.  
  50.  01 FECHA-CONVERTIR       PIC 9(8)         IS GLOBAL. *> AAAAMMDD a Convertir
  51.  01 FECHA-CONVERTIDA-UNIX PIC 9(13)        IS GLOBAL. *> Fecha con formato unix
  52.  01 FECHA-UNIX1970        PIC S9(9) COMP-5 IS GLOBAL. *> desde AAAAMMDDD 19700101
  53.  01 FECHA-INT             PIC S9(9) COMP-5 IS GLOBAL.
  54.  01 FECHA-AMD             PIC 9(8)         IS GLOBAL.
  55.  01 FECHA-AMD-ED          PIC XXXX/XX/XX   IS GLOBAL.
  56.  
  57.  01 NULO                           PIC 9(9)  COMP-5 VALUE 0 IS GLOBAL.    *> NULO
  58.  
  59.  *>[url]https://sqlite.org/cintro.html[/url]
  60. *>Funciones de la libreria sqlit3.dll
  61. *>[url]https://sqlite.org/c3ref/funclist.html[/url]
  62. *>Funciones Declaradas en el archivo COBOL85.CBR
  63. *>Fecha 17-04-2023
  64.  01  FUNCIONES-SQLITE3-LIB          PIC X(50)        IS GLOBAL.
  65. *> sqlite3-connection functions
  66.     *>  sqlite3_libversion (OUT <text>)                                                  *> Devuelve la versión de sqlite a través del parámetro OUT. OK probado
  67.     *>  sqlite3_libversion_number (OUT <int>                   )                         *> Devuelve el número de versión como un int  OK probado
  68.     *>  sqlite3_open       (<nombre de archivo>, OUT <controlador de la base de datos>). *> Esto abre un archivo de base de datos SQLite , nueva o existente como se especifica en el argumento de nombre de archivo.OK probado
  69.     *>  sqlite3_close       (<db-handle>)(<identificador de la base de datos>)           *> Destructor de la interface , cierra la BD OK probado
  70.     *>  sqlite3_exec       (<gestor-bd>,<cadena-sql>)                                    *> Es una envoltura  sqlite3_prepare_v2(), sqlite3_step() y sqlite3_finalize() OK probado
  71.     *>  sqlite3_errmsg     (<db-handle>, OUT <mensaje de error)                          *> Devuelve texto en inglés como un parámetro OUT que describe el último error en la conexión. OK probado
  72.  
  73. *> sqlit3-statement functions    
  74.   *> sqlite3_prepare_v2  *>Constructor OK probado
  75.   *> sqlite3_finalize    *>Destructor  OK probado
  76.      *> Pass
  77.         *> sqlite3_step         int sqlite3_step(sqlite3_stmt*);  OK probado
  78.         *> sqlite3_reset        int sqlite3_reset(sqlite3_stmt *pStmt); OK probado
  79.         *> sqlite3_finalize     int sqlite3_finalize(sqlite3_stmt *pStmt); OK probado
  80.        
  81.       *> Statement column access (0-base indices)
  82.         *> sqlite3_column_count    int sqlite3_column_count(sqlite3_stmt *pStmt);   OK probado
  83.         *> sqlite3_column_type     int sqlite3_column_type(sqlite3_stmt*, int iCol);  OK probado
  84.         *> sqlite3_column_name     const char *sqlite3_column_name(sqlite3_stmt*, int N); OK probado
  85.      *> Statement column type
  86.         *> sqlite3_column_int      int sqlite3_column_int(sqlite3_stmt*, int iCol);  OK probado
  87.         *> sqlite3_column_text     const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);   OK probado
  88.         *> sqlite3_column_double   double sqlite3_column_double(sqlite3_stmt*, int iCol);   OK probado
  89.         *> sqlite3_column_blob     no implementado
  90.  

Abrir BD

Código COBOL:
  1. *------------------------------------------------------------------    
  2. *>sqlite3_open
  3. *    DISPLAY "------------".
  4. *    DISPLAY "sqlite3_open".
  5.  
  6.      MOVE SPACES                 TO FUNCIONES-SQLITE3-LIB.
  7.      MOVE "sqlite3_open"         TO FUNCIONES-SQLITE3-LIB.    
  8.      MOVE "datos.db"  & X"00"    TO BD-FILE-NAME.
  9.      
  10.      call     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  11.               USING BY REFERENCE BD-FILE-NAME
  12.                     BY REFERENCE BD-HANDLE
  13.              returning  BD-STATUS
  14.  
  15.      end-call.
  16.      IF BD-STATUS  NOT = SQLITE_OK THEN
  17.         CALL "BD-ERROR"
  18.      ELSE
  19.         MOVE  "OK" TO "Caption" OF CmStatic2
  20.      END-IF.    

Crear BD

Código COBOL:
  1. *------------------------------------------------------------------    
  2. *>sqlite3_exec
  3. *    DISPLAY "------------".
  4. *    DISPLAY "sqlite3_exec".
  5. *    DISPLAY "CREATE".
  6.      MOVE SPACES                 TO BD-SQL-QUERY.
  7.      MOVE SPACES                 TO FUNCIONES-SQLITE3-LIB.
  8.      MOVE "sqlite3_exec"         TO FUNCIONES-SQLITE3-LIB.    
  9.      MOVE "CREATE TABLE usuarios (id INTEGER PRIMARY KEY AUTOINCREMENT  , nombre TEXT , edad INTEGER )" & X"00" TO BD-SQL-QUERY.
  10.  
  11.      call     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  12.               USING
  13.                     BY VALUE   BD-HANDLE
  14.                     BY CONTENT BD-SQL-QUERY
  15.               BY VALUE 0
  16.               BY VALUE 0
  17.               BY VALUE 0
  18.              returning  BD-STATUS
  19.  
  20.      end-call.
  21.      
  22.  
  23.      IF BD-STATUS NOT = SQLITE_OK THEN
  24.         CALL "BD-ERROR"
  25.      ELSE
  26.         MOVE "OK" TO "Caption" OF CmStatic2
  27.      END-IF.
  28.      

Insertar Registro BD

Código COBOL:
  1. *------------------------------------------------------------------    
  2. *>sqlite3_exec
  3. *    DISPLAY "------------------".
  4. *    DISPLAY "sqlite3_exec".
  5. *    DISPLAY "INSERT".
  6.  
  7.      MOVE SPACES                 TO FUNCIONES-SQLITE3-LIB.
  8.      MOVE "sqlite3_exec"         TO FUNCIONES-SQLITE3-LIB.    
  9.  
  10.      MOVE SPACES                 TO BD-SQL-QUERY.    
  11.      string "INSERT INTO usuarios (nombre , edad ) " delimited by size  
  12.             " VALUES ('Leonardo' , 24 )" delimited by size
  13.             x"00" delimited by size
  14.             into BD-SQL-QUERY
  15.      end-string.
  16.  
  17.      
  18.      call     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  19.               USING
  20.                     BY VALUE   BD-HANDLE
  21.                     BY CONTENT BD-SQL-QUERY
  22.               BY VALUE 0
  23.               BY VALUE 0
  24.               BY VALUE 0
  25.              returning  BD-STATUS
  26.  
  27.      end-call.
  28.      IF BD-STATUS NOT = SQLITE_OK
  29.         CALL "BD-ERROR"
  30.      END-IF.

Actualizar Registro BD
Código COBOL:
  1.  PROCEDURE       DIVISION.
  2. *------------------------------------------------------------------    
  3. *>sqlite3_exec
  4. *    DISPLAY "------------------".
  5. *    DISPLAY "sqlite3_exec".
  6. *    DISPLAY "UPDATE".
  7.  
  8.      MOVE SPACES                 TO FUNCIONES-SQLITE3-LIB.
  9.      MOVE SPACES                 TO BD-SQL-QUERY.        
  10.      MOVE "sqlite3_exec"         TO FUNCIONES-SQLITE3-LIB.
  11.  
  12.  
  13.      string "UPDATE usuarios SET  nombre = 'xxxx' " delimited by size  
  14.             "  WHERE id = 1" delimited by size
  15.             x"00" delimited by size
  16.             into BD-SQL-QUERY
  17.      end-string.
  18.  
  19.      
  20.      call     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  21.               USING
  22.                     BY VALUE   BD-HANDLE
  23.                     BY CONTENT BD-SQL-QUERY
  24.               BY VALUE 0
  25.               BY VALUE 0
  26.               BY VALUE 0
  27.              returning  BD-STATUS
  28.  
  29.      end-call.
  30.      
  31.      IF BD-STATUS NOT = SQLITE_OK
  32.         CALL "BD-ERROR"
  33.      ELSE
  34.         MOVE  "OK" TO "Caption" OF CmStatic2
  35.      END-IF.

Cerar BD
Código COBOL:
  1. *------------------------------------------------------------------    
  2. *>sqlite3_close
  3. *    DISPLAY "------------".
  4. *    DISPLAY "sqlite3_close".
  5.  
  6.      MOVE SPACES                 TO FUNCIONES-SQLITE3-LIB.
  7.      MOVE "sqlite3_close"        TO FUNCIONES-SQLITE3-LIB.    
  8.  
  9.      call     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
  10.               USING     BY VALUE BD-HANDLE
  11.              returning  BD-STATUS
  12.  
  13.      end-call.
  14.  
  15.      IF BD-STATUS NOT = SQLITE_OK THEN
  16.         CALL "BD-ERROR"
  17.      ELSE
  18.         MOVE  "OK" TO "Caption" OF CmStatic2        
  19.      END-IF.

Saludos....
fastpho is offline   Responder Con Cita
  #2
Antiguo 28 de abril de 2023, 15:26
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

Muito interessante!
Obrigado
Joseg is offline   Responder Con Cita
  #3
Antiguo 28 de abril de 2023, 17:05
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

Gracias @fastpho, lo único que recomiendo encarecidamente cuando se trabaja con BDs, es que los nombre de las variables que usemos para esas BDs, no contengan el guion medio (-), y sí el guion bajo (_), esto es porque sql, lo puede confundir con el signo de restar (-), el programa puede hacer cosas inesperadas y te vuelves loco buscando el error, (por experiencia propia). Aquí, no parece que se vaya a dar la condición, pero, no es malo, coger esa costumbre. Sólo hay que fijarse en las variables propias de sql, en las que todas son SQLITE_xxxx, y no SQLITE-xxxx

Por lo demás, un excelente aporte

Un salu2.-
Josber is offline   Responder Con Cita
  #4
Antiguo 28 de abril de 2023, 17:35
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Gracias @Josber , voy a tomar la sugerencia para evitar posibles problemas
Saludos....
fastpho is offline   Responder Con Cita
  #5
Antiguo 28 de abril de 2023, 20:05
luisbago
Forero Junior
Última Actividad 20.09.2026 07:34
Posts Posts: 48
Likes enviados Enviados: 5
Likes recibidos Recibidos: 17

un idx2sqlite seria fabuloso, así se traslada datos sin intermediarios
luisbago is offline   Responder Con Cita
  #6
Antiguo 2 de mayo de 2023, 12:49
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

Citación del post de fastpho Ver Mensaje
Gracias @Josber , voy a tomar la sugerencia para evitar posibles problemas
Saludos....
O mesmo exemplo, mas usando o Sqlit3.Lib. Não necessita de cobol85.cbr

Para criar o .LIB na mesma pasta a onde esta o SQLITE3.DLL
Linha de comandos: lib /DEF:sqlite3.def /OUT:sqlite3.lib /MACHINE:x32 (ou x64)
Archivos Adjuntos
Tipo de Archivo: zip sqlite_sample.zip (336,7 KB)Descargas: 56
Joseg is offline   Responder Con Cita
  #7
Antiguo 12 de mayo de 2023, 12:37
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

Hola,

Como implementar un loop en PowerCobol?

Ejemplo de lista de todos los registros de "MyTable":
Código SQL:
  1. SELECT * FROM MyTable

Creo que tienes que usar "sqlite3_prepare" y "sqlite3_step", o implementar una "devolución de llamada" (callback),
Código COBOL:
  1. 01 CALLBACK USAGE PROCEDURE-POINTER.

... pero no lo estoy consiguiendo.

Gracias,
Jose
Joseg is offline   Responder Con Cita
  #8
Antiguo 12 de mayo de 2023, 13:49
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

Hola @Joseg

Para poder realizar un "select" yo no lo pude hacer por "CALLBACK"
trabajo con la version 5.0 de PowerCobol y no acepta PROCEDURE-POINTER
Entonces para resolverlo hago :

sqlite3_open_v2
sqlite3_prepare_v2

sqlite3_step aca hay que meter el loop si
Código:
SQLITE_ROW
o
Código:
SQLITE_DONE
sqlite3_finalize
sqlite3_close_v2
Saludos...
fastpho is offline   Responder Con Cita
  #9
Antiguo 12 de mayo de 2023, 18:39
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

Citación del post de fastpho Ver Mensaje
Hola @Joseg

Para poder realizar un "select" yo no lo pude hacer por "CALLBACK"
trabajo con la version 5.0 de PowerCobol y no acepta PROCEDURE-POINTER
Entonces para resolverlo hago :

sqlite3_open_v2
sqlite3_prepare_v2

sqlite3_step aca hay que meter el loop si
Código:
SQLITE_ROW
o
Código:
SQLITE_DONE
sqlite3_finalize
sqlite3_close_v2
Saludos...
Muchas gracias

Pero, sigue sin funcionar

Código COBOL:
  1.  working-storage.
  2.  01  num-bytes                      pic s9(09) COMP-5  IS GLOBAL.
  3.  01  num-columns                    pic s9(09) COMP-5  IS GLOBAL.
  4.  01  pStmt                          usage pointer      IS GLOBAL.
  5.  01  zTail                          pic s9(09) COMP-5  IS GLOBAL.
  6.  
  7.  procedure division.
  8.  
  9.      MOVE "chinook.db"  & X"00"  TO BD-FILE-NAME.
  10.      
  11.      call "sqlite3_open_v2"  & X"00"  WITH  STDCALL  LINKAGE
  12.               USING BY REFERENCE BD-FILE-NAME
  13.                     BY REFERENCE BD-HANDLE
  14.                     BY VALUE 2  *> SQLITE_OPEN_READWRITE
  15.                     BY VALUE 0
  16.              returning  BD-STATUS
  17.  
  18.      end-call.
  19.  
  20.      string "SELECT * from artists WHERE name='Body Count' " delimited by size  
  21.             X"00" delimited by size
  22.             into BD-SQL-QUERY
  23.             WITH POINTER num-bytes.
  24.  
  25.      move zero to zTail
  26.        
  27.      call  "sqlite3_prepare_v2"  & X"00" WITH  STDCALL  LINKAGE
  28.               USING
  29.                     BY VALUE     BD-HANDLE
  30.                     BY CONTENT   BD-SQL-QUERY
  31.                     BY VALUE     num-bytes
  32.                     by reference pStmt
  33.                     by VALUE     zTail
  34.              returning  BD-STATUS
  35.  
  36.      end-call.    
  37.  
  38. *loop
  39.      call "sqlite3_step"  & X"00" WITH  STDCALL  LINKAGE
  40.            using
  41.                by reference pStmt
  42.            returning BD-STATUS
  43.      end-call.
  44.  
  45.     evaluate ESTADOS-BD
  46.        when SQLITE-ROW
  47.            display "SQLITE-ROW"
  48.        when SQLITE-DONE
  49.            display "SQLITE-DONE"
  50.     end-evaluate

¿Qué tiene de malo esta parte del código?
call "sqlite3_step" da el error
SQLITE_MISUSE = 21. *> Library used incorrectly

Powercobol v9
Gracias,
José
Joseg is offline   Responder Con Cita
  #10
Antiguo 12 de mayo de 2023, 20:13
fastpho
El Foro es mi casa
Innovación: Por aportar innovaciones - Issue reason: SQLite + OO Cobol class Concurso: Primer puesto: Ganador/a del Primer puesto en un concurso - Issue reason: Acceso a datos Cobol vía web 
Última Actividad 21.08.2026 18:08
Posts Posts: 365
Likes enviados Enviados: 252
Likes recibidos Recibidos: 243

@Joseg
La funcion sqlite3_step espera el valor por value no por reference seria asi :
Código COBOL:
  1. working-storage.
  2. 01 stmt-handle   PIC 9(9) COMP-5.
  3. 01 redefines stmt-handle.
  4.     05  pStmt usage pointer.


Código COBOL:
  1.      call "sqlite3_step"  & X"00" WITH  STDCALL  LINKAGE
  2.            using  by value stmt-handle
  3.            returning BD-STATUS
  4.      end-call
Saludos...
fastpho 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 13:58.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.