9

Click here to load reader

COBOL

Embed Size (px)

DESCRIPTION

COBOL (sigla de COmmon Business Oriented Language) - Linguagem Comum Orientada para os Negócios é uma linguagem de programação orientada para o processamento de banco de dados comerciais.1 É a linguagem de programação inteira mais usada, produto do Departamento de Defesa norte-americano sob a direção da contra-almirante Grace Murray Hopper.2As especificações do COBOL 2002 incluem suporte à programação orientada a objetos e outras características das linguagens modernas.3

Citation preview

Page 1: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 1/9

COBOL

Paradigma procedural,Orientação a objeto

Surgido em 1959Últimaversão

COBOL2002

Criado por Grace Hopper, William Selden,Gertrude Tierney, HowardBromberg, Howard Discount,Vernon Reeves, Jean E.Sammet.

Estilo detipagem:

Forte e estática

Dialetos: HP3000 COBOL/II, COBOL/2,IBM OS/VS COBOL, IBMCOBOL/II, IBM COBOL SAA,IBM Enterprise COBOL, IBMCOBOL/400, IBM ILECOBOL, Unix COBOL X/Open,Micro Focus COBOL, MicrosoftCOBOL, Ryan McFarlandRM/COBOL, Ryan McFarlandRM/COBOL­85, DOSVSCOBOL, UNIVAC COBOL,Realia COBOL, FujitsuCOBOL, ICL COBOL,ACUCOBOL­GT, COBOL­IT,DEC COBOL­10, DEC VAXCOBOL, Wang VS COBOL,Visual COBOL, Tandem(NonStop) COBOL85, Tandem(NonStop) SCOBOL (umvariante de COBOL74 para criarconsolas em terminais baseadosem texto)

Influenciadapor

FLOW­MATIC, COMTRAN,FACT

Influenciou PL/I, CobolScript, ABAP

COBOLOrigem: Wikipédia, a enciclopédia livre.

COBOL (sigla de COmmon Business Oriented Language)­ Linguagem Comum Orientada para os Negócios é umalinguagem de programação orientada para oprocessamento de banco de dados comerciais. É alinguagem de programação inteira mais usada, produto doDepartamento de Defesa norte­americano sob a direção dacontra­almirante Grace Murray Hopper.

As especificações do COBOL 2002 incluem suporte àprogramação orientada a objetos e outras característicasdas linguagens modernas.

Índice

1 História e especificação1.1 ANS COBOL 19681.2 COBOL 19741.3 COBOL 19851.4 COBOL 2002 e o COBOL orientado aobjeto1.5 História de normas COBOL1.6 Legado

2 Características2.1 Olá, mundo

2.1.1 Olá, OS/360 cerca de 19723 Estrutura básica

3.1 Área de codificação no COBOL4 Críticas e defesas

4.1 Falta de estruturalismos4.2 Problemas de compatibilidade apósnormalização4.3 Sintaxe verbosa4.4 Outras defesas

5 Referências6 Ver também7 Ligações externas

História e especificação

O COBOL foi criado por um comitê de investigadores de várias instituições civis e governamentaisdurante o segundo semestre de 1959. As especificações eram em grande parte inspiradas na linguagemde programação FLOW­MATIC inventada pela Grace Hopper ­ referida como "a mãe da línguaCOBOL." A linguagem de programação da IBM COMTRAN inventada pelo Bob Bemer também foi

1

2

3

Page 2: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 2/9

utilizada, mas a especificação da FACT da Honeywell tinha sido distribuída até tarde aos membros docomitê do processo, e teve relativamente pouco impacto. O uso corrente e estudo do FLOW­MATICcomo a única linguagem do grupo de estudo que efetivamente tinha sido utilizada numa situação real,fez com que fosse bastante atractiva ao comitê.

