Revista Do Linux  
EDIÇÃO DO MÊS
  Shell Script
  Software Livre 2000
  Projeto Kylix
  Alta disponibilidade
  Anatomia de um ataque
  Auto-Escola Linux
  Configurando Periféricos
  Código aberto
  Ensino público
  FlagShip
  Hard e Soft
  Linux para iniciantes
  Linux para mouses

Do Clipper pa ra o FlagShip
Dicas preciosas para converter códigos para o Linux


Alexandre de Alexandri
alexandre@inso.com.br

Claudio Zamana
zamana@inso.com.br

Milton Mizuki
milton@inso.com.br

Muitos programadores de Clipper que estão migrando, ou que pensam em migrar para o Linux, desejam ter em mãos algo como um kit de emergência para as principais dificuldades que terão ao migrar seus códigos para o FlagShip. A Inso Informática, que distribui o produto no Brasil, preparou uma "receita de bolo" que esclarece as principais adaptações a serem introduzidas em códigos Clipper, antes da compilação pelo FlagShip. Todas as dicas apresentadas aqui e muitas outras podem ser encontradas com mais detalhes no manual do programa e no site da Inso em www.inso.com.br.

1. Copiando os arquivos .PRG

Copie os programas Clipper (.prg) do seu aplicativo, inclusive os programas da sua biblioteca para um diretório do Linux. Os fontes de uma biblioteca convertidos com utilitários do tipo "Valkyrie" devem ser analisados e testados. Nem sempre esses utilitários convertem corretamente as funções da biblioteca. O FlagShip possui um módulo com as funções do CA-Tools (não disponível nas versões Demo). Inclua no programa principal a diretiva:

#INCLUDE "fspreset.fh"

2. Criando o Makefile

O Makefile é um script de compilação equivalente ao

.rmk/.lnk do Clipper. Para criar um Makefile siga o exemplo:

FS=FlagShip

FS_FLAGS=-Mprg1 -omeu_programa

C_FILES=prg1.o prg2.o prg3.o prg4.o prg5.o

all:$(C_FILES)

<tab>

$(FS) $(C_FILES) $(FS_FLAGS)

clean:

<tab> rm *.o

..SUFFIXES: .prg .o

..prg.o:

<tab> $(FS) -c -m $<

<tab> rm $*.c

Caso utilize o parâmetro /N no Clipper, utilize o parâmetro -na no FlagShip. Se o programa principal inicia com a função ou procedure Main(), coloque o parâmetro -Mmain. Exemplo: FS_FLAGS=-Mmain -oexemplo

Nota: utilize a tecla TAB onde estiver <tab>.

Caso tenha alguma dificuldade em criar, solicite em www.inso.com.br o script do makemake que cria automaticamente o Makefile com todos os programas do diretório. No diretório /usr/local/bin/ descompacte-o com o comando: # unzip makemake.zip.

3. Alterar, nos programas, os comandos do DOS para comandos Linux.

Todos os comandos DOS utilizados no Clipper devem ser alterados para comandos compatíveis do Linux. O comando de impressão do Clipper também deve ser alterado, pois no DOS a impressão é diretamente na porta da impressora, enquanto que no Linux é criado um spool de impressão.

4. Copiando os arquivos .DBF e .DBT

Copie todos os arquivos .dbf para o diretório do Linux via ftp ou através das ferramentas mtools (mcopy a:*.db*, por exemplo).

Reindexe os arquivos com o comando Index On.

O FlagShip vai criar os arquivos índices com o sufixo .IDX, equivalente ao .NTX do Clipper, mas que possui um algoritmo muito mais otimizado. Não tente acessar com o FoxPro ou Clipper com a sintaxe "DBFIDX", pois são algoritmos distintos. Caso queira utilizar os arquivos compatíveis com "DBFCDX", veja no manual fsman do FlagShip como utilizar codebase. Também é importante ressaltar que no ambiente Linux todos os arquivos devem ter direitos de leitura e gravação para os usuários do sistema.

5. Compilando os programas

Para compilar os programas no FlagShip, digita-se make no prompt do Linux em que se encontra o Makefile.

O FlagShip converte automaticamente todos os fontes

num programa intermediário em C, compila e linkedita, criando um executável em C puro, nativo do seu sistema operacional Linux. Você pode compilar diretamente na linha de comando como o Clipper o faz no ambiente DOS, mas ao se incorporarem vários fontes, recomenda-se o uso de make. Ao compilar diretamente na linha de comando um fonte de nome "primeiro.prg", cujo nome do executável será "primo", digite:

