Uso de Programa em linguagem Clipper para Linux
Moderador: Moderadores
Uso de Programa em linguagem Clipper para Linux
Bom dia pessoal.
Estou instalando o Biglinux no Pc da minha empresa, só que conversando com o técnico do meu programa particular, ele me disse que o programa não rodaria com o sistema Linux, pois a linguagem Clipper que é a do programa não aceita o Linux.
Pensei em utilizar o Wine HQ que é um emulador para rodar programas do Windows.
O que me dizem? Qual a melhor solução para eu continuar com o Linux e usar normalmente o meu programa?
Estou instalando o Biglinux no Pc da minha empresa, só que conversando com o técnico do meu programa particular, ele me disse que o programa não rodaria com o sistema Linux, pois a linguagem Clipper que é a do programa não aceita o Linux.
Pensei em utilizar o Wine HQ que é um emulador para rodar programas do Windows.
O que me dizem? Qual a melhor solução para eu continuar com o Linux e usar normalmente o meu programa?
Re: Uso de Programa em linguagem Clipper para Linux
Seja bem-vindo ao fórum. 
Acho que uma alternativa melhor seria o uso do DOSbox para Linux, que se presta justamente a rodar programas DOS. Tem para baixar na Net e é gratuito. Aliás, se não me falha a memória, já postaram algo a respeito no fórum.
Acho que uma alternativa melhor seria o uso do DOSbox para Linux, que se presta justamente a rodar programas DOS. Tem para baixar na Net e é gratuito. Aliás, se não me falha a memória, já postaram algo a respeito no fórum.
[]'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!
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!
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Apenas complementando o que o nosso querido amigo Maligno disse... 
Funcionar até funciona, mas não fica lá essas coisas.
Já tive diversos problemas com lentidão..Se vc não se importa do seu sistema ficar lento..
Inclusive, eu não aconselho nenhum de meus clientes a utilizarem emuladores desse tipo, na maioria das vezes só da dor de cabeça..
Fica aí a dica de alguem que já perdeu algumas noites de sono com tudo isso.
Vc já usa linux? tinha outro terminal com windows e agora vai ficar só um?
[]'s
Ana
Funcionar até funciona, mas não fica lá essas coisas.
Já tive diversos problemas com lentidão..Se vc não se importa do seu sistema ficar lento..
Inclusive, eu não aconselho nenhum de meus clientes a utilizarem emuladores desse tipo, na maioria das vezes só da dor de cabeça..
Fica aí a dica de alguem que já perdeu algumas noites de sono com tudo isso.
Vc já usa linux? tinha outro terminal com windows e agora vai ficar só um?
[]'s
Ana
Re: Uso de Programa em linguagem Clipper para Linux
Maligno, muito obrigado pelo boas vindas. Já utilizei a busca e não consegui encontra nada, vi o pessoal aconselhando esses emuladores, vamos ver vou testar.
anacatacombs, nuca usei linux, vou formatar meu PC (só tem 1 aqui) e resolvi usar linux pela proteção que ele tem na net.
Qdo vc diz que vai ficar lento, é muito? Vou usar apenas para imprimir notas e para organizar a saida de produto.
O que vc me aconselha?
anacatacombs, nuca usei linux, vou formatar meu PC (só tem 1 aqui) e resolvi usar linux pela proteção que ele tem na net.
Qdo vc diz que vai ficar lento, é muito? Vou usar apenas para imprimir notas e para organizar a saida de produto.
O que vc me aconselha?
Re: Uso de Programa em linguagem Clipper para Linux
Meu conselho: esqueça o Linux. Vai ganhar uma dor-de-cabeça com seu programa DOS em troca de uma suposta vantagem em termos de proteção na Net. Se fosse assim, ninguém usaria Windows. Instalar um firewall e manter o anti-vírus atualizado já proporciona proteção mais que suficiente. Isso é bem mais fácil e prático que começar a mexer num SO estranho e que, sabidamente, não tem qualidade para operação como desktop. E de brinde, seus programas DOS rodarão normalmente. Aliás, em seu lugar eu escolheria o XP (o mais rápido), caso ainda não tenha Windows instalado. No Vista (pesadão) e Windows 7 (mais leve - melhor, mas ainda em RC) o emulador DOS não conta mais com a opção fullscreen.
[]'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!
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!
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Apesar da descrição das rotinas parecerem simples, não sabemos a complexidade do desenvolvimento das rotinas... É realmente muito dificil de julgar o quão lento ficaria... talvez nem o pessoal que te dá suporte saberia responder, pois depende de vários fatores que fogem ao nosso conhecimento...
Se vc esta disposto a fazer novas experiencias... lembre-se de sempre fazer um backup completo do seu sistema antes de qualquer coisa.
[]'s
Ana
Se vc esta disposto a fazer novas experiencias... lembre-se de sempre fazer um backup completo do seu sistema antes de qualquer coisa.
[]'s
Ana
Re: Uso de Programa em linguagem Clipper para Linux
muito obrigado pela ajuda, me ajudaram bastante.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
Re: Uso de Programa em linguagem Clipper para Linux
Saudações!
Se for fazer um backup antes de formatar seu hd, não esqueça de verificar se existem arquivos com a extensão .MEM no teu sistema em Clipper. É comum fazer backup dos DBF, DBT, NTX, EXE e esquecer os .MEM...
Se for fazer um backup antes de formatar seu hd, não esqueça de verificar se existem arquivos com a extensão .MEM no teu sistema em Clipper. É comum fazer backup dos DBF, DBT, NTX, EXE e esquecer os .MEM...
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Eu lhe aconselharia usar o Ubuntu, é uma Distro muito rapida,evoluida e facil de instalar falando-se em Linux e tem a maior compatibilidade de drivers das distros Linux.gu_mazza escreveu: Estou instalando o Biglinux no Pc da minha empresa
Nativametne não roda mesmo em Linux.só que conversando com o técnico do meu programa particular, ele me disse que o programa não rodaria com o sistema Linux, pois a linguagem Clipper que é a do programa não aceita o Linux.
Já usei e uso até hoje o Wine, porem nunca usei programa DOS, somente programas 32Bits com visual Windows e nunca tive problemas.Pensei em utilizar o Wine HQ que é um emulador para rodar programas do Windows.
Minha opnião pessoal é você pegar esse programa Clipper e com poucas alterações compilar ele com Harbour e usar nativamente em Linux. No site do Harbour tem todas as plataformas compativeis.O que me dizem? Qual a melhor solução para eu continuar com o Linux e usar normalmente o meu programa?
http://www.harbour-project.com.br/
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
-
anacatacombs
- Membro Master