Em 8 de abril de 1959, na CODASYL (Conference on Data Systems Language) destinada a usuários epessoas da universidade, no centro de computação da Universidade da Pensilvânia, o Departamento deDefesa dos Estados Unidos, posteriormente, concordou em patrocinar e supervisionar as próximasatividades. A reunião presidida por Charles A. Phillips foi realizada no Pentágono em 28/29 de maio de1959 (exatamente um ano após a reunião em Zurique do ALGOL 58), não foi decidido definir de trêscomissões: de curto, médio e longo alcance (a última nunca foi realmente formada). Foi o Comitê deCurto Prazo, presidido por Joseph Wegstein do National Bureau of Standards que durante os mesesseguintes criou uma descrição da primeira versão do COBOL. O comitê foi constituído por membrosrepresentantes de seis fabricantes de computadores e três órgãos governamentais, a saber: BurroughsCorporation, IBM, Minneapolis­Honeywell (Honeywell Labs), RCA, Sperry Rand, e Sylvania ElectricProducts, e a Força Aérea dos Estados Unidos, o David Taylor Model Basin e a Agência Nacional dePadrões (National Bureau of Standards ou NBS). Este comitê foi presidido por um membro do NBS.Um comitê de Médio Prazo e outro de Longo Prazo foram também propostos na reunião do Pentágono.Entretanto, embora tenha sido formado, o Comitê de Médio Prazo nunca chegou a funcionar; e o Comitêde Longo Prazo nem chegou a ser formado. Por fim, um subcomitê do Comitê de Curto Prazodesenvolveu as especificações da linguagem COBOL. Este subcomitê era formado por seis pessoas:

William Selden e Gertrude Tierney da IBMHoward Bromberg e Howard Discount da RCAVernon Reeves e Jean E. Sammet da Sylvania Electric Products

A decisão de usar o nome "COBOL" foi feita em uma reunião do comitê realizada em 18 de setembro de1959. O subcomitê completou as especificações para o COBOL em dezembro de 1959.

O primeiro compilador para COBOL foi posteriormente implementado em 1960 e em 6/7 de dezembro,essencialmente o mesmo programa COBOL funcionou em dois computadores diferentes, umcomputador RCA e uma Remington­Rand Univac, demonstrando que a compatibilidade pode seralcançada.

ANS COBOL 1968

Depois de 1959 o COBOL sofreu várias modificações e melhorias. Na tentativa de superar o problemada incompatibilidade entre diferentes versões de COBOL, o American National Standards Institute(ANSI) desenvolveu uma forma padrão de língua, em 1968, após o lançamento da versão COBOL­61que se tornou a pedra angular para mais versões. Esta versão ficou conhecida como American NationalStandard (ANS) COBOL.

COBOL 1974

Em 1974, a ANSI publicou uma versão revista da (ANS) COBOL, que continha uma série de recursosque não estavam na versão 1968.

COBOL 1985

4

5

6

7

7

Page 3: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 3/9

Em 1985, a ANSI publicou ainda uma outra versão revista que tinha novas funcionalidades que nãoapareciam no padrão 1974, como construções de linguagem mais notavelmente estruturadas("terminadores de escopo"), incluindo END‐IF, END‐PERFORM, END‐READ, etc.

COBOL 2002 e o COBOL orientado a objeto

A linguagem continua a evoluir até hoje. No início de 1990, decidiu­se acrescentar a orientação a objetosna próxima revisão completa do COBOL. A estimativa inicial era ter esta revisão concluída em 1997 eum ISO CD (Committee Draft, rascunho do comitê) disponível até 1997. Alguns fornecedores (incluindoa Micro Focus, a Fujitsu, a Veryant e a IBM) introduziram a sintaxe orientada a objetos com base nosrascunhos de 1997 ou outro da revisão completa. A versão final aprovada no padrão ISO (adotado comoum padrão ANSI por INCITS) foi aprovada e disponibilizado em 2002.

Assim como a C++ e a Java, os compiladores COBOL estão disponíveis enquanto a linguagem se moveem direção à padronização. A Fujitsu, a Micro Focus e a Raincode atualmente suportam os compiladoresCOBOL orientados a objetos visando o .NET.

O COBOL 2002 incluiu recursos além orientação a objetos, (mas não estão limitados a):

