PDA

Ver la Versión Completa : [Compilador] Acesso direto Fujitsu Cobol / MariaDB/ MySql


Joseg
6 de diciembre de 2019, 13:57
Para quem estiver interessado:
Cobol Acessando Mysql (http://www.mercosoft.com.br/index.php?pagina=inicial)

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

77 W-ARQUIVOS PIC X(250).
77 W-STATUS PIC X(02).
77 W-QRTM PIC 9(09) COMP-5.
77 W-CMD PIC X(8192).
01 W-CONEXAO USAGE POINTER.
01 W-CURSOR USAGE POINTER.

01 ESTADO PIC X(02).
88 STAT-ERRO VALUE X"3100" THRU X"3943"
X"3945" THRU X"39EE".
88 DUPLICADO VALUE "22".
88 CRIAR-ARQUIVO VALUE X"3335" X"3913".
88 JA-ABERTO VALUE "41" X"398D".
88 REINDEXAR VALUE X"3929" X"3912".
88 ESTA-ABERTO VALUE "12".
88 FOI-CRIADO VALUE "05".
88 NAO-ENCONTRADO VALUE "23".
88 FINAL-ARQUIVO VALUE "10".
88 CHAVE-DUPLICADA VALUE "02".

01 RESTADO REDEFINES ESTADO.
02 ST-K01 PIC X(01).
02 ST-K02 PIC X(01).
02 RST-K02 REDEFINES ST-K02.
03 ST-ERR PIC 9(01) COMP-3.

*> Select

*-------------------
* MYSQLCONECTA
CALL "MYSQLCONECTA" USING W-ARQUIVOS *> Variavel com os parametros para estabelecer a conexão
W-CONEXAO *> Retorna handle para encontrar a FCD-AREA da conexão
ESTADO. *> Status de retorno
DISPLAY "ESTADO conecta: " , ESTADO.
*------------
* Select
MOVE 1 TO W-QRTM.
MOVE SPACES TO W-CMD.
STRING 'select Id_empresa, Nombre_empresa, Password_empresa from empresas'
';'
delimited by size
INTO W-CMD WITH POINTER W-QRTM
END-STRING.
display " W-QRTM : " , W-QRTM.


*------------
*MYSQLCOMANDO
CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
W-CMD *> Comando a ser executado
W-CURSOR *> Handle do retorno do comando
W-QRTM *> Tamanho do comando a ser executado
ESTADO. *> Status de retorno

DISPLAY "ESTADO MYSQLCOMANDO: " , ESTADO.
stop " ".

*------------
IF W-CURSOR NOT = NULL
PERFORM UNTIL ESTADO NOT = "00"

*> ------------------------
*> MYSQLRETORNA
MOVE ZEROS TO W-QRTM
CALL "MYSQLRETORNA" USING W-CONEXAO *> Handle para recuperar FCD-AREA
W-CURSOR *> Endereço estrutura do retorno (cursor)
W-QRTM *> Tamanho do buffer sendo retornado
ESTADO *> Status de retorno
W-CMD *> Buffer contendo o resultado sendo retornado. Ter cuidado no programa

IF ESTADO = "00"
* MOVE W-CMD TO *> aca estan lo datos
display W-CMD(1:W-QRTM)
END-IF
END-PERFORM
END-IF.

*------------
*MYSQLLIBERACURSOR
CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
*------------
*MYSQLDESCONECTA

CALL "MYSQLDESCONECTA" USING W-CONEXAO *> Handle para encontrar a FCD-AREA desta conexão
W-CURSOR *> Handle das definições para o cursor, pode não
*> vir informado.
ESTADO.
*--------------------------------------------
EXIT PROGRAM.


*>Update

*----------------------
* MYSQLCONECTA
CALL "MYSQLCONECTA" USING W-ARQUIVOS *> Variavel com os parametros para estabelecer a conexão
W-CONEXAO *> Retorna handle para encontrar a FCD-AREA da conexão
ESTADO. *> Status de retorno
DISPLAY "ESTADO conecta: " , ESTADO.
*------------
*> Select
MOVE 1 TO W-QRTM.
MOVE SPACES TO W-CMD.
MOVE "EMPRESADA MODELO 8 update" TO Q-Nombre.
MOVE "Dirección con letra ñÑ" TO Q-Dire.
STRING
"UPDATE empresas SET "

"Nombre_empresa = "
"'"
Q-Nombre
"'"
","
"Direccion_empresa = "
"'"
Q-Dire
"'"
" where id_empresa = 31"
';' delimited by size
INTO W-CMD WITH POINTER W-QRTM
END-STRING.
display " W-QRTM : " , W-QRTM.
DISPLAY "W-CMD conecta: " , W-CMD(1:W-QRTM).
stop " "

*------------
*MYSQLCOMANDO

CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
W-CMD *> Comando a ser executado
W-CURSOR *> Handle do retorno do comando
W-QRTM *> Tamanho do comando a ser executado
ESTADO. *> Status de retorno

DISPLAY "ESTADO MYSQLCOMANDO: " , ESTADO.
DISPLAY "comando W-CURSOR: " , W-CURSOR.
DISPLAY "ST-ERR : " , ST-ERR.
stop " ".
*------------
*MYSQLLIBERACURSOR
CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
*------------
*MYSQLDESCONECTA

CALL "MYSQLDESCONECTA" USING W-CONEXAO *> Handle para encontrar a FCD-AREA desta conexão
W-CURSOR *> Handle das definições para o cursor, pode não
*> vir informado.
ESTADO.
*--------------------------------------------

Saludos ..

Joseg
1 de octubre de 2024, 15:35
01 ESTADO PIC X(02).
88 STAT-ERRO VALUE X"3100" THRU X"3943"
X"3945" THRU X"39EE".
88 DUPLICADO VALUE "22".
88 CRIAR-ARQUIVO VALUE X"3335" X"3913".
88 JA-ABERTO VALUE "41" X"398D".
88 REINDEXAR VALUE X"3929" X"3912".
88 ESTA-ABERTO VALUE "12".
88 FOI-CRIADO VALUE "05".
88 NAO-ENCONTRADO VALUE "23".
88 FINAL-ARQUIVO VALUE "10".
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:

MOVE LOW-VALUES TO W-WHERE
STRING
"`SUBCOL` = "
"'"
Wcol
"'"
" AND "
"`SUBFEC` > 20220101"
DELIMITED BY SIZE
INTO W-WHERE
CALL "MONTAWHERE" USING W-WHERE.
start xx ...
read xx ...




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

77 W-ARQUIVOS PIC X(250).
77 W-STATUS PIC X(02).
77 W-QRTM PIC 9(09) COMP-5.
77 W-CMD PIC X(8192).
01 W-CONEXAO USAGE POINTER.
01 W-CURSOR USAGE POINTER.

01 ESTADO PIC X(02).
88 STAT-ERRO VALUE X"3100" THRU X"3943"
X"3945" THRU X"39EE".
88 DUPLICADO VALUE "22".
88 CRIAR-ARQUIVO VALUE X"3335" X"3913".
88 JA-ABERTO VALUE "41" X"398D".
88 REINDEXAR VALUE X"3929" X"3912".
88 ESTA-ABERTO VALUE "12".
88 FOI-CRIADO VALUE "05".
88 NAO-ENCONTRADO VALUE "23".
88 FINAL-ARQUIVO VALUE "10".
88 CHAVE-DUPLICADA VALUE "02".

01 RESTADO REDEFINES ESTADO.
02 ST-K01 PIC X(01).
02 ST-K02 PIC X(01).
02 RST-K02 REDEFINES ST-K02.
03 ST-ERR PIC 9(01) COMP-3.

*> Select

*-------------------
* MYSQLCONECTA
CALL "MYSQLCONECTA" USING W-ARQUIVOS *> Variavel com os parametros para estabelecer a conexão
W-CONEXAO *> Retorna handle para encontrar a FCD-AREA da conexão
ESTADO. *> Status de retorno
DISPLAY "ESTADO conecta: " , ESTADO.
*------------
* Select
MOVE 1 TO W-QRTM.
MOVE SPACES TO W-CMD.
STRING 'select Id_empresa, Nombre_empresa, Password_empresa from empresas'
';'
delimited by size
INTO W-CMD WITH POINTER W-QRTM
END-STRING.
display " W-QRTM : " , W-QRTM.


*------------
*MYSQLCOMANDO
CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
W-CMD *> Comando a ser executado
W-CURSOR *> Handle do retorno do comando
W-QRTM *> Tamanho do comando a ser executado
ESTADO. *> Status de retorno

DISPLAY "ESTADO MYSQLCOMANDO: " , ESTADO.
stop " ".

*------------
IF W-CURSOR NOT = NULL
PERFORM UNTIL ESTADO NOT = "00"

*> ------------------------
*> MYSQLRETORNA
MOVE ZEROS TO W-QRTM
CALL "MYSQLRETORNA" USING W-CONEXAO *> Handle para recuperar FCD-AREA
W-CURSOR *> Endereço estrutura do retorno (cursor)
W-QRTM *> Tamanho do buffer sendo retornado
ESTADO *> Status de retorno
W-CMD *> Buffer contendo o resultado sendo retornado. Ter cuidado no programa

IF ESTADO = "00"
* MOVE W-CMD TO *> aca estan lo datos
display W-CMD(1:W-QRTM)
END-IF
END-PERFORM
END-IF.

*------------
*MYSQLLIBERACURSOR
CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
*------------
*MYSQLDESCONECTA

CALL "MYSQLDESCONECTA" USING W-CONEXAO *> Handle para encontrar a FCD-AREA desta conexão
W-CURSOR *> Handle das definições para o cursor, pode não
*> vir informado.
ESTADO.
*--------------------------------------------
EXIT PROGRAM.


*>Update

*----------------------
* MYSQLCONECTA
CALL "MYSQLCONECTA" USING W-ARQUIVOS *> Variavel com os parametros para estabelecer a conexão
W-CONEXAO *> Retorna handle para encontrar a FCD-AREA da conexão
ESTADO. *> Status de retorno
DISPLAY "ESTADO conecta: " , ESTADO.
*------------
*> Select
MOVE 1 TO W-QRTM.
MOVE SPACES TO W-CMD.
MOVE "EMPRESADA MODELO 8 update" TO Q-Nombre.
MOVE "Dirección con letra ñÑ" TO Q-Dire.
STRING
"UPDATE empresas SET "

"Nombre_empresa = "
"'"
Q-Nombre
"'"
","
"Direccion_empresa = "
"'"
Q-Dire
"'"
" where id_empresa = 31"
';' delimited by size
INTO W-CMD WITH POINTER W-QRTM
END-STRING.
display " W-QRTM : " , W-QRTM.
DISPLAY "W-CMD conecta: " , W-CMD(1:W-QRTM).
stop " "

*------------
*MYSQLCOMANDO

CALL "MYSQLCOMANDO" USING W-CONEXAO *> Handle para recuperar FCD-AREA ------W-MysqlComando
W-CMD *> Comando a ser executado
W-CURSOR *> Handle do retorno do comando
W-QRTM *> Tamanho do comando a ser executado
ESTADO. *> Status de retorno

DISPLAY "ESTADO MYSQLCOMANDO: " , ESTADO.
DISPLAY "comando W-CURSOR: " , W-CURSOR.
DISPLAY "ST-ERR : " , ST-ERR.
stop " ".
*------------
*MYSQLLIBERACURSOR
CALL "MYSQLLIBERACURSOR" USING W-CONEXAO
W-CURSOR. *> Handle para encontrar a FCD-AREA desta conexão
*------------
*MYSQLDESCONECTA

CALL "MYSQLDESCONECTA" USING W-CONEXAO *> Handle para encontrar a FCD-AREA desta conexão
W-CURSOR *> Handle das definições para o cursor, pode não
*> vir informado.
ESTADO.
*--------------------------------------------

Saludos ..