Resultados 1 al 4 de 4

Tema: PowerCobol & Class & sqlite

  1. #1
      Senior
    Avatar de fastpho

    Registrado
    diciembre de 2016
    Ubicación
    Mendoza
    Edad
    53
    Mensajes
    326
    Última visita
    18.04.2024

    Agradecimientos
     
    Recibidos
    226
    Enviados
    209

    Citaciones y menciones
     
    Mentioned
    49 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    15 Post(s)
    Poder de Reputación
    21
    Innovación / Point Value: 0 Concurso: Primer puesto / Point Value: 0

    Gadget PowerCobol & Class & sqlite

    Sqlite3Class.cbl es un envoltorio que permite integrar el motor de base de datos de sqlite con las aplicaciones de PowerCobol.
    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 - Agregar la clase en la opcion Insertar File en el modulo
    4 - Crear el Objects sqlite3 y genera la referencia al objeto
    COBOL Código:
    1.     REPOSITORY
    2.     CLASS  Sqlite3  
    COBOL Código:
    1.  WORKING-STORAGE
    2.     01  OBJSQLITE3           OBJECT REFERENCE SQLITE3   IS GLOBAL. *>Instance CLASS
    COBOL Código:
    1.  invoke Sqlite3 "NEW" returning ObjSqlite3

    5 - Luego puede invocar cualquier metodo de la clase
    COBOL Código:
    1.     *> libversion
    2.      invoke objSqlite3 "LibVersionSql"  returning  BD-TEXT.  
    6 - Al finalizar destruir la instancia del objeto (set objSqlite3 to Null).
    Class
    COBOL Código:
    1. *> ----------------------------------------------------------------------------------
    2. *> libreria sqlite3.dll
    3. *> cargar las funciones en el archivo cobol85.cbr
    4. *> Fecha 20-05-2023
    5. *> Sqlite3Class.cbl
    6. *> Version 1.00
    7. *> Author Osvaldo Urbano @fastpho
    8. *> Source Fujitsu FJBASE CLASS
    9. *> ----------------------------------------------------------------------------------
    10.  
    11.  CLASS-ID.  Sqlite3 INHERITS FJBASE.
    12.  ENVIRONMENT    DIVISION.
    13.  CONFIGURATION    SECTION.
    14.  REPOSITORY.
    15.       CLASS FJBASE.            
    16. *      
    17.  OBJECT.
    18.  
    19.  DATA DIVISION.
    20.  WORKING-STORAGE SECTION.
    21.  01 ValorVers         PIC X(4) PROPERTY VALUE "1.00". *>Version de la Clase
    22.  01 pSqlite3          PIC 9(9) COMP-5 PROPERTY WITH NO SET. *>Handle de la BD - Propiedad Solo GET
    23.  01 pStmt3            PIC 9(9) COMP-5 PROPERTY WITH NO SET. *>Puntero Statement - Propiedad Solo GET
    24.  
    25.  PROCEDURE DIVISION.
    26. *> ----------------------------------------------------------------------------------
    27. *> object Sqlite3
    28. *> ----------------------------------------------------------------------------------
    29. *> ----------------------------------------------------------------------------------
    30. *>  property 's
    31. *> ----------------------------------------------------------------------------------
    32. *========================================================================
    33. *>
    34. *>  Property GET HANDLE = puntero DE LA BD
    35. *>
    36.  
    37.  METHOD-ID. GET PROPERTY HANDLE.
    38.  DATA DIVISION.
    39.  LINKAGE SECTION.
    40.  01 PROP-HANDLE-VALOR PIC 9(9) COMP-5.
    41.  PROCEDURE DIVISION RETURNING PROP-HANDLE-VALOR.
    42.      COMPUTE   PROP-HANDLE-VALOR = pSqlite3.
    43.  END METHOD.
    44. *========================================================================
    45. *========================================================================
    46. *>
    47. *>  Property GET FIELDCOUNT =  Cantidad de columnas despues del select
    48. *>
    49.  
    50.  METHOD-ID. GET PROPERTY FIELDCOUNT.
    51.  DATA DIVISION.
    52.  LINKAGE SECTION.
    53.  01 PROP-VALOR PIC 9(9) COMP-5.
    54.  PROCEDURE DIVISION RETURNING PROP-VALOR.
    55.      INVOKE SELF "ColumnaCountSql" RETURNING PROP-VALOR.
    56.  
    57.  END METHOD.
    58. *========================================================================
    59. *> ----------------------------------------------------------------------------------
    60. *>  method's
    61. *> ----------------------------------------------------------------------------------
    62. *========================================================================
    63. *>
    64. *>  Metodo OpenSql
    65. *>
    66.  METHOD-ID. OpenSql.
    67.  DATA DIVISION.
    68.  WORKING-STORAGE SECTION.
    69.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
    70.  01  BD-HANDLE                      PIC 9(9) COMP-5. *>Handle de la BD  
    71. *========================================================================
    72. *  sqlite3_open  
    73. *
    74. *  # INPUT: BD-FILE-NAME  
    75. *  # OUTPUT: BD-HANDLE , BD-STATUS
    76. *========================================================================
    77.  LINKAGE SECTION.
    78.  01  BD-FILE-NAME                   PIC X(50).       *>Nombre de la BD
    79.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
    80.  PROCEDURE DIVISION USING BD-FILE-NAME  RETURNING BD-STATUS.
    81.  
    82.      MOVE "sqlite3_open"         TO FUNCIONES-SQLITE3-LIB.    
    83.      CALL FUNCIONES-SQLITE3-LIB    WITH  STDCALL  LINKAGE
    84.               USING      
    85.                          BY REFERENCE BD-FILE-NAME
    86.                          BY REFERENCE BD-HANDLE
    87.               RETURNING  BD-STATUS
    88.  
    89.      END-CALL.    
    90.      MOVE BD-HANDLE TO pSqlite3. *> expongo el handler como property
    91.                                  *> para todos los metodos.
    92.      
    93.  END METHOD OpenSql.
    94. *========================================================================
    95. *========================================================================
    96. *>
    97. *>  Metodo CloseSql
    98. *>
    99.  METHOD-ID. CloseSql.
    100.  DATA DIVISION.
    101.  WORKING-STORAGE SECTION.
    102.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
    103. *========================================================================
    104. *  sqlite3_close  
    105. *
    106. *  # INPUT:            
    107. *  # OUTPUT: BD-STATUS
    108. *========================================================================
    109.  LINKAGE SECTION.
    110.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
    111.  PROCEDURE DIVISION  RETURNING BD-STATUS.
    112.  
    113.      MOVE "sqlite3_close"         TO FUNCIONES-SQLITE3-LIB.    
    114.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    115.               USING      
    116.                          BY VALUE pSqlite3
    117.               RETURNING  BD-STATUS
    118.  
    119.      END-CALL.    
    120.      
    121.  END METHOD CloseSql.
    122. *========================================================================
    123. *========================================================================
    124. *>
    125. *>  Metodo Open2Sql
    126. *>
    127.  METHOD-ID. Open2Sql.
    128.  DATA DIVISION.
    129.  WORKING-STORAGE SECTION.
    130.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
    131.  01  BD-HANDLE                      PIC 9(9) COMP-5. *>Handle de la BD  
    132. *========================================================================
    133. *  sqlite3_open_v2  
    134. *
    135. *  # INPUT: BD-FILE-NAME   BD-OPEN-TYPE
    136. *  # OUTPUT: BD-HANDLE , BD-STATUS
    137. *========================================================================
    138.  LINKAGE SECTION.
    139.  01  BD-FILE-NAME                   PIC X(50).       *>Nombre de la BD
    140.  01  BD-OPEN-TYPE                   PIC 9(9) COMP-5. *>R RW SC
    141.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
    142.  PROCEDURE DIVISION USING  BD-FILE-NAME , BD-OPEN-TYPE RETURNING BD-STATUS.
    143.  
    144.      MOVE "sqlite3_open_v2"         TO FUNCIONES-SQLITE3-LIB.    
    145.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    146.               USING      
    147.                          BY REFERENCE BD-FILE-NAME
    148.                          BY REFERENCE BD-HANDLE
    149.                          BY VALUE BD-OPEN-TYPE
    150.                          BY VALUE 0
    151.               RETURNING  BD-STATUS
    152.  
    153.      END-CALL.    
    154.      MOVE BD-HANDLE TO pSqlite3. *> expongo el handler como property
    155.                                  *> para todos los metodos.
    156.  
    157.  END METHOD Open2Sql.
    158. *========================================================================
    159. *========================================================================
    160. *>
    161. *>  Metodo Close2Sql
    162. *>
    163.  METHOD-ID. Close2Sql.
    164.  DATA DIVISION.
    165.  WORKING-STORAGE SECTION.
    166.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
    167. *========================================================================
    168. *  sqlite3_close_v2  
    169. *
    170. *  # INPUT:  
    171. *  # OUTPUT: BD-STATUS
    172. *========================================================================
    173.  LINKAGE SECTION.
    174.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
    175.  PROCEDURE DIVISION     RETURNING BD-STATUS.
    176.  
    177.  
    178.      MOVE "sqlite3_close_v2"         TO FUNCIONES-SQLITE3-LIB.    
    179.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    180.               USING      
    181.                          BY VALUE pSqlite3
    182.               RETURNING  BD-STATUS
    183.  
    184.      END-CALL.    
    185.      
    186.  END METHOD Close2Sql.
    187. *========================================================================
    188. *========================================================================
    189. *>
    190. *>  Metodo LibversionSql
    191. *>
    192.  METHOD-ID. LibversionSql.
    193.  DATA DIVISION.
    194.  WORKING-STORAGE SECTION.
    195.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
    196.  01  BD-TEXT-POINTER                POINTER.  
    197. *========================================================================
    198. *  sqlite3_libversion  
    199. *
    200. *                    
    201. *  # OUTPUT: BD-TEXT
    202. *========================================================================
    203.  LINKAGE SECTION.
    204.  01  BD-TEXT                        PIC X any length.
    205.  77  sqlite3-version-text           PIC X(256).
    206.  PROCEDURE DIVISION  RETURNING BD-TEXT.
    207.  
    208.      MOVE "sqlite3_libversion"   TO FUNCIONES-SQLITE3-LIB.
    209.      CALL  FUNCIONES-SQLITE3-LIB  WITH  STDCALL LINKAGE
    210.             RETURNING  BD-TEXT-POINTER
    211.      END-CALL.
    212.  
    213.        SET ADDRESS OF sqlite3-version-text TO BD-TEXT-POINTER.
    214.      STRING
    215.         sqlite3-version-text DELIMITED BY LOW-VALUE
    216.             INTO BD-TEXT
    217.        END-STRING.
    218.        SET BD-TEXT-POINTER TO NULL.
    219.  
    220.      
    221.  END METHOD LibversionSql.
    222. *========================================================================
    223. *========================================================================
    224. *>
    225. *>  Metodo ColumnaCountSql
    226. *>
    227.  METHOD-ID. ColumnaCountSql.
    228.  DATA DIVISION.
    229.  WORKING-STORAGE SECTION.
    230.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).    
    231. *========================================================================
    232. *  sqlite3_column_count  
    233. *
    234. *  # INPUT: BD-HANDLE-STMT
    235. *  # OUTPUT: BD-COLUMNA-CANTIDAD
    236. *========================================================================
    237.  LINKAGE SECTION.
    238.  01  BD-COLUMNA-CANTIDAD            PIC 9(9) COMP-5. *>Cantidad de Columnas de la BD
    239.  PROCEDURE DIVISION     RETURNING BD-COLUMNA-CANTIDAD.
    240.  
    241.      MOVE "sqlite3_column_count"         TO FUNCIONES-SQLITE3-LIB.    
    242.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    243.               USING      
    244.                          BY VALUE   pStmt3
    245.               RETURNING  BD-COLUMNA-CANTIDAD
    246.  
    247.      END-CALL.
    248.  
    249.      
    250.  END METHOD ColumnaCountSql.
    251. *========================================================================
    252. *========================================================================
    253. *>
    254. *>  Metodo PrepareSql
    255. *>
    256.  METHOD-ID. PrepareSql.
    257.  DATA DIVISION.
    258.  WORKING-STORAGE SECTION.
    259.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    260.  01  BD-SQL-STRING-LENGHT           PIC S9(9) COMP-5.
    261.  01  BD-HANDLE-STMT                 PIC 9(9) COMP-5.  *>Puntero Statement
    262.  01  BD-STMT-PTR REDEFINES BD-HANDLE-STMT POINTER.    *>Redefines del Puntero Statement
    263. *========================================================================
    264. *  sqlite3_prepare_v2  
    265. *
    266. *  # INPUT:  BD-SQL-QUERY
    267. *  # OUTPUT: BD-STATUS
    268. *========================================================================
    269.  LINKAGE SECTION.
    270.  01  BD-SQL-QUERY                   PIC X(256).       *> string sql  
    271.  01  BD-STATUS                      PIC 9(9) COMP-5.  *>Estado de la BD
    272.  PROCEDURE DIVISION USING   BD-SQL-QUERY  RETURNING BD-STATUS.
    273.  
    274.      MOVE "sqlite3_prepare_v2"         TO FUNCIONES-SQLITE3-LIB.    
    275.  
    276.      MOVE ZEROS TO BD-SQL-STRING-LENGHT.
    277.      INSPECT BD-SQL-QUERY TALLYING BD-SQL-STRING-LENGHT FOR  CHARACTERS BEFORE INITIAL X"00".
    278.  
    279.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    280.               USING
    281.                          BY VALUE     pSqlite3
    282.                          BY CONTENT   BD-SQL-QUERY
    283.                        BY VALUE     BD-SQL-STRING-LENGHT
    284.                          BY REFERENCE BD-STMT-PTR
    285.                    BY VALUE     0
    286.               RETURNING  BD-STATUS
    287.  
    288.      END-CALL.
    289.      *> DEVUELVE BD-STMT-PTR  
    290.      MOVE BD-HANDLE-STMT TO pStmt3. *> expongo el ptr statment como property
    291.                                     *> para todos los metodos.
    292.    
    293.  END METHOD PrepareSql.
    294. *========================================================================
    295. *========================================================================
    296. *>
    297. *>  Metodo FinalizeSql
    298. *>
    299.  METHOD-ID. FinalizeSql.
    300.  DATA DIVISION.
    301.  WORKING-STORAGE SECTION.
    302.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    303. *========================================================================
    304. *  sqlite3_finalize  
    305. *
    306. *  # INPUT:
    307. *  # OUTPUT:   BD-STATUS
    308. *========================================================================
    309.  LINKAGE SECTION.
    310.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
    311.  PROCEDURE DIVISION   RETURNING BD-STATUS.
    312.  
    313.      MOVE "sqlite3_finalize"      TO FUNCIONES-SQLITE3-LIB.    
    314.      
    315.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    316.               USING      
    317.                          BY VALUE   pStmt3
    318.               RETURNING  BD-STATUS
    319.  
    320.      END-CALL.
    321.      *>DEVUELVE BD-STATUS
    322.      
    323.  END METHOD FinalizeSql.
    324. *========================================================================
    325. *========================================================================
    326. *>
    327. *>  Metodo StepSql
    328. *>
    329.  METHOD-ID. StepSql.
    330.  DATA DIVISION.
    331.  WORKING-STORAGE SECTION.
    332.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    333. *========================================================================
    334. *  sqlite3_step  
    335. *
    336. *  # INPUT:
    337. *  # OUTPUT: BD-STATUS
    338. *========================================================================
    339.  LINKAGE SECTION.
    340.  01  BD-STATUS                      PIC 9(9) COMP-5. *>Estado de la BD
    341.  PROCEDURE DIVISION  RETURNING BD-STATUS.
    342.      
    343.      MOVE "sqlite3_step"          TO FUNCIONES-SQLITE3-LIB.    
    344.      CALL     FUNCIONES-SQLITE3-LIB  WITH STDCALL LINKAGE
    345.               USING      
    346.                          BY VALUE   pStmt3
    347.               RETURNING  BD-STATUS
    348.  
    349.      END-CALL.
    350.      *>DEVUELVE BD-STATUS
    351.      
    352.  END METHOD StepSql.
    353. *========================================================================
    354. *========================================================================
    355. *>
    356. *>  Metodo ErrMsgSql
    357. *>
    358.  METHOD-ID. ErrMsgSql.
    359.  DATA DIVISION.
    360.  WORKING-STORAGE SECTION.
    361.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    362.  01  BD-SQL-ERROR                   POINTER.
    363. *========================================================================
    364. *  sqlite3_errmsg  
    365. *
    366. *  # INPUT: BD-HANDLE
    367. *  # OUTPUT: BD-TEXT
    368. *========================================================================
    369.  LINKAGE SECTION.
    370.  01  BD-TEXT                        PIC X(256).
    371.  77  sqlite3-error-text             PIC X(256).
    372.  PROCEDURE DIVISION   RETURNING BD-TEXT.
    373.      
    374.      MOVE "sqlite3_errmsg"   TO FUNCIONES-SQLITE3-LIB.
    375.      MOVE SPACES             TO BD-TEXT.
    376.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  
    377.               USING    
    378.                         BY VALUE pSqlite3
    379.               RETURNING BD-SQL-ERROR
    380.  
    381.      END-CALL.
    382.  
    383.        SET ADDRESS OF sqlite3-error-text TO BD-SQL-ERROR.
    384.      STRING
    385.         sqlite3-error-text DELIMITED BY LOW-VALUE
    386.             INTO BD-TEXT
    387.        END-STRING.
    388.        SET BD-SQL-ERROR TO NULL.
    389.        *>DEVUELVE BD-TEXT
    390.      
    391.  END METHOD ErrMsgSql.
    392. *========================================================================
    393. *========================================================================
    394. *>
    395. *>  Metodo ExecuteSql
    396. *>
    397.  METHOD-ID. ExecuteSql.
    398.  DATA DIVISION.
    399.  WORKING-STORAGE SECTION.
    400.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    401. *========================================================================
    402. *  sqlite3_exec    
    403. *
    404. *  # INPUT: BD-SQL-QUERY
    405. *  # OUTPUT: BD-STATUS
    406. *========================================================================
    407.  LINKAGE SECTION.
    408.  01  BD-SQL-QUERY                   PIC X(256).       *>string sql (Create , Insert , Delete , Update )
    409.  01  BD-STATUS                      PIC 9(9) COMP-5.  *>Estado de la BD
    410.  PROCEDURE DIVISION USING BD-SQL-QUERY RETURNING BD-STATUS.
    411.      
    412.      MOVE "sqlite3_exec"         TO FUNCIONES-SQLITE3-LIB.    
    413.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    414.               USING
    415.                         BY VALUE   pSqlite3
    416.                         BY CONTENT BD-SQL-QUERY
    417.                       BY VALUE 0
    418.                   BY VALUE 0
    419.                   BY VALUE 0
    420.               RETURNING BD-STATUS
    421.  
    422.      END-CALL.
    423.      *>DEVUELVE BD-STATUS
    424.      
    425.  END METHOD ExecuteSql.
    426. *========================================================================
    427. *========================================================================
    428. *>
    429. *>  Metodo LastInsertIDSql
    430. *>
    431.  METHOD-ID. LastInsertIDSql.
    432.  DATA DIVISION.
    433.  WORKING-STORAGE SECTION.
    434.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    435. *========================================================================
    436. *  sqlite3_last_insert_rowid    
    437. *
    438. *  # INPUT:            
    439. *  # OUTPUT: BD-FILA-ID
    440. *========================================================================
    441.  LINKAGE SECTION.
    442.  01  BD-FILA-ID                     PIC 9(9) COMP-5. *> ultima fila insert
    443.  PROCEDURE DIVISION   RETURNING BD-FILA-ID.
    444.      
    445.      MOVE "sqlite3_last_insert_rowid"         TO FUNCIONES-SQLITE3-LIB.    
    446.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    447.               USING      
    448.                          BY VALUE   pSqlite3
    449.               RETURNING  BD-FILA-ID
    450.  
    451.      END-CALL.
    452.      *>DEVUELVE BD-FILA-ID
    453.      
    454.  END METHOD LastInsertIDSql.
    455. *========================================================================
    456. *========================================================================
    457. *>
    458. *>  Metodo ColumnaInt
    459. *>
    460.  METHOD-ID. ColumnaInt.
    461.  DATA DIVISION.
    462.  WORKING-STORAGE SECTION.
    463.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    464. *========================================================================
    465. *  sqlite3_column_int    
    466. *
    467. *  # INPUT: BD-HANDLE-STMT BD-COLUMNA-NUMERO
    468. *  # OUTPUT:   BD-INT
    469. *========================================================================
    470.  LINKAGE SECTION.
    471.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
    472.  01  BD-INT                         PIC 9(9) COMP-5.    
    473.  PROCEDURE DIVISION USING    BD-COLUMNA-NUMERO RETURNING BD-INT.
    474.      
    475.      MOVE "sqlite3_column_int"         TO FUNCIONES-SQLITE3-LIB.    
    476.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    477.               USING        BY VALUE   pStmt3
    478.                            BY VALUE   BD-COLUMNA-NUMERO
    479.               RETURNING  BD-INT
    480.  
    481.      END-CALL.
    482.      *>DEVUELVE BD-INT
    483.      
    484.  END METHOD ColumnaInt.
    485. *========================================================================
    486. *========================================================================
    487. *>
    488. *>  Metodo ColumnaText
    489. *>
    490.  METHOD-ID. ColumnaText.
    491.  DATA DIVISION.
    492.  WORKING-STORAGE SECTION.
    493.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    494.  01  BD-TEXT-POINTER                POINTER.
    495. *========================================================================
    496. *  sqlite3_column_text    
    497. *
    498. *  # INPUT: BD-HANDLE-STMT BD-COLUMNA-NUMERO
    499. *  # OUTPUT:   BD-TEXT
    500. *========================================================================
    501.  LINKAGE SECTION.
    502.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
    503.  01  BD-TEXT                        PIC X(256).
    504.  01  sqlite3-value-text             PIC X(256).
    505.  PROCEDURE DIVISION USING  BD-COLUMNA-NUMERO RETURNING BD-TEXT.
    506.      
    507.      MOVE "sqlite3_column_text"    TO FUNCIONES-SQLITE3-LIB.    
    508.      MOVE SPACES                   TO BD-TEXT.
    509.      
    510.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    511.               USING
    512.                          BY VALUE   pStmt3
    513.                          BY VALUE   BD-COLUMNA-NUMERO
    514.               RETURNING  BD-TEXT-POINTER
    515.      END-CALL.          
    516.      SET ADDRESS OF sqlite3-value-text TO BD-TEXT-POINTER.
    517.      STRING
    518.             sqlite3-value-text DELIMITED BY LOW-VALUE
    519.             into BD-TEXT
    520.      END-STRING.
    521.      SET  BD-TEXT-POINTER TO NULL.
    522.      *>DEVUELVE BD-TEXT
    523.      
    524.  END METHOD ColumnaText.
    525. *========================================================================
    526. *========================================================================
    527. *>
    528. *>  Metodo ColumnaType
    529. *>
    530.  METHOD-ID. ColumnaType.
    531.  DATA DIVISION.
    532.  WORKING-STORAGE SECTION.
    533.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    534. *========================================================================
    535. *  sqlite3_column_type    
    536. *
    537. *  # INPUT:    BD-COLUMNA-NUMERO
    538. *  # OUTPUT:   BD-COLUMNA-TIPO
    539. *========================================================================
    540.  LINKAGE SECTION.
    541.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
    542.  01  BD-COLUMNA-TIPO                PIC 9(4) COMP-5.    
    543.  PROCEDURE DIVISION USING  BD-COLUMNA-NUMERO RETURNING BD-COLUMNA-TIPO.
    544.  
    545.      MOVE "sqlite3_column_type"    TO FUNCIONES-SQLITE3-LIB.    
    546.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    547.               USING        
    548.                         BY VALUE   pStmt3
    549.                         BY VALUE   BD-COLUMNA-NUMERO
    550.               RETURNING BD-COLUMNA-TIPO  
    551.      END-CALL.          
    552.      *>DEVUELVE BD-COLUMNA-TIPO.    
    553.      
    554.  END METHOD ColumnaType.
    555. *========================================================================
    556. *========================================================================
    557. *>
    558. *>  Metodo ColumnaName
    559. *>
    560.  METHOD-ID. ColumnaName.
    561.  DATA DIVISION.
    562.  WORKING-STORAGE SECTION.
    563.  01  FUNCIONES-SQLITE3-LIB          PIC X(50).  
    564.  01  BD-COLUMNA-POINTER             POINTER.
    565. *========================================================================
    566. *  sqlite3_column_name    
    567. *
    568. *  # INPUT:    BD-COLUMNA-NUMERO
    569. *  # OUTPUT:   BD-COLUMNA-NOMBRE
    570. *========================================================================
    571.  LINKAGE SECTION.
    572.  01  BD-COLUMNA-NUMERO              PIC 9(9) COMP-5.
    573.  01  BD-COLUMNA-NOMBRE              PIC X(256).
    574.  01  sqlite3-value-text             PIC X(256).
    575.  PROCEDURE DIVISION USING   BD-COLUMNA-NUMERO RETURNING BD-COLUMNA-NOMBRE.
    576.  
    577.      MOVE "sqlite3_column_name"    TO FUNCIONES-SQLITE3-LIB.    
    578.      MOVE SPACES                   TO BD-COLUMNA-NOMBRE.
    579.      CALL     FUNCIONES-SQLITE3-LIB WITH  STDCALL  LINKAGE
    580.               USING    
    581.                         BY VALUE   pStmt3
    582.                         BY VALUE   BD-COLUMNA-NUMERO
    583.               RETURNING BD-COLUMNA-POINTER
    584.  
    585.      END-CALL.
    586.  
    587.      SET ADDRESS OF sqlite3-value-text TO BD-COLUMNA-POINTER.
    588.      STRING
    589.             sqlite3-value-text DELIMITED BY LOW-VALUE
    590.             INTO BD-COLUMNA-NOMBRE
    591.      END-STRING.
    592.      SET  BD-COLUMNA-POINTER TO NULL.
    593.      *>DEVUELVE BD-COLUMNA-NOMBRE.      
    594.  END METHOD ColumnaName.
    595. *========================================================================
    596. *> ----------------------------------------------------------------------
    597. *> END OBJECT Sqlite3
    598. *> ----------------------------------------------------------------------
    599.  END OBJECT.
    600.  END CLASS Sqlite3.
    COBOL Código:
    1.          *> abro sql    
    2.      MOVE "escuela.db"  & X"00"    TO BD-FILE-NAME.    
    3.      MOVE 2  TO BD-OPEN-TYPE.
    4.      invoke objSqlite3 "Open2Sql" using BD-FILE-NAME , BD-OPEN-TYPE returning  BD-STATUS.  
    5.      *>prepare
    6.      MOVE "select * from estudiante" & X"00" TO BD-SQL-QUERY.
    7.      invoke objSqlite3 "PrepareSql" USING     BD-SQL-QUERY    returning  BD-STATUS.
    8.      *>Record row
    9.      perform with no limit        
    10.          invoke objSqlite3 "StepSql" returning BD-STATUS *> next row
    11.        *>Get id
    12.              invoke objSqlite3 "ColumnaInt" using CAMPO-ID returning BD-INT
    13.              MOVE BD-INT TO LINEA-ID
    14.              *>Get nombre
    15.                invoke objSqlite3 "ColumnaText" using CAMPO-NOMBRE returning BD-TEXT
    16.                MOVE BD-TEXT TO LINEA-NOMBRE
    17.              *>Get edad
    18.                invoke objSqlite3 "ColumnaInt" using CAMPO-EDAD returning BD-INT
    19.                MOVE BD-INT TO LINEA-EDAD
    20.              *>Get altura
    21.                invoke objSqlite3 "ColumnaText" using CAMPO-ALTURA returning BD-TEXT
    22.                MOVE BD-TEXT TO LINEA-ALTURA
    23.               COMPUTE ROWNO = ROWNO + 1
    24.               MOVE LINEA-ID     TO "Text" OF "TableCells"(ROWNO 1) OF CmTable1
    25.               MOVE LINEA-NOMBRE TO "Text" OF "TableCells"(ROWNO 2) OF CmTable1
    26.               MOVE LINEA-EDAD   TO "Text" OF "TableCells"(ROWNO 3) OF CmTable1              
    27.               MOVE LINEA-ALTURA TO "Text" OF "TableCells"(ROWNO 4) OF CmTable1              
    28.              
    29.       end-perform.
    De esta forma la implementacion es mas clara y la cantidad de lines es mucho menor.
    Saludos...
    Imagem Anexada Imagem Anexada
    Ficheros adjuntos Ficheros adjuntos

    0 Not allowed!

  2. #2
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Ubicación
    Madrid
    Edad
    39
    Mensajes
    2,294
    Última visita
    17.05.2024

    Agradecimientos
     
    Recibidos
    1,040
    Enviados
    888

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

    Predeterminado

    @fastpho, ¡excelente trabajo compañero!

    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
      Senior
    Avatar de Joseg

    Registrado
    abril de 2015
    Mensajes
    334
    Última visita
    17.05.2024

    Agradecimientos
     
    Recibidos
    148
    Enviados
    92

    Citaciones y menciones
     
    Mentioned
    29 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    4 Post(s)
    Poder de Reputación
    21
    Activista del Foro / Point Value: 0 Innovación / Point Value: 0

    Predeterminado

    Fantástico trabajo. Gracias por compartir con la comunidad

    0 Not allowed!

  4. #4
      Acabo de llegar...
    v

    Registrado
    agosto de 2023
    Ubicación
    White
    Edad
    15
    Mensajes
    1
    Última visita
    10.08.2023

    Agradecimientos
     
    Recibidos
    0
    Enviados
    0

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

    Predeterminado

    Extremadamente detallado y completo. Eres un trabajador dedicado.

    0 Not allowed!

Información de Tema

Usuarios Viendo este Tema

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

Temas Similares

  1. [Compilador] Powercobol & Windows 11
    Por Joseg en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 18
    Último Mensaje: 14.10.2021, 15:45
  2. [Compilador] Json & Powercobol
    Por Joseg en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 1
    Último Mensaje: 12.04.2021, 14:13
  3. [Compilador] Powercobol & ADO
    Por Joseg en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 11
    Último Mensaje: 14.07.2018, 16:51
  4. [Herramienta] Fujitsu Cobol & Internet
    Por Joseg en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 5
    Último Mensaje: 08.03.2018, 13:10
  5. [Compilador] Fujitsu Cobol & Sqlite
    Por Joseg en el foro PowerCOBOL (ActiveX, v4 - v11)
    Respuestas: 12
    Último Mensaje: 07.02.2018, 09:08

Etiquetas para este Tema

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
  •