Ajuda: possivel BUG

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Ajuda: possivel BUG

Mensagem por diego1504 »

Estou tendo um problema muito estranho com meu código. Gostaria de saber se já ocorreu com algum de vocês.

existe estre trecho do codigo:

if !COMISREC(M->NU_FIANCA)
do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif

COMISREC da diferente, logo ele entra na parte que tá do BAIXA_COMIS...Ai que o bicho pega ao inves de ele ir para esta parte PROCEDURE BAIXA_COMIS, ou seja cabeçalho da procedure e mandar bala. O codigo milagrosamente pula para a uma linha nada a ver logo acima da procedure BAIXA_FIANCA e começa a executar a procedure BAIXA_FIANCA

Bom eu tentei asteriscar o do BAIXA_FIANCA, mas mesmo assim o codigo vai parar lá.

Eu estou batante preocupado com isso? alguem pode me ajudar

desde de já agradeço
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Bem Vindo ao Forum !!!
if !COMISREC(M->NU_FIANCA)
do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif
Tche, não entendi bem o que vc quiz mostrar ai nesse seu exemplo.....mas tudo bem..veja que vc diz que mesmo colocando asterisco ele executa a função.....deve ter algo errado por ai, o seu sistema não deve esta compilando.

Qual versão do Clipper vc esta usando ?

Nos de mais detalhe e post sua função completa para analisar melhor...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Mensagem por diego1504 »

Eu estou usando o Clipper 5.3
compilador Blinker 1.00

Vou tentar explicar melhor.

if !COMISREC(M->NU_FIANCA)
do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif

Me baseando no debug do clipper o programa esta executando da seguinte maneira.

A linha de execução do debug fica em cima do do BAIXA_COMIS. Ao inves de ele executar a PROCEDURE BAIXA_COMIS, o programa salta para a linha logo acima ao PROCEDURE BAIXA_FIANCA.

Uma tentativa minha de isolar o erro eu asterisquei a linha do BAIXA_FIANCA. Porém mesmo assim ele continua indo para o mesmo lugar.

O mais estranho é que estando ou não estando asteriscado a "linha da execução do debug" não fica em cima da chamado da procedure do BAIXA_FIANCA..Logo eu não entendo como o programa executa a PROCEDURE BAIXA_FIANCA sendo que eu não chamei ela.

Ou seja:

Ao inves do programa executar esta procedure:

* --------------------
PROCEDURE BAIXA_COMIS
* --------------------

sele CADCOM
CADCOM->(Dbseek(M->NU_FIANCA))
M->FIANCA_COM := CADCOM->NU_FIANCA
.
.
.

ele vem e executa este pedaço

*------------------
PROCEDURE BAIXA_FIANCA

M->DT_CONTAB = DATAW
M->DATANT = CTOD(' / / ')
M->COD_EVENTO = val(space(02))
M->CD_FILIAL = val(space(7))
M->VL_CONTAB = val(space(14) + '.' + space(2))
.
.
.




O codigo esta muito grande..se eu postar acho que vai dar umas 4 paginas sem brincadeira
:'(


Muito Obrigado pela ajuda :))
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Daniel, não sei qual seu grau de experiencia com o clipper, mas não me leve a mal pelas dicas....tente excluir todos os seus OBJ e recompilar o seu sistema....se vc colocar o asterisco em BAIXA_FIANCA ...ele deve ignorar o mesmo. Se ainda assim compilar sem dar erro algum e apresentar o mesmo problema acredito que seja algum problema de logica...

Veja Tb. que vc esta usando assim:

Código: Selecionar todos

if !COMISREC(M->NU_FIANCA )
   do BAIXA_COMIS
endif
do BAIXA_FIANCA
do MONTA_ARQ_CONF
endif 
Como não sei sua Logica e nem vi seu codigo imagino que deveria ser algo mais ou menos assim:

Código: Selecionar todos

if !COMISREC(M->NU_FIANCA)
   do BAIXA_COMIS
else
   do BAIXA_FIANCA
   do MONTA_ARQ_CONF
endif 
Um Conselho que não vai resolver seu problema mas vc vai ter outros ganhos.....uso o Blinker 7.0 , nele vc tem varias opções a mais que não tem no 1.00. ex: compressão do EXE...diminui drasticamente o tamanho do seu EXE.

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Mensagem por diego1504 »

Ok...vou deletar os OBJ e instalar o blinker 7.0 para ver no que da.

Obrigado Leonardo
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tche, sendo bem sincero...seu problema ainda não vai se resolver apenas deletando seus .OBJ. Mas qualquer posta ai que resolvemos..

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
diego1504
Usuário Nível 1
Usuário Nível 1
Mensagens: 16
Registrado em: 11 Jul 2007 23:34
Localização: São Paulo - SP

Mensagem por diego1504 »

Cara resolveu!!!!! Acredite!!!

Um ato simples deste acabou com o bug.

Acabei de indetificar o erro na lógica que estava perseguindo. Mas tudo graças a sua ajuda.

Acredito que o Obj anterior estava corrompido sei la...quando compilei o novo imediatemente o debug passou a agir certo.




:)) Valeu Leonardo Problema Resolvido
Diego Maciel
-----------
Clipper 5.3 + Blinker 6
COBOL + JCL + CICS + DB2 + VSAM
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Que bom que resolveu. Mas quando coisas estranhas assim acontecem, me pergunto se não haveria algum problema com o HD. Será?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder