You are on page 1of 33

UNIDADE 1 Conhecimentos Bsicos CAPTULO 1 Uma Introduo ao Projeto Estruturado de Programas em COBOL OBJETIVOS Familiarizar o leitor com 1.

O motivo pelo qual o COBOL uma linguagem to popular e dirigida para o uso comercial. 2. Tcnicas e prticas de programao. 3. Uma histria de como o COBOL se desenvolveu e o uso das verses atuais do COBOL padro ANS. 4. Uma viso geral das quatro divises de um programa em COBOL. SUMRIO PROGRAMAO COMPUTACIONAL: UMA VISO GERAL Tipos de Programas Computacionais Programas de Aplicaes Processamento Interativo versus Processamento em Lotes (Batch) Programas em Linguagem de Mquina Programas Simblicos O PROCESSO DE DESENVOLVIMENTO DE PROGRAMAS DE APLICAES Determinar as Especificaes do Programa Projetar o Programa Usando as Ferramentas de Planejamento de Programas Codificar e Digitar o Programa Compilar o Programa-fonte Testar o Programa Depurao durante as Fases de Compilao e Teste Tcnicas de Depurao Documentar o Programa A NATUREZA DO COBOL COBOL uma Linguagem Prpria ao Uso Comercial COBOL E uma Linguagem Padro COBOL E uma Linguagem Semelhante Lngua Inglesa COBOL E uma Linguagem Amigvel UMA HISTRIA DO COBOL E DAS VERSES ANS Quando o COBOL Comeou As Verses ANS (American National Standards) do COBOL O Futuro do COBOL e o Problema do Ano 2000 Teste TCNICAS PARA MELHORAR O PROJETO DE PROGRAMAS Programao Estruturada Usando o Projeto Modular para Codificar Pargrafos O Mtodo Top-Down de Codificar Mdulos UM PROGRAMA DE EXEMPLO Uma Viso Geral das Quatro Divises Definio do Problema Uma Introduo ao Projeto Estruturado de Programas em COBOL 3 Layout de Entrada Layout de Sada O Programa Ilustrado Revendo as Especificaes Regras de Codificao As Divises IDENTIFICATION DIVISION e ENVIRONMENT DIVISION

A Diviso DATA DIVISION A Diviso PROCEDURE DIVISION Uma Breve Viso Geral das Ferramentas de Planejamento de Programas DIGITANDO E EXECUTANDO UM PROGRAMA COBOL EM SEU COMPUTADOR SEES AUXILIARES FINAIS DO CAPTULO Resumo do Captulo Principais Termos Teste de Final de Captulo Questes de Reviso Tarefas de Programao PROGRAMAO COMPUTACIONAL: UMA VISO GERAL Tipos DE PROGRAMAS COMPUTACIONAIS Um programa um conjunto de instrues que permite a um computador processar dados. H dois tipos de programas computacionais: programas do sistema operacional, que controlam as operaes globais do computador, e programas aplicativos (programas de aplicaes), que realizam efetivamente as tarefas exigidas pelos usurios. O termo usado para descrever todos os tipos de programas chamado software. Um programa aplicativo age sobre os dados de entrada (input) e os converte em informaes teis de sada (output). A seguir mostrada uma ilustrao de como um computador processa dados: DADOS DE ________ ________ INFORMAES ENTRADA PROGRAMA DE SADA r Num 1=5 Exemplo L,Nurn PDREOAGDF1 To.:J Um computador pode processar dados somente com a eficincia e a eficcia com que for programado. O conjunto de instrues em um programa de aplicaes escrito por um profissional de informtica chamado programador de aplicaes, programador de aplicativos ou desenvolvedor de software. PROGRAMAS DE APLICAES Como foi mencionado, um programa de aplicaes escrito por um programador de aplicaes ou desenvolvedor de software para fornecer aos usurios as informaes de que eles necessitam. Alguns programas de aplicaes so escritos para obter uma soluo rpida para um problema e ser executado uma nica vez; outros so escritos para serem executados periodicamente de uma forma regular. Um programa aplicativo para exibir o grau mdio de uma srie de exames digitada como dado de entrada seria um exemplo de um servio executado uma nica vez. Um programa de aplicaes para imprimir as notas dos alunos em cada semestre seria um exemplo de um programa executado periodicamente em intervalos regulares. Em geral, os programas aplicativos podem ler os dados de entrada, process-los e produzir informaes ou a sada de que o usurio necessita. Geralmente, os programas aplicativos so usados para informatizar procedimentos comerciais. Um conjunto de procedimentos comerciais informatizados constitui uma rea de aplicaes chamada sistema de informaes. Processamento Interativo versus Processamento em Lotes (Batch) Alguns aplicativos so chamados interativamente, medida que os dados so enviados, ao passo que outros dados so coletados e processados posteriormente, em lotes. As aplicaes chamadas de forma interativa aceitam normalmente dados de entrada de um PC, uma estao de trabalho ou um terminal. Os dados so processados imediatamente e a sada exibida em uma tela ou impressa. Esse tipo de processamento interativo usado quando os dados devem estar sempre atualizados e se exige a sada imediatamente

4 Uma Introduo ao Projeto Estruturado de Programas em COBOL aps o processamento. Um sistema de Ponto de Vendas (POS, ou Point-of-Sale), no qual os

recibos so gerados por computador quando as vendas so realizadas, um exemplo de aplicao interativa; tanto o valor das contas recebidas como os arquivos de estoque so atualizados ao final da transao. Outros aplicativos processam grandes volumes de dados de entrada em intervalos peridicos de tempo. Os procedimentos de pagamento de pessoal usados para atualizar grupos principais de informaes de pagamento antes de imprimir os cheques so realizados freqentemente no modo de processamento em lotes e em intervalos peridicos. Veremos que o COBOL perfeitament adequado tanto para aplicaes de processamento interativo como de processamento em lotes. Quando um programa aplicativo escrito para um usurio especfico, ele chamado de programa personalizado. O COBOL pode ser em pregado perfeitamente como uma linguagem para escrever aplicativos personalizados. Embora neste texto nos concentremos no COBOL para programar aplicativos, forneceremos agora uma breve descrio de outro tipo de software aplicativo chamado de pacote de aplicaes. Se as tarefas a serem realizadas por um programa forem relativamente padronizadas, como preparar um oramento, um pacote de aplicaes pode ser comprado como uma alternativa ao ato de escrever um programa personalizado em uma linguagem como o COBOL. Geralmente, a documentao fornecida pelo fabricante em forma de um manual do usurio, que explica como usar o pacote. Por exemplo, o Excel um pacot muito usado para aplicaes como oramentos, agendamentos e preparao de balanos experimentais. Se existir um pacote pronto para ser usado, sem necessidade de modificaes, compr-lo quase sempre ser mais barato e mais fcil do que escrever um programa personalizado. Mas se um aplicativo possuir exigncias especiais, escrever um programa personalizado pode ser prefervel a modificar um pacote existente. PROGRAMAS EM LINGUAGEM DE MQUINA Todos os programas a serem executados pelo computador devem estar em linguagem de mquina. Seria muito cansativo e trabalhoso para o programador desenvolver programas dessa forma. Ele precisaria fazer referncia aos endereos ou locais reais na memria e usar instrues com plexas de codificao. PROGRAMAS SIMBLICOS Tendo em vista a dificuldade da programao ou do desenvolvimento de software em linguagem de mquina, as linguagens de programao evoluram de modo a permitir ao programador escrever instrues simblicas ou semelhantes lngua inglesa. Entretanto, antes que as instrue simblicas possam ser executadas, elas precisam ser traduzidas ou compiladas pelo computador em linguagem de mquina. O prprio computador usa um programa tradutor ou compilador para realizar essa converso em linguagem de mquina. H vrias linguagens simblicas de programao que podem ser traduzidas em linguagem de mquina. O COBOL uma dessas linguagen usadas extensivamente em aplicativos comerciais. Outras linguagens simblicas de programao incluem Visual Basic, Pascal, C e C+ +. O PROCESSO DE DESENVOLVIMENTO DE PROGRAMAS DE APLICAES O processo de desenvolvimento de programas similar para todos os aplicativos, independentemente da linguagem simblica de programao utilizada. A seguir veremos uma viso geral das etapas envolvidas no processo de desenvolvimento de programas. Cada uma dessas etapas ser analisada detalhadamente. PROCESSO DE DESENVOLVIMENTO DE PROGRAMAS 1. Determinar as Especificaes do Programa Os programadores, juntamente com os analistas de sistemas responsveis pelo projeto informatizado global de procedimentos comerciais, trabalham ao lado dos usurios para desenvolver as especificaes do programa. As especificaes do programa incluem os layouts de entrada e sada descrevendo o formato exato dos dados juntamente com as exigncias de cada etapa do processamento para converter os dados de entrada em informaes de sada. 2. Projetar o Programa Usando as Ferramentas de Planejamento de Programas Os programadores usam ferramentas para planejamento de projetos ou programas, como fluxogramas, pseudocdigo e organogramas para ajudar no mapeamento da estrutura e na lgica de um programa antes de ele ser realmente codificado. 3. Codificar e Digitar o Programa O programador escreve e depois digita ou entra com o programa-fonte no sistema computacional

usando um teclado. 4. Compilar o Programa O programador se certifica de que o programa no est violando as regras. 5. Testar o Programa O programador desenvolve dados de exemplo, percorre o programa manualmente para ver se ele gera a sada correta e depois usa o programa para agir sobre os dados para se assegurar de que o processamento est correto. 6. Documentar o Programa O programador escreve manuais de procedimentos para os usurios e operadores de computadores de modo que eles possam rodar o programa em intervalos de tempo previstos regularmente. 6 Uma Introduo ao Projeto Estruturado de Programas em COBOL 1Z34j6 44 H - E FOLHA tE PAGAMENTO tt MM AAAA 1 C 81 NUMERO HORAS . HO.RIAS + PAU c Lj EMPREGADO NORMAIS EXTRAS. BRIIJTO 101 D 11 99999 99.99 .9+9.99 $9,9199.99 + C = Linha de cabealho 1 tf D=Linhadedetalhes 17 PAGAMENTO BRUTO TOTAL $9999999 . tjIJnhadetotais 18) 1 L . . Fig. 1.2 Exemplo de Grfico (Gabarito) de Espaamento de Impressora. Os formulrios de layout de registros para entradas digitadas e sadas em disco so preparados tanto por um analista de sistemas como por um desenvolvedor de software. Se a sada deve ser impressa, um Gabarito de Espaamento de Impressora preparado para indicar o formato exa da sada. Juntamente com esses formulrios de layout, preparado um conjunto de notas indicando as exigncias especficas do programa. Programas ilustrativos e declaraes de atribuies neste texto incluiro exemplos dessas especificaes de programas para que voc venha se familiarizar com elas medida que ler o livro. Isso ajudar voc a aprender o que pode esperar de um analista de sistemas ou o que pode precisar se, como programador, voc mesmo estiver preparando essas especificaes. PROJETAR O PROGRAMA USANDO AS FERRAMENTAS DE PLANEJAMENTO DE PROGRAMAS Antes de um programador comear a escrever o cdigo de um programa, ele deve planejar a lgica a ser usada naquele programa. Da mesma forma que um arquiteto desenha uma planta antes de um edifcio ser construdo, um programador deve usar uma ferramenta de planejamento antes de escrever o cdigo de um programa. Inicialmente os programadores usavam fluxogramas para planejar a lgica de um programa. Um fluxograma um diagrama de blocos convencional que fornece uma representao grfica da lgica a ser usada em um programa. Pseudocdigo escrito em expresses semelhantes ao idioma portugus, ou ingls, em vez de diagramas e especialmente adequado para descrever a lgica utilizada em um programa estruturado. Diagramas hierrquicos ou de estrutura so usados para mostrar o relacionamento entre as sees de um programa. Atualmente, o nmero de desenvolvedores de software usando pseudocdigo e diagramas hierrquicos maior do que o dos que usam fluxogramas para planejar a lgica de um programa. Na maior parte de nossas ilustraes, mostraremos o fluxo da lgica a ser usada em um programa com pseudocdigo e um diagrama hierrquico. O primeiro captulo se encerra com uma breve descrio de todas as ferramentas de planejamento, incluindo fluxogramas; no Cap. 5 fornecemos uma anlise detalhada dessas ferramentas. CODIFICAR E DIGITAR O PROGRAMA Depois de a lgica de um programa ter sido planejada, o programador escreve um conjunto de instrues chamado programa-fonte, em uma linguagem de programao simblica. Programas simblicos no podem ser executados ou rodados pelo computador at que tenham sido

