Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Compilador] Acesso direto Fujitsu Cobol / MariaDB/ MySql (https://www.cobolforo.es/showthread.php?t=1056)

Joseg 6 de diciembre de 2019 13:57

Acesso direto Fujitsu Cobol / MariaDB/ MySql
 
Para quem estiver interessado:
Cobol Acessando Mysql

Também funciona em Fujitsu (algumas pequenas limitações).

Estou usando com sucesso.

Muito fácil criar sistemas com arquivos ISAM/SQL

José

fastpho 1 de octubre de 2024 15:05

Hola @Joseg
Estoy haciendo una pruebas con la libreria extmysql.lib para
conectarme a una bd Mysql MariaDB remoto

Tengo dudas con el retorno de la funcion "MYSQLCOMANDO"


Estado = "23" siginifica correcto ?
Estado = "10" error ?
Estado = "00" ok ?

o cuales serian los estados
gracias por tu respuesta
Código COBOL:
  1.  77  W-ARQUIVOS            PIC X(250).
  2.  77  W-STATUS              PIC X(02).
  3.  77  W-QRTM                PIC 9(09) COMP-5.
  4.  77  W-CMD                 PIC X(8192).
  5.  01  W-CONEXAO             USAGE POINTER.
  6.  01  W-CURSOR              USAGE POINTER.
  7.  
  8.  01  ESTADO      PIC X(02).
  9.        88  STAT-ERRO            VALUE X"3100" THRU X"3943"
  10.                                       X"3945" THRU X"39EE".
  11.        88  DUPLICADO            VALUE "22".
  12.        88  CRIAR-ARQUIVO        VALUE X"3335" X"3913".
  13.        88  JA-ABERTO            VALUE "41" X"398D".
  14.        88  REINDEXAR            VALUE X"3929" X"3912".
  15.        88  ESTA-ABERTO          VALUE "12".
  16.        88  FOI-CRIADO           VALUE "05".
  17.        88  NAO-ENCONTRADO       VALUE "23".
  18.        88  FINAL-ARQUIVO        VALUE "10".
  19.        88  CHAVE-DUPLICADA      VALUE "02".
  20.  
  21.  01  RESTADO REDEFINES ESTADO.
  22.            02 ST-K01 PIC X(01).
  23.            02 ST-K02 PIC X(01).
  24.            02 RST-K02 REDEFINES ST-K02.
  25.               03 ST-ERR PIC 9(01) COMP-3.
*> Select
Código COBOL:
  1. *-------------------          
  2. *    MYSQLCONECTA
  3.      CALL "MYSQLCONECTA" USING W-ARQUIVOS  *> Variavel com os parametros para estabelecer a conexão
  4.                                W-CONEXAO   *> Retorna handle para encontrar a FCD-AREA da conexão
  5.                                ESTADO.   *> Status de retorno    
  6.      DISPLAY  "ESTADO conecta: " , ESTADO.    
  7. *------------      
  8. * Select  
  9.          MOVE 1      TO W-QRTM.
  10.          MOVE SPACES TO W-CMD.
  11.          STRING 'select Id_empresa, Nombre_empresa, Password_empresa  from empresas'
  12.                  ';'      
  13.                  delimited by size                          
  14.          INTO W-CMD    WITH POINTER W-QRTM
  15.          END-STRING.
  16.          display " W-QRTM : " , W-QRTM.
  17.  
  18.  
  19. *------------        
  20. *MYSQLCOMANDO
  21.          CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
  22.                                    W-CMD        *> Comando a ser executado
  23.                                    W-CURSOR     *> Handle do retorno do comando
  24.                                    W-QRTM       *> Tamanho do comando a ser executado
  25.                                    ESTADO.      *> Status de retorno
  26.      
  27.          DISPLAY  "ESTADO MYSQLCOMANDO: " , ESTADO.    
  28.          stop " ".    
  29.    
  30. *------------        
  31.          IF W-CURSOR NOT = NULL
  32.               PERFORM UNTIL ESTADO NOT = "00"
  33.  
  34.                  *> ------------------------
  35.                 *> MYSQLRETORNA
  36.                  MOVE  ZEROS      TO W-QRTM                
  37.                  CALL "MYSQLRETORNA" USING  W-CONEXAO   *> Handle para recuperar FCD-AREA
  38.                                             W-CURSOR    *> Endereço estrutura do retorno (cursor)
  39.                                             W-QRTM      *> Tamanho do buffer sendo retornado
  40.                                             ESTADO      *> Status de retorno
  41.                                             W-CMD       *> Buffer contendo o resultado sendo retornado. Ter cuidado no programa
  42.                      
  43.                  IF ESTADO = "00"
  44. *                   MOVE  W-CMD      TO *> aca estan lo datos
  45.                     display W-CMD(1:W-QRTM)
  46.                  END-IF
  47.               END-PERFORM
  48.          END-IF.
  49.  
  50. *------------        
  51. *MYSQLLIBERACURSOR
  52.          CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
  53.                                         W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
  54. *------------        
  55. *MYSQLDESCONECTA
  56.  
  57.          CALL "MYSQLDESCONECTA" USING W-CONEXAO    *> Handle para encontrar a FCD-AREA desta conexão
  58.                                       W-CURSOR     *> Handle das definições para o cursor, pode não
  59.                                                     *> vir informado.
  60.                                       ESTADO.
  61. *--------------------------------------------      
  62.          EXIT PROGRAM.

*>Update
Código COBOL:
  1. *----------------------
  2. *    MYSQLCONECTA
  3.      CALL "MYSQLCONECTA" USING W-ARQUIVOS  *> Variavel com os parametros para estabelecer a conexão
  4.                                W-CONEXAO   *> Retorna handle para encontrar a FCD-AREA da conexão
  5.                                ESTADO.   *> Status de retorno    
  6.      DISPLAY  "ESTADO conecta: " , ESTADO.    
  7. *------------        
  8. *> Select
  9.          MOVE 1 TO W-QRTM.
  10.          MOVE SPACES TO W-CMD.
  11.          MOVE "EMPRESADA MODELO 8 update"   TO Q-Nombre.
  12.          MOVE "Dirección con letra ñÑ"       TO Q-Dire.
  13.           STRING
  14.             "UPDATE  empresas SET "  
  15.  
  16.             "Nombre_empresa = "      
  17.             "'"  
  18.             Q-Nombre          
  19.             "'"            
  20.             ","                      
  21.             "Direccion_empresa = "      
  22.             "'"
  23.             Q-Dire
  24.             "'"
  25.             " where id_empresa = 31"
  26.              ';' delimited by size                          
  27.                  INTO W-CMD    WITH POINTER W-QRTM
  28.          END-STRING.
  29.          display " W-QRTM : " , W-QRTM.
  30.          DISPLAY  "W-CMD conecta: " , W-CMD(1:W-QRTM).    
  31.          stop " "
  32.  
  33. *------------        
  34. *MYSQLCOMANDO
  35.  
  36.          CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
  37.                                   W-CMD        *> Comando a ser executado
  38.                                   W-CURSOR     *> Handle do retorno do comando
  39.                                   W-QRTM       *> Tamanho do comando a ser executado
  40.                                   ESTADO.      *> Status de retorno
  41.      
  42.          DISPLAY  "ESTADO MYSQLCOMANDO: " , ESTADO.          
  43.          DISPLAY  "comando W-CURSOR: " , W-CURSOR.        
  44.          DISPLAY "ST-ERR : " , ST-ERR.  
  45.          stop " ".
  46. *------------        
  47. *MYSQLLIBERACURSOR
  48.          CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
  49.                                         W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
  50. *------------        
  51. *MYSQLDESCONECTA
  52.  
  53.          CALL "MYSQLDESCONECTA" USING W-CONEXAO    *> Handle para encontrar a FCD-AREA desta conexão
  54.                                       W-CURSOR     *> Handle das definições para o cursor, pode não
  55.                                                     *> vir informado.
  56.                                       ESTADO.
  57. *--------------------------------------------    
Saludos ..

Joseg 1 de octubre de 2024 15:35

Código COBOL:
  1.        01 ESTADO      PIC X(02).
  2.            88  STAT-ERRO            VALUE X"3100" THRU X"3943"
  3.                                              X"3945" THRU X"39EE".
  4.            88  DUPLICADO            VALUE "22".
  5.            88  CRIAR-ARQUIVO      VALUE X"3335" X"3913".
  6.            88  JA-ABERTO              VALUE "41" X"398D".
  7.            88  REINDEXAR             VALUE X"3929" X"3912".
  8.            88  ESTA-ABERTO          VALUE "12".
  9.            88  FOI-CRIADO            VALUE "05".
  10.            88  NAO-ENCONTRADO  VALUE "23".
  11.            88  FINAL-ARQUIVO       VALUE "10".
  12.            88  CHAVE-DUPLICADA  VALUE "02".

Estados sao os que estao no nivel 88.
Usando esta DLL, pode usar os comandos normais do cobol para escrver na BD, (READ, WRITE, START, ETC.).
Se incluir a libraria no Powercobol

pode fazer chamadas diretamente a DLL, do tipo:
Código COBOL:
  1.          MOVE LOW-VALUES TO W-WHERE
  2.          STRING
  3.            "`SUBCOL` = "
  4.            "'"
  5.              Wcol
  6.            "'"
  7.            " AND "
  8.            "`SUBFEC` > 20220101"
  9.              DELIMITED BY SIZE      
  10.          INTO W-WHERE        
  11.          CALL "MONTAWHERE" USING W-WHERE.
  12.          start xx ...
  13.          read xx ...



Cita:

Citación del post de fastpho (Mensaje 9583)
Hola @Joseg
Estoy haciendo una pruebas con la libreria extmysql.lib para
conectarme a una bd Mysql MariaDB remoto

Tengo dudas con el retorno de la funcion "MYSQLCOMANDO"


Estado = "23" siginifica correcto ?
Estado = "10" error ?
Estado = "00" ok ?

o cuales serian los estados
gracias por tu respuesta
Código COBOL:
  1.  77  W-ARQUIVOS            PIC X(250).
  2.  77  W-STATUS              PIC X(02).
  3.  77  W-QRTM                PIC 9(09) COMP-5.
  4.  77  W-CMD                 PIC X(8192).
  5.  01  W-CONEXAO             USAGE POINTER.
  6.  01  W-CURSOR              USAGE POINTER.
  7.  
  8.  01  ESTADO      PIC X(02).
  9.        88  STAT-ERRO            VALUE X"3100" THRU X"3943"
  10.                                       X"3945" THRU X"39EE".
  11.        88  DUPLICADO            VALUE "22".
  12.        88  CRIAR-ARQUIVO        VALUE X"3335" X"3913".
  13.        88  JA-ABERTO            VALUE "41" X"398D".
  14.        88  REINDEXAR            VALUE X"3929" X"3912".
  15.        88  ESTA-ABERTO          VALUE "12".
  16.        88  FOI-CRIADO           VALUE "05".
  17.        88  NAO-ENCONTRADO       VALUE "23".
  18.        88  FINAL-ARQUIVO        VALUE "10".
  19.        88  CHAVE-DUPLICADA      VALUE "02".
  20.  
  21.  01  RESTADO REDEFINES ESTADO.
  22.            02 ST-K01 PIC X(01).
  23.            02 ST-K02 PIC X(01).
  24.            02 RST-K02 REDEFINES ST-K02.
  25.               03 ST-ERR PIC 9(01) COMP-3.
*> Select
Código COBOL:
  1. *-------------------          
  2. *    MYSQLCONECTA
  3.      CALL "MYSQLCONECTA" USING W-ARQUIVOS  *> Variavel com os parametros para estabelecer a conexão
  4.                                W-CONEXAO   *> Retorna handle para encontrar a FCD-AREA da conexão
  5.                                ESTADO.   *> Status de retorno    
  6.      DISPLAY  "ESTADO conecta: " , ESTADO.    
  7. *------------      
  8. * Select  
  9.          MOVE 1      TO W-QRTM.
  10.          MOVE SPACES TO W-CMD.
  11.          STRING 'select Id_empresa, Nombre_empresa, Password_empresa  from empresas'
  12.                  ';'      
  13.                  delimited by size                          
  14.          INTO W-CMD    WITH POINTER W-QRTM
  15.          END-STRING.
  16.          display " W-QRTM : " , W-QRTM.
  17.  
  18.  
  19. *------------        
  20. *MYSQLCOMANDO
  21.          CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
  22.                                    W-CMD        *> Comando a ser executado
  23.                                    W-CURSOR     *> Handle do retorno do comando
  24.                                    W-QRTM       *> Tamanho do comando a ser executado
  25.                                    ESTADO.      *> Status de retorno
  26.      
  27.          DISPLAY  "ESTADO MYSQLCOMANDO: " , ESTADO.    
  28.          stop " ".    
  29.    
  30. *------------        
  31.          IF W-CURSOR NOT = NULL
  32.               PERFORM UNTIL ESTADO NOT = "00"
  33.  
  34.                  *> ------------------------
  35.                 *> MYSQLRETORNA
  36.                  MOVE  ZEROS      TO W-QRTM                
  37.                  CALL "MYSQLRETORNA" USING  W-CONEXAO   *> Handle para recuperar FCD-AREA
  38.                                             W-CURSOR    *> Endereço estrutura do retorno (cursor)
  39.                                             W-QRTM      *> Tamanho do buffer sendo retornado
  40.                                             ESTADO      *> Status de retorno
  41.                                             W-CMD       *> Buffer contendo o resultado sendo retornado. Ter cuidado no programa
  42.                      
  43.                  IF ESTADO = "00"
  44. *                   MOVE  W-CMD      TO *> aca estan lo datos
  45.                     display W-CMD(1:W-QRTM)
  46.                  END-IF
  47.               END-PERFORM
  48.          END-IF.
  49.  
  50. *------------        
  51. *MYSQLLIBERACURSOR
  52.          CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
  53.                                         W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
  54. *------------        
  55. *MYSQLDESCONECTA
  56.  
  57.          CALL "MYSQLDESCONECTA" USING W-CONEXAO    *> Handle para encontrar a FCD-AREA desta conexão
  58.                                       W-CURSOR     *> Handle das definições para o cursor, pode não
  59.                                                     *> vir informado.
  60.                                       ESTADO.
  61. *--------------------------------------------      
  62.          EXIT PROGRAM.

*>Update
Código COBOL:
  1. *----------------------
  2. *    MYSQLCONECTA
  3.      CALL "MYSQLCONECTA" USING W-ARQUIVOS  *> Variavel com os parametros para estabelecer a conexão
  4.                                W-CONEXAO   *> Retorna handle para encontrar a FCD-AREA da conexão
  5.                                ESTADO.   *> Status de retorno    
  6.      DISPLAY  "ESTADO conecta: " , ESTADO.    
  7. *------------        
  8. *> Select
  9.          MOVE 1 TO W-QRTM.
  10.          MOVE SPACES TO W-CMD.
  11.          MOVE "EMPRESADA MODELO 8 update"   TO Q-Nombre.
  12.          MOVE "Dirección con letra ñÑ"       TO Q-Dire.
  13.           STRING
  14.             "UPDATE  empresas SET "  
  15.  
  16.             "Nombre_empresa = "      
  17.             "'"  
  18.             Q-Nombre          
  19.             "'"            
  20.             ","                      
  21.             "Direccion_empresa = "      
  22.             "'"
  23.             Q-Dire
  24.             "'"
  25.             " where id_empresa = 31"
  26.              ';' delimited by size                          
  27.                  INTO W-CMD    WITH POINTER W-QRTM
  28.          END-STRING.
  29.          display " W-QRTM : " , W-QRTM.
  30.          DISPLAY  "W-CMD conecta: " , W-CMD(1:W-QRTM).    
  31.          stop " "
  32.  
  33. *------------        
  34. *MYSQLCOMANDO
  35.  
  36.          CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
  37.                                   W-CMD        *> Comando a ser executado
  38.                                   W-CURSOR     *> Handle do retorno do comando
  39.                                   W-QRTM       *> Tamanho do comando a ser executado
  40.                                   ESTADO.      *> Status de retorno
  41.      
  42.          DISPLAY  "ESTADO MYSQLCOMANDO: " , ESTADO.          
  43.          DISPLAY  "comando W-CURSOR: " , W-CURSOR.        
  44.          DISPLAY "ST-ERR : " , ST-ERR.  
  45.          stop " ".
  46. *------------        
  47. *MYSQLLIBERACURSOR
  48.          CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
  49.                                         W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
  50. *------------        
  51. *MYSQLDESCONECTA
  52.  
  53.          CALL "MYSQLDESCONECTA" USING W-CONEXAO    *> Handle para encontrar a FCD-AREA desta conexão
  54.                                       W-CURSOR     *> Handle das definições para o cursor, pode não
  55.                                                     *> vir informado.
  56.                                       ESTADO.
  57. *--------------------------------------------    
Saludos ..



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.