                   Guia Tinycobol (Gnu) + PostgreSQL
                   =====================================

                   Carlucio Lopes <carsanlo@terra.com.br>
		   Goiania - Goias - Brasil 
		   InfoCont Sistemas Integrados - Adaptao para Windows
	           Joinville - Santa Catarina - Brasil
                   Versao 1.04 - Terca, 04 de Abril de 2006


Resumo
------

     Este tutorial tem por objetivo ser uma referencia ao aprendizado no
     Tinycobol em ambiente Windows, utilizando PostgreSQL.
     Duvidas, criticas e sugestoes favor postar para grupo lista
     Clube Cobol em cobol@yahoogrupos.com.br.

Nota de Copyright
-----------------

     Copyleft (C) 2003 - Carlucio Lopes.

     Permission is granted to copy, distribute and/or modify this document
     under the terms of the GNU Free Documentation License, Version 1.1 or
     any later version published by the Free Software Foundation; A copy of
     the license is included in the section entitled "GNU Free
     Documentation License".
-----------------------------------------------------------------------------

Conteudo
--------
1 - O que e' o Tinycobol(TC)
1.1 - Como compilar no Tinycobol
2 - Instalando o Postgresql.
3 - Compilando programa cad01.cob  exemplo(TC+Postgresql)
4 - Duvidas e Sugestoes.
5 - Apendice

------------------------------------------------------------------------------
1 - O que e' o Tinycobol.

            O TinyCOBOL e' um compilador COBOL free, criado por um brasileiro
    chamado Rildo Pragana e atualmente esta sendo desenvolvido por uma equipe de
    diversas partes do mundo (Europa/EUA). Por ser um compilador livre, nao e' 
    necessario pagar para obter suas versoess. Para garantir a sua liberdade, 
    o TinyCOBOL e' licenciado dentro dos termos da GNU ? General Public Licence,
    o que significa que seu codigo fonte e' livremente distribuido e disponivel em
    dominio publico. Suporta padrao ANSI 85.

1.1 - Como compilar no Tinycobol.

    Apos a criacao do arquivo com o programa fonte, com extencao .cob,  usa
    o comando htcobol que executa o compilador.   

    Usando: htcobol [opcoes] programa_fonte

    Opcoes especificas do Compilador:
    -h             Mostra ajuda
    -a             Cria biblioteca estatica; pre-processa, compila, assembla e arquiva
    -B <modo>      modo especifico para aglutinacao (estatica/dinamica)
    -c             Compilacao para um modulo de objeto estaticamente linkado
    -E             Saida do preprocessador para saida padrao apenas; nao compila,
                   assembla ou linka
    -g             Gera saida de debug de compilacao
    -l <arquivo>   Adiciona biblioteca na linkedicao
    -L <diretorio> Adiciona diretorio ao caminho de procura de bibliotecas
    -m <arquivo>   Cria biblioteca dinamica; pre-processa, compila, assembla e li
    -m <arquivo>   Cria biblioteca dinamica; pre-processa, compila, assembla e linka
    -n             Na~o executa nenhum comando, deve mostrar a compilacao
    -o <arquivo>   Especifica nome do executavel (padrao de entrada x extensao)
    -S             Preprocessa, compila(gera codigo assembler) somente; nao assembla ou 
                   linka
    -v             Gera saida do compilador verbosa
    -V             Mostra informacoes da versao do compilador e sai
    -Wl,<opcoes>   Passar opcoes separadas por virgula ao linkeditor
    -x             Compilacao para criar um executavel
    -z             Gera saida do compilador verbosa
    Opcoes especificas do COBOL:
    -C             Faz todas as chamadas dinamicas COBOL
    -D             Inclui linhas de debug no fonte
    -F             Fonte de entrada esta em formato de coluna fixa padrao
    -I <diretorio> Define inclusao(copybooks) de caminhos de procura. (padrao -I./)
                 O caminho pode ser um simples diretorio, ou uma lista de diretorios
                 separados por um ':'
    -P             Gera arquivo de saida listado
    -T <num>       <Expande tabs para um numero de espacos (padrao T=8)
    -X             Arquivo de entrada esta em formato livre X/Open (formato padrao)

     exemplo:  htcobol -x -F -P  prog_fonte.cob
     o exemplo acima o htcobol ira' compilar, (-x) criar executavel, (-F) programa 
     escrito devera estar no formato fixo(obdecendo as colunas 8 e 12) e (-P) gera
     um arquivo de saida de erros e outras informacoes com extensao prog_fonte.lis .  


2 - Instalando o Postgresql.

2.1 Fazendo download.
    Baixe o Postgresql 8.1 para Windows (roda apenas em Windows XP/2000 - Partio NTFS)
    http://postgresql.org  secao download  -> Binrios para Windows

2.2 Descompacte o arquivo postgresql-8.1.x-x.zip em uma pasta.

