Clube Cobol - Índice Clube Cobol
O fórum da linguagem de programação mais famosa do mundo!
 
 FAQFAQ   BuscaBusca   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Mensagens privadasMensagens privadas   EntrarEntrar 

Primeiros Passos

 
Novo tópico   Responder tópico    Clube Cobol - Índice -> Mainframe
Exibir tópico anterior :: Exibir próximo tópico  
Autor Mensagem
camacho



Registrado: 04/05/08
Mensagens: 8
Localização: São Paulo - SP

MensagemEnviada: Ter Mai 06, 2008 8:00 pm    Assunto: Primeiros Passos Responder com citação

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? Shocked

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail
JP2008



Registrado: 11/05/08
Mensagens: 2

MensagemEnviada: Dom Mai 11, 2008 6:38 am    Assunto: Cobol Responder com citação

Tudo bom Camacho! Sou novo no forum e quero parabenizar a vc pela iniciativa Smile , 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
Crying or Very sad

ps Meu estagio depende disso Shocked e sou novo na area de info tambem ,e eu não acho tutorial nenhum na net!!!
Voltar ao topo
Exibir perfil de usuários Enviar mensagem privada
Jair
Site Admin


Registrado: 19/12/07
Mensagens: 230
Localização: Rio de Janeiro - RJ

MensagemEnviada: Seg Mai 12, 2008 2:25 pm    Assunto: Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada Enviar e-mail Visitar o website do usuário
wandelson



Registrado: 29/11/09
Mensagens: 4

MensagemEnviada: Qui Fev 18, 2010 10:23 am    Assunto: balance line Responder com citação

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
Exibir perfil de usuários Enviar mensagem privada
Mostrar os tópicos anteriores:   
Novo tópico   Responder tópico    Clube Cobol - Índice -> Mainframe Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Você não pode enviar mensagens novas neste fórum
Você não pode responder mensagens neste fórum
você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode votar em enquetes neste fórum


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por phpBB Brasil