compilados ou traduzidos para linguagem de mquina. Geralmente, o programa-fonte digitado em um computador por meio do teclado e armazenado em um disco ou outra mdia de armazenamento. COMPILAR O PROGRAMA-FONTE Depois de o programa ter sido digitado em um teclado ou lido de um disco, o computador deve traduzi-lo para um programa em linguagem de mquina chamado programa-objeto antes que sua execuo possa ocorrer. Um programa chamado compilador traduz programas-fonte em programas-objeto, que so executveis. A Fig. 1.3 ilustra o processo de compilao. TESTAR O PROGRAMA Os programas devem ser testados ou depurados para que se possa assegurar que eles no possuem erros. H vrios mtodos utilizados para test ou para depurar um programa. Depurao durante as Fases de Compilao e Teste Erros em Tempo de Compilao Quando um computador compila um programa COBOL, os erros detectados pelo compilador sero listados. Qualquer violao a uma regra de programao chamada erro de sintaxe. Por exemplo, se uma instruo COBOL para somar dois nmeros digitada como AD em vez de ADD o computador imprimir uma mensagem indicando que ocorreu um erro de sintaxe. Se tais erros forem muito graves, a execuo do programa no pode comear at que eles sejam corrigidos. Uma Introduo ao Projeto Estruturado de Programas em COBOL 7 Programa-fonte (Normalmente digitado em um teclado) r7 COMPUTADOR Compilador (Armazenado em disco) rr Erros de Execuo Fig. 1.3 O processo de compilao. Observe que os erros de sintaxe detectados durante uma compilao so apenas um tipo de erro de programao. Tambm podem ocorrer erros lgicos, que so detectados durante a execuo do programa, no durante a compilao, e resultam em informaes de sada incorretas. Um tipo de erro lgico quando a seqncia das etapas de programao no foi especificada corretamente. Se voc incluir uma instruo ADD em vez de M U L T I P L Y, por exemplo, isso resultaria em um erro lgico. Outro tipo de erro de execuo chamado de erro em tempo de execuo, que ocorre se o computador no pode executar uma instruo. So exemplos de erros em tempo de execuo (1) a tentativa de dividir por zero e (2) a leitura de um arquivo que no pode ser encontrado. Os erros de execuo so detectados pelos programadores quando o programa testado durante o tempo de execuo. Depois de todos os erros de sintaxe terem sido corrigidos, o programaobjeto carregado no local de armazenamento e conectado ao sistema. Ento o programa executado e testado com uma amostra de dados ou dados de teste para que se possa verificar se ele processa os dados corretamente, O teste em execuo deve ler a amostra de dados como entrada e produzir a sada desejada. O programador verifica ento a sada para ter certeza de que ela est correta. Se no estiver correta, ocorreu um erro lgico. Se o programa no puder ser executado em sua totalidade, isso deve acontecer em conseqncia de um erro em tempo de execuo. A amostra de dados deve ser preparada cuidadosamente para que se tenha a certeza de que, durante o teste ou a depurao do programa, todas as respostas que um programa deve fornecer foram realmente testadas. Em caso negativo, pode acontecer que um programa comece a ser usado regularmente e depois venha a produzir erros de tempo de execuo ou lgicos. Se no houver erros no programa-fonte quando esse for compilado ou se apenas ocorreram pequenas violaes das regras, todas as instrues sero traduzidas para linguagem de mquina. O programa-objeto pode ento ser executado, ou testado, durante o tempo de execuo. A Fig. 1.4 ilustra as etapas envolvidas na codificao e no teste de um programa.

Tcnicas de Depurao Vimos que um programa, depois de ter sido planejado e codificado, deve ser compilado e depois de os erros de sintaxe terem sido corrigidos ele deve ser executado com dados de teste. No raro que ocorram erros tanto durante a compilao quanto na execuo. Como foi destacado, a eliminao desses erros chamada de depurao. O programador deve usar vrios mtodos de depurao: Exame Prvio (Conferncia de Mesa ou Desk Checking) Os programadores devem examinar cuidadosamente um programa no que diz respeito a erros tipogrficos ou de ortografia antes que ele seja digitado e mais uma vez depois que a digitao tenha acontecido. O exame prvio (ou desk checking) minimizar o tempo total necessrio para depurar um programa. Freqentemente, os programadores no conseguem ver a necessidade dessa fase, baseando-se na premissa de que melhor deixar o computador encontrar os erros. Entretanto, a omisso da fase de exame prvio pode resultar na falha de deteco de erros lgicos que posteriormente podem tomar horas ou mesmo dias para sua depurao. Os programadores experientes examinam cuidadosamente seus programas antes e depois de digit-los. Listagem do Listagem das Programa-objeto Programa-fonte Violaes de (Normalmente Regras ou armazenado em Erros de Sintaxe disco e produzido apenas se no houver erros graves de sintaxe)