Suporte a idiomas (incluindo, mas não limitado a suporte ao Unicode)Processamento baseado em LocaleFunções amigáveis ao usuárioCALL (e função) protótipos (para a verificação de parâmetro em tempo de compilação)Ponteiros e sintaxe para a obtenção/liberação de armazenagemConvenções de chamada de e para línguas não­COBOL, como CSuporte para execução em ambientes estruturas como .NET e Java (incluindo COBOL instanciadocomo Enterprise JavaBeans)Suporte a Bit e BoolSuporte a "True" (até esta melhoria, itens binários eram truncados (pela especificação de base­10)dentro da divisão de dados)Suporte a ponto flutuanteResultados aritméticos padrão (ou portáteis)Geração e parsing de XML

História de normas COBOL

As especificações aprovadas por todo o Comitê de Curto Prazo foram aprovadas pelo Comitê Executivoem 3 de janeiro de 1960, e enviadas para a gráfica do governo que editou e imprimiu essasespecificações como COBOL 60.

O American National Standards Institute (ANSI) produziu várias revisões do padrão COBOL, incluindo:

COBOL­68COBOL­74COBOL­85Intrinsic Functions Amendment ­ 1989Corrections Amendment ­ 1991

Após as alterações de 1985 o padrão ANSI (que era adotado pela ISO), o desenvolvimento e aapropriação foi assumida pela ISO. As seguintes edições e TRs (Relatórios Técnicos) foram emitidaspelo padrão ISO (e adotados como ANSI):

COBOL 2002

8

Page 4: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 4/9

Finalizer Technical Report ­ 2003Native XML syntax Technical Report ­ 2006Bibliotecas de coleção de classes orientadas a objeto ­ aprovação pendente

Desde 2002, o padrão ISO também está disponível para o público codificado como ISO / IEC 1989.