2.3 Execute a instalao atravs do arquivo postgresql-8.1.msi (Windows Installer)
    Durante a instalao ser solicitada uma senha de acesso ao banco. Guarde esta senha, pois
    voc ter de usa-la no item 3.3, para configurar os parmetros de acesso ao banco.

2.4 Entendendo o PostgreSQL:
    O processo de instalao criar um grupo de programas chamado PostgreSQL, onde se encontram
    todas as ferramentas de administrao e execuo do banco de dados.
    Durante a instalao, ser criado o banco POSTGRES, que utilizaremos neste tutorial.

2.5 Conectando ao banco POSTGRES
    No grupo de programas PostgreSQL existe um atalho denominado "psql para 'postgres'". Esta 
    ferramenta  a que iremos utilizar para administrar o Banco de Dados.
    Esta ferramenta abrir um prompt de comando, onde executaremos as intrues SQL.
    Para sair digite:
    postgres=# \q

3 - Compilando programa cad01.cob  exemplo(TC+Postgresql).
    Este programa cad01.cob  um exemplo simples de uso do PostgreSQL atravs do TinyCOBOL.
    Trata-se de um pequeno cadastro de filiais.

3.1 compilando e gerando o executvel de cad01.cob digite:
    htcobol -vCX cad01.cob

    nota: Estamos usando a opo X para compilar o programa porque ele esta escrito em free
          format, sem o uso das margens caractersticas dos fontes COBOL.
 
    Informacoes:
    - O TC suporta acesso a PostgreSQL via call's as API's do PgSQL atraves um 
      wrapper(empacotador) criado pelo Rildo. Estas rotinas j se encontram devidamente 
      compiladas e presentes no diretrio C:\TinyCOBOL\bin.

3.2 Manutencao no banco de dados
3.2.1 O programa cad01.cob faz acesso a uma tabela chamada "filial", que precisaremos cria-la
      antes de executar o programa. Para isso, acesse o programa "psql para 'postgres'" e 
      digite as instrues abaixo:

create table filial (
 codigo decimal(3,0), 
 nome char(50), 
 nome_fantasia char(40),
 endereco char(40),
 numero decimal(5,0), 
 setor char(25), 
 cidade char(25), 
 uf char(02),
 cep char(08),
 foneddd char(04),
 fonenum char(08),
 faxddd  char(04),
 faxnum  char(08), 
 cgc char(18), 
 insest char(20), 
 contato char(40) 
);
 
3.2.2 Se voc preferir, as instrues acima poderiam ser gravadas num arquivo texto 
      (comando.sql, por exemplo) e poderiamos executa-lo posteriormente atravs do 
      seguinte comando:

      postgres=# \i c:/tinycobol/tutoriais/postgresql/comando.sql 
3.3 O banco de dados necessita de alguns parmetros para possibilitar o acesso a mesmo.
    Estes parmetros so definidos atravs de variveis de ambiente, que sero lidas pela
    biblioteca de acesso ao banco (LIBPQ). Estas variveis j esto preparadas no arquivo
    SETBANCO.BAT, que dever ser executado antes do programa CAD01. Estas so as variveis:
    set PGSQL_SERVER=127.0.0.1
    set PGSQL_USER=postgres
    set PGSQL_PASSWD=senha
    A varivel PGSQL_SERVER indica o IP do servidor, onde 127.0.0.1 corresponde a localhost,
    ou seja, a mquina atual.
    A varivel PGSQL_USER=postgres indica o usurio configurado para acesso ao banco. Altere-a 
    se necessrio.
    J a varivel PGSQL_PASSWD indica a senha configurada para acesso ao banco. Altere-a para
    a senha informada durante o processo de instalao.  
    A configurao destes parmetros  imprescindvel para o correto funcionamento do programa.		    


3.4 para executar o cadastro de filial digite:
      
      cad01

    Pronto voce tem um programa em Tinycobol+Postgresql, rodando no Windows.

4 - Duvidas e Sugestoes.
    Poste suas duvidas e ou sugestoes para a lista abaixo, sendo que o topico devera ser
    enviado para lista adequada.

4.1 Tinycobol.
    Lista cobol@yahoogrupos.com.br      
    http://br.tinycobol.org
    http://wiki.tinycobol.org

4.2 Postgresql 
    lista postgresql@yahoo.com.br
    http://www.postgresql.org
    http://www.postgresql.org.br

5 - Apendice

5.1 Agradecimentos

    - A DEUS que nos proporcionou o mais complexa CPU(Celebro Humano).
    - Rildo Pragana<rpragana@acm.org> pela iniciativa no desenvolvimento do compilador TinyCOBOL.
    - Hudson Reis<hudsonreis@gmx.net> pela empenho de tornar esta ferramenta produtiva.
    - Fernando Wuthstrack por acreditar e implementar o TC em sua Empresa.

10.2 Colaboradores
    - Carlucio Lopes
    - Rildo Pragana
    - Hudson Reis
    - Fernando Wuthstrack
    - Danilo Pacheco Martins
    - Walter Garrote