| Exibir tópico anterior :: Exibir próximo tópico |
| Autor |
Mensagem |
camacho
Registrado: 04/05/08 Mensagens: 8 Localização: São Paulo - SP
|
Enviada: Ter Mai 06, 2008 8:00 pm Assunto: Primeiros Passos |
|
|
Primeiros Passos
Boa tarde Srs(as),
Estou preparando uma introdução à programação mainframe e conforme os módulos estiverem prontos irei disponibilizando-os.
Conheço profissionais que conhecem a linguagem NATURAL e banco de dados ADABAS. Alguns são feras em Easytrieve. Outros são especialistas em Assembly e há uma turma que sabe tudo de Cobol CICS e DB2. Minha preocupação inicial tem foco em saber qual a tendência das instituições que utilizam Mainframe no sentido de identificar o banco de dados / linguagem mais utilizada para então formular apostilas consistentes.
A idéia é que estas apostilas possam ser utilizadas no dia-a-dia, pois eu tenho perdido algumas noites de sono lendo manuais e redbooks que nem sempre possuem exemplos aplicáveis em situações reais.
Já pensou gastar vários meses produzindo um material que não tem exemplos utilizáveis na prática?
ps: Programadores MF que quiserem se unir ao desafio serão muito bem-vindos...
Até breve, _________________ Carlos Camacho
Analista de Sistemas
São Paulo - SP - Brasil
webmaster@karate-do.com.br |
|
| Voltar ao topo |
|
 |
JP2008
Registrado: 11/05/08 Mensagens: 2
|
Enviada: Dom Mai 11, 2008 6:38 am Assunto: Cobol |
|
|
Tudo bom Camacho! Sou novo no forum e quero parabenizar a vc pela iniciativa , e gostaria de tirar umas duvidas...
Estou fazendo um curso cobol para mainframe, e não estou entendendo muito bem fazer a verificação de duas chaves em dois arquivos para fazer a gravação num terceiro, pois é necessario fazer um 'batimento' e pular para o proximo registro, mas na pratica não consigo fazer
ps Meu estagio depende disso e sou novo na area de info tambem ,e eu não acho tutorial nenhum na net!!! |
|
| Voltar ao topo |
|
 |
Jair Site Admin
Registrado: 19/12/07 Mensagens: 230 Localização: Rio de Janeiro - RJ
|
Enviada: Seg Mai 12, 2008 2:25 pm Assunto: |
|
|
Você na verdade não está empacado com a COBOL em sí, e sim com a lógica requerida para o controle de fluxo dos registros. Este tipo de exercício é muito comum nos cursos e testes.
Este processamento geralmente recebe o nome de "Balance line" e consiste em ler o arquivo A e arquivo B gravando cada registro no arquivo C sendo que a leitura/gravação subsequente depende do valor da chave de A e B, aquela que for menor é que deverá ser gravada e consequentemente o arquivo correspondente lido novamente.
Este controle de fluxo se repetirá até que encontre o fim dos arquivos A e B. _________________ Jair - Campo Grande/RJ
NetExpress 3.1/DialogSystem
NetCobol 10/PowerCobol
MySql 5.1/PostgreSQL 8.3
Crystal Reports XI/PowerFORM |
|
| Voltar ao topo |
|
 |