# FlagShip -o primo primeiro.prg

ou

# FlagShip primeiro.prg -o primo

6. Executando o programa

No Linux, para executar o programa que se encontra no próprio diretório, digite:

# ./nome_do_executável

7. Problemas com caracteres de formação de telas

Para corrigir esses problemas, deve-se incluir no /etc/profile, as variáveis de ambiente abaixo:

export FSTERM=fslinux

export FSTERMINFO=/usr/share/terminfo

export TERM=linux

O TERM=linux é default do sistema. Para ativar as mudanças saia com logout e execute um novo login no sistema.

Se for executar em um terminal no ambiente gráfico, digite: # newfswin ./nome_do_executável

8. Restrições do FlagShip

• Telas com mais de 25 linhas

No ambiente Unix/Linux, a forma de tratamento do número de linhas do Clipper (DOS) não terá efeito, ou seja, a função setmode (43,80) não funciona. Para se obter o mesmo efeito do ambiente DOS, utilize a função FS_SET ("setenvir"). Veja no fsman as funções SETMODE e FS_SET ("setenvir").

• Problemas com RestScreen()

No DOS a tela é capturada como caracter e Unix/Linux é capturada como imagem. No ambiente Linux/Unix não é possível recuperar parte da tela salva pelo SaveScreen(). Veja no fsman as restrições das funções SaveScreen() e

RestScreen().

• Comandos do DOS

Todos os comandos do DOS utilizados nos programas devem ser substituídos por comandos Unix/Linux.

9. Como acessar o manual on-line do FlagShip

Digite no prompt do Linux:

# fsman

10. FS-CGI

Esse é um módulo que você também pode utilizar para desenvolver aplicações para ambiente Web, e cuja cópia demo pode ser encontrada no site da Inso. Este módulo (LIB) gratuito é composto de uma série de funções facilitadoras para desenvolvimento de aplicações em ambiente Web.

Na verdade o Flagship permite a construção de CGI e ao incorporar o FS-CGI você terá uma grande redução de código no seu desenvolvimento.

11. Conversão de arquivos DOS para Linux

O FlagShip vem com um utilitário para conversão de textos em formato DOS para formato Unix, chamado "dos2unix". Porém, tal conversão não é necessária, uma vez que o próprio pre-processador do FlagShip trata desse detalhe. Nota: dos2unix deve ser usado somente nos arquivos fontes, e jamais sobre os DBFs ou arquivos compactados.

12. Impressão em Linux

Analise o seguinte código e converta o seu código fonte original para imprimir no Linux. Crie este programa com o nome "t.prg".

/*

* Para compilar: FlagShip t.prg -na -ot

*

* Para executar: ./t

*

* Arquivo de spool: "file..."

*

*/

function main()

local cOutraImp := "deskjet"

/* Esta função gera um nome de arquivo temporário

* Veja fsmanÆFUNÆtempfilename

*/

local cTempFile := tempfilename()

/* Direcionando a saída para o arquivo */

set printer on

set console off

set printer to (cTempFile)

/* Imprimindo ( para o arquivo ) */

qout( "Teste de impressao" )

qout( "Teste de impressao" )

qout( "Teste de impressao" )

qout( "Teste de impressao" )

/* Desabilitando a saída para o arquivo */

set printer off

set console on

/* Imprimindo na impressora default ( geralmente "lp" )

*/

run( "lpr " + cTempFile )

/* Imprimindo numa outra impressora */

/* run( "lpr -P" + cOutraImp + " " + cTempFile ) */

return( nil )

Conclusão

Embora a curva de aprendizado para o FlagShip seja praticamente nula para os programadores Clipper que venham do ambiente DOS, um aprofundamento na documentação do Linux e do próprio FlagShip é indispensável, como os leitores puderam conferir nas dicas acima. Logo ao compilar seus primeiros códigos esses programadores usarão esse kit básico de dicas aqui apresentadas, e poderão avaliar o enorme ganho de plataforma em suas aplicações. Em outro artigo serão apresentadas outras dicas e tratado o acesso a banco de dados relacionais, como Interbase, CA-Ingres e Oracle.

 

A Revista do Linux é editada pela Conectiva S/A
Todos os Direitos Reservados.

Política de Privacidade