Página 9 de 18

Migrar Clipper para Harbour.

Enviado: 03 Jul 2015 22:56
por Walterley
Olá pessoal.

Compilei um programa em Clipper gerado pelo Gas 4.0 e dá erro... Será que alguém pode me dar alguma dica?

Estou tentando migrar alguns sistemas grandes desenvolvidos em Clipper a cerca de 15 anos... Inicialmente usei um editor de texto para programar a unha, como um amansador de bits. Posteriormente conheci o Gaspro e usei todas as versões que eles lançaram... Sensacional. chegou uma época que alguns clientes começaram a pedir novas funcionalidades, transmissão de emails etc. Pensei em migrar para o Gas2007 e comprei o programa, mas o falecimento do meu sócio e parceiro de desenvolvimento me fez rever todas as estratégias e manter os programas em clipper. São programas muito grandes, com centenas de rotinas para controle de concessionaria de veículos, com oficina, locadora e convertedora de veículos em uma só estrutura e um programa de CPP industrial que engloba todas as rotinas de uma indústria de médio porte. Não dá para mudar sistemas assim, no grito... Alguns clientes já estão com muitos terminais plugados ao sistema e outros terminais em cidades distantes, operando como terminal remoto, usando o acesso remoto do windows 2000... Qualquer alteração de telas, modificação de rotinas etc. exigirá treinamento muito trabalhoso e caro... Então, a 3 dias achei este site e já compilei o primeiro programa, OFICINA, gracas a leitura dos posts de todos os membros deste fórum. A compilação aconteceu com perfeição, deu alguns errinhos no início mas em menos de 72 horas cheguei a uma compilação com a geração do executável, como vocês podem ver abaixo...

(...)

Lines 3225, Functions/Procedures 43
Generating C source output to '.hbmk\win\mingw\OFI_FUN2.c'... Done.
Compiling 'OFI_OUTR.PRG'...
Lines 865, Functions/Procedures 5
Generating C source output to '.hbmk\win\mingw\OFI_OUTR.c'... Done.
Ultimate Packer for eXecutables
Copyright (C) 1996 - 2010
UPX 3.07w Markus Oberhumer, Laszlo Molnar & John Reiser Sep 08th 2010

File size Ratio Format Name
-------------------- ------ ----------- -----------
3989902 -> 1446798 36.26% win32/pe OFICINA.exe

Packed 1 file.

c:\Users\Walterley\gas4harbour>

Mas o executável dá uma infinidade de erros. Ativei o degug e encontrei os erros abaixo, que iniciam no arquivo principal, quando o programa tenta montar a tela com janelas de mensagens.

Vejam a lista de erros:

Erro irrecuperável 9003: Muitas chamadas recursivas ao manipulador de erros
Called from TYPE(0)
Called from ERROMSG(1075) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from MENUV(2821) in GASP40HB.PRG
Called from DBOX(1693) in GASP40HB.PRG
Called from ERROMSG(1162) in GASP40HB.PRG
Called from (b)ERRORSYS(2889) in OFI_PROC.PRG
Called from LEN(0)
Called from MAIN(141) in OFICINA.PRG

As chamadas para o gasp4hb.prg são para a rotina de apresentação das mensagens na tela, em uma janela apropriada com cores e dimensões determinadas através de variáveis que são passadas pelo ofi_proc.prg. Parece que o programa principal não passou todas as variáveis ou passou valores errados para o GASP40HB.PRG

Alguém já vou isto :)´ ? e pode me dar umas dicas de como resolver?

Migrar Clipper para Harbour.

Enviado: 07 Jul 2015 11:16
por Itamar M. Lins Jr.
Ola!
Isso não é um problema de migração clipper.
Sua rotina errorsys está com erro. Isso é a causa da recursão ai...
É melhor abrir outro post... esse aqui está cheio de resposta p/ problemas que não faz parte da migração.
Migração é apenas para entender o uso do [x]Harbour, saber instalar e usar ele, sem mexer em nada do código principal.
A parte de impressão,GTWVT... etc já é o algo mais do [x]Harbour.

E também esse tópico está um pouco desatualizado, veja a data que ele foi criado, tem coisas importantes nele, e muita coisa que não faz parte da migração.


Saudações,
Itamar M. Lins Jr.

Migrar Clipper para Harbour.

Enviado: 09 Jul 2015 15:22
por Walterley
Olá Itamar.

Obrigado por responder, mas a rotina errosys está funcionando corretamente. Este programa funciona perfeitamente em dezenas de clientes e já foi testado em rede com até 10 terminais. A rotina é chamada diversas vezes pelo programa Oficina para abrir o arquivo de parâmetros do sistema...