O trabalho progride na próxima revisão integral da norma COBOL. A aprovação e disponibilidade eraesperado primeiros em 2010. Para obter informações sobre esta revisão, ver o mais recente projeto destarevisão, ou para ver o que as outro trabalhos em progresso no padrão COBOL, consulte o site de normasdo COBOL (http://www.cobolstandard.info).

Legado

Programas em COBOL estão em uso globalmente em agências governamentais e militares além deempresas comerciais, e estão sendo executados em sistemas operacionais como o da IBM z/OS e z/VSE,as famílias POSIX (Unix / Linux, etc) e Windows da Microsoft, bem como Unisys OS 2200. Em 1997, oGartner Group relatou que 80% dos negócios do mundo rodavam em COBOL com mais de 200 bilhõesde linhas de código existentes e cerca de 5 bilhões de linhas de código novo por ano.

Características

O COBOL teve como meta servir como uma linguagem de programação para negócios. Os programaspara negócios não precisam de cálculos tão precisos como os encontrados em engenharia, assim oCOBOL foi concebido basicamente com as características:

Acesso rápido a arquivos e bases de dadosAtualização rápida de arquivos e bases de dadosGeração de uma grande quantidade de informaçõesSaída com um formato compreensível ao usuário

O COBOL é geralmente a linguagem escolhida em cálculos financeiros por suportar aritmética inteiraaplicada a números muito grandes (milhões, bilhões etc) ao mesmo tempo que é capaz de lidar comnúmeros muito pequenos como frações de centavos. Outra característica é a formatação, classificaçãoe geração de relatórios.

Olá, mundo

Um exemplo do programa "Olá, Mundo" em COBOL:

IDENTIFICATION DIVISION. PROGRAM‐ID. HELLO‐WORLD. PROCEDURE DIVISION. DISPLAY 'Ola, mundo'. STOP RUN.

Existem vários dialetos do COBOL. Alguns compiladores, por exemplo, permitem o uso de aspasduplas, além do padrão de aspas simples:

9

10

112

Page 5: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 5/9

DISPLAY "Hello, world".

Olá, OS/360 cerca de 1972

Em um IBM System/360 executando OS/360 MVT 21.8f, por volta de 1972, o teste Olá, Mundo terialevado perfurado cartões de 80 colunas, contendo o código­fonte semelhante a:

//COBUCLG JOB CLASS=A,MSGCLASS=A,MSGLEVEL=(1,1)//HELOWRLD EXEC COBUCLG,PARM.COB='MAP,LIST,LET'//COB.SYSIN DD * 001 IDENTIFICATION DIVISION. 002 PROGRAM‐ID. 'HELLO'. 003 ENVIRONMENT DIVISION. 004 CONFIGURATION SECTION. 005 SOURCE‐COMPUTER. IBM‐360. 006 OBJECT‐COMPUTER. IBM‐360. 0065 SPECIAL‐NAMES. 0066 CONSOLE IS CNSL. 007 DATA DIVISION. 008 WORKING‐STORAGE SECTION. 009 77 HELLO‐CONST PIC X(12) VALUE 'HELLO, WORLD'. 075 PROCEDURE DIVISION. 090 000‐DISPLAY. 100 DISPLAY HELLO‐CONST UPON CNSL. 110 STOP RUN.//LKED.SYSLIB DD DSNAME=SYS1.COBLIB,DISP=SHR// DD DSNAME=SYS1.LINKLIB,DISP=SHR//GO.SYSPRINT DD SYSOUT=A//

Estrutura básica

No COBOL há três tipos básicos de dados usados nas instruções:

Numérico (sinalizado ou não, com decimal ou inteiros)AlfanuméricoConstantes figurativas

O COBOL consiste basicamente em quatro divisões separadas:

IDENTIFICATION DIVISION

A IDENTIFICATION DIVISION possui informações documentais, como nome do programa, quem ocodificou e quando essa codificação foi realizada.

ENVIRONMENT DIVISION

A ENVIRONMENT DIVISION descreve o computador e os periféricos que serão utilizados peloprograma.

DATA DIVISION

A DATA DIVISION descreve os arquivos de entrada e saída que serão usadas pelo programa. Tambémdefine as áreas de trabalho e constantes necessárias para o processamento dos dados.

PROCEDURE DIVISION

11

12

Page 6: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 6/9

A PROCEDURE DIVISION contém o código que irá manipular os dados descritos na DATADIVISION. É nesta divisão que o desenvolvedor descreverá o algoritmo do programa.

IDENTIFICATION DIVISION ENVIRONMENT DIVISION * CONFIGURATION SECTION * INPUT‐OUTPUT SECTION DATA DIVISION * FILE SECTION * WORKING‐STORAGE SECTION * LOCAL‐STORAGE SECTION * LINKAGE SECTION * COMMUNICATION SECTION * REPORT SECTION * SCREEN SECTION PROCEDURE DIVISION

Área de codificação no COBOL

Colunas Descrição

1 a 6 branco (será preenchido com a numeração COBOL) 7 (branco) LINHA DE CODIFICAÇÃO * (asterisco) linha de comentário ‐ (hífen) continuação de literal não numérico8 a 72 instruções do COBOL iniciando na coluna 8

Críticas e defesas

Falta de estruturalismos

Em sua carta a um editor em 1975, intitulado "Como é que vamos dizer verdades que podemmachucar?" que era crítica a várias linguagens de programação contemporâneas como o COBOL, ocientista da computação e vencedor do Prêmio Turing, Edsger Dijkstra comentou que "O uso deCOBOL mutila a mente, o seu ensino deve, portanto, ser considerado como uma infração penal".

Em sua resposta divergente ao artigo de Dijkstra e "declaração ofensiva", o cientista da computaçãoHoward E. Tompkins defendeu que COBOL era estruturada: "Os programas em COBOL com controlede fluxo complicado na verdade tendem a "paralisar a mente'", mas isso foi porque "Há grandequantidade de programas de aplicativos de negócios escritos por outros programadores que nuncaaprenderam corretamente sobre o benefício de manter o COBOL estruturado..."

Além disso, a introdução de OO­COBOL adicionou suporte para código orientada a objeto, bem comofunções definidas pelo usuário e tipos de dados definidos pelo usuário para o repertório de COBOL.

Problemas de compatibilidade após normalização

O COBOL 85 não era totalmente compatível com as versões anteriores, resultando nem um "parto decesariana" do COBOL 85. Joseph T. Brophy, CIO, Travelers Insurance, lideraram uma força­tarefa parainformar aos usuários de COBOL dos pesados custos de reprogramação para implementar o novopadrão. Como resultado, o Comitê ANSI do COBOL recebeu mais de 3.200 cartas do público, em sua

13

14

Page 7: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 7/9

maioria negativas, exigindo que o comitê fizesse as alterações. Por outro lado, a conversão para COBOL85 foi pensada para aumentar a produtividade nos próximos anos, justificando, assim, os custos deconversão.

Sintaxe verbosa

A sintaxe da COBOL tem sido muitas vezes criticada por sua verbosidade. No entanto, os defensoresnotam que isto foi intencional no projeto da linguagem, e muitos a consideram um dos pontos fortes daCOBOL. Um dos objetivos do projeto de COBOL foi que gerentes, supervisores e usuários não­programadores pudesse ler e entender seu código. É por isso que a COBOL tem o inglês como sintaxe eelementos estruturais, incluindo: substantivos, verbos, orações, frases, seções e divisões.Consequentemente, a COBOL é considerada por pelo menos uma fonte a ser "A linguagem deprogramação mais legível, compreensível e documentada em uso hoje. [...] Não só este legibilidadegeralmente auxilia o processo de manutenção, mas quanto mais velho um programa se tornar, maisvaliosa se torna essa legibilidade." Por outro lado, a mera capacidade de ler e entender algumas linhasde código da COBOL não concede a um executivo ou usuário final a experiência e os conhecimentosnecessários para projetar, construir e manter sistemas de software de grande porte.

Outras defesas

Além disso, tradicionalmente a COBOL é uma linguagem simples, com alcance limitado da função (semponteiros, sem tipos definidos pelo usuário e sem funções definidas pelo usuário), estimulando umestilo de codificação simples. Isso fez com que seja bem adequada ao seu domínio principal decomputação de negócios, onde a complexidade do programa encontra­se em regras de negócio queprecisam ser codificados em vez de sofisticados algoritmos e estruturas de dados. E porque a norma nãopertence a nenhum fornecedor em particular, os programas escritos em COBOL são altamente portáteis.A língua pode ser utilizada numa grande variedade de plataformas de hardware e sistemas operativos. Esua estrutura hierárquica rígida restringe a definição de referências externas para a Divisão de Ambiente(environment division), o que simplifica a mudança de plataforma em particular.

Referências

1. Márcia Regina Sawaya. Dicionario De Informatica & Internet (http://books.google.com/books?id=pJAnIST_RY0C&pg=PA83). NBL Editora; 1999. ISBN 978­85­213­1099­0. p. 83.

2. Stephen R. Schach. Engenharia de Software (http://books.google.com/books?id=Mkk7MriAp_wC&pg=PA465). McGraw Hill Brasil; ISBN 978­85­63308­44­3. p. 465.

3. Rui Bivar De Oliveira. The Power of Cobol: For Systems Developers of the 21st Century(http://books.google.com/books?id=K3pXAAAACAAJ). Booksurge Llc; 30 May 2006. ISBN 978­0­620­34652­8.

4. Jean_Sammet, The Early History of COBOL (http://portal.acm.org/citation.cfm?id=1198367), p.121–161,ACM SIGPLAN Notices, Association for Computing Machinery, Inc., 1978

5. GARFUNKEL, Jerome. The Cobol 85 Example Book. New York: Wiley, 1987. ISBN 0­471­80461­46. WEXELBLAT, Richard. History of Programming Languages. Boston: Academic Press, 1981. ISBN 0­12­745040­87. Atul Kahate. Object Oriented Analysis & Design (http://books.google.com/books?id=PkVy_zAaruMC&pg=PT420). Tata McGraw­Hill Education; ISBN 978­0­07­058376­4. p. 420.

8. NetCOBOL for .NET supports COBOL migration and software development in the .NET environment(http://www.adtools.com/products/windows/netcobol.html)

9. "Does COBOL Have a Future? (http://proc.isecon.org/2000/126/ISECON.2000.Kizior.pdf)". The Proceedingsof the Information Systems Education Conference 2000 17 (126).

10. Behrouz A. Forouzan; Sophia Chung Fegan. Foundations of Computer Science: From Data Manipulation toTheory of Computation (http://books.google.com/books?id=xu4jcMBih8QC&pg=PT197). Cengage LearningEditores; 2003. ISBN 978­970­686­285­3. p. 197.

15

11

16

17

16

Page 8: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 8/9

Lawrence R. Newcomer, Cobol Estruturado, Schaum McGraw­Hill, ISBN 0­07­450315­4Renato Erich Kleiber, Cartão de Referência: Cobol 80, Livros Técnicos e Científicos Editora S/A,ISBN 85­216­0411­4

Ver também

Outras linguagens de programação de terceira geração:

Ligações externas

Associação Brasileira de Profissionais COBOL (http://www.abpc.com.br/)Clube Cobol (http://www.clubecobol.com.br)(em inglês) COBOL­Standard Committee (http://www.cobolstandards.com/) (em inglês)(em inglês) COBOL Tutorial (http://www.csis.ul.ie/cobol/default.htm) (em inglês)(em inglês) COBOL Defined (http://www.infogoal.com/cbd/cobol.htm) (em inglês)(em inglês) The future's bright ... the future's Cobol(http://www.techworld.com/applications/features/index.cfm?featureid=3056) (em inglês)

Obtida de "http://pt.wikipedia.org/w/index.php?title=COBOL&oldid=40938716"

Categorias: Linguagens de programação orientadas a objetos Linguagens de programação proceduraisLinguagens de programação .NET Linguagens de programação criadas na década de 1950

11. "(...)para escrever um simples programa em Cobol são necessárias muitas linhas de código, o que torna alinguagem não muito fácil de aprender.", Mario Leite. Técnicas de Programação ­ Uma Abordagem Moderna(http://books.google.com/books?id=H8A0lZtqaXsC&pg=PA191). Brasport; ISBN 978­85­7452­229­6. p.191.

12. Earl H. Parsons. Structured Programming with COBOL Examples (http://books.google.com/books?id=JcnflKuF2ycC&pg=PA41). [S.l.]: iUniverse. p. 41. ISBN 978­0­595­25094­3

13. Dijkstra (2006). E. W. Dijkstra Archive: How do we tell truths that might hurt? (EWD498)(http://www.cs.utexas.edu/users/EWD/transcriptions/EWD04xx/EWD498.html) University of Texas atAustin. Visitado em August 29, 2007.

14. "In Defense of Teaching Structured COBOL as Computer Science," Howard E. Tompkins, ACM SIGPLANNotices, Vol. 18, Issue 4, April 1983.

15. GARFUNKEL, Jerome. The COBOL 85 example book. New York: Wiley, 1987. ISBN 0­471­80461­416. COBOL Tutorial ­ Introduction to COBOL (http://www.csis.ul.ie/cobol/course/COBOLIntro.htm#part1)17. "Em COBOL não há funções, mas podemos utilizar o comando PER­ FORM para executar sub­rotinas."

Cleuton Sampaio. Web 2.0 e Mashups ­ Reinventando a Internet (http://books.google.com/books?id=ziA1KREwEIAC&pg=PA46). Brasport; 2007. ISBN 978­85­7452­338­5. p. 46.

ALGOLAPLBASICCFORTRANLispPL/IRPGAnexo:Lista de palavras reservadas da linguagem de programação COBOL

Page 9: COBOL

25/03/2015 COBOL – Wikipédia, a enciclopédia livre

http://pt.wikipedia.org/wiki/COBOL 9/9

Esta página foi modificada pela última vez à(s) 17h54min de 26 de dezembro de 2014.Este texto é disponibilizado nos termos da licença Creative Commons ­ Atribuição ­ CompartilhaIgual 3.0 Não Adaptada (CC BY­SA 3.0); pode estar sujeito a condições adicionais. Para maisdetalhes, consulte as Condições de Uso.