| Quando executo o programa simplesmente volta ao prompt
Se o seu programa principal inicia com uma função ou procedure main(), neste caso, se não foi compilado com o flag -Mmain, o programa não executa nada e retorna ao prompt do Unix/Linux.
Veja também "Criação do Makefile para compilação com FlagShip" e no fsman FSC1.3.
5.2 Como resolver problemas de corrupção de índices ?
Em ambiente Linux/Unix, o problema de corrupção de índices não poderá ocorrer, a não ser que haja alguma falha na estrutura de programação. Portanto, verifique nos seus programas se todos os tópicos abaixo foram obedecidos:
- Abrir os arquivos com todos os seus índices
- Verificar se no replace está-se obedecendo a estrutura correta, ou seja:
RLock() ou Append Blank
Replace ...
Commit
Unlock
Não esqueça de executar o RLock() , commit e Unlock na mesma área de trabalho (select) do replace.
Como transferir dados de Cobol para FlagShip e vice-versa ?
A melhor forma de transferir dados/arquivos de um sistema em Cobol para o FlagShip e vice-versa, é através de arquivos textos. Assim, evitará o problema de volatilização de variáveis de ambiente.
Quando executo o programa mostra "duplicate alias"
Analise se o seu ALIAS() não está realmente duplicado.
Caso esteja acontecendo na lógica de geração de relatórios, o problema é o seguinte: em ambiente Linux/Unix, na geração do relatório o sistema cria um arquivo spool com o <nomedoarquivo.num>, onde num é o número do processo. Como o FlagShip não aceita (.) como parte do nome do Alias, acaba ocorrendo o erro.
Para solucionar use a função STRTRAN() , para passar o nome do ALIAS sem o ponto. Exemplo:
STRTRAN(cNomeAlias,".")
Como esconder a senha no get ?
Se está utilizando a combinação de cores no get da senha, os recursos utilizados no Clipper DOS pode não funcionar. Veja o exemplo abaixo, utilizando recurso de cores no ambiente Unix/Linux:
cSenha:=SPACE(10)
CLS
@ 6,0 SAY "FSTERM="+GETENV("FSTERM")
@ 8,1 say "some text red" COLOR "R+/n"
@ 10,10 SAY "SENHA"
@ ROW(),COL()+1 GET cSenha COLOR "r/r,r/r" PICT "@9"
READ
? "SENHA = "+cSenha
INKEY(0)
Observação: Pode-se utilizar qualquer combinação de cor exceto o preto ("N/N,N/N")
Para rotinas que utilizam a lógica abaixo, também deve evitar o preto. Exemplo:
LOCAL cS := { "*","*","*","*","*","*","*","*","*","*"}
LOCAL cSenha := SPACE(10)
cSenha := ""
FOR x := 1 TO 10
@ 10,10 SAY "Digite a Senha.: "
@ 10,26+x GET cS [x] PICT "@!" COLOR("W/W,W/W")
READ
IF LASTKEY() = K_ESC .OR. LASTKEY() = K_ENTER
EXIT
ENDIF
@ 10,26+x SAY "*" PICT "@!" COLOR ("N/N,N/N")
cSenha += cS [x]
NEXT x
? "SENHA = "+cSenha
INKEY(0)
Como alterar a vírgula decimal para ponto decimal ?
Caso esteja usando o formato picture como @ ... say pict "@E ..." , o FlagShip utiliza o sistema "Europeu", ou seja, faz a troca do ponto (.) com a vírgula (,) e vice-versa.
Caso queira manter o sistema americano, deve-se usar a máscara pict "999,999.99".
Veja no fsman o capítulo CMD: @ ... [say] get .
Como ler ou gravar através da porta serial ?
Para o sistema operacional Linux / Unix, a porta serial é tratada como um arquivo texto qualquer. Pode-se usar a função MemoRead() ou MemoWrit() , apontando para o device /dev/ttyS0 ou /dev/ttyS1.
Na execução acusa a falta da lib do FlagShip
Por default, na geração do executável, o FlagShip cria-o para ser executado dinamicamente, ou seja, incorpora as lib's do FlagShip em tempo de execução. Portanto, neste caso o programa pode ser executado somente na rede onde encontra-se instalado o FlaShip. Para que o executável possa ser transportado para qualquer rede, o programa deve ser compilado e linkeditado estaticamente.
Para fazer a alteração edite o arquivo FSconfig do diretório /etc e comente (coloque a #) as 6 linhas abaixo do modo default e descomente (retire a #) as mesmas linhas do modo estático:
FSPATH :/usr/bin
CCPATH :
FSOPTIONS :-I/usr/include -L/lib
CCNAME :cc
PREOPTIONS :-DFGSLINUX -DFGSLINUXELF -I/usr/include/ncur194 -fwritable-strings -fPIC
POSTOPTIONS :/usr/lib/dynFlagShip.o -lFlagShip -lncur194 -lm -s
Como gerar um executável estático ?
O FlagShip pemite gerar um executável estático ou dinâmico, conforme a parametrização.
O executável estático funciona de uma forma equivalente a uma DLL do Windows, ou seja, carrega as lib's necessárias em tempo de execução do programa, portanto todas as lib's devem estar disponíveis no servidor da rede.
Caso queira instalar o executável numa rede onde não tenha instalado o FlagShip, será necessário criar o executável estaticamente, ou seja, as lib's necessárias devem ser incorporadas em tempo de linkedição. Neste caso, o executável pode ser instalado numa rede que não tenha o FlagShip, desde que a versão do GLib_C, seja a mesma.
Para definir se a compilação deve ser dinamica ou estática, altera-se o FSconfig do diretório /etc. Veja detalhes no item anterior. |