version 0.73.0
This commit is contained in:
@@ -0,0 +1,475 @@
|
||||
IDENTIFICATION DIVISION.
|
||||
PROGRAM-ID. cad01.
|
||||
AUTHOR. Carlucio Lopes.
|
||||
|
||||
ENVIRONMENT DIVISION.
|
||||
|
||||
CONFIGURATION SECTION.
|
||||
SPECIAL-NAMES.
|
||||
DECIMAL-POINT IS COMMA
|
||||
CRT STATUS IS wx-escape.
|
||||
|
||||
*> INPUT-OUTPUT SECTION.
|
||||
*> FILE-CONTROL.
|
||||
|
||||
|
||||
DATA DIVISION.
|
||||
|
||||
FILE SECTION.
|
||||
|
||||
WORKING-STORAGE SECTION.
|
||||
77 wx-status01 PIC XX VALUE "00".
|
||||
77 wx-opcao PIC xxx value spaces.
|
||||
77 wx-escape PIC 9999 VALUE 0.
|
||||
77 wx-key-esc PIC 9999 VALUE 27.
|
||||
77 wx-key-f2 PIC 99 VALUE 02.
|
||||
77 wx-key-ac PIC 9999 VALUE 259.
|
||||
77 wx-dec PIC 99 VALUE 0.
|
||||
77 wx-pare PIC X VALUE SPACE.
|
||||
77 wx-mensagem PIC X(61) VALUE SPACE.
|
||||
|
||||
77 DATABASE-NAME PIC X(80).
|
||||
77 SQL-QUERY PIC X(1000).
|
||||
77 DB-HANDLE PIC 9(12) COMP.
|
||||
77 QRY-HANDLE PIC 9(12) COMP.
|
||||
77 NTUPLE PIC 9(12) COMP.
|
||||
77 NFIELD PIC 9(12) COMP.
|
||||
77 MAX-TUPLE PIC 9(12) COMP.
|
||||
77 MAX-FIELD PIC 9(12) COMP.
|
||||
77 COLUMN-VALUE pic X(80) VALUE SPACES.
|
||||
77 NEW-DB-NAME PIC X(40) value "postgres".
|
||||
77 CMD pic 9.
|
||||
77 ed-num pic zzzz9.
|
||||
77 DB-STATUS pic 9(12) COMP.
|
||||
77 DB-MESSAGE pic X(200).
|
||||
77 traco pic x(80) value all "-".
|
||||
77 wfi-codigo pic x(05).
|
||||
77 wfi-end-num pic x(05).
|
||||
01 reg-filial.
|
||||
02 chave-filial.
|
||||
03 fi-codigo PIC 9(03).
|
||||
02 fi-nome PIC X(50).
|
||||
02 fi-fantasia pic x(40).
|
||||
02 fi-endereco PIC X(40).
|
||||
02 fi-end-num PIC 9(05).
|
||||
02 fi-end-setor PIC X(20).
|
||||
02 fi-cidade PIC X(25).
|
||||
02 fi-uf PIC X(02).
|
||||
02 fi-cep PIC 9(08).
|
||||
02 fi-FON-ddd-num.
|
||||
03 fi-fone-ddd PIC X(04).
|
||||
03 fi-fone-num PIC X(08).
|
||||
02 fi-fax-ddd-num.
|
||||
03 fi-fax-ddd PIC X(04).
|
||||
03 fi-fax-num PIC X(08).
|
||||
02 fi-cgc PIC X(18).
|
||||
02 fi-inscest PIC X(20).
|
||||
02 fi-contato PIC X(40).
|
||||
|
||||
copy "wkglobal.cpy".
|
||||
|
||||
LINKAGE SECTION.
|
||||
77 chamando pic x(40).
|
||||
|
||||
|
||||
screen section.
|
||||
01 tela.
|
||||
03 filler pic x(1920)
|
||||
blank screen line 4 column 1
|
||||
foreground-color 7 background-color 1 value spaces.
|
||||
|
||||
PROCEDURE DIVISION.
|
||||
*> PROCEDURE DIVISION USING CHAMANDO.
|
||||
loop-conectar-ao-banco-de-dado.
|
||||
perform 080-CONNECT-MYDB.
|
||||
LOOP-CLEAR.
|
||||
display tela.
|
||||
PERFORM LOOP-ZERA.
|
||||
perform loop-tela.
|
||||
accept wx-opcao line 2 position 33
|
||||
|
||||
if wx-opcao = "SAI" or "sai"
|
||||
*> exit program.
|
||||
stop run.
|
||||
|
||||
LOOP-INCLUSAO.
|
||||
display tela.
|
||||
PERFORM LOOP-ZERA.
|
||||
perform loop-tela.
|
||||
if wx-opcao = "INC" or "inc"
|
||||
display wx-opcao line 2 position 33
|
||||
perform loop-accept thru loop-accept-exit
|
||||
if fi-codigo = zeros go to LOOP-CLEAR
|
||||
else
|
||||
string "insert into filial"
|
||||
"( codigo, nome, nome_fantasia,"
|
||||
"endereco, numero, setor, cidade, uf, cep, "
|
||||
"foneddd, fonenum, faxddd, faxnum,"
|
||||
" cgc, insest, contato) "
|
||||
" values (" fi-codigo ",'" fi-nome "','" fi-fantasia "','"
|
||||
fi-endereco "'," fi-end-num ",'" fi-end-setor "','" fi-cidade
|
||||
"','" fi-uf "','" fi-cep "','" fi-fone-ddd "','" fi-fone-num
|
||||
"','" fi-fax-ddd "','" fi-fax-num "','" fi-cgc "','" fi-inscest
|
||||
"','"fi-contato "');;"
|
||||
into SQL-QUERY
|
||||
display "GRAVA S/N=" line 24 position 1
|
||||
accept wx-pare line 24 position 10
|
||||
if wx-pare = "S" or "s"
|
||||
perform 090-DO-QUERY
|
||||
perform 200-CHECK-STATUS
|
||||
call "sql_clear_query" using QRY-HANDLE
|
||||
go to LOOP-INCLUSAO
|
||||
else go to LOOP-INCLUSAO.
|
||||
|
||||
LOOP-CONSULTA.
|
||||
|
||||
if wx-opcao = "CON" or "con"
|
||||
display tela
|
||||
PERFORM LOOP-ZERA
|
||||
perform loop-tela
|
||||
display wx-opcao line 2 position 33
|
||||
accept wfi-codigo line 4 position 15
|
||||
move wfi-codigo to numeroch perform num-x-9
|
||||
move numeronu to fi-codigo ed-num
|
||||
display ed-num line 4 position 15
|
||||
if fi-codigo = zeros go to LOOP-CLEAR
|
||||
|
||||
else
|
||||
|
||||
perform LOOP-SQL-CON
|
||||
|
||||
if MAX-TUPLE = zeros
|
||||
display "Item nao encontrado Tecle enter" line 24 position 1
|
||||
accept wx-pare
|
||||
go to LOOP-CONSULTA
|
||||
else
|
||||
perform LOOP-MOSTRA
|
||||
accept wx-pare
|
||||
call "sql_clear_query" using QRY-HANDLE
|
||||
go to LOOP-CONSULTA.
|
||||
|
||||
LOOP-ALTERACAO.
|
||||
if wx-opcao = "ALT" or "alt"
|
||||
display tela
|
||||
PERFORM LOOP-ZERA
|
||||
perform loop-tela
|
||||
display wx-opcao line 2 position 33
|
||||
accept wfi-codigo line 4 position 15
|
||||
move wfi-codigo to numeroch perform num-x-9
|
||||
move numeronu to fi-codigo ed-num
|
||||
display fi-codigo line 4 position 17
|
||||
if fi-codigo = zeros go to LOOP-CLEAR
|
||||
|
||||
else
|
||||
|
||||
perform LOOP-SQL-CON
|
||||
if MAX-TUPLE = zeros
|
||||
display "Item nao encontrado Tecle enter" line 24 position 1
|
||||
accept wx-pare
|
||||
go to LOOP-ALTERACAO
|
||||
else
|
||||
perform LOOP-MOSTRA
|
||||
perform loop-accept-fi-nome thru loop-accept-exit
|
||||
string "update filial "
|
||||
"set nome = '" fi-nome "'"
|
||||
",nome_fantasia= '" fi-fantasia "'"
|
||||
",endereco = '" fi-endereco "'"
|
||||
",numero = " fi-end-num
|
||||
",setor = '" fi-end-setor "'"
|
||||
",cidade = '" fi-cidade "'"
|
||||
",uf = '" fi-uf "'"
|
||||
",cep = '" fi-cep "'"
|
||||
",foneddd = '" fi-fone-ddd "'"
|
||||
",fonenum = '" fi-fone-num "'"
|
||||
",faxddd = '" fi-fax-ddd "'"
|
||||
",faxnum = '" fi-fax-num "'"
|
||||
",cgc = '" fi-cgc "'"
|
||||
",insest = '" fi-inscest "'"
|
||||
",contato = '" fi-contato "'"
|
||||
" where codigo =" fi-codigo ";;"
|
||||
into SQL-QUERY
|
||||
display "Altera S/N=" line 24 position 1
|
||||
accept wx-pare line 24 position 10
|
||||
if wx-pare = "S" or "s"
|
||||
perform 090-DO-QUERY
|
||||
perform 200-CHECK-STATUS
|
||||
|
||||
call "sql_clear_query" using QRY-HANDLE
|
||||
go to LOOP-ALTERACAO
|
||||
else
|
||||
go to LOOP-ALTERACAO.
|
||||
|
||||
LOOP-EXCLUSAO.
|
||||
if wx-opcao = "EXC" or "exc"
|
||||
display tela
|
||||
PERFORM LOOP-ZERA
|
||||
perform loop-tela
|
||||
display wx-opcao line 2 position 33
|
||||
accept wfi-codigo line 4 position 15
|
||||
move wfi-codigo to numeroch perform num-x-9
|
||||
move numeronu to fi-codigo ed-num
|
||||
display fi-codigo line 4 position 15
|
||||
if fi-codigo = zeros go to LOOP-CLEAR
|
||||
|
||||
else
|
||||
|
||||
perform LOOP-SQL-CON
|
||||
if MAX-TUPLE = zeros
|
||||
display "Item nao encontrado Tecle enter" line 24 position 1
|
||||
accept wx-pare
|
||||
go to LOOP-EXCLUSAO
|
||||
else
|
||||
perform LOOP-MOSTRA
|
||||
string "delete from filial"
|
||||
" where codigo =" fi-codigo ";;"
|
||||
into SQL-QUERY
|
||||
display "Delete S/N=" line 24 position 1
|
||||
accept wx-pare line 24 position 10
|
||||
if wx-pare = "S" or "s"
|
||||
perform 090-DO-QUERY
|
||||
perform 200-CHECK-STATUS
|
||||
|
||||
call "sql_clear_query" using QRY-HANDLE
|
||||
go to LOOP-EXCLUSAO
|
||||
else
|
||||
go to LOOP-EXCLUSAO.
|
||||
|
||||
GO TO LOOP-CLEAR.
|
||||
|
||||
LOOP00.
|
||||
|
||||
LOOP-CODIGO.
|
||||
LOOP-ZERA.
|
||||
MOVE ZEROS TO REG-FILIAL.
|
||||
MOVE ZEROS TO fi-codigo.
|
||||
MOVE SPACE TO fi-nome.
|
||||
MOVE SPACE TO fi-endereco.
|
||||
MOVE ZEROS TO fi-end-num.
|
||||
MOVE SPACES TO fi-end-setor.
|
||||
MOVE SPACES TO fi-cidade.
|
||||
MOVE SPACES TO fi-uf.
|
||||
MOVE spaces TO fi-cep.
|
||||
MOVE SPACES TO fi-fone-ddd.
|
||||
MOVE SPACES TO fi-fone-num.
|
||||
MOVE SPACES TO fi-fax-ddd.
|
||||
MOVE SPACES TO fi-fax-num.
|
||||
MOVE SPACES TO fi-cgc.
|
||||
MOVE SPACES TO fi-inscest.
|
||||
move spaces to fi-fantasia.
|
||||
move spaces to fi-contato.
|
||||
loop-tela.
|
||||
display traco line 1 position 1
|
||||
display "Opcao /INC/ALT/CON/EXC/SAI=>>" line 2 position 2
|
||||
display traco line 3 position 1
|
||||
display "Codigo....:" line 4 position 2
|
||||
display "Nome......:" line 5 position 2
|
||||
display "Nome Fant.:" line 6 position 2
|
||||
display "Endereco..:" line 7 position 2
|
||||
display "Numero....:" line 7 position 60
|
||||
display "Setor.....:" line 8 position 2.
|
||||
display "Cidade....:" line 9 position 2
|
||||
display "Estado....:" line 10 position 2
|
||||
display "cep.......:" line 10 position 20
|
||||
display "Fone ddd..:" line 11 position 2
|
||||
display "Fone num..:" line 11 position 20.
|
||||
display "Fax ddd...:" line 12 position 2
|
||||
display "Fax num...:" line 12 position 20
|
||||
display "c.g.c.....:" line 13 position 2
|
||||
display "Insc.Est..:" line 14 position 2
|
||||
display "Contato...:" line 15 position 2.
|
||||
|
||||
loop-accept.
|
||||
if wx-opcao = "ALT" or "alt"
|
||||
go to loop-accept-exit.
|
||||
accept wfi-codigo line 4 position 15
|
||||
move wfi-codigo to numeroch perform num-x-9
|
||||
move numeronu to fi-codigo ed-num
|
||||
display ed-num line 4 position 15
|
||||
if fi-codigo = zeros go to loop-accept-exit.
|
||||
perform LOOP-SQL-CON.
|
||||
if MAX-TUPLE not = zeros
|
||||
display "Item ja cadastrado " line 24 position 01
|
||||
accept wx-pare
|
||||
go to loop-accept.
|
||||
|
||||
loop-accept-fi-nome.
|
||||
accept fi-nome with update line 5 position 15
|
||||
if wx-escape = wx-key-ac go to loop-accept.
|
||||
|
||||
loop-accept-fi-fantasia.
|
||||
accept fi-fantasia with update line 6 position 15
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-nome.
|
||||
|
||||
loop-accept-fi-endereco.
|
||||
accept fi-endereco with update line 7 position 15
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-fantasia.
|
||||
|
||||
loop-accept-fi-end-num.
|
||||
accept wfi-end-num line 7 position 71
|
||||
move wfi-end-num to numeroch perform num-x-9
|
||||
move numeronu to fi-end-num ed-num
|
||||
display ed-num line 7 position 71
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-endereco.
|
||||
|
||||
loop-accept-fi-end-setor.
|
||||
accept fi-end-setor with update line 8 position 15.
|
||||
if fi-end-setor = spaces go to loop-accept-fi-end-num.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-end-num.
|
||||
|
||||
loop-accept-fi-cidade.
|
||||
accept fi-cidade with update line 9 position 15.
|
||||
if fi-cidade = spaces go to loop-accept-fi-end-setor.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-end-setor.
|
||||
|
||||
loop-accept-fi-uf.
|
||||
accept fi-uf with update line 10 position 15
|
||||
if fi-uf = spaces go to loop-accept-fi-cidade.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-cidade.
|
||||
|
||||
loop-accept-fi-cep.
|
||||
accept fi-cep with update line 10 position 35.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-uf.
|
||||
|
||||
loop-accept-fi-fone-ddd.
|
||||
accept fi-fone-ddd with update line 11 position 15.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-cep.
|
||||
|
||||
loop-accept-fi-fone-num.
|
||||
accept fi-fone-num with update line 11 position 35.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-fone-ddd.
|
||||
|
||||
loop-accept-fi-fax-ddd.
|
||||
accept fi-fax-ddd with update line 12 position 15.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-fone-num.
|
||||
|
||||
loop-accept-fi-fax-num.
|
||||
accept fi-fax-num with update line 12 position 35.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-fax-ddd.
|
||||
|
||||
loop-accept-fi-cgc.
|
||||
accept fi-cgc with update line 13 position 15.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-fax-num.
|
||||
|
||||
loop-accept-fi-inscest.
|
||||
accept fi-inscest with update line 14 position 15.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-cgc.
|
||||
|
||||
loop-accept-fi-contato.
|
||||
accept fi-contato with update line 15 position 15.
|
||||
if wx-escape = wx-key-ac go to loop-accept-fi-inscest.
|
||||
|
||||
|
||||
loop-accept-exit. exit.
|
||||
|
||||
LOOP-SQL-CON.
|
||||
string "select * from filial where codigo = " fi-codigo ";;"
|
||||
into SQL-QUERY
|
||||
perform 090-DO-QUERY
|
||||
call "sql_max_tuple" using QRY-HANDLE MAX-TUPLE
|
||||
call "sql_max_field" using QRY-HANDLE MAX-FIELD.
|
||||
|
||||
LOOP-MOSTRA.
|
||||
move zeros to NTUPLE NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD wfi-codigo
|
||||
move wfi-codigo to numeroch perform num-x-9
|
||||
move numeronu to fi-codigo ed-num
|
||||
display " " line 4 position 15
|
||||
display fi-codigo line 4 position 17
|
||||
|
||||
move zeros to NTUPLE move 1 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-nome
|
||||
display fi-nome line 5 position 15
|
||||
|
||||
move zeros to NTUPLE move 2 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-fantasia
|
||||
display fi-fantasia line 6 position 15
|
||||
|
||||
move zeros to NTUPLE move 3 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-endereco
|
||||
display fi-endereco line 7 position 15
|
||||
|
||||
move zeros to NTUPLE move 4 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD wfi-end-num
|
||||
move wfi-end-num to numeroch perform num-x-9
|
||||
move numeronu to fi-end-num ed-num
|
||||
display fi-end-num line 7 position 71
|
||||
|
||||
move zeros to NTUPLE move 5 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-end-setor
|
||||
display fi-end-setor line 8 position 15
|
||||
|
||||
move zeros to NTUPLE move 6 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-cidade
|
||||
display fi-cidade line 9 position 15
|
||||
|
||||
move zeros to NTUPLE move 7 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-uf
|
||||
display fi-uf line 10 position 15
|
||||
|
||||
move zeros to NTUPLE move 8 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-cep
|
||||
display fi-cep line 10 position 35
|
||||
|
||||
move zeros to NTUPLE move 9 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-fone-ddd
|
||||
display fi-fone-ddd line 11 position 15
|
||||
|
||||
move zeros to NTUPLE move 10 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-fone-num
|
||||
display fi-fone-num line 11 position 35
|
||||
|
||||
move zeros to NTUPLE move 11 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-fax-ddd
|
||||
display fi-fax-ddd line 12 position 15
|
||||
|
||||
move zeros to NTUPLE move 12 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-fax-num
|
||||
display fi-fax-num line 12 position 35
|
||||
|
||||
move zeros to NTUPLE move 13 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-cgc
|
||||
display fi-cgc line 13 position 15
|
||||
|
||||
move zeros to NTUPLE move 14 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-inscest
|
||||
display fi-inscest line 14 position 15
|
||||
|
||||
move zeros to NTUPLE move 15 to NFIELD
|
||||
call "sql_get_value" using QRY-HANDLE NTUPLE NFIELD fi-contato
|
||||
display fi-contato line 15 position 15.
|
||||
|
||||
LOOP-FIM.
|
||||
stop run.
|
||||
|
||||
|
||||
050-DISCONECTAR.
|
||||
call "sql_disconnect_db" using DB-HANDLE.
|
||||
|
||||
|
||||
070-CONECTAR-TEMPLATE.
|
||||
move "template1" to DATABASE-NAME.
|
||||
call "sql_connect_db" using DATABASE-NAME DB-HANDLE DB-STATUS.
|
||||
if DB-STATUS not = zeros
|
||||
display "Erro na coneccao do banco de dados!" line 23 position 1
|
||||
stop run.
|
||||
|
||||
080-CONNECT-MYDB.
|
||||
move "postgres" to DATABASE-NAME.
|
||||
call "sql_connect_db" using DATABASE-NAME DB-HANDLE DB-STATUS.
|
||||
if DB-STATUS not = zeros
|
||||
display "Erro na coneccao do banco de dado!"
|
||||
line 24 position 01
|
||||
stop run.
|
||||
|
||||
090-DO-QUERY.
|
||||
call "sql_exec_query" using DB-HANDLE SQL-QUERY QRY-HANDLE DB-STATUS.
|
||||
|
||||
200-CHECK-STATUS.
|
||||
*> display "DB-STATUS = " DB-STATUS.
|
||||
if (DB-STATUS not = 1 and DB-STATUS not = 2)
|
||||
move spaces to DB-MESSAGE
|
||||
call "sql_status_message" using DB-HANDLE DB-MESSAGE
|
||||
display DB-MESSAGE line 24 position 01
|
||||
accept wx-pare.
|
||||
|
||||
copy "pcglobal.cpy".
|
||||
@@ -0,0 +1,19 @@
|
||||
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)
|
||||
);
|
||||
|
||||
@@ -0,0 +1,215 @@
|
||||
Guia Tinycobol (Gnu) + PostgreSQL
|
||||
=====================================
|
||||
|
||||
Carlucio Lopes <carsanlo@terra.com.br>
|
||||
Goiania - Goias - Brasil
|
||||
InfoCont Sistemas Integrados - Adaptação 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 - Partição NTFS)
|
||||
http://postgresql.org secao download -> Binários para Windows
|
||||
|
||||
2.2 Descompacte o arquivo postgresql-8.1.x-x.zip em uma pasta.
|
||||
|
||||
2.3 Execute a instalação através do arquivo postgresql-8.1.msi (Windows Installer)
|
||||
Durante a instalação será solicitada uma senha de acesso ao banco. Guarde esta senha, pois
|
||||
você terá de usa-la no item 3.3, para configurar os parâmetros de acesso ao banco.
|
||||
|
||||
2.4 Entendendo o PostgreSQL:
|
||||
O processo de instalação criará um grupo de programas chamado PostgreSQL, onde se encontram
|
||||
todas as ferramentas de administração e execução do banco de dados.
|
||||
Durante a instalação, 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 intruções 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 através do TinyCOBOL.
|
||||
Trata-se de um pequeno cadastro de filiais.
|
||||
|
||||
3.1 compilando e gerando o executável de cad01.cob digite:
|
||||
htcobol -vCX cad01.cob
|
||||
|
||||
nota: Estamos usando a opção X para compilar o programa porque ele esta escrito em free
|
||||
format, sem o uso das margens características 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 diretório 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 instruções 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 instruções acima poderiam ser gravadas num arquivo texto
|
||||
(comando.sql, por exemplo) e poderiamos executa-lo posteriormente através do
|
||||
seguinte comando:
|
||||
|
||||
postgres=# \i c:/tinycobol/tutoriais/postgresql/comando.sql
|
||||
3.3 O banco de dados necessita de alguns parâmetros para possibilitar o acesso a mesmo.
|
||||
Estes parâmetros são definidos através de variáveis de ambiente, que serão lidas pela
|
||||
biblioteca de acesso ao banco (LIBPQ). Estas variáveis já estão preparadas no arquivo
|
||||
SETBANCO.BAT, que deverá ser executado antes do programa CAD01. Estas são as variáveis:
|
||||
set PGSQL_SERVER=127.0.0.1
|
||||
set PGSQL_USER=postgres
|
||||
set PGSQL_PASSWD=senha
|
||||
A variável PGSQL_SERVER indica o IP do servidor, onde 127.0.0.1 corresponde a localhost,
|
||||
ou seja, a máquina atual.
|
||||
A variável PGSQL_USER=postgres indica o usuário configurado para acesso ao banco. Altere-a
|
||||
se necessário.
|
||||
Já a variável PGSQL_PASSWD indica a senha configurada para acesso ao banco. Altere-a para
|
||||
a senha informada durante o processo de instalação.
|
||||
A configuração destes parâmetros é imprescindível 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
|
||||
@@ -0,0 +1,32 @@
|
||||
050-DISCONECTAR.
|
||||
call "sql_disconnect_db" using DB-HANDLE.
|
||||
|
||||
|
||||
conectar-template.
|
||||
move "template1" to nome-banco-dado.
|
||||
call "sql_connect_db" using
|
||||
nome-banco-dado DB-HANDLE DB-STATUS.
|
||||
if DB-STATUS not = zeros
|
||||
display "Erro na coneccao do banco de dados!"
|
||||
line 23 position 1
|
||||
stop run.
|
||||
|
||||
conectar-banco.
|
||||
call "sql_connect_db" using
|
||||
nome-banco-dado DB-HANDLE DB-STATUS.
|
||||
if DB-STATUS not = zeros
|
||||
display "Erro na coneccao do banco de dado!"
|
||||
line 24 position 01
|
||||
stop run.
|
||||
|
||||
faca-comando.
|
||||
call "sql_exec_query" using
|
||||
DB-HANDLE comando-sql QRY-HANDLE DB-STATUS.
|
||||
|
||||
200-CHECK-STATUS.
|
||||
if (DB-STATUS not = 1 and DB-STATUS not = 2)
|
||||
move spaces to DB-MESSAGE
|
||||
call "sql_status_message" using DB-HANDLE DB-MESSAGE
|
||||
display DB-MESSAGE line 24 position 01
|
||||
accept wx-pare.
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
*> acerto numero em alfanumerico
|
||||
num-x-9.
|
||||
perform numero-int thru numero-int3.
|
||||
numero-int.
|
||||
move spaces to numeronu.
|
||||
move 15 to seq-7
|
||||
move 15 to seq-77.
|
||||
numero-int1.
|
||||
if seq-77 = zeros go to numero-int2.
|
||||
if numeropos (seq-77) not numeric
|
||||
compute seq-77 = seq-77 - 1
|
||||
go to numero-int1.
|
||||
move numeropos (seq-77) to numeronupos (seq-7)
|
||||
compute seq-7 = seq-7 - 1
|
||||
compute seq-77 = seq-77 - 1.
|
||||
go to numero-int1.
|
||||
numero-int2.
|
||||
if seq-7 = zeros go to numero-int3.
|
||||
if numeronupos (seq-7) not numeric
|
||||
move zeros to numeronupos (seq-7)
|
||||
compute seq-7 = seq-7 - 1
|
||||
go to numero-int2.
|
||||
numero-int3.
|
||||
exit.
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
set PGSQL_SERVER=127.0.0.1
|
||||
set PGSQL_USER=postgres
|
||||
set PGSQL_PASSWD=senha
|
||||
@@ -0,0 +1,13 @@
|
||||
*> Variaveis para acerto do numero em caracter
|
||||
01 seq-geral.
|
||||
02 seq-77 pic 99 value zeros.
|
||||
02 seq-7 pic 99 value zeros.
|
||||
|
||||
01 numeroch pic x(15) value spaces.
|
||||
01 numerord redefines numeroch.
|
||||
03 numeropos occurs 15 times pic x.
|
||||
01 numeronu pic x(15) value spaces.
|
||||
01 numerorn redefines numeronu.
|
||||
03 numeronupos occurs 15 times pic x.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user