8 Uma Introduo ao Projeto Estruturado de Programas em COBOL INCIO CODIFICAR O PROGRAMAITAR OU ENTRA COMO ROGRAMAFONJ CARREGAR O COMPHAD (4 CORRIGIR OS ERROS DE J SINTAXE RODAR O PROGRAMA COM DADOS DE TESTE REVER / MANUALMENTE / A SAIDA PARA SE / ASSEGURAR DE / / QUEELAEST CORRETA J EMsIMF COMPLETAR A DOCUMENTAO J

Fig. 1.4 Etapas envolvidas nos processos de codificar e testar um programa.

Uma Introduo ao Projeto Estruturado de Programas em COBOL Correo de Erros de Sintaxe Depois de um programa ter sido traduzido ou compilado, o compilador imprimir uma listagemfonte juntamente com as mensagens de diagnstico que indicam quaisquer violaes de regras ou erros de sintaxe. O programador deve ento corrigir os erros e recompilar o programa antes que ele possa ser executado com dados de teste. Revises do Percurso (Walkthroughs) do Programa Depois de um programa ter sido compilado satisfatoriamente, os programadores devem testar a lgica do mesmo por meio de uma amostra de dados. Entretanto, melhor inicialmente percorrer o programa para ver se ele produzir os resultados desejados. Durante a reviso do percurso (walkthrough) de um programa, o programador passa manualmente pelas etapas da lgica do programa usando a amostra de dados, para ver se os resultados corretos foram obtidos. Isso feito antes da execuo por meio do computador. Tais revises podem ajudar o programador a encontrar erros de lgica e de tempo de execuo mais facilmente. Algumas vezes so realizadas revises estruturadas diretamente a partir do pseudocdigo, antes mesmo da codificao real do programa, em um esforo para minimizar a necessidade de modificaes posteriores do programa. Freqentemente, as equipes de programao trabalham em conjunto para testar a lgica de seus programas usando o mtodo de reviso do percurso. Esse mtodo de depurao pode economizar um tempo considervel. Deteco de Erros Lgicos e de Tempo de Execuo ao Rodar o Programa Detectar erros lgicos e de tempo de execuo ao rodar o programa normalmente a parte mais difcil e demorada da depurao. Os Caps. 5 e 11 so dedicados a tcnicas adicionais usadas para encontrar e corrigir erros lgicos e de tempo de execuo em programas escritos em COBOL. A preparao da amostra de dados um aspecto extremamente crtico da depurao. O programador deve preparar os dados que testaro todas as situaes possveis que podero ser encontradas pelo programa. No raro que um programa que se imagine ter sido testado completamente e que esteve em uso durante algum tempo repentinamente produza erros. Muito freqentemente, esses problemas surgem por ter ocorrido uma condio especfica no encontrada anteriormente e o programa no ter sido testado para aquela situao. DOCUMENTAR O PROGRAMA Antes de um programa estar pronto para ser distribudo para as equipes operacionais que o utilizaro regularmente no trabalho, ele deve estar totalmente documentado. Isto , os usurios e os operadores devem receber um conjunto de procedimentos escritos e formais chamado documentao, que explica, em detalhes, como o programa deve ser executado e como a sada deve ser utilizada. Programadores experientes devem comear cedo a preparar a documentao e depois us-la como base durante todo o processo de desenvolvimento. A NATUREZA DO COBOL COBOL UMA LINGUAGEM PRPRIA AO Uso COMERCIAL O COBOL uma das mais difundidas linguagens de aplicaes comerciais atualmente em uso. As razes de seu sucesso so analisadas nesta seo. O nome COBOL uma abreviao de COmmon Business-Oriented Language. Por ser uma linguagem prpria ao uso comercial, o COBOL se destina especificamente a aplicaes comerciais, como folhas de pagamento e controle de estoques, que geralmente trabalham com grandes volumes de dados. As linguagens comerciais como o COBOL, que so mais adequadas ao processamento de grandes volumes de dados, so bem menos apropriadas para a manipulao de problemas cientficos, em que so exigidos clculos complexos. COBOL UMA LINGUAGEM PADRO

O COBOL uma linguagem comum de programao, o que significa que os compiladores COBOL esto disponveis em um formato padro para a maioria dos computadores. O mesmo programa COBOL, com pequenas modificaes, pode ser compilado e executado em vrios equipamentos, como um IBM ASI400 ou um RS/6000, um DEC VAX ou um DEC Alpha, ou mesmo um computador pessoal (PC). O COBOL uma linguagem padro, o que significa que todos os compiladores, independentemente dos computadores nos quais esto sendo executados, possuem as mesmas regras de sintaxe. Por ser o COBOL uma linguagem to usada, indubitavelmente os computadores de geraes futuras oferecero suporte a ela. O COBOL usado muito freqentemente tambm em microcomputadores. COBOL UMA LINGUAGEM SEMELHANTE LNGUA INGLESA Em resumo, o significado do nome COBOL sugere duas de suas vantagens bsicas. Ela comum (common) ou padro e adequada ao uso comercial (business-oriented). Entretanto, h razes adicionais pelas quais ela to popular. O COBOL uma linguagem semelhante lngua inglesa. Todas as instrues podem ser codificadas usando palavras simples da lngua inglesa em vez de cdigos complexos. Para somar dois nmeros, por exemplo, usamos a palavra ADD. Similarmente, as regras para programao em COBOL atendem a muitas regras da gramtica inglesa, o que o torna fcil de aprender. COBOL UMA LINGUAGEM AMIGVEL Como freqentemente os usurios so capazes de entender as instrues semelhantes lngua inglesa do COBOL, ele considerado uma linguagem amigvel. Isso significa que ela no essencialmente tcnica como algumas outras linguagens. Os usurios que utilizam a sada computacional mas no possuem experincia em programao podem ser capazes de entender a lgica e as instrues de um programa COBOL. 10 Uma Introduo ao Projeto Estruturado de Programas em COBOL UMA HISTRIA DO COBOL E DAS VERSES ANS QUANDO O COBOL COMEOU O COBOL foi desenvolvido em 1959 por um grupo chamado CODASYL Committee. CODASYL uma abreviao de COnference on DAta SYstems Languages. Esse comit inclua representantes de instituies acadmicas, grupos de usurios e fabricantes de computadores. O principal objetivo desse comit foi desenvolver uma linguagem padro adequada ao uso comercial para a qual todos os grandes fabricantes forneceriam compiladores. O Departamento de Defesa dos EUA (Department of Defense) convocou essa conferncia porque, assim como outras agncias governamentais, no estava satisfeito com a falta de padro no campo computacional. As VERSES ANS (AMERICAN NATIONAL STANDARDS) DO COBOL Em conseqncia do esforo do CODASYL, os primeiros compiladores COBOL estavam disponveis em 1960. Mas os anos se passaram e os usurios no ficaram satisfeitos com as grandes variaes entre os compiladores COBOL produzidos por diferentes fabricantes de computadores. O American National Standards Institute (ANSI) uma organizao que desenvolve padres em vrios campos tcnicos. Atualmente ele fiscaliza os padres do COBOL. Como o CODASYL, o comit de COBOL do ANSI consiste em representantes do meio acadmico, de grupos de usurios e de fabricantes de computadores. Em 1968, a primeira verso ANS (American National Standards) do COBOL foi desenvolvida e aprovada. A partir de 1968, todos os grandes fabricantes de computadores e fornecedores de software forneceram compiladores que aderiram aos formatos de linguagem COBOL especificados na verso ANS do COBOL. Em 1974, foi desenvolvida uma segunda verso do ANS COBOL para tornar a linguagem ainda mais eficiente e padronizada. A verso de 1985 do ANS COBOL a mais largamente utilizada; ela supera as verses anteriores no que diz respeito ao aumento da versatilidade e da estrutura da linguagem. Todas as verses do ANS COBOL so muito similares, embora existam algumas variaes. Este texto est de acordo com o COBOL 85 mas quando houver diferenas entre o COBOL 85 e o padro anterior, COBOL 74, elas sero indicadas. Voc deve determinar que padro COBOL seu computador utiliza para ficar mais atento s variaes entre as diferentes verses citadas neste

texto. Observe que um determinado compilador COBOL (seja ele uma verso 68, 74 ou 85) pode incluir melhoramentos, que fornecem opes adicionais aos programadores e que no necessariamente fazem parte do padro. O manual de referncia de cada compilador destaca essas melhorias com formatos diferentes para distingui-las do padro ANS. A prxima verso do COBOL est sendo concluda e chamada atualmente de COBOL 2000+. Ao final de cada captulo destacamos as provveis modificaes a serem includas no novo padro. SITE WEB JJ O site da Internet http://www.ansi.org inclui as atualizaes do COBOL 2000+. O FUTURO DO COBOL E O PROBLEMA DO ANO 2000 O futuro do COBOL tem sido objeto de muita discusso nos ltimos anos. Ele , apesar de tudo, uma linguagem que existe h mais de 40 anos ao passo que novas linguagens possuem agora muito mais recursos que as tornam mais adequadas a aplicaes baseadas em PC. Mas provvel que o COBOL permanea uma linguagem importante nos prximos anos. Leve em considerao os seguintes fatos: 1. De acordo com o Gartner Group, atualmente est em uso uma quantidade estimada de 150 a 250 bilhes de linhas de cdigo-fonte em COBOL, com programadores adicionando cerca de cinco bilhes de linhas a cada ano. 2. De acordo com o Datapro Information Services Group, 42,7 por cento de todos os programadores de desenvolvimento de aplicaes, em grandes ou mdias companhias dos EUA, usam COBOL. 3. Espera-se que os ganhos com o desenvolvimento do COBOL sejam superiores a US$200 milhes por volta do ano 2000; esses ganhos aumentaram de US$86,3 milhes, em 1993, a uma taxa mdia de crescimento de 15,4 por cento ao ano. Esses fatos sugerem que o COBOL permanecer uma linguagem importante nos prximos anos por duas razes: (1) sistemas legados mais antigos e baseados em mainframe precisaro de atualizao por programadores de manuteno que conhecem o COBOL e (2) o COBOL ainda est sendo usado por muitas organizaes para o desenvolvimento de novas aplicaes. Uma situao chamada O Problema do Ano 2000 ou O Bug do Milnio est relacionada ao cdigo COBOL e j teve um impacto significativo sobre o futuro do COBOL. As datas codificadas em computadores usavam tradicionalmente nmeros de dois dgitos para representar um ano 99, por exemplo, para significar 1999. Isso foi utilizado por dcadas porque economizava espao em arquivos. Com essa representao de dois dgitos, quando o relgio do Ano Novo mudou de 1999 para 2000, os cdigos dos anos em alguns computadores pode ter se modificado de 99 para 00. Isso poderia causar confuso em todas aplicaes e sistemas que esperam que o novo ano seja uma unidade maior do que o antigo. Isso tambm pode causar problemas em programas que realizam clculos de datas. Em 1998, por exemplo, a idade de algum que nasceu no ano de 75 pode ser calculada como 23 (98 75). Entretanto, para o ano 2000, a idade de uma pessoa poderia ser calculada incorretamente se fossem usados dois dgitos (00 75 = 75). podem ser obtidas cpias do ANS COBOL no American National Standards Institute, 1430 Broadway, New York, NY 10118. Os manuais do padro tambm podem ser solicitado diretamente ao ANSI por intermdio da Internet, no endereo http://www.ansi.org. Uma Introduo ao Projeto Estruturado de Programas em COBOL 11 Em face do Problema do Ano 2000, abreviado Y2K, bilhes de linhas de cdigo precisaro ser modificadas. Como a maior parte desses programas mais antigos foi escrita em COBOL, a necessidade de os programadores COBOL lidarem com esse problema aumentou dramaticamente. Estima-se um custo de 600 bilhes de dlares para solucionar completamente esse problema em todos os sistemas. Este texto tratar do Problema do Ano 2000 com mais detalhes e fornecer mtodos para lidar com ele. TESTE Ao longo de todo o texto so fornecidas questes de testes, seguidas das solues, para ajud-lo a avaliar o entendimento do material apresentado. 1. Um programa deve estar em linguagem para ser executado em um computador.

2. Normalmente os programas so escritos em linguagem ___________ em vez de em linguagem de mquina porque 3. Os programas escritos em linguagem diferente da linguagem de mquina devem ser ___________ antes de serem executados. 4. O processo de converter um programa-fonte em linguagem de mquina chamado ___________ 5. O programa escrito em uma linguagem de programao como COBOL chamado __________ 6. O programa-objeto o __________ 7. Um __________ converte o programa-fonte em um ___________ 8. Os erros detectados durante a compilao indicam ___________ nornialmente eles so chamados erros ___________ 9. Antes de executar um programa com dados de teste, a lgica do programa pode ser examinada manualmente por meio de uma tcnica chamada _________ 10. COBOL uma abreviao de __________ 11. COBOL uma linguagem comum por 12. (V ou F) O COBOL especialmente adequado tanto a problemas cientficos como comerciais. 13. Y2K uma abreviao para o problema chamado ___________ 14. (V ou F) Nos ltimos anos, foram contratados mais programadores de COBOL para ajudar a resolver problema do Bug do Milnio. 15. (V ou F) O Problema Y2K ocorreu porque os programas mais antigos usavam cdigos de dois dgitos para representar os anos em vez de cdigos de quatro dgitos a fim de economizar espao em arquivos (e.g., 98 era usado para representar 1998). Solues 1. de mquina 2. simblica; linguagens de mquina so muito complexas 3. traduzidos ou compilados 4. compilao ou traduo 5. programa-fonte ou programa de aplicaes 6. conjunto de instrues que foi convertido em linguagem de mquina 7. programa compilador ou tradutor; programa-objeto ou programa em linguagem de mquina 8. qualquer violao das regras de programao no uso de linguagem simblica de programao; de sintaxe 9. reviso do percurso do programa 10. Common Business-Oriented Language 11. poder ser utilizado em muitos computadores 12. F Ele especialmente adequado a aplicaes comerciais. 13. Problema do Ano 2000 ou Bug do Milnio 14. V 15. V TCNICAS PARA MELHORAR O PROJETO DE PROGRAMAS PROGRAMAO ESTRUTURADA USANDO O PROJETO MODULAR PARA CODIFICAR PARGRAFOS Quando a programao se tornou uma profisso importante nos anos 1960 e 1970, o objetivo principal dos programadores ou desenvolvedores de software era criar programas que funcionassem. Embora isso ainda seja o objetivo principal dos programadores, escrever programas de modo que sejam fceis de ler, depurar e modificar tambm importante. Isto , medida que a rea computacional se desenvolve, cada vez mais ateno est sendo dedicada ao estilo e tcnica de programao, assim como s maneiras possveis de tornar os programas mais eficientes. A tcnica mais importante para melhorar o projeto de um programa em qualquer linguagem chamada programao estruturada. Essa tcnica usa conceitos lgicos de controle que tornam os programas mais fceis de ler, depurar e modificar quando forem exigidas mudanas. Alm disso, os programas estruturados so mais fceis de avaliar, aumentando assim a capacidade de os gerentes de programao examinarem a lgica do programa. Os que j possuem alguma experincia prvia de programao podem ter se deparado com tcnicas no-estruturadas que incluem o uso freqente de GO TOs ou pontos de desvio para levar

a diferentes sees de programas. Freqentemente esses GO TOs tornam muito difcil acompanhar a lgica de um programa; eles tambm podem complicar o processo de depurao. Um grande objetivo da programao estruturada simplificar a depurao eliminando pontos de desvio de um programa. Por essa razo, algumas vezes a programao estruturada chamada programao sem-GO-TO, onde uma instruo GO TO o cdigo COBOL de um desvio. Usando as tcnicas de programao estruturada. a instruo GO T O ou de desvio completamente evitada. Em COBOL, isso significa escrever programas em que as seqncias so controladas por instrues PERFORM. (Em outras linguagens, isso significaria escrever programas onde as seqncias so controladas por instrues DO ou WHILE.) Usando essa tcnica estruturada, cada seo de um programa pode ser escrita e at mesmo depurada independentemente, sem muita preocupao com o lugar onde ela se encaixa na lgica do programa. Esse conceito pode parecer um pouco abstrato neste momento, mas ser esclarecido medida que prosseguirmos tratando do assunto. Um programa estruturado tpico subdividido em pargrafos ou mdulos, nos quais um mdulo principal chama outros mdulos, quando necessrio. Isto , o programador codifica um mdulo principal e quando algum outro conjunto de instrues se faz necessrio, esse conjunto 1 2 Uma Introduo ao Projeto Estruturado de Programas em COBOL codificado como um mdulo separado, que chamado e executado por meio de uma instruo PERFORM. Os termos pargrafo, rotina e mdulo so usados alternadamente neste texto para expressar a mesma idia. Em um programa modularizado, cada mdulo pode ser testado independentemente. Alm disso, torna-se vivel diferentes programadores escreverem o cdigo de diferentes mdulos ou sees de um programa grande e complexo. O mdulo principal simplesmente aciona a execuo de outros mdulos ou sees quando se fizer necessrio. (parei aqui) O MTODO TOP-DOWN DE CODIFICAR MDULOS Outra tcnica comum de tornar os programas mais fceis de ler e mais eficientes a chamada programao top-down. O termo sugere que o projeto apropriado de um programa conseguido mais facilmente desenvolvendo-se os mdulos e procedures (procedimentos) gerais antes dos mais especficos. Assim, em um programa top-down, as rotinas principais so codificadas em primeiro lugar, sendo seguidas de rotinas intermedirias e depois das mais especficas. Codificando mdulos de uma maneira top-down, a ateno inicial dedicada organizao geral do programa. Os detalhes so ignorados ou deixados para os mdulos especficos, que so codificados por ltimo. A programao top-down anloga elaborao de uma dissertao ou tese, na qual se desenvolve inicialmente o sumrio, que vai sendo cada vez mais detalhado somente aps a organizao ou estrutura principal ter sido estabelecida. Essa tcnica top-down padronizada complementa o mtodo estruturado para que se consiga projetar eficientemente um programa. Neste texto usaremos tcnicas estruturadas em todos os nossos programas e evitaremos o uso de GO T Os. Alm disso, faremos os cdigos em um formato top-down para que voc aprenda a programar em um estilo que largamente aceito como padronizado e efetivo. O Cap. 5 analisa em profundidade os recursos de projeto usados em programas estruturados e top-down. UM PROGRAMA DE EXEMPLO UMA VISO GERAL DAS QUATRO DIVISES Todo o programa COBOL consiste em quatro divises (divisions) separadas e cada uma delas tem uma funo especfica: AS QUATRO DIVISES Nome Objetivo IDENTIFICATION DIVISION Identifica o programa para o sistema operacional. Ela pode fornecer documentao sobre o programa. ENVIRONMENT DIVISION Define os nomes dos arquivos e descreve o equipamento computacional especfico que ser usado com o programa. DATA DIVISION Descreve os formatos de entrada e sada a serem usados pelo programa. Ela define ainda quaisquer constantes e reas de trabalho necessrias para o processamento dos dados.

PROCEDURE DIVISION Contm as instrues necessrias para a leitura e processamento dos dados de entrada e criao da sada. A estrutura e a organizao de um programa COBOL so mais bem explicadas por uma ilustrao. Observe que essa ilustrao tem a finalidade de familiariz-lo com um exemplo de um programa COBOL; no espere ser capaz de codificar um programa inteiro at ter lido os captulos que vm logo a seguir. DEFINIO DO PROBLEMA Um desenvolvedor de software em uma grande companhia recebe a tarefa de calcular e imprimir semanalmente o valor dos ordenados ou dos pagamentos brutos de todo o pessoal noassalariado. Veja a Fig. 1.5. O nome do empregado, o valor da hora de trabalho e o nmero de horas trabalhadas so fornecidos como dados de entrada para cada empregado, e os valores de ordenados semanais so calculados como se segue: ORDENADO-SEMANAL = HORAS-TRABALHADAS X VALOR-HORA PROGRAMA DE LISTAGEM DA DADOS-EMPREGADO RELATOODE P=os SEMANAIS Fig. 1.5 Especificaes dos sistemas para o programa de exemplo. Uma Introduo ao Projeto Estruturado de Programas em COBOL Antes que o processamento possa comear, os dados de entrada devem estar em um formato que seja legvel ou entendido pelo computador. Os dados de entrada devem ser digitados em um teclado de PC ou terminal e, depois, devem ser armazenados em um arquivo (file) ou um conjunto de dados. Na maioria das vezes um arquivo armazenado em um disquete. LAYOUT DE ENTRADA Admita que os dados dos empregados tenham sido fornecidos em um arquivo de um disquete. Como veremos, o dispositivo usado para fornecer os dados de entrada no chega a influir realmente na lgica do programa. O arquivo de dados fornecido como entrada tem o formato especificado no formulrio de layout dos registros da Fig. 1.6. Um registro (record) uma unidade no interior do arquivo, e contm dados de um nico empregado. Normalmente usamos o layout de registros apresentado na Fig. 1 .6b para representar qualquer outro layout de registros. O registro de um empregado consiste em trs itens de dados chamados campos (fields). Os nomes que demos aos trs campos so NOME - EMPREGADO-IN,HORAS-TRABALHADASINeVALOR-HORA-IN.DolayoutderegistrosdaFig. 1.6,pode-sever que as posies delas so ocupadas por NOME - EMPREGADO - 1 N. Se algum nome possuir menos de 20 caracteres, as posies de ordem mais baixa (low-order), ou mais direita, so deixadas em branco. Em geral, os campos de nomes so alfabticos ou alfanumricos, significando que podem conter qualquer caractere (e.g., OCONNOR, SMITH 3rd). Normalmente definimos todos os campos no-numricos como alfanumricos. Os dados alfabticos e alfanumricos sempre so fornecidos da esquerda para a direita. HORAS TRABALHADAS - IN ser colocado nas posies 21-22 e VALOR-HORA- IN, nas posies 23-25. Se HORAS-TRABALHADAS- IN for um nico dgito (0-9), ser colocado o dgito O na posio de ordem mais alta (high-order) ou mais esquerda do campo (00-09). Assim, se HORAS TRABALHADAS-IN for igual a 7, o dado seria fornecido como 07. Os dados numricos so sempre alinhados pela direita. Normalmente definimos como numricos apenas os campos usados em operaes aritmticas. O nmero VALOR-HORA-IN, por ser uma quantia em reais e centavos, deve ser interpretado como um campo com duas posies decimais. Isto , 925 nas posies 23-25 dos registros ser interpretado pelo computador como 9,25. O ponto decimal, ou vrgula, no fornecido no registro, j que ele desperdiaria uma posio de armazenamento. Em vez disso, o COBOL usa pontos decimais implcitos para representar nmeros com componentes decimais e que devem ser usados em operaes aritmticas. Usamos o sufixo -IN em cada nome de campo de REGISTRO - EMPREGADO para ressaltar o fato de que esses so campos de entrada (input). Essa uma conveno recomendada para empregar em nomes, no uma conveno obrigatria. Como todos os nossos registros de empregados possuem exatamente o mesmo formato, dizemos que esse arquivo tem registros com comprimento fixo. Freqentemente os arquivos so representados no formato de colunas e linhas, em que as

colunas representam os campos e as linhas representam os registros, como mostra a Fig. 1.6b. RESUMO DA HIERARQUIA DOS DADOS ARQUIVO (F 1 L E) Conjunto principal de dados em uma aplicao (e. g., arquivo de folha de pagamento) REGI S T R O (R E COR D) Unidade de informaes em um arquivo (e.g., registro de empregados em um arquivo de folha de pagamento) CAMPO (FIEL O) Item de dados que consiste em um ou mais caracteres em um registro (e.g., INSS, NOME, SALARIO em um registro de empregado) (a) Representao Ilustrativa do Layout do Registro de Entrada -1 NOME- HORAS- VALOR-HORA-IN EMPREGADO-IN TRABALHA DAS-t (REAIS) (CEN 202 22 23 24 25 (b) Representao em Texto do Layout do Registro de Entrada Layout do Registro DADOS - EMPREGADO Nota: Normalmente definimos todos os campos no-numricos como alfanumricos. Fig. 1.6 Layout do registro de entrada de um arquivo em disco para o programa de exemplo. Nome do Campo NOME-EMPREGADO-IN HORAS-TRABALHADASIN VALOR-HORA-IN Tamanho 20 2 3 Tipo de Dados Alfanumrico Numrico Numrico Nmero de Posies Decimais (para Campos Numricos) O 2

14 Uma Introduo ao Projeto Estruturado de Programas em COBOL 2 2 3 3 4 44]2 5 .6 6 67. 2 483 .2 4SF789 .J 5 -- xl , 99999. 1 NOME OOTJ HORA -1OIUT) ITA.X.OUT (ORDENDO-OUT LLELLLL LLJjjWtt1iH -4-itLtt Fig. 1.7 Grfico de Espaamento de Impressora para o programa de exemplo. LAYOUT DE SADA Um arquivo ou conjunto de registros de empregados com o formato anterior ser lido como entrada para o programa. Ento, ORDENADO - OU 1 ser calculado pelo computador como HORAS TRABALHADAS - 1 N multiplicado por VALOR - HORA - 1 N. Suponha que desejamos armazenar esse novo campo ORDENADO - OU T como parte de cada registro em um arquivo. Um valor calculado no pode ser acrescentado diretamente ao nosso arquivo de entrada. Isto , normalmente no acrescentamos dados de sada diretamente ao registro de entrada. Em vez disso, criamos um arquivo de sada que contm os dados de entrada juntamente com o valor calculado de ORDENADO - OU T. Se quisssemos que o campo ORO NADO - OU T fosse parte de cada registro da folha de pagamento, criaramos um arquivo de sada que tivesse todos os dados de entrada alm do valor calculado para o ordenado. A sada ARDI IV O - FOLHA - P A G poderia ser armazenada em outro arquivo no disco. Ou poderamos imprimir a sada como um arquivo chamado LI 5 T A - FOLHA - P AS que incluiria os campos de entrada de cada registro juntamente com os ordenados semanais calculados. Nosso programa de exemplo criar a sada impressa. O Gabarito de Espaamento de Impressora da Fig. 1.7 ilustra o formato de cada linha impressa ou de detalhe (D). A Fig. 1.7 indica as posies de impresso que usaremos para a sada. As posies de impresso 1-20 so deixadas em branco, como margem esquerda, e o nome impresso nas posies 21-40. Os caracteres X indicam que deve ser impresso um campo alfanumrico em 21-40. NOME - OU 1 o nome do campo que atribuiremos a essa rea de sada. As posies de impresso 4 1-50 so deixadas em branco para melhorar a legibilidade das

informaes e separar um campo de dados de outro, e as horas trabalhadas so impressas em 5 1-52. Os caracteres 9 so usados para especificar as posies onde os dados numricos devem ser impressos. Similarmente, o valor da hora de trabalho impresso nas posies 61-64 e o ordenado semanal impresso em 71-76. Os valores entre parnteses so os nomes dos campos que sero impressos. Como foi ilustrado na Fig. 1.5, o arquivo ou o conjunto de registros que serve como entrada para o sistema ser chamado de DADOS - EM P R E - GADOS. Para cadaregistro lido como entrada, o computadorir calcular ORDENADO - OUT apartirdos dois campos de entrada HORAS TRABALHADAS - 1 N e VALOR - HORA - 1 N. Os dados de entrada, juntamente com os valores calculados para cada registro, sero usados para criar o arquivo de impresso de sada chamado LISTA - FOLHA - P AS. Todos os campos dentro de cada registro de impresso, ou linha, do arquivo LISTA - FOLHA - P AS possuem o sufixo - OUT para tornar claro que eles so campos de sada. O PROGRAMA ILUSTRADO Revendo as Especificaes As especificaes dos sistemas na Fig. 1.5 ilustram o relacionamento entre os arquivos de entrada e sada. As especificaes nas Figs. 1.6 e 1.7 ilustram os layouts dos registros de sada. Depois de essas especificaes terem sido preparadas, o programador deve planejar o design (projeto) INCIO Abrir os arquivos FAZER ATE no haver mais registros (Existem-Mais-Registros = NAO) LER registro de entrada AO FINAL - Colocar NAO em Existem-Mais-Registros NAO AO FINAL Limpar a rea de sada Mover os campos de entrada para os campos de sada Calcular os Ordenados Multiplicando o Valor da Hora pelo Nmero de Horas Escrever o registro de sada FIM-LER FIM-FAZER Fechar os arquivos FIM (Obs.: FAZER AT corresponde instruo PERFORM UNTIL, LER corresponde instruo READ, AO FINAL corresponde instruo AT END, NAO AO FINAL corresponde instruo NOT AT END, FIMLER corresponde instruo END-READ e FIM-FAZER corresponde instruo ENDPERFORM.) Fig. 1.8 Pseudocdigo para o exemplo de programa em COBOL 85.

Uma Introduo ao Projeto Estruturado de Programas em COBOL 1 5 COBOL Progr4nl Sheet COBOL Stateroent Sheet oS ______

D A DOS LI STA t -1- GN A SS 1 AS,SI Syotenl Prograrn PRIMEIRO PROGRAMA-EXEMPLO Prograrnroer N STE RN J Dote 8 12 .6 24 8 1 DE,NT IF IjCAT 1 ON DEI VI S!I ON PROGRAM-I D . EXEM!PLOJ E,NVI RONM!ENT DIV IS IONI. I NPUT-OU4TPUT SEC1TIONI. FILE -CO NIT ROL . SEI E4:CT SE LECT DATA DIVIIS ION. FILE SECIT ION. FD DADO1S-EM1PREG!ADOS 01 REGI STROEMPREGAjDO. 05 N OMEI- EM PR E GADO 05 HORAS-TRABALHAD 05 . VALOR- HORA- 1H 1LI STiA-FO1LHA-P+A PRINT-REG. .NOMEZQT 05 HORAS -OUT, -lJ 05 F05 ORK 041 PROC 110 0LA1BEL 1H A1S - I N L:A BEL 44 r - EMP REGAID&S - FOLHA- PAG RICORDS ARtE P1 C T UR E X( PICTURE 9( PICTURIE 9V RECORDSI PIC2TURIE PICTUR1EX, PICTURE PICTURE ( O EM O PR D. P-DAT. I N T ER H-b li 1 2. 2),. 99.

t -1t Sequence J (Pogo (Sor,I( 1 34 67 001 00102 00103 00104 00105 0010 00103 00I 001;09 001 001111 00111 2 001 0014 FD 00115 001 6 001 1 7 001 8 001 00120 00121. 00122 00123 0012.4 00125 00 1 2 6 00127 001128 00129 00130 001 31 00132 00 l34 0013 0013 001 37 0 138 001139 00140 00141 20 001 42 00143 00144 00145 00146 001147 0014k t 1,0)..

2). II 111 NAO 05 TAXA-OUT 05.IORDENADO-OUT I NG - S TORAG E SE C TI EXISTEM-MAIS -REGI EDURE DjjVISION. 1ODU[O-PIRINCI PAL. DPEN4INPUT DADQ$LJMPREGADOS + OUTPUT LI STIA - FOLHA- PAG RM UNTIL EXJISTEM1-MAIS-REGISTROS = EAD DADOS- E1PREGADOtS AT END J+MOVE NAO TO EXISTEM-MAISL-REGJI NOTE AT END PERFORM 200-ROT 1 NA-ORDIENAD:O END -READ +.EN+D-PERFORM. . + CLOSE DADOS-EMPREGADOS STP RUN+.H 0-ROTINA-ORDENADO.J MOVE; SPACES TO PRINT-REG MOVE! NOME-EM1PREGADO-IN TO NOME-O1UT MOVE1 HORAS-TRABALHADS-I1N .TO HOR1AS-O[UT MOVE VALOR-HORA-JjN TO TAXA-OUT - _______ MULTtIfPIY HORAS.TRABA1LHADAS 1 N BY jVJALjOR- HORA- I,N GIVING ORDEINADO-OUT I11--i 1 WRITEPRINT:REG. 1 III Fig. 1.9 Exemplo de programa em COBOL 85 no formulrio de codificao.

16 Uma Introduo ao Projeto Estruturado de Programas em COBOL do programa. Isso significa fazer o mapeamento da lgica a ser usada no programa. A Fig. 1.8 ilustra um exemplo de pseudocdigo que explica a lgica a ser usada no programa. As tcnicas usadas para escrever um pseudocdigo so explicadas em detalhes no Cap. 5. Inclumos essa ferramenta de planejamento aqui porque acreditamos que voc deve se familiarizar com a leitura de pseudocdigos antes de escrever o seu prprio pseudocdigo. Depois de o programa ter sido projetado usando um pseudocdigo, ele est pronto para ser escrito ou codificado. Voc utilizar o conceito de que um programa um conjunto de instrues que manipulam os dados de entrada e produzem informaes de sada. A Fig. 1.9 um programa simplificado escrito em COBOL 85 que ir ler os registros dos discos de empregados e criar um relatrio impresso de folha de pagamento contendo os ordenados calculados de cada empregado, juntamente com os dados de entrada. A amostra de dados de entrada e a sada correspondente esto ilustradas na Fig. 1.10. A Fig. 1.9 apresentada em uma Folha de Programa COBOL ou formulrio de codificao. Esses formulrios foram usados anteriormente para construir um programa que seria digitado em um computador. Eles especificam o formato que os programas em COBOL devem utilizar. Atualmente, a maioria das pessoas digita os programas diretamente e no usa folhas de codificao.

Entretanto, todos os programadores devem planejar e desenvolver a lgica antes de digitar o programa. Regras de Codificao Observequeoprogramadivididoemquatrodivisesprincipais. Asdivises IDENTI FICATION DIVISION, ENVIRONMENT DIVISION, DATA DIVI SI O N e P ROCE DURE DIVI 5 1 O N so codificadas em linhas (ou nmeros seriais) 01, 03, 07 e 26, respectivamente. Todo programa COBOL deve conter essas quatro divises nessa ordem. Em prol da consistncia, usamos letras maisculas em toda a nossa codificao e distinguiremos o nmero zero da letra O cortando os zeros. As 29 primeiras linhas desse programa so similares para qualquer compilador COBOL que esteja sendo usado. Alguns formatos de instrues usados no restante do programa no so parte do padro COBOL 74, muito embora se voc usar um compilador COBOL 74 provvel que esses formatos existam como melhoramentos. Na prxima seo ilustraremos as 19 linhas finais do mesmo programa usando apenas o formato padro de instrues para o COBOL 74. Esse programa pode ser executado em qualquer compilador COBOL, mas recomendamos que ele seja usado apenas por programadores de COBOL 74. As Divises IDENTIFICATION DIVISION e ENVIRONMENT DIVISION Nesseprograma,a IDENTIFICATION DIVISIONtem PROGRAM-IDcomonicaentrada.Isto,a IDENTIFICATION DlVlSlONdesseprograma serve para dar um nome ao programa. Veremos que existem outras entradas que podem ser utilizadas com a finalidade de documentao e podem serincludas na IDENTI FICATION DIVISION, mas PROGRAM- ID a nica entrada obrigatria. A ENVIRONMENT DIVISION associaosarquivosdeentradaadispositivosespecficosnaseo INPUT-OUTPUT SECTION. Oarquivodeentrada,chamado DADOSEMPREGADOS,estaremumdiscoeemumarquivochamado EMP-DAT. Similarmente, LISTAFOLHA-PAG oarquivode sada e associado impressora, chamada P RI N TER em nosso programa (mas pode ser chamada de um nome diferente em seu centro de informtica SYSLSTeSYS$OUlPUTsonomescomuns). A Diviso DATA DIVISION A FILE SE C TIO N da DA T A DIVI SI O N descreve o formato dos arquivos de entrada e sada. A descrio do arquivo (File Description), F D, de DADOS - EMPREGADOS descreve o arquivo de entrada localizado no disco, que nesse caso tem legendas (chamadas tambm rtulos ou labels) de identificao no disco (LABEL RECORDS ARE STANDARD). O formato do registro no arquivo de entrada chamado REGISTRO-EMPREGADO. Ele tem trs campos de entrada NOME-EMPREGADO-IN, HORAS - T RABALHADAS -1 N e VALORHORA- 1 N. Cadacampo tem uma clusula PICTURE correspondente que indica o tamanhoe o tipo dos dados que aparecero no campo. NOME- EMPREGADO- IN umcampodedadosquecontm20caracteres. PICTURE X(2) indicaqueotamanhodocampode20caracteres. O X na clusula P1 C TU R E significa que o campo pode conter qualquer caractere alfanumrico, incluindo um espao em branco. Similarmente, HORAS-TRABALHADAS-IN umcamponumricodeduasposies. PICTURE 9(2) indicaotipoe otamanhodosdados: g indicadados numricos e (2) indica uma rea de duas posies. VALOR HORA - 1 N um campo numrico de trs posies com um ponto decimal (ou vrgula) implcito. Isto , P1 C TU R E 9V 99 indica um campo numrico de trs posies com um ponto decimal assumido ou implcito depois da primeira posio; a letra V significa um ponto decimal implcito. Assim, 925 nesse campo ser interpretado pelo computador como 9.25. O ponto decimal Exemplo de Entrada ROBERTO MORAES 15500 WILLIAM SHAKESPEARE 50550 JORGE ARMANDO 351125 JOANA FONTES 55600 MARCO TOBIAS 301150 Exemplo de Sada ROBERTO MORAES 45 5.00 225,00 WILLIAM SHAKESPEARE 50 5.50 275.00 JORGE ARMANDO 35 11.25 1118,75 JOANA FONTES 55 6.00 330,00

MARCO TOBIAS 30 4.50 135.00 Fig. 1.10 Exemplo de dados de teste e sua impresso correspondente. Uma Introduo ao Projeto Estruturado de Programas em COBOL no aparece no registro de entrada situado no disco, mas o V na clusula P1 C TU R E assegura que o nmero ser tratado pelo computador como se tivesse sido includo um ponto decimal. O arquivo impresso de sada chamado LISTA - FOLHA - P A G no possui um rtulo (label) de registro porque os arquivos impressos podem ser verificados manualmente. Ele tem um formato de registro chamado P RI N T - R E G, que est subdividido em oito campos, cada um deles com uma clusula P1 C TU R E adequada. Os campos cujos nomes esto em branco reservam espaos no registro, mas no so utilizados na P ROCE D U R E DIVI SI O N. Ns os criaremos para que realmente contenham espaos em branco. Eles so usados no registro de impresso para que os campos de sada sejam impressos separados entre si por espaos em branco. Com o COBOL 74 deve-se usar a palavra F 1 L LER em vez de um campo com nome em branco. A primeira rea no utilizada que no contm nome de campo definida com P1 C TU R E de X ( 20), significando que ela possui 20 caracteres. A palavra F 1 L LER exigida na DA T A DIVI SI O N com o COBOL 74 e opcional no COBOL 85, que permite deixar em branco os nomes de campos. Assim, para obter uma rea de 20 caracteres em branco para uma margem esquerda, dizemos 05 PICTU RE Xt2O) ou 05 FILLER PICTURE X ( 20). NOME - OU T vir a seguir nas posies de impresso 21-40, conforme est indicado no Gabarito de Espaamento de Impresso da Fig. 1.7. A prxima entrada 05 P1 C TU R E X ( 10) significa que o prximo campo uma rea em branco de 10 posies que ir separar o nome de HORAS OU T, que possui duas posies numricas. Depois da rea em branco de oito posies, um campo TAXA - OU T indicado como P1 C TU R E 9 . 99. Esse um campo de quatro posies que contm realmente um ponto decimal. Os campos numricos impressos com valores decimais devem sempre incluir o ponto decimal. que lemos um valor 123 em VALOR - HORA - 1 N; ele ser armazenado como 1 23 como ponto decimal implcito. Quando movemos VALOR - HORA o COBOL, os pontos decimais so omitidos mas implcitos em arquivos de entrada, ao passo que so realmente includos em arquivos impressos de sada.) Ento, um campo de seis posies em branco ser seguido de um campo ORDENADO - OU T, novamente com o ponto decimal impresso. Os trs primeiros campos de dados de PRI NT - REG (NOME - OUT, HORAS - OUT e TAXA OUT) contero dados copiados diretamente de cadaregistro de entrada. O ltimo campo, ORDENADO - OU T, deve ser calculado. Ocampoouitemdedadoschamado EXISTEM-MAIS-REGISTROS definidonaWORKlNG-STORAGE SECTION daDATA DIVISION.Esse campo inicializado com um valor S 1 M. Sempre usa-se aspas para designar valores no-numricos. O campo chamado EXISTEM - MAIS - R E - GIS T R OS ser usado na P ROCE OU R E DIV ISIO N como indicador de fim de arquivo (end-of-file, EOF), chamado algumas vezes flag ou switch. Isto , ele sempre ter o valor SIM at que o ltimo registro de dados tenha sido lido e processado, quando ento assumir o valor NA O. Quando esse campo possui o valor 5 1 M, isso significa que ainda h mais registros para processar; ao assumir o valor NA O, no haver mais registros de entrada. O nome de dado EXISTEM - MAl 5 - R E G IS T R OS foi escolhido porque o campo usado para indicar quando o ltimo registro foi lido e processado. Qualquer nome de campo poderia ter sido usado, mas EXISTEM - MAIS - R E 6 IS T R OS mais descritivo e auto-explicativo. Esse campo indicador ser programado para conter o valor SI M quando ainda houver registros para processar; ns o definiremos como NA O somente quando no houver mais registros de entrada. A Diviso PROCEDURE DIVISION A P ROCE OU R E DI VIS 10 N contm o conjunto de instrues a serem executadas pelo computador. Cada instruo executada na ordem em que aparecenalistagemdoprograma. A PROCEDURE DIVISION divididaemdoispargrafosoumdulos 100-MODULO- PRINCIPAL e 200-

ROTI - NA - ORDENADO. Em nossos programas em COBOL 85, inclumos um ponto somente ao final da ltima instruo de um mdulo. Mais adiante veremos as regras referentes s margens. AprimeiraentradadaPROCEDURE DlVlSlONaseguinte: OPEN INPUT DADOS-EMPREGADOS OUTPUT LISTA-FOLHA-PAG Essa instruo permite acesso aos dispositivos atribudos aos arquivos e indica ao computador o arquivo de entrada e o de sada. Ela ocupa duas linhas somente para ficar de uma forma mais legvel, pois tratada como apenas uma unidade ou instruo. Usamos pontos somente na ltima instruo do pargrafo, embora seja permitido terminar cada instruo com um ponto. A segunda instruo comea com um verbo P E R FOR M na linha 30 e termina na linha 37 com um terminador de escopo E N D - P E R FOR M. PERFORM UNTIL EXISTEM-MAIS-REGISTROS SAI END- PERFORM Essa instruo indica que todas as instrues da linha 3 1 a 36 devem ser executadas ou realizadas repetidamente at que o indicador de fim de arquivo, EXISTEM - MAIS - REGISTROS, seja igual ao valor NA O, significando que no h mais registros para processar. Dentro da estrutura P E R FOR M U N T O L ... E N D - P E R FOR M lemos inicialmente um registro. Se o registro lido satisfatoriamente, ele processado em200-ROTINAORDENADOe0b10c0PERFORM UNTIL ... ENDPERFORMrepetido.Senohouvermaisregistrosparaprocessarquandoa instruoRtADforexecutada,aclusulaAT ENDprocessadaeNAOcolocadoemExlSrEM-MAISREGISTROSEntopERFoRM UNTIL END- PERFORM concludo. 18 Uma Introduo ao Projeto Estruturado de Programas em COBOL O bloco P E R FOR M UNI 1 L .. E N D - E E R FOR M chamado ioop porque as instrues dentro dele so executadas repetidamente at que E XIS - TEM-MAIS-REGISTROS sejadefinidocomoigualaNAO quandoacondioAl ENDforalcanada. As instrues dentro do ioop so indentadas para facilitar a leitura. Vamos examinar mais detalhadamente a instruo R E AD dentro de P E R FORM UNTIL ,.. END-PERFORM: READ DADOS-EMPREGADOS AT [NO MOVE NAU TO EXISTEM-MAIS-REGISTROS NOT AT END PERFORM 200-ROTINA-ORDENADO END- READ Essa uma instruo que faz com que o computador leia um registro de dados em uma rea de armazenamento chamada rea de entrada. Observe que os dados devem estar armazenados para que possam ser manipulados. Se no houver mais registros para serem lidos quando a instruo R E AD for executada, o valor NA o colocado no campo chamado EXISTEM - M AI 5 - R E G IS T R OS; caso contrrio, o campo permanece inalterado com seu valor inicial SIM. Como existem registros para processar no incio da execuo, a primeira tentativa de ler um registro far com que os dados sejam transmitidos do disco para o armazenamento a fim de que sejam processados. Depois de um registro ter sido lido satisfatoriamente, a clusula A T E ND executada. A instruo P E R FOR M que aparece aps NO T AI E ND executada quando R E AD transfere dados de entrada para a memria principal. Isso ocorrer sempre que o loop P E R FOR M for executado, exceto quando no houver mais entradas a processar. O E ND - R E AD um terminador de escopo do COBOL 85 que especifica o final da instruo READ. Os terminadores de escopo so um recurso de programao estruturada existente no COBOL 85 e no fazem parte do padro COBOL 74. Suponha que o primeiro registro de entrada seja como se segue: A instruo R E AD l o registro precedente, coloca-o no local de armazenamento primrio ou memria principal e o toma disponvel para a Unidade de Processamento Central (Central

Processing Unit, CPU) para que seja processado. Esse registro armazenado em um endereo simblico de armazenamento chamado REGISTRO - EMPREGADO, que um nome de dado definido pelo programadorna DATA DIVISION. Quando o primeiro registro for lido, o local de armazenamento primrio ou memria principal conter o seguinte: MICKEY MOUSE -t MEMRIA PRINCIPAL REGISTRO-EMPREGADO 4OO t Desta forma, READ ... NOT AT END ... far com que todas as instrues dentro do pargrafo denominado 200- ROTINA- ORDENADO (dalinha 42 linha 48) sejam executadas. Depoisque EXISTEM-MAIS-REGISTROS = NAO,obIocoPERFORM UNTIL ... ENDPERFORMnomaisexecutado.Ainstruoaser executadaaseguiraquesesegueaoPERFORMnolOO-MODULO-PRINCIPAL.Isto,PERFORM UNTIL ... END-PERFORMfazcomqueocorra execuo repetida de 200 - R O TI NA - ORDENADO at que no haja mais registros de entrada, quando ento o controle retoma instruo que vem EM DISCO NOME-EMPREGADO-IN H0RAS-TRABALHADAS-lN VALOR-HORA-IN MICKEY MOUSE 15 4oO rea de entrada na memria principal j---- -4 NOME-EMPREGADO-IN HORAS-TRABALHADAS-IN VALOR-HORA-IN

Uma Introduo ao Projeto Estruturado de Programas em COBOL 19 aps P E R FOR M. As instrues nas linhas 3 8-40, C LOS E e SI O P R U N, so executadas somente aps todos os registros de entrada terem sido processadosem 200-ROTINAORDENADO. Emresumo, aprimeirainstruodentrode 100-MODULO-PRINCIPAL na PROCEDURE DIVISION ainstruo OPEN,eelaativaosarquivos. A seguir, o bloco P E R FOR M U N TI L ... E NO - P E R FOR M executado. Ele l um registro e realiza um mdulo de processamento se um registro for lido satisfatoriamente. Esse loop P E R FOR M U N T 1 L ... E N D - P E R FOR M l e processa registros repetidamente at que no haja mais registros, quando ento NAO colocadonoindicadorchamado EXISTEM-MAIS-REGISTROS. Omdulodeprocessamento, 200ROIINA-ORDENADO,executado sempre que um registro lido satisfatoriamente; ele move os dados para a rea de sada, calcula um ordenado semanal e imprime uma linha para cada registro de entrada. Quando no houver mais entradas, a clusula AT END de READ executada. NAO movido para EXISTEM - MAIS - REGISTROS e o ioop PERFORM-UNTIL ... ENDPERFORMconcludo.Aseguir,ocontroleretornadoparaainstruoapspERFORM UNTIL ... ENDPERFORMem 100- MODU LO - PRINCIPAL. Essa a instruo C LOS E, que desativa os arquivos. STO P RUN executado como ltima instruo e o programa concludo. Os cinco primeiros passos OPEN, PERFORM, o READ dentro de PERFORM, CLOSE e STOP RUN representam o mdulo principalda

PROCEDURE DIVI 5 ION. Essas instrues aparecem dentro do mdulo ou pargrafo denominado 100- MODU LO - PRI NC 1 PAL. Vamos examinar mais detalhadamente as instrues a serem executadas no pargrafo 200- ROT 1 NA - ORDENADO quando um registro lido satisfatoriamente. Em primeiro lugar, MOVE 5 P A C ES T O P RI N T - R E G limpa ou inicializa a rea de sada chamada P RI N T - R E G com espaos em branco. Isso assegura que todas as reas sem nome ou F 1 L LER estaro em branco. A seguir, NOME - EMPREGADO - I N do primeiro registro no disco, HORA - 1 N desse primeiro registro tambm so movidos para a rea de impresso. ORDENADO - OU T, um campo de sada, ento calculado multipliDo para o primeiro registro produzem os seguintes resultados na rea de armazenamento primrio ou memria principal: MEMRIA PRINCIPAL 4 REGISTRO-EMPREGADO Area de entrada na memria principal MICKEY MOUSE 15 4OO NOME-EMPRE- HORAS-TRABA- - VALOR-HORA-IN GADO-IN LHADAS-IN 4 PRINT-REG - _____ _________ - _j j 4.00 060.00 rea de sada NOME-OUT HORAS-OUT TAXA-OUT ORDE NADOS-OUT Depois de os dados terem sido levados para a rea de armazenamento reservada para sada (chamada rea de sada), a instruo W RI TE executada. Essa instruo W RI TE toma as informaes da rea de sada e as imprime: MEMRIA PRINCIPAL 4 PRINT-REG + MICKEY MOUSE - - 4.00 060.00 MICKEY MOUSE 154.00060.00 Uma instruo - - - WRFFE transmite a NOME-OUT l-IORAS-OUT TAXA-OUT ORDE- PRINT-REG NADOS-OUT para a impressora PRINT-REG - (uma linha da listagem) Mais adiante, veremos que possvel adicionar uma clusula A DV A N C 1 N G instruo W RI TE para obter espaamento duplo nas linhas de sada:WRITE PRINT-REG AFTER ADVANCING 2 LINES. O conjunto de instrues delimitado por P E R FOR M UNI I L ... E N D - P E R FOR M ler e processar o primeiro registro no disco e imprimir uma linhadesada.EssePERFORM UNTIL ... END PERFORMumloopqueexecutadocontinuamenteatEXl5lEM-MAIS-REGISTROS = NAO. Quando PERFORM UNTIL ... END- PERFORM repetido, a instruo READ nalinha 31 executada. Se um READ satisfatrio forrealizado, significando que um registro para processamento foi realmente lido, as instrues no interior do escopo NO 1 A 1 E N D ... E N O - R E AD processam o segundo registro e imprimem outra linha de sada. AseqnciadeinstruesdentrodePERFORM UNTIL ... ENDPEREORMrepetidaatqueocampoEXlSlEM-MAIS-REGISTROSsejaigual a NAO, o que ocorrer somente aps todos os registros de entrada terem sido lidos. Isto , PERFORM UNTIL ... ENDPERFORM executado ICKEY M0U 20 Uma Introduo ao Projeto Estruturado de Programas em COBOL repetidamente at que a instruo R E AD produza uma condio A T E N D, que significa no haver mais entrada. Ento NA O mos ido pal t AI - TEM-MAIS-REGISTROS eoloop PERFORM UNTIL ... END-PERFORMconclufdo.Asinstruesaps END-PERFORMasinstrues CLOSE e S T O P R U N nas linhas 38-40 so ento executadas e o programa encerrado. A instruo 5 T O P R U N, por ser a ltima do mdulo ou pargrafo, termina com um ponto. O Uso de Pontos Todas as instrues nas trs primeiras divises terminam com um ponto. A entrada P ROCE OU R E DI VIS 10 N e os nomes dos mdulos terminam com um ponto, assim como a ltima instruo

em cada mdulo. Em nossos programas em COBOL 85, todas as outras entradas da P ROCE DURE DIV 1 5 1 O N no possuem pontos. Mais adiante, analisaremos as regras de pontuao com mais detalhes. A Fig. 1.9 representa ento um exemplo completo de um programa em COBOL 85. Ele pode ser executado em qualquer computador, embora possam ser necessrias pequenas modificaes nas instrues 5 E L E C 1 porque alguns compiladores apresentam exigncias especficas para a clusula ASS 1 GN. Nas instrues SE LECT use ORGAN I ZAT 1 ON IS LINE SEQUENT IAL depoisdaclusula ASS 1 GN paratodos os arquivos seqenciais em PCs e use ASSIGN TO com especificaes como C: \CAPITULO1\EMP . DAT. Se voc quiser digite e rode esse programa em seu sistema apenas para se familiarizar com o COBOL. A Fig. 1.11 a listagem-fonte do mesmo programa produzida pelo computador. Esse programa pode ser rodado da forma como apresentado na figura, utilizando um compilador COBOL 85, que o compilador mais usado atualmente. Entretanto, so exigidas algumas modificaes que iremos analisar, se voc estiver usando um compilador COBOL 74. Observe que, em COBOL, as instru 0 IDENTIFICATION DIVISION. 02 PROGRAM-ID. EXEMPLO. 03 ENVIRONMENT DIVISION. 04 INPUT-OUTPUT SECTION. 05 FILE-CONTROL. SELECT DADOS-EMPREGADOS ASSIGN TO EMP-DAT. 06 SELECT LISTA-FOLHA-PAG ASSIGN 10 PRINTER. 07 DATA DIVISION. 08 FILE SECTION. 09 FD DADOS-EMPREGADOS LABEL RECORDS ARE STANDARD. 10 01 REGISTRO-EMPREGADO. 11 05 NOME-EMPREGADO-IN PICTURE X(20). 12 05 HORAS-TRABALHADAS-IN PICTURE 9(2). 13 05 VALOR-HORA-IN PICTURE 9V99. 14 FD LISTA-FOLHA-PAG LABEL RECORDS ARE OMITTED. 15 01 PRINT-REG. 16 05 PICTURE X(20). 11 05 NOME-OUT PICTURE X(20). 18 05 PICTURE X(10). 19 05 HORAS-OUT PICTURE 9(2). 20 05 PICTURE X(8). 21 05 TAXA-OUT PICTURE 9.99. 22 05 PICTURE X(6). 23 05 ORDENADO-OUT PICTURE 999.99. 24 WORKING-STORAGE SECTION. 25 01 EXISTEM-MAIS-REGISTROS PICTURE XXX VALUESIM. 26 PROCEDURE DIVISION. 27 100-MODULO-PRINCIPAL. 28 OPEN INPUT DADOS-EMPREGADOS 29 OUTPUT LISTA-FOLHA-PAG 30 PERFORM UNTIL EXISTEM-MAIS-REGISTROS = NAO 31 READ DADOS-EMPREGADOS 32 AT END 33 MOVE NAO TO EXISTEM-MAIS-REGISTROS 34 NOT AT END 35 PERFORM 200-ROTINA-ORDENADO 36 END-READ 37 END-PERFORM 38 CLOSE DADOS-EMPREGADOS 39 LISTA-FOLHA-PAG 40 STOP RUN. 41 200-ROTINA-ORDENADO. 42 MOVE SPACES 10 PRINT-REG

43 MOVE NOME-EMPREGADO-IN TO NOME-OUT 44 MOVE HORAS-TRABALHADAS-IN TO HORAS-OUT 45 MOVE VALOR-HORA-IN 10 TAXA-OUT 46 MULTIPLY HORAS-TRABALHADAS-IN BYVALOR-HORA-IN 47 GIVING ORDENADO-OUT 48 WRITE PRINT-REG. Fig. 1.11 Listagem em computador do programa de exemplo. Uma Introduo ao Projeto Estruturado de Programas em COBOL 21 es so similares ao idioma ingls; alm disso, a organizao estruturada de um programa em COBOL toma essa linguagem fcil de ler e aprender. Variaes do COBOL 74 Apenas para Alunos com Compiladores COBOL 74 Se voc usa um compilador COBOL 85, ignore esta seo. Alguns programadores ainda usam um compilador COBOL 74 como compilador padro ou para fazer modificaes em programas mais antigos. A menos que um compilador COBOL 74 tenha melhoramentos, no se pode codificar (1) uma instruo P E R FOR M UNTIL ... ENDPERFORM0u(2)umainstruoREAD ... NOT AI END ... END-READcomonaFig. 1.ll.AversoCOBOL74desse programa de exemplo teria sua PROCEDURE DIVISION como mostraaFig. 1.12. Todos os programas COBOL iniciam abrindo os arquivos de entrada e sada. Nos programas COBOL 74, usamos um R E A O inicial ou primrio para ler o primeiro registro. Ento executado um pargrafo separado at que no haja mais registros. Nesse programa, depois de o primeiro registro ser lido, 200- R O T 1 NA - ORDENADO executado repetidamente at que no haja mais entradas. 200- ROl 1 NA - ORDENADO processa o primeiro registro lido na linha 30 e termina lendo um segundo registro. Quando 200 - R O - 1 1 NA - ORDENADO executado uma segunda vez, o segundo registro processado e um terceiro registro lido. Esse procedimento repetido atque no hajamais entradase NAO movidopara EXISIEM-MAIS-REGISTROSnaIinha46. Oprocessamentode200-ROTINAORllENADOestsobocontroledePERFORMnaljnha32.QuandooREADem200-ROTINAORDENADO resulta em uma condio AT END e EXISTEM-MAIS- REGI STROS estabelecido como igual a NAO, a instruo PERFO RM na linha 32 no mais executada e as instrues aps P E R FO RM nas linhas 34 a 36 so ento executadas. Os dois arquivos so fechados e a execuo concluda. Observe que os programas em COBOL 74 possuem mais limitaes do que os programas em COBOL 85: COBOL 74 COBOL 85 1. Cada instruo termina com um ponto. 2. O loop P ER FO RM nome-do-pargrafo UNT 1 L exige um mdulo separado, que executado at que uma condio especificada seja atendida. 3. As instrues READ no podem ter uma clusula NOT AT END ou um delimitador END- READ. Isso torna necessrio codificar programas com um READ inicial: READ inicial READ exigido antes PERFORM AT END ... Pargrafoterminacom um READ 1. Apenas a ltima instruo em um pargrafo ou mdulo termina com um ponto. 2. Pode ser codificado um loop dentro de um mdulo por meio de uma seqncia PERFORM UNTIL ... END-PERFORM. 3. A seqncia: READ

AI END NOT AT END END- READ facilita a incluso de um nico R E AD em um programa, no interior de uma seqncia de passos executados por uma instruo P E R FOR M. UMA BREVE VISO GERAL DAS FERRAMENTAS DE PLANEJAMENTO DE PROGRAMAS Um programa como o mostrado na Fig. 1.9 seria planejado inicialmente com a utilizao de um fluxograma ou de um pseudocdigo para o mapeamento de sua lgica e para assegurar a boa estruturao do programa a ser escrito. No Cap. 5 analisamos detalhadamente as tcnicas usadas para planejar um programa. Na Fig. 1.8 deste captulo, ilustramos simplesmente uma dessas ferramentas de planejamento (pseudocdigo). A seguir, so apresentadas as regras bsicas para ler o pseudocdigo da Fig. 1.8. Regras Gerais REGRAS PARA INTERPRETAR PSEUDOCDIGOS 1. Um pseudocdigo comea com um 1 N t C 10 e termina com FIM. 2. Todas as instrues so lidas em seqncia. 3. As instrues entre o FAZER ... FIM - FAZER (PERFORM ... END- PERFORM) na ilustrao so executadas repetidamente AT que (U N TIL) no haja mais registros a processar. AT END PERFORM (pargrafo) UNTIL (fim dos registros) (pargrafo) READ 22 Uma Introduo ao Projeto Estruturado de Programas em COBOL 01 IDENTIFICATION DIVISION. 02 PROGRAM-ID. EXEMPLO. 03 ENVIRONMENT DIVISION. 04 INPUT-OIJTPUT SECTION. 05 FILE-CONTROL. SELECT DADOS-EMPREGADOS ASSIGN 10 EMP-DATA. 06 SELECT LISTA-FOLHA-PAG ASSIGN 10 PRINTER. 07 DATA DIVISION. 08 FILE SECTION. 09 FD DADOS-EMPREGADOS LABEL RECORDS ARE STANDARD. 10 01 REGISTRO-EMPREGADO. 11 05 NOME-EMPREGADO-IN PICTURE X(20). 12 05 HORAS-TRABALHADAS-IN PICTURE 9(2). 13 05 VALOR-HORA-IN PICTURE 9V99. lLi FD LISTA-FOLHA-PAG LABEL RECORDS ARE OMITTED. 15 01 PRINT-REG. 16 05 FILLER PICTURE X(20). 17 05 NOME-OUT PICTURE X(20) 18 05 FILLER PICTURE X(1) 19 05 HORAS-OUT PICTURE 9(2), 20 05 FILLER PICTURE X(8). 21 05 TAXA-OUT PICTURE 9.99. 22 05 FILLER PICTURE X(6). 23 05 ORDENADO-OUT PICTURE 999.99. 24 WORKING-STORAGE SECTION. 25 01 EXISTEM-MAIS-REGISTROS PICTURE X(3) VALUE SIM. 26 PROCEDURE DIVISION. 27 100-MODULO-PRINCIPAL, 28 OPEN INPUT DADOS-EMPREGADOS

29 OUTPUT LISTA-FOLHA-PAG. 30 READ DADOS-EMPREGADOS 31 AI END MOVE NAO 10 EXISTEM-MAIS-REGISTROS. 32 PERFORM 200-ROTINA-ORDENADO 33 UNTIL EXISTEM-MAIS-REGISTROS = NAO. 34 CLOSE DADOS-EMPREGADOS 35 LISTA-FOLHA-PAG. 36 STOP RUN. 37 200-ROTINA-ORDENADO. 38 MOVE SPACES TO PRINT-REG. 39 MOVE NOME-EMPREGADO-IN 10 NOME-OUT. 40 MOVE HORAS-TRABALHADAS-IN TO HORAS-OUT. 41 MOVE VALOR-HORA-IN TO TAXA-OUT. 42 MULTIPLY HORAS-TRABALHADAS-IN BY VALOR-HORA-IN 43 GIVING ORDENADO-OUT. 44 WRITE PRINT-REG. 115 READ DADOS-EMPREGADOS 46 AT END MOVE NAO 10 EXISTEM-MAIS-REGISTROS. Fig. 1.12 Programa em COBOL 74 com um R E AD primrio. Finalmente, a Fig. 1.13 ilustra um diagrama hierrquico ou de estrutura, que mostra o relacionamento entre os mdulos de um programa. Essa figura mostra que h dois mdulos ou pargrafos e que 200- ROTI NA -ORDENADO o pargrafo executado a partir de 100 -MODU LO - PRINCIPAL. Isto,dentrodelOO-MODULO-PRINCIPALhumainstruoPERFORM 200-ROTINAORDENADO. Veremos no Cap. 5 que os diagramas hierrquicos so particularmente teis para ilustrar o relacionamento entre mdulos de um programa que possua muitas instrues P E R FOR M. A medida que escrevermos programas mais complexos, tambm os diagramas hierrquicos se tornaro mais detalhados. 100-MODULOPRINCIPAL 200-ROTINAORDENADO Fig. 1.13 Diagrama hierrquico ou de estrutura para o programa de exemplo. Uma Introduo ao Projeto Estruturado de Programas em COBOL 23 DIGITANDO E EXECUTANDO UM PROGRAMA COBOL EM SEU COMPUTADOR Depois de seu programa em COBOL ter sido codificado, provavelmente ele ser digitado em (1) um teclado de um PC ou (2) em um terminal conectado a um mainframe ou minicomputador. Se voc estiver usando um mainframe ou minicomputador, precisar obter os cdigos de entrada no sistema (logon) e de autorizao que permitiro seu acesso ao computador. Voc precisar tambm aprender os comandos do sistema para ter acesso ao compilador COBOL e executar os programas nessa linguagem. Se voc estiver usando um PC que parte de uma rede, tambm precisar aprender os procedimentos de entrada na rede. Na maioria dos casos, o programa ser criado por meio de um editor de textos, que permitir corrigir facilmente quaisquer enganos cometidos durante a digitao. A maioria dos editores de texto possui recursos comuns como comandos para apagar linhas, adicionar linhas ou modificar e substituir entradas. Voc pode utilizar editores de texto conhecidos ou editores de texto desenvolvidos especificamente para a criao de programas em COBOL. Alguns editores de texto para COBOL colocaro a tabulao automaticamente na posio 8, que a primeira posio de um programa em COBOL. Se voc examinar a Fig. 1.9, ver que algumas instrues so codificadas iniciando na posio 8, que possui a marca A e significa Margem A, e algumas so codificadas iniciando na posio 12, que possui a marca B e significa Margem B. Alguns compiladores COBOL, como os usados no DEC VAX e DEC Alpha, permitem aos programadores a alternativa de usar a coluna 1 como Margem A e a coluna 5 como Margem

B. Analisaremos detalhadamente as regras das margens no prximo captulo. COBOL PARA PC L j Se voc estiver trabalhando com um microcomputador, pode usar qualquer pacote de editor ou processador de textos para criar seu 1 programa COBOL (como um arquivo de texto), mas a maioria dos compiladores COBOL baseados em PC vem com seu prprio editor de texto. Ento voc precisar consultar um manual do usurio (ou documentao on-line) para ter acesso ao seu compilador COBOL especfico. Esse texto pode ser comprado com um dos trs seguintes compiladores: Fujitsu (com documentao on-line), MicroFocus (com o manual Getting Started) ou RM/COBOL (com um manual Getting Started). H duas modificaes que sugerimos serem feitas em programas que rodam em compiladores de PCs. Ambas se relacionam com ainstruo SELECI na ENVIRONMENT DIVISION. Emnossos programas de exemplo, usamos nomes de dados eminstrues AS- SI G N. Veja por exemplo: SELECT DADOS-EMPREGADOS ASSIGN TO EMP.DADO. EM P. DADO 5 seria o nome do arquivo pelo qual ele conhecido pelo sistema operacional de seu computador. Se esse programa fosse executado em um AS/400, por exemplo, haveria, naquele sistema, um arquivo de dados chamado EMP DADO. Se voc estiver usando um compilador de PC em seus programas, deve colocar seus arquivos de dados em pastas (ou subdiretrios) em um disco rgido e atribuir-lhes nomes com extenso de arquivo DAI a fim de identific-los como arquivos de dados. Esses nomes de arquivos seriam delimitados por aspas. Alm disso, deve ser especificado a um compilador de PC que um determinado arquivo m arquivo de dados padres. Para isso, deve ser utilizada a clusula ORGANIZATION IS LINE SEQUENTIAL aps a clusula A SSI G N (na instruo SELE CI) para arquivos padres em disco e arquivos a serem impressos. Em um arquivo do tipo LI N E SEQUE N 1 IA L, cada linha equivalente a um registro. Assim sendo, a instruo SELE C T anterior deveria ser codificada em um compilador de PC como: SELECT DADOS-EMPREGADO ASSIGN TO C:\CAPITULOl\EMP.DAT ORGANIZATION IS LIME SEGUENTIAL. Em resumo, cada computador tem seus comandos prprios de sistema operacional para: 1. Entrar no sistema computacional (log on). 2. Criar um nome de arquivo para um programa em COBOL. 3. Usar um editor de textos para digitar os arquivos do programa e/ou arquivo de dados, fazer quaisquer correes, salvar arquivos e sair do editor. 4. Chamar (executar) o compilador COBOL. 5. Traduzir o programa COBOL em linguagem de mquina. 6. Ligar (linkar) ou carregar o programa-objeto para que ele possa ser executado. 7. Rodar (executar) o programa-objeto com dados de teste. 8. Sair do sistema (log off). RESUMO DO CAPTULO A. A Natureza do COBOL 1. O COBOL uma das linguagens comerciais de programao mais difundidas atualmente em uso. 2. COBOL uma abreviao de Common Business-Oriented Language. 3. O COBOL uma linguagem que tem semelhana com o idioma ingls. 4. As verses ANS (American National Standards) do COBOL so 1968, 1974 e 1985. (Este texto se concentra no COBOL 85 e indica suas diferenas em relao ao COBOL 74. As mudanas que se espera serem includas no futuro padro COBOL tambm so indicadas.) B. Preparao e Depurao do Programa 1. Obtenha do analista de sistema as especificaes do programa ou prepare-as voc mesmo. 2. Use as ferramentas de planejamento fluxogramas, pseudocdigo, diagramas hierrquicos para projetar o programa. 3. Codifique o programa. 4. Compile o programa e conserte os erros de sintaxe. 24 Uma Introduo ao Projeto Estruturado de Programas em COBOL 5. Teste o programa usando tcnicas de depurao.

a. Realize revises do percurso do programa. b. Verifique a existncia de erros lgicos e de tempo de execuo durante e aps a execuo do programa. 6. Documente o programa. C. Tcnicas para Melhorar o Projeto do Programa 1. Programao estruturada. a. Conhecida como programao sem-GO-TO. b. Os programas estruturados so subdivididos em pargrafos ou mdulos. 2. Programao Top-Down a. Os mdulos ou procedimentos (procedures ou sub-rotinas) mais gerais so codificados antes dos mais especficos. b. Isso semelhante a desenvolver um sumrio antes de escrever um relatrio ou dissertao a organizao e a estrutura so mais importantes; os deta. lhes so fornecidos posteriormente. 3. O cdigo do programa criado de forma a eliminar o Problema do Ano 2000 isso ser includo ao longo do texto para melhorar o projeto do programa D. As Divises do COBOL. 1. IDENTIFICATION DIVISION. a. Identifica o programa para o sistema operacional. b. Tambm pode fornecer alguma documentao. c. 1 ROG RAM -10 a nica entrada obrigatria no interior da diviso. 2. ENVIRONMENT DIVISION. Atribui um nome a cada arquivo usado no programa e especifica o dispositivo que o arquivo usar. 3. DATA DIVISION. a. Define e descreve os formatos de todas as entradas, sadas e reas de trabalho usadas para processamcnto. b. FILE SECTION (l)CadanomedearquivodefinidonaENVlRoNMENT DIVISIONdeveserdescritoemumFDnaDATADIVISION. (2) Cada formato de registro dentro de cada arquivo definido como uma entrada 01. (3) Os campos dentro de cada registro so descritos com uma clusula II C TU R E que especifica o tamanho e o tipo dos dados. e. WORKING-STORAGE SECTION (1) Define as reas de trabalho necessrias para o processamento. (2) E codificado um indicadorde fim de arquivo (end-of-file) na WORKING. STORAGE SECTION; chamaremos esse campo de EXISTEM-MAIS- REGI 5 T R OS. Em nossos exemplos, o campo chamado EXISTEM - MAIS - REGISTROS possuir um valor SIM quando houver registros de entrada para pro cessar e um valor NAO quando no houver mais dados. 4. PROCEDURE DIVISION. a. subdividida em pargrafos ou mdulos. b. Inclui todas as instrues exigidas para processar a entrada e produzir a sada. c. Todas as instrues so executadas em seqncia, mas P E R FOR M U N TI L ... E N D - P E R F O RM um loop. As instrues no interior do bloco so exe cutadas repetidamente at que a condio especificada na clusula U N T 1 L seja atendida. Quando a condio for atendida, so executados os passrr imediatamente aps o E N D - P E R F O R M; depois de um pargrafo ser executado com um P E R P0 R M, o controle retorna instruo seguinte, na seqncia aps o PERFORM. d. Mdulo ou pargrafo principal. As entradas seguintes so tpicas de um mdulo principal. (1) Os arquivos so designados como de entrada (INPUT) ou sada (OUTPIT) e ativados em uma instruo OPEN. (2) PERFORM IJNTIL ... END-PERFORMumloopqueexecutadorepetidamenteatEXlSTEMMAIS-REGISTROS = NAO.Oindicador,EXISTEM-MAIS 1 E G IS TIOS, definido como NA O somente aps o ltimo registro de dados ter sido lido e processado e a clusula R E AD ... A T E N D ser executada. (3)DentrodePERFORM IJNTIL ... END.PERFORM,codificamososeguinte: READ AT END

NOT AT END END- READ A instruo R E AD tenta ler um registro. Se um registro for lido satisfatoriamente, a clusula NO T A T E NO executada; normalmente eIa contm um. instruo P E R F O R M que executa um pargrafo que processa o registro. Se no houver mais registros para processar, a clusula A T E NO executada, o qu normalmentecolocaNAOemEXISTEM-MAIS-REGISIROSparaqueoloopPERFORM UNTIL ... ENDPERFORMpossaserconclufdo. (4) Uma instruo CLOSE desativa todos os arquivos. (5) Uma instruo 5 T O P R O N conclui o processamento. e. Clculo ou processamento de pargrafos. (1) O clculo ou o processamento dos pargrafos executado quando uma instruo no mdulo principal especificar lER F O R M nome-do-pargrafo. (2) E exigido um clculo ou processamento de pargrafos para processar cada registro de entrada. PRINCIPAIS TERMOS American National Standards Institute (ANSI) Formulrio de Iayout de registros Programa-objeto Arquivo Gabarito de Espaamento de Impressora Programa personalizado Campo Input Programao estruturada Campo alfanumrico Linguagem de mquina Programao top-down Compilador Linguagem de programao simblica Programador Compilar Loop Programador de aplicaes Depurar Melhoramentos Programas do sistema operacional Desenvolvedor de software Mdulo Pseudocdigo Diagrama de estrutura Output R E AD primrio Diagrama hierrquico Pacote de aplicaes Registro Documentao Ponto decimal implcito Registro de comprimento fixo Entrada Posio de ordem inferior Reviso do trajeto do programa Erro de sintaxe Posio de ordem mais elevada Sada Erro em tempo de execuo Problema do Ano 2000 Sistema de informaes Erro lgico Programa Software Especificaes do programa Programa de aplicaes Usurio Fluxograma Programa-fonte Verificao (conferncia) de mesa Uma Introduo ao Projeto Estruturado de Programas em COBOL 25 1 FS tE DE FINAL DE CAPTULO No final de cada captulo h um teste sobre a matria de todo o captulo. As solues se encontram aps o teste. 1. Todos os programas em COBOL Consistem em (n. divises chamadas _________ _________, _________ e _________ 2.Afun0daIDENTIFIcATI0N DIVISION ________ 3.AfunodaENVIRoNMENT DIVISION ________ 4.AfunodaDATA DIVISION _______ 5.Afun0daPROCEDURE DIVISION ________ 6. Outro termo para os dados que so fornecidos ao computador ___________ e outro termo para as informaes geradas pelo programa ___________ 7. ___________ e __________ so exemplos de mdia para fornecimento de dados de entrada ao computador. 8. Duas tcnicas para simplificar o projeto de um programa COBOL e facilitar a depurao so chamadas ___________ e __________ 9. Uma instruo __________ indica quais arquivos so de entrada e quais so de sada. 10. (Vou F) Uma instruo P ERRO RM. . . 1 N TIL executa uma srie de passos repetidamente at que uma determinada condio seja satisfeita. Solues l.quatro;IOENTIFICATION DIVISION;ENVIRONMENT DIVISION;DATA DIVISION;PROCEDURE DIVISION 2. identificar o programa

3. atribuir um nome a cada arquivo e especificar o dispositivo que cada arquivo usar 4. descrever as reas de entrada, de sada e de trabalho usadas no programa 5. definir as instrues e operaes necessrias para converter dados de entrada em sada 6. entrada (input); sada (output) 7. disco; dados fornecidos por meio de um teclado 8. programao estruturada; programao top-down 9. OPEN 10. V QUESTES DE REVISO 1. Questes Verdadeiro-Falso 1. Um programa COBOL que compila sem qualquer erro de sintaxe sempre ser executado satisfatoriamente. 2. Os programas escritos em COBOL no precisam ser compilados. 3. Muito embora o COBOL seja uma linguagem comercial de programao, ele contm funes matemticas avanadas que podem ser usadas em problemas cientficos altamente sofisticados. 4.Aseqncianaqua1asquatrodivisesdeumprogramacoBoLsoe5crita5IDENTJFicAIQ DIVISION,DATA DIVISION,ENVIRONMENT DIVISION. PROCEDURE DIVISION. 5. A diviso que especifica ao computador os dispositivos a serem utilizados a DA T A DIVI SI O N. 6. O Problema do Ano 2000 ocorreu porque os cdigos dos anos nos campos de data geralmente possuam dois dgitos em vez de quatro. 7.AsinstruessocodificadasnaptoctDuRE DIVISION. 8. Se 1370 for lido em um campo com uma clusula RI C TU R E 99V 99, ele ser armazenado como 370 9. Se o campo precedente fosse movido para uma rea de sada com uma clusula RI C TU tE 99 . 99, ele seria impresso como 13.70. 10. Os campos definidos na W O R tINO -5 TORA SE podem receber valores iniciais. II. Questes Gerais 1. Defina os seguintes termos: (a) Programa. (b) Compilador. (e) Programa-fonte. (d) Programa-objeto. 2. Cite as diferenas entre uma linguagem de programao simblica e uma linguagem de mquina. 3. Cite as razes principais pelas quais COBOL uma linguagem to popular. 4. Qual o significado do termo programao estruturada? 5. Qual o significado do termo ANS COBOL? 6. Indique a diferena entre software do sistema operacional e software de aplicaes. 7. Qual o significado do termo erro de sintaxe? 8. Qual a finalidade da clusula PICTURE? 9. Qual a finalidade da instruo SELECT? lO.Qualafinalidadedawottlso-STORAGE SECTION? III. Questes sobre InternetJConceitos Importantes 1. Um mecanismo de busca uma ferramenta da Internet que far uma pesquisa na WWW (World Wide Web) procurando itens que correspondem ao seu critrio de busca. Procure o Yahoo, um mecanismo popular de busca. Digite http://www.yahoo.com no local para o endereo, que identifica o site que se deseja visitar. Selecione para pesquisa a categoria Computing no Yahoo. Voc pode limitar ainda mais sua pesquisa selecionando Programming Languages. Algumas vezes o Yahoo indica no encontrar local algum e recomenda clicar no site Altavista, para que sejam obtidas mais informaes. Normalmente, ao ser realizada a pesquisa no site Altavista so encontrados diversos locais. A seguir, digite Y2K na caixa de pesquisa e pressione a tecla Enter. Aparecer uma lista de todos os sites relacionados com o Problema do Ano 2000. Examine alguns dos materiais escritos apresentados. Escreva um resumo de uma pgina sobre o Problema do Ano 2000. Diga se voc acha que o problema continuar a causar grandes erros a partir do ano 2000 ou ser totalmente

resolvido. Cite suas fontes na Internet. Por ser um site muito popular, o Yahoo pode estar ocupado e apresentar acesso lento. Voc tambm pode tentar http://www.altavista.com, http://www.lycos.com ou http://www.excite.com. 2. Usando o Yahoo ou outro mecanismo de busca, encontre itens relacionados ao novo padro COBOL o que substituir o COBOL 85. Faa uma descrio de uma pgina de seu status atual. Cite suas fontes na Internet. 26 Uma Introduo ao Projeto Estruturado de Programas em COBOL TAREFAS DE PROGRAMAO A realizao das tarefas a seguir vai ajud-lo no aprendizado de como criar um programa em seu sistema. Se voc tem acesso a um computador, entre com um desses programas e faa sua compilao e depurao. Antes de comear, voc precisar das seguintes informaes referentes ao sistema utilizado: A. O mtodo de acesso a um computador, em seu centro de computao, e como utilizar seu editor de textos. B. Os comandos do sistema operacional para entrar, compilar e executar um programa. C. As exigncias da clusula ASSIGN para as instrues SELECT! Para executar o programa, podem ser utilizados os dados de teste fornecidos por um instrutor ou voc mesmo pode criar seus dados de entrada. COBOL 85 DATA DIVISION. FILE SECTION. FD ARO-VENDAS [ABEL RECORDS ARE STANDARD 01 REG-VENDAS. 05 NOME-IN 05 QUANT-VENDAS-IN FD ARO-IMP [ABEL RECORDS ARE OMITTED. 01 REG-PRINT. 05 05 NOME-OUT END-PERFORM CLOSE ARO-VENDAS ARQ-IMP PICTURE PICTURE PICTURE PICTURE PICTURE MULTIPLY .02 BYOUANT-VENDAS-IN GIVINS VALOR-COMISSAO-OUT END-IF WRITE REG-PRINT X(20) X(15) X(20) 99.99. X(72) READ ARO-VENDAS T END MOVE NAO TO EXISTEM-MAIS-REGISTROS. PERFORM 200-ROTINA-COMISSAO UNTI L EXISTEM-MAIS- REGISTROS = NAU CLOSE ARO-VENDAS ARO-IMP.

STOP RUN. Omita o terminador de escopo END-IF e termine a linha anterior com um ponto READ ARO-VENDAS AT END MOVE NAU TO EXISTEM-MAIS-REGISTROS. Fig. 1.14 Programa para a Tarefa de Programao 2. IDENTIFICATION DIVISION PROGRAM-ID. PROBLEMA2. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ARO-VENDAS ASSIGN TO DISK1. SELECTARQ-IMP ASSIGN TO PRINTER. PICTURE X(15) PICTURE 999V99. 05 Substituies para o COBOL 74 Para o COBOL 74, deve ser usado FILLER em vez de campos com nome em branco 05 VALOR-COMISSAO-OUT 05 WORKING-STORAGE SECTION. 01 EXISTEM-MAIS- REGISTROS PROCEDURE DIVISION 100-MODULO - PRINCIPAL. OPEN INPUT ARO-VENDAS OIJTPUT ARO-IMP PERFORM UNTIL EXISTEM-MAIS-REGISTROS = NAO READ ARO-VENDAS AT END PICTURE XXX VALUE SIM. NOT AT END END-READ MOVE NAO TO EXISTEM-MAIS-REGISTROS PERFORM 200-ROTINA-COMISSAO STOP RUN. 200- ROT 1 NA-COMI SSAO MOVE SPACES TO REG-PRINT MOVE NOME-IN TO NOME-OUT IF OUANT-VENDAS-IN IS GREATER THAN 100.00 MULTIPLY .03 BVQUANT-VENDAS-IN GIVING VALOR-COMISSAO-OUT ELSE 2Se voc estiver usando um compilador para PC, certifique-se de usar ORGANIZATION IS UNE SEGUENTIAL em instrues SELECT. Uma Introduo ao Projeto Estruturado de Programas em COBOL 27 1. Digite e execute o programa da Fig. 1.9 usando seu prprio arquivo de dados de teste. 2. A Fig. 1.14 uma ilustrao de um exemplo de programa COBOL. (a) Descreva os dados de entrada fornecendo o layout de um registro de entrada. (b) Descreva as informaes de sada fornecendo um layout do registro de sada. (e) Descreva, com suas prprias palavras, o processamento que converte os dados de entrada nas informaes de sada. (d) Digite e execute o programa usando seu prprio arquivo de dados de teste. 3. A Fig. 1.15 uma ilustrao de um exemplo de programa COBOL. (a) Descreva os dados de entrada fornecendo o layout de um registro de entrada.

(b) Descreva as informaes de sada fornecendo um layout do registro de sada. (e) Descreva, com suas prprias palavras, o processamento que converte os dados de entrada nas informaes de sada. (d) Digite e execute o programa usando seu prprio arquivo de dados de teste. COBOI. 85 IDENTIFICATION DIVISION PROGRAM-ID. PROBLEMA3. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECTFOLHA-PAG-IN ASSIGN 10 DISK1. SELECTFOLHA-PAG-OUT ASSIGN 10 DISK2. DATA DIVISION. FILE SECTION. FD FOLHA-PAG-IN LABEL RECORDS ARE STANDARD. 01 REG-FOLHA-PAG. 05 NUM-EMPREGADO-IN PICTURE 9(5). 05 NOME-EMPREGADO-IN PICTURE X(20). 05 CODIGO-LOCAL-IN PICTURE 9999. 05 SALARIO-ANUAL-IN PICTURE 9(6). FD FOLHA-PAG-OUT LABEL RECORDS ARE STANDARD. 01 REGISTRO-OUT. 05 NUM-EMPREGADO-OUT PICTURE 9(5). 05 NOME-EMPREGADO-OUT PICTURE X(20) 05 SALARIO-ANUAL-OUT PICTURE 9(6). WORKING-STORAGE SECTION. 01 EXISTEM-MAIS-REGISTROS PICTURE X(3) VALUE SIM. PROCEDURE DIVISION. 100-MODULO-PRINCIPAL. OPEN INPUT EOLHA-PAG-IN OUTPUT FOLHA-PAG-OUT PERFORM UNTIL EXISTEM-MAIS-REGISTROS = NAO Substituies para o COBOL 74 READ FOLHA-PAG-IN ATEND READ FOLHA-PAG-IN MOVE NAO TO EXISTEM-MAIS-REGISTROS AT END MOVE NO TO NOTATEND EXISTEM-MAIS-REGISTROS. PERFORM 200-ROTINA-ORDENADO PERFORM 200-ROTINA-ORDENADO END-READ tNTI L EXISTEM-MAIS-REGISTROS END-PEIRFORM = NAO, CLOSE FOLHA-PAG-IN GLOSE FOLHA-PAG-IN FOLHA-PAG-OUT FOLHA-PAG-OUT. STOPRUN. STOP RUN, 200-ROTINA-ORDENADO. MOVE NUM-EMPREGADO-IN TO NUM-EMPREGADO-OU[ MOVE NOME-EMPREGADO-IN 10 NOME-EMPREGADO-OUT ADD 1000, SALARIO-ANUAL-IN G IVI NG SALARIO -ANUAL- OUT WRITE REGISTRO-OUT. READ FOLHA-PAG-IN AT END MOVE NO TO EXISTEM-MAIS-REGISTROS. Fig. 1.15 Programa para a Tarefa de Programao 3.

You might also like