wandelson
Registrado: 29/11/09 Mensagens: 4
|
Enviada: Qui Fev 18, 2010 10:23 am Assunto: balance line |
|
|
arquivo cadastro entrada
1 mickey
2 pateta
3 erro
5 deise
10 cascão
11 magali
12 horacio
13 bidu
14 horacio
15 piteco
16 bolota
--------------------------------------------------------------------------------------
arquivo atualização
alterar 3 Minie
Incluir 4 Donald
Incluir 6 Gastao
Incluir 8 patinhas
excluir 12 horacio
excluir 15 piteco
alterar 16 cebolinha
incluir 17 monica
--------------------------------------------------------------------------------------
aquivo de cadastro saida
1 Mickey
2 pateta
3 Miney
4 Donald
5 Dayse
6 Gastao
8 Patinhas
7 Monica
9 Luisinho
10 Cascao
11 magali
13 Bidu
14 Horacio
16 Cebolinha
17 MOnica
--------------------------------------------------------------------------------------
Ae galera , podem me ajudar com esse balance line
tenho um arquico de entrada e um arquivo de atualização quero gravar os dados em um arquivo de saida .
| Código: |
Identification Division.
Program-Id. Teste.
Environment Division.
Configuration Section.
Input-Output Section.
File-Control.
Select Entrada assign ut-s-Entrada
organization is sequential
file status is fs-ent.
Select Atualiz assign ut-s-Atualizacao
organization is sequential
file status is fs-atu.
Select Saida assign ut-s-Saida
organization is sequential
file status is fs-sai.
Data Division.
File Section.
FD Entrada.
01 RegEnt.
03 EntCodigo pic 9(03).
03 filler pic x(01).
03 EntNome pic x(30).
FD Atualiz.
01 RegAtu.
03 AtuCodigo pic 9(03).
03 filler pic x(01).
03 AtuNome pic x(30).
FD Saida.
01 RegSai.
03 SaiCodigo pic 9(03).
03 filler pic x(01).
03 SaiNome pic x(30).
Working-Storage Section.
01 WRK-AREAS.
03 WLIM PIC 9(03) VALUE 27.
03 fs-ent PIC X(2) VALUE SPACES.
03 fs-sai PIC X(2) VALUE SPACES.
03 WRK-FIM PIC X(1) VALUE 'N'.
03 AC-LIDOS PIC 9(5) VALUE ZEROS.
03 AC-PAG PIC 9(3) VALUE ZEROS.
03 AC-LIN PIC 9(2) VALUE 99.
77 fs-ent pic x(02) value spaces.
77 fs-atu pic x(02) value spaces.
77 fs-sai pic x(02) value spaces.
******************************************************************
*PROCEDURE DIVISION
******************************************************************
PROCEDURE DIVISION.
******************************************************************
PRINCIPAL SECTION.
******************************************************************
PERFORM 100-INICIALIZA.
PERFORM 200-LER-ENTRADA.
PERFORM 250-LER-ATUALIZ.
PERFORN 300-GRAVAR.
PERFORM 500-PROCESSA UNTIL WRK-FIM = 'S'
PERFORM 900-FINALIZA.
STOP RUN.
PRINCIPAL-EXIT.
EXIT.
******************************************************************
100-INICIALIZA SECTION.
******************************************************************
OPEN INPUT ENTRADA , atualiz
OUTPUT saida.
IF fs-ent NOT EQUAL '00'
DISPLAY 'Erro ao abrir Arq. Entrada. St:' fs-ent
PERFORM 999-ERRO
END-IF
IF fs-atu NOT EQUAL '00'
DISPLAY 'Erro ao abrir Arq.Atualização. St:' fs-atu
PERFORM 999-ERRO
END-IF.
100-EXIT.
EXIT.
*******************************************************************
200-LER-Entrada SECTION.
*******************************************************************
READ ENTRADA INTO RegEnt
IF fs-ent EQUAL '00'
ADD 1 TO AC-LIDOS
ELSE
IF fs-ent EQUAL '10'
MOVE 'S' TO WRK-FIM
ELSE
DISPLAY 'ERRO LER ARQUIVO'
PERFORM 999-ERRO
END-IF
END-IF.
200-EXIT.
EXIT.
********************************************************************
250-LER-ATUALIZ SECTION.
********************************************************************
READ ATUALIZ INTO RegAtu
IF FS-ATU EQUAL '00'
ADD 1 TO AC-LIDOS
ELSE
IF FS-ATU EQUAL '10'
MOVE 'S' TO WRK-FIM
ELSE
DISPLAY 'ERRO LER ARQUIVO'
PERFORM 999-ERRO
END-IF
END-IF.
250-EXIT.
EXIT.
********************************************************************
500-PROCESSA SECTION.
********************************************************************
If EntCodigo < AtuCodigo
READ entrada NEXT.
If EntCodigo equal AtuCodigo
Perform grava.
Else
Read entrada
Read
End-if
Grava.
move RegAtu to RegSai
write saida from RegSai.
500-EXIT.
EXIT.
*********************************************************************
999-ERRO SECTION.
*********************************************************************
DISPLAY '*****PROGRAMA CANCELADO********'.
STOP RUN.
999-EXIT.
EXIT.
*********************************************************************
900-FINALIZA SECTION.
*********************************************************************
CLOSE Entrada , atualiz , saida .
IF fs-ent NOT EQUAL '00'
DISPLAY 'Erro ao fechar Arq. Entrada. St:' fs-ent
PERFORM 999-ERRO
END-IF
IF fs-atu NOT EQUAL '00'
DISPLAY 'Erro ao fechar Arq.Relatorio. St:' fs-atu
PERFORM 999-ERRO
END-IF.
DISPLAY '**************************************************'
DISPLAY '* PROGRAMA FINALIZADO COM SUCESSO *'
DISPLAY '**************************************************'.
900-EXIT.
EXIT
|
|
|
| Voltar ao topo |
|
 |
|