Alterei o programa principal, eliminando esta chamada e surge erro logo depois, ao tentar ler os arquivos de configuração do terminal, e assim por diante.

Pensei ser um programa de migração, alguma alteração que eu deveria fazer nos fontes, mudar funções ou algo parecido.

Vou novamente encerrar esta experiência com o Harbour, a documentação que encontrei sobre o sistema é muito pouca, não existe um manual descritivo sobre as funções e sobre as chaves para compilação e tratamento dos erros em tempo de criação e execução dos programas compilados, assim como não existem informações sobre bibliotecas.

Fico grato pela sua boa vontade.

Walterley Neves

Migrar Clipper para Harbour.

Enviado: 09 Jul 2015 18:02
por Itamar M. Lins Jr.
A proposta do Harbour é ser 100% compatível com clipper, até os erros do clipper(alguns) o Harbour tem.
Agora, para rodar em 32/64Bits e no OS windows/Linux/etc... ele tem muito mais coisas que o clipper.
Se vc colocar a linha em questão que está dando o erro... e não duvidar que pode ser um erro por ai, ou mesmo que seja um problema de migração, fica difícil... até porque eu ainda não vi um problema de compatibilidade com clipper não ser corrigido, todos que foram ou são apresentados o pessoal corrige ou tem uma resposta, e dependendo do erro a correção no Harbour é quase instantânea.
Não desanime, o Harbour será para você uma grande ferramenta, é só ter mais paciência ai e ir postando os códigos para nós, que se soubermos resolver, iremos ajudar.
Pode ser n fatores, strings com nomes acima de 10 caracteres etc...
Se vc conseguir isolar o problema melhor ainda.

Tem erros que o Clipper não pega mas que no Harbour aparecem.
a documentação que encontrei sobre o sistema é muito pouca, não existe um manual descritivo sobre as funções e sobre as chaves para compilação e tratamento dos erros em tempo de criação e execução dos programas compilados, assim como não existem informações sobre bibliotecas.
Tudo isso existe e tem muita coisa, muitos exemplos. Especifique o seu problema.

A documentação por exemplo é toda a do CLIPPER e as outras coisas é só perguntar, como eu disse seja mais específico.
A internet está cheia de exemplos e aqui no forum idem. O próprio fonte do sistema já é um manual, e tem as pastas de exemplos... De um ponto de vista Harbour é o Clipper com muito mais comandos/funções.

O GasPro/Clipper na era DOS/Pentium faz uso de funções que não se usa mais, para diminuir a carga da CPU, todas essas minúcias devem ser observadas.

No mais, e vc ir postando no forum as linhas que por ventura tenham problemas.

Saudações,
Itamar M. Lins Jr.

Migrar Clipper para Harbour.

Enviado: 10 Jul 2015 22:56
por JoséQuintas
Deu um erro que fez entrar na errorsys, que contém uma rotina pra resolver esse erro.
A rotina acabou gerando outro erro, e entrou novamente na errorsys para tratar esse novo erro - 2 erros pendentes
Isso foi se repetindo... e ficaram tantos erros pendentes que estourou o limite.
Comece pelo primeiro erro, na Main, e não pelo último.

Acho que o maior desafio da migração é entender uma coisa simples:
O Harbour não é o Clipper, é outra linguagem de programação.
É a única linguagem de programação aonde você pode aproveitar 99.9% dos seus fontes Clipper.
Mesmo funcionando 99.9%, continua não sendo Clipper.
No momento é um erro dentro desse 0.1% de diferença.
É ajustar e ir em frente.
Com certeza tem uma forma que funciona tanto no Harbour quando no Clipper, mas não essa.

Em todo caso:
A Errorsys foi criada pra mostrar erros, e não pra consertar erros.
Seus erros indicam que tá errado no aplicativo, tá errado na errorsys, e tá errada a rotina que tenta consertar.
Se considerar isso... aonde tá o erro? No Clipper aceitar ou no Harbour não aceitar?

Desative a errorsys, nem que seja temporariamente, e verifique o que acontece tanto no Clipper quanto no Harbour.

A propósito, o primeiro erro:
Called from LEN(0)
Called from MAIN(141) in OFICINA.PRG

Isso significa que usou o Len() pra alguma coisa errada, em Main, linha 141, do fonte oficina.prg.
É um bom começo pra dar uma olhada.
E porque a errorsys deixou isso passar ou tentou consertar.... é outro lugar pra dar uma olhada, caso não a desative.

Migrar Clipper para Harbour.

Enviado: 11 Jul 2015 10:10
por Itamar M. Lins Jr.
Ola!
é outra linguagem de programação.
A linguagem é a mesma.
A forma de como o Harbour faz internamente é diferente. E tem mais comandos muito mais comandos e funções.
Se é para ser compátivel com clipper porque não é a mesma linguagem ?
É mesma coisa de dizer que o Free Pascal não é Object Pascal.
Para simplificar podemos dizer que a linguagem do Harbour e do Clipper é xBase, uma vez que tem comandos do FoxPro/Dbase/Clipper...
https://pt.wikipedia.org/wiki/XBase
As principais implementações da família xBase que utilizam este tipo de arquivo, sintaxe e semântica na linguagem de programação são:

Dialetos cujo desenvolvimento permanece ativo:

Harbour (alternativa de software livre com opção de distribuição comercial e suporte profissional1 )
xHarbour (alternativa de software livre com opção de distribuição comercial e suporte profissional)
Visual FlagShip;
Visual Objects;
Vulcan.NET;
Visual dBase;
xBase++;
DBFree (alternativa de software livre para aplicações web).
Saudações,
Itamar M. Lins Jr.

Migrar Clipper para Harbour.

Enviado: 20 Jul 2015 18:14
por Walterley
Olá pessoal.

Continuo pastando nesta migração...

Depois de 15 dias lendo os manuais e o fórum, reinstalei o Harbour e o Borland. Reconfigurei os arquivos de batch e configuração do borland, apaguei todos os arquivos *.c e *.o dos diretórios do .hbmk reví o programa, acrescentado as linhas para que todos os prg iniciem como procedures e recompilei tudo...

Não funcionou, esperei mais de duas horas, repeti várias vezes revisando todos os passos, o compilador passa por quase tudo e pára na seguinte linha, sem dar nenhuma mensagem de erro:

(...)

../../../.hbmk/win/mingw/OFI_PROC.c ../../../.hbmk/win/mingw/OFI_FUNC.c ../../../.hbmk/win/mingw/OFI_FUN2.c ../../../.hbmk/win/mingw/OFI_OUTR.c ../../../.hbmk/win/mingw/_hbmkaut_GASP40HB.c

Antes disto, compilei o programa gascomp.prg e tudo funcionou, gerando o executável normalmente...

O gasp40hb.prg está exatamente igual ao que acompanha o gas4harbour indicado no fórum.

Por favor, alguém sabe me indicar como posso encontrar o erro no compilador? Já estou usando a opção -trace mas não recebo nenhuma informação que me de uma pista do problema.

Fico, antecipadamente agradecido.

Migrar Clipper para Harbour.

Enviado: 20 Jul 2015 18:26
por Walterley
Caro amigo José Quintas...

Obrigado por responder.

Realmente o programa entra na rotina de erro, mas não está em um loop, como aparenta... Compilei com o -debug e o programa passa por diversos passos, tentando abrir um arquivo de "ação", do Gaspro40... É uma rotina que permite gravar secções de treinamento automatizado do programa e, quando chamado na linha de comando (ex.: nome_do_executável "D", ou nome_do_executável A), dispara uma rotina de apresentação de mensagem pré gravadas para ensinar o operador... Ele encontra a varável adicionada ao comando e tenta abrir a rotina, onde "copia" as linhas do arquivo indicado como "TREINAMENTO" e começa a executar... É neste ponto, quando ele faz o pré-fetch dos caracteres gravados no arquivo é que o programa entra em loop, pois não consegue ler nada.

Retirei esta rotina, mas desde então, começou a dar um erro no gasp40hb.prg, no final da compilação como expliquei em uma postagem anterior, nesta data.

Atenciosamente,