- Mensagens: 472
- Registrado em: 12 Jul 2005 16:53
- Localização: Cianorte-Paraná
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Leo, pelo que eu entendi, o nosso novo colega não é programador.. ele apenas tem um sistema em clipper locado, emprestado, comprado etc etc etc...
de qualquer forma, entre em contato com o suporte ou programadores do seu sistema e veja essa possibilidade...
de qualquer forma, entre em contato com o suporte ou programadores do seu sistema e veja essa possibilidade...
Re: Uso de Programa em linguagem Clipper para Linux
alxsts, o pessoal que crou meu programa me da assistencia sempre que preciso, e agora pedi ajuda e eles apenas me pediram para salvar duas pastas, uma que estava no C: mesmo e a outra que estava em sytem, ai eles configuram e instalam no meu pc pelo VCN.
sygecom, estava em duvida entre o Ununtu e o BigLinux, só que ai um amigo me aconselhou o Big por estar mais completo.
Com relação ao Harbour, li uns topicos de como fazer migração aqui no forum, só que entendo muito pouco de programação, na facu estoudei apenas programação em C++, pois agora vou aprender a programar CIs (circuito integrado). Mas mesmo assim obrigado pela diga, vou falar com o programador e mostrar para ele.
sygecom, estava em duvida entre o Ununtu e o BigLinux, só que ai um amigo me aconselhou o Big por estar mais completo.
Com relação ao Harbour, li uns topicos de como fazer migração aqui no forum, só que entendo muito pouco de programação, na facu estoudei apenas programação em C++, pois agora vou aprender a programar CIs (circuito integrado). Mas mesmo assim obrigado pela diga, vou falar com o programador e mostrar para ele.
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Oi Ana,anacatacombs escreveu:Leo, pelo que eu entendi, o nosso novo colega não é programador.. ele apenas tem um sistema em clipper locado, emprestado, comprado etc etc etc...
Hummm, não tinha percebido, mas esta valendo a dica para quem passar pelo caso do gu_mazza e for programador ou pelomenos tiver os fontes do sistema.
Realmente não posso lhe dizer com muita certeza, pois apenas uso Ubuntu, Centos e Mandriva. Mas esse negocio de Distro é assim mesmo, é tudo Linux, ai cabe a qualquer ver o que é melhor para si mesmo, se esta se achando bem com essa distro, siga em frente que é o melhor que tem a fazer.gu_mazza escreveu: sygecom, estava em duvida entre o Ununtu e o BigLinux, só que ai um amigo me aconselhou o Big por estar mais completo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Uso de Programa em linguagem Clipper para Linux
Foi instalado há dias em uma empresa que só tem equipamentos em Linux com UBUNTU, um sistema financeiro e de estoque, por mim produzido em Clipper e que está funcionando tudo perfeitamente.
Esclareço que o empresário desenvolve sistemas em Linux.
Esclareço que o empresário desenvolve sistemas em Linux.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
-
labaroazul
- Usuário Nível 2

- Mensagens: 83
- Registrado em: 26 Fev 2008 14:52
- Localização: São Paulo - SP
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Olá, amigos!
Já ouvi falar de um tal de "CLIP" (um compilador russo open-source de Clipper para Linux). O link em que vi sobre isso foi este:
http://www.vivaolinux.com.br/artigo/Com ... -no-Linux/
E há, também, um tutorial do site www.caclipperwebsite.com que, dentre outras coisas, dá um toque a respeito de sistemas multiusuários, informando algumas particularidades do código para LINUX. Transcrevo-o a seguir:
MULTIUSUÁRIO SEM MISTÉRIO
==========================
Para os iniciantes, lembrem que o Clipper só trabalha em rede com unidades mapeadas, isto é, transforme "\\servidor\diretorio\" para "F:", por exemplo. No Windows Explorer, clique com o botão direito do mouse sobre o diretório onde está o sistema no servidor, escolha "Mapear unidade", então associe uma letra de unidade ao diretório. Faça o link apontando para a unidade mapeada, funcionando nela.
Um dos tópicos que "endoidam o cabeção" de muita gente é aprender a programar em modo multiusuário, aprender a usar aliases e abandonar o select, bloquear registros e arquivos etc.
Lembre-se que tudo é muito fácil e simples quando se sabe, então acalme-se: você saberá! (palavra de quem já passou por isso).
Na programação multiusuário é fundamental o conhecimento de funções do clipper, primeira dica: para todo comando do clipper existe uma função equivalente, qualquer dúvida consulte o arquivo de include padrão do clipper /include/STD.CH, é lá onde todos os comandos se tornam operacionais devido a um tipo de tradução tipo "quando ver este comando, traduza para esta função".
Por que o enfoque nas funções? Porque você a partir de agora abandonará o comando select e trabalhará com aliases e os aliases só trabalham com funções.
Exemplo: CLI->(DBSEEK(nCODIGO))
Isto quer dizer: No arquivo de apelido (alias) CLI, pesquise (seek=dbseek()) o valor de nCODIGO, usando o arquivo de indice em uso.
A sintaxe da abertura de um arquivo em modo compartilhado (multiusuario) com a atribuição de um alias, seria o seguinte:
USE CLIENTE ALIAS CLI SHARED NEW
Onde CLIENTE é o nome do arquivo DBF e CLI é o alias (apelido dado a CLIENTE com o parâmetro ALIAS após o nome do arquivo). O resto (SHARED NEW) é sempre igual, é o que faz abrir em modo compartilhado.
Para usar o arquivo aberto em modo compartilhado você precisa usar o alias. Para usar o alias digite o alias -> e ação a ser realizada no arquivo entre parênteses.
Sintaxe: alias -> ( função() )
Note que a função vem sempre entre parênteses.
Não quero dizer que não se pode usar o vetusto SELECT, é claro que sim, mas você perde bastante objetividade e torna o programa menos legível. Veja um exemplo:
Gravar os campos VALOR, DATA, HORA do arquivo MOVIMENTO e os campos UTILIZADO, ULTCOMPRA e MAIORCOMP do arquivo CLIENTE:
SELECT A
USE MOVIMENTO SHARED NEW
SELECT B
USE CLIENTE SHARED NEW
...
SELECT A
BLOQREG() // Função p/ bloqueio de registro. Explicada a seguir.
REPLACE VALOR WITH nVALOR, DATA WITH dDATA, HORA WITH TIME()
SELECT B
BLOQREG()
REPLACE UTILIZADO WITH nUTILIZADO, ULTCOMPRA WITH DATE(), MAIORCOMP WITH nMAIORCOMP
UNLOCK ALL
VEJA AGORA COMO FICA FÁCIL COM O USO DE ALIASES:
USE MOVIMENTO ALIASES MOV SHARED NEW
USE CLIENTE ALIASES CLI SHARED NEW
...
MOV->(BLOQREG()) // Função p/ bloqueio de registro. Explicada a seguir.
MOV->VALOR := nVALOR
MOV->DATA := dDATA
MOV->HORA := TIME()
MOV->(DBUNLOCK())
CLI->(BLOQREG())
CLI->UTILIZADO := nUTILIZADO
CLI->ULTCOMP := DATE()
CLI->MAIORCOMP := nMAIORCOMP
CLI->(DBUNLOCK())
* AMBOS OS CÓDIGOS ACIMA PRODUZEM O MESMO EFEITO
RLOCK()
Esta função é usada para bloquear o registro ao ser editado alguma informação no arquivo. Já pensou se dois usuários da rede quisessem editar um mesmo registro ao mesmo tempo??? Para evitar isso, o a linguagem simplesmente não permite isso. Para se editar um registro aberto em modo compartilhado (modo multiusuario) é necessário bloqueá-lo.
A chamada a RLOCK() retorna .T. se a função conseguiu bloquear o registro e .F., caso contrário. Assim, você irá querer fazer uma função para bloquear o registro com certeza de sucesso, por mais simples que seja, como por exemplo:
FUNCTION BLOQREG()
__DO WHILE !RLOCK()
__ENDDO
RETURN
Veja este outro exemplo mais implementado que você pode ainda adequar às suas necessidades. Neste caso você deve ter um arquivo DBF de usuários do sistema sempre aberto e em todos os seus arquivos DBF, sem exceção, devem ter o campo LAST_USER para armazenar o código do usuário. Vamos ao exemplo:
FUNCTION BLOQREG()
CURAL := ALIAS() // ALIAS/DBF CORRENTE
lBLOQ := RLOCK()
nTRY := 1
DO WHILE !lBLOQ
lBLOQ := RLOCK()
nTRY++
IF nTRY = 5
US->(DBSEEK( (CURAL)->LAST_USER) ) // US = ALIAS DO ARQUIVO USUARIOS.DBF
ALERT("O registro não pode ser alterado enquanto o usuário " + US->CODIGO+"-"+US->NOME + " estiver usando-o. Espere ele terminar e então volte!" )
nTRY := 0
INKEY(5)
IF LASTKEY()=27
EXIT
ELSE
LOOP
ENDIF
ENDIF
ENDDO
IF lBLOQ = .T.
(CURAL)->LAST_USER := US->CODIGO // GRAVA O CÓDIGO DO USUÁRIO QUE ESTÁ BLOQUEANDO O REGISTRO
ENDIF
RETURN (lBLOQ)
Neste novo exemplo, o usuário tomará consciência de quem está usando o registro e poderá entrar em contato com a pessoa, se desejar, e não ficará sem saber o que aconteceu com o sistema paralizado. Eu uso essa função nos meus sistemas com sucesso.
Assim, use BLOQREG() antes de gravar no registro e depois use DBUNLOCK() para liberar o registro para uso. Não esqueça do DBCOMMIT() para descarregar o "CACHE" do disco depois do DBUNLOCK().
Outra dica importante caso você esteja usando os índices do RDD DBFNTX, o padrão do Clipper:
Sempre abra todos os índices do arquivo na mesma ordem quando você for gravar dados no arquivo DBF.
Por exemplo, mesmo que o índice FOCIDADE seja o que você precise para trabalhar primeiro, você usará sempre esse mesmo esquema:
USE FORNECEDORES ALIAS FO SHARED NEW
SET INDEX TO FOCOD, FONOME, FOCIDADE, FOMACOMP
FO->( DBSETORDER(3) ) // Aqui você diz a ordem que você quer
...
E nunca em um programa:
USE FORNECEDORES ALIAS FO SHARED NEW
SET INDEX TO FOCIDADE, FOCOD, FONOME, FOMACOMP
...
E em outro:
USE FORNECEDORES ALIAS FO SHARED NEW
SET INDEX TO FOCOD, FONOME, FOCIDADE, FOMACOMP
...
Porque se dois ou mais usuários inserirem um registro em um mesmo momento, os arquivos podem se corromper.
Nos próximos tópicos você se tornará mais íntimo destes procedimentos.
Um problema com arquivos em rede é a integridade dos arquivos, principalmente dos índices, portanto, em todo sistema que criar faça uma rotina de recriação de todos os índices usados, para que caso haja problemas, sejam resolvidos na hora. Lembre-se que para reindexar os índices ninguém na rede poderá estar usando o sistema, ou seja, ter em sua estação algum DBF aberto, assim este procedimento seria desejável todos os dias antes do início de cada jornada de trabalho, como prevenção. Para saber mais sobre problemas dos arquivos de índice, entre na página de KNOW-HOW.
Fonte: http://www.caclipperwebsite.com/index1.html (29/09/2009)
Houve uma época na qual eu até pensei em usar LINUX mas, dadas as condições, isso não foi possível. Espero que isso ajude!
´
Já ouvi falar de um tal de "CLIP" (um compilador russo open-source de Clipper para Linux). O link em que vi sobre isso foi este:
http://www.vivaolinux.com.br/artigo/Com ... -no-Linux/
E há, também, um tutorial do site www.caclipperwebsite.com que, dentre outras coisas, dá um toque a respeito de sistemas multiusuários, informando algumas particularidades do código para LINUX. Transcrevo-o a seguir:
MULTIUSUÁRIO SEM MISTÉRIO
==========================
Para os iniciantes, lembrem que o Clipper só trabalha em rede com unidades mapeadas, isto é, transforme "\\servidor\diretorio\" para "F:", por exemplo. No Windows Explorer, clique com o botão direito do mouse sobre o diretório onde está o sistema no servidor, escolha "Mapear unidade", então associe uma letra de unidade ao diretório. Faça o link apontando para a unidade mapeada, funcionando nela.
Um dos tópicos que "endoidam o cabeção" de muita gente é aprender a programar em modo multiusuário, aprender a usar aliases e abandonar o select, bloquear registros e arquivos etc.
Lembre-se que tudo é muito fácil e simples quando se sabe, então acalme-se: você saberá! (palavra de quem já passou por isso).
Na programação multiusuário é fundamental o conhecimento de funções do clipper, primeira dica: para todo comando do clipper existe uma função equivalente, qualquer dúvida consulte o arquivo de include padrão do clipper /include/STD.CH, é lá onde todos os comandos se tornam operacionais devido a um tipo de tradução tipo "quando ver este comando, traduza para esta função".
Por que o enfoque nas funções? Porque você a partir de agora abandonará o comando select e trabalhará com aliases e os aliases só trabalham com funções.
Exemplo: CLI->(DBSEEK(nCODIGO))
Isto quer dizer: No arquivo de apelido (alias) CLI, pesquise (seek=dbseek()) o valor de nCODIGO, usando o arquivo de indice em uso.
A sintaxe da abertura de um arquivo em modo compartilhado (multiusuario) com a atribuição de um alias, seria o seguinte:
USE CLIENTE ALIAS CLI SHARED NEW
Onde CLIENTE é o nome do arquivo DBF e CLI é o alias (apelido dado a CLIENTE com o parâmetro ALIAS após o nome do arquivo). O resto (SHARED NEW) é sempre igual, é o que faz abrir em modo compartilhado.
Para usar o arquivo aberto em modo compartilhado você precisa usar o alias. Para usar o alias digite o alias -> e ação a ser realizada no arquivo entre parênteses.
Sintaxe: alias -> ( função() )
Note que a função vem sempre entre parênteses.
Não quero dizer que não se pode usar o vetusto SELECT, é claro que sim, mas você perde bastante objetividade e torna o programa menos legível. Veja um exemplo:
Gravar os campos VALOR, DATA, HORA do arquivo MOVIMENTO e os campos UTILIZADO, ULTCOMPRA e MAIORCOMP do arquivo CLIENTE:
SELECT A
USE MOVIMENTO SHARED NEW
SELECT B
USE CLIENTE SHARED NEW
...
SELECT A
BLOQREG() // Função p/ bloqueio de registro. Explicada a seguir.
REPLACE VALOR WITH nVALOR, DATA WITH dDATA, HORA WITH TIME()
SELECT B
BLOQREG()
REPLACE UTILIZADO WITH nUTILIZADO, ULTCOMPRA WITH DATE(), MAIORCOMP WITH nMAIORCOMP
UNLOCK ALL
VEJA AGORA COMO FICA FÁCIL COM O USO DE ALIASES:
USE MOVIMENTO ALIASES MOV SHARED NEW
USE CLIENTE ALIASES CLI SHARED NEW
...
MOV->(BLOQREG()) // Função p/ bloqueio de registro. Explicada a seguir.
MOV->VALOR := nVALOR
MOV->DATA := dDATA
MOV->HORA := TIME()
MOV->(DBUNLOCK())
CLI->(BLOQREG())
CLI->UTILIZADO := nUTILIZADO
CLI->ULTCOMP := DATE()
CLI->MAIORCOMP := nMAIORCOMP
CLI->(DBUNLOCK())
* AMBOS OS CÓDIGOS ACIMA PRODUZEM O MESMO EFEITO
RLOCK()
Esta função é usada para bloquear o registro ao ser editado alguma informação no arquivo. Já pensou se dois usuários da rede quisessem editar um mesmo registro ao mesmo tempo??? Para evitar isso, o a linguagem simplesmente não permite isso. Para se editar um registro aberto em modo compartilhado (modo multiusuario) é necessário bloqueá-lo.
A chamada a RLOCK() retorna .T. se a função conseguiu bloquear o registro e .F., caso contrário. Assim, você irá querer fazer uma função para bloquear o registro com certeza de sucesso, por mais simples que seja, como por exemplo:
FUNCTION BLOQREG()
__DO WHILE !RLOCK()
__ENDDO
RETURN
Veja este outro exemplo mais implementado que você pode ainda adequar às suas necessidades. Neste caso você deve ter um arquivo DBF de usuários do sistema sempre aberto e em todos os seus arquivos DBF, sem exceção, devem ter o campo LAST_USER para armazenar o código do usuário. Vamos ao exemplo:
FUNCTION BLOQREG()
CURAL := ALIAS() // ALIAS/DBF CORRENTE
lBLOQ := RLOCK()
nTRY := 1
DO WHILE !lBLOQ
lBLOQ := RLOCK()
nTRY++
IF nTRY = 5
US->(DBSEEK( (CURAL)->LAST_USER) ) // US = ALIAS DO ARQUIVO USUARIOS.DBF
ALERT("O registro não pode ser alterado enquanto o usuário " + US->CODIGO+"-"+US->NOME + " estiver usando-o. Espere ele terminar e então volte!" )
nTRY := 0
INKEY(5)
IF LASTKEY()=27
EXIT
ELSE
LOOP
ENDIF
ENDIF
ENDDO
IF lBLOQ = .T.
(CURAL)->LAST_USER := US->CODIGO // GRAVA O CÓDIGO DO USUÁRIO QUE ESTÁ BLOQUEANDO O REGISTRO
ENDIF
RETURN (lBLOQ)
Neste novo exemplo, o usuário tomará consciência de quem está usando o registro e poderá entrar em contato com a pessoa, se desejar, e não ficará sem saber o que aconteceu com o sistema paralizado. Eu uso essa função nos meus sistemas com sucesso.
Assim, use BLOQREG() antes de gravar no registro e depois use DBUNLOCK() para liberar o registro para uso. Não esqueça do DBCOMMIT() para descarregar o "CACHE" do disco depois do DBUNLOCK().
Outra dica importante caso você esteja usando os índices do RDD DBFNTX, o padrão do Clipper:
Sempre abra todos os índices do arquivo na mesma ordem quando você for gravar dados no arquivo DBF.
Por exemplo, mesmo que o índice FOCIDADE seja o que você precise para trabalhar primeiro, você usará sempre esse mesmo esquema:
USE FORNECEDORES ALIAS FO SHARED NEW
SET INDEX TO FOCOD, FONOME, FOCIDADE, FOMACOMP
FO->( DBSETORDER(3) ) // Aqui você diz a ordem que você quer
...
E nunca em um programa:
USE FORNECEDORES ALIAS FO SHARED NEW
SET INDEX TO FOCIDADE, FOCOD, FONOME, FOMACOMP
...
E em outro:
USE FORNECEDORES ALIAS FO SHARED NEW
SET INDEX TO FOCOD, FONOME, FOCIDADE, FOMACOMP
...
Porque se dois ou mais usuários inserirem um registro em um mesmo momento, os arquivos podem se corromper.
Nos próximos tópicos você se tornará mais íntimo destes procedimentos.
Um problema com arquivos em rede é a integridade dos arquivos, principalmente dos índices, portanto, em todo sistema que criar faça uma rotina de recriação de todos os índices usados, para que caso haja problemas, sejam resolvidos na hora. Lembre-se que para reindexar os índices ninguém na rede poderá estar usando o sistema, ou seja, ter em sua estação algum DBF aberto, assim este procedimento seria desejável todos os dias antes do início de cada jornada de trabalho, como prevenção. Para saber mais sobre problemas dos arquivos de índice, entre na página de KNOW-HOW.
Fonte: http://www.caclipperwebsite.com/index1.html (29/09/2009)
Houve uma época na qual eu até pensei em usar LINUX mas, dadas as condições, isso não foi possível. Espero que isso ajude!
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
-
labaroazul
- Usuário Nível 2

- Mensagens: 83
- Registrado em: 26 Fev 2008 14:52
- Localização: São Paulo - SP
- Contato:
Re: Uso de Programa em linguagem Clipper para Linux
Aproveitando o tópico alheio, alguém aí sabe como se instala e se configura o DoxBox no LINUX?
Windows XP Professional + Clipper 5.2e + Exospace + Dbase III Plus + SIX3 + NoDosImp + LXPic
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html
"O trabalho afasta três males: o vício, a pobreza e o tédio." (Voltaire)
Site: http://www.labaroazul.xpg.com.br
Repositório: http://www.4shared.com/dir/31334106/e79 ... aring.html