Walterley.
:{ :{ :)Pos

Migrar Clipper para Harbour.

Enviado: 21 Jul 2015 02:18
por JoséQuintas
OK, me expressei mal.
Linguagem de programação é o dialeto.

Corrigindo:
Por mais parecido que seja com o Clipper, é outro software, não é o Clipper.
Basta lembrar que se fosse exatamente igual, só funcionaria no DOS.
E se não é exatamente igual... então isso já mostra que há diferença.


Voltando ao erro:
Disse que reinstalou tudo, então melhor começar do zero.
Como a última lista é de fontes em C, é possível que não esteja encontrando o compilador C.

Lembrando:
O Harbour transforma em C, quem compila é o Borland C (mencionou que reinstalou o Borland).
Dá uma conferida se tem a pasta do compilador C no PATH.

Acrescente no hbmk2 -trace
Com isso pode ver cada comando, e ver o último.

Lembrando também que é bom configurar a janela DOS pra muitas linhas, caso o comando seja muito grande.

Migrar Clipper para Harbour.

Enviado: 21 Jul 2015 15:47
por Walterley
Caro José Quintas.


Sim, eu entendi todas as condições básicas para o Harbour compilar o programa, tanto que testei com um programa de terceiros (gascomp.prg, que vem como o gas4harbour.exe) e consegui completar o processo. Este fato, me parece indicar que os programas e as configurações estão corretas. Veja que este programa usa o mesmo caminho para compilação do hbmk2, usando o comando hbmk2 gascomp.prg -lhbwin -lxhk -compr=yes, enquanto, na compilação do oficina.hbp, apenas ativo hbmk2 oficina.hbp -trace -debug (ou sem o -debug, para testar).

O path está configurado assim:

c:\Harbour>path

PATH=C:\Borland\bcc55;C:\Borland\BCC55\BIN;C:\hb32\bin;C:\hb32\comp\mingw\bin;C:
\hb32\BIN;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Micr
osoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\W
indows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\S
ystem32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Pr
ogram Files (x86)\Internet Explorer;C:\Program Files\Microsoft\Web Platform Inst
aller\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Progr
am Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Mi
crosoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Skype\Phone\;C:\TDM-GC
C-64\bin;;

E é isto que me causa estranheza: compila o gascomp.prg, mas não compila o oficina.hbp.

Se você, ou outro colega tiver alguma sugestão ou programa de teste que eu possa compilar aqui, por favor me informem. Eu continuarei lendo os manuais e o fórum para descobrir onde estou errando.
:-´

Migrar Clipper para Harbour.

Enviado: 23 Jul 2015 18:43
por Walterley
Mudei a ordem de abertura das bibliotecas dos compiladores instalados neste computador...

Agora o Borland e o HB32 estão no final, como pode ser visto abaixo. Com isto, o programa voltou a compilar até o final, criando o executável... Que, quando executado, dá o mesmo erro de 20 dias atrás...


c:\Harbour>path
PATH=C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft
Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Window
s Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System
32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Live\Shared;C:\Program
Files (x86)\Internet Explorer;C:\Program Files\Microsoft\Web Platform Installer
\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Fi
les (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microso
ft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\Skype\Phone\;C:\TDM-GCC-64\
bin;C:\hb32\bin;C:\hb32\comp\mingw\bin;C:\hb32\BIN;C:\Borland\bcc55;C:\Borland\B
CC55\BIN;


c:\Harbour>

Pelo menos não trava mais no compilador, agora é comigo.

Migrar Clipper para Harbour.

Enviado: 23 Jul 2015 23:02
por Itamar M. Lins Jr.
Ola!
Como vc pode ver, tem no seu computador dois compiladores diferentes.
Tem o BCC e o MingW.
Está usando os dois ?

Melhor escolher apenas um.

Saudações,
Itamar M. Lins Jr.

Migrar Clipper para Harbour.

Enviado: 24 Jul 2015 00:25
por JoséQuintas
Reparou bem.
É bem possível que agora esteja sendo usado o mingw, que vém primeiro no path.
E se for isso, melhor até abandonar o bcc, que deixou de ser uma boa opção.

Migrar Clipper para Harbour.

Enviado: 26 Jul 2015 19:01
por Walterley
Olá Itamar e José Quintas...


Obrigado pelo apoio... Já consegui compilar o meu sistema em Harbour, usando o hbmk2 e Mingw...

Fiz pequenas alterações no sistema, para compatibilizar com o harbour, eliminando, por exemplo a rotina "COM_LOCK", do GAS.
e ajustei algumas linhas, seguindo outras sugestões no fórum para o funcionamento correto das telas de consulta com janela auxiliar ("J").

Até mesmo as consultas antigas e o arquivo de senhas estão funcionando. Testei em computadores I5 e core 2 duo, com Windows 7 64 bits e Windows XP.

Agora vou começar a aprender programar em harbour diretamente...

:{ :)Pos :D

Migrar Clipper para Harbour.

Enviado: 31 Jul 2015 00:00
por Walterley
Obrigado a todos pela boa vontade em ajudar-nos a compreender e empreender em Harbour...

Consegui completar a conversão de um sistema de Clipper para Harbour empregando indices NTX e dividindo a base de dados com programas em Clipper e Harbour... A ocupação do processador e da memória está dentro dos limites ideais... Só não consegui ainda ativar o mouse. Mas chegarei lá...

Cordiais saudações e agradecimentos a todos que contribuiram para este final feliz.

W.Neves
:|< :xau