Você está na página 1de 15

Histórico da Linguagem

A linguagem Cobol surgiu em maio de 1959 pelo Departamento de Defesa dos


EUA onde se reuniram representantes de vários fabricantes de computadores e usuários
em geral. Surgiu com o objectivo de ser uma linguagem comum de programação para
computadores digitais tendo em vista aplicações comerciais ou seja, Cobol é uma
linguagem de programação de alto nível projectada para aplicações comerciais.

A sua sigla significa Common Business Oriented Language (Linguagem de


Programação Comum Orientada à negócios) e ela foi idealizada em uma reunião
patrocinada pelo Pentágono, onde a partir daí iniciaram os projectos da nova linguagem.
Em agosto de 1961 foi divulgada a primeira versão do Cobol, que com o passar dos
tempos foi sendo aperfeiçoada, resultando em versões que aumentaram a potencialidade
da linguagem.

Uma importante contribuição da COBOL foi o seu código de fácil aprendizado,


pois utiliza verbos da língua inglesa para identificar os seus comandos. É excelente para
manipulação de arquivos.
A Cobol é uma linguagem autodescritiva com uma organização rígida e bem
definida com o propósito de facilitar a escrita e a leitura tanto para o programador como
para o leigo.
Uma das principais vantagens que a Cobol trouxe foi uma padronização, ou
uniformização entre os fabricantes de computadores. Podemos então dizer que tal
linguagem de programação possui grande portabilidade.
Um programa Cobol é sempre composto de entradas (frases) devidamente
dispostas em divisões, secções e parágrafos. Os programas em Cobol são divididos em
quatro partes que são as seguintes:
1-Identification Division

2-Enviroment Division

3-Data Division

4-Procedure Division
As partes acima citadas auxiliam na simplicidade e eficiência da linguagem e
facilitam a leitura dos programas.

1 . Identification Division

É a primeira divisão do programa. Sua função é identificar o programa de forma


mais geral, processando informações tais como: o nome do programa, a data de escrita,
o autor e comentários em geral.
Esta divisão não possui secções e suas entradas são agrupadas em parágrafos de
nomes fixos. Embora seja obrigatório o uso da divisão, todos os parágrafos são
opcionais.
Estrutura da Divisão
IDENTIFICATION DIVISION
PROGRAM-ID. Nome-do-programa
AUTOR. Nome-do-programador
INSTALLATION. Local onde foi feito o programa
DATE-WRITTEN. Data em que foi escrito o programa
DATE-COMPILED. Data em que o programa foi compilado
SECURITY. Comentários sobre a segurança do programa

OBS: Apenas o parágrafo PRGRAM-ID é obrigatório, sendo os outros opcionais.


Contudo, se eles estiverem presentes, devem aparecer nesta ordem.

Exemplo de IDENTIFICATION DIVISION:


IDENTIFICATION DIVISION
PROGRAM-ID. Exemplo1.
AUTOR. Rodrigo.
INSTALLATION. Micrológica.
DATE-WRITTEN. Agosto de 2003.
DATE-COMPILED. Dezembro de 2003.
2 .Environment Division

A Segunda divisão de um programa Cobol é usada para especificar o


computador utilizado para a compilação, o computador usado pelo programa objecto e
para correlacionar os arquivos lógicos com os equipamentos periféricos.

Estrutura da Divisão:
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. nome do computador usado para a compilação
OBJECT-COMPUTER. nome do computador usado para a execução
SPECIAL-NAMES. relaciona nomes internos a equipamentos
INPUT-OUTPUT SECTION.
FILE-CONTROL. nomeia e associa arquivos a periféricos.
I-O-CONTROL. define técnicas de controle.

A ENVIRONMENT DIVISION é formada por duas secções:


· A CONFIGURATION SECTION que trata das características do computador fonte
e do computador objecto.
· A INPUT-OUTPUT SECTION trata as informações necessárias ao controle da
transmissão e manipulação de dados entre o meio externo e o programa objecto.
Exemplo de CONFIGURATION SECTION
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. Sde-42
OBJECT-COMPUTER. Sde-42
SPECIAL-NAMES.
CURRENCY SIGN IS “ E ”
DECIMAL - POINT IS COMMA
PRINTER IS IMPRESSORA.
FILE – CONTROL.
SELECT<nome-arq> ASSIGN TO {Disk }
{Printer }
[ RESERVE <inteiro> {Area }]
{Areas}
[ FILE – STATUS IS <nome de dados 1> ]
[ ACCESS MODE IS {SEQUENTIAL} ]
{RANDOM}
{DYNAMIC}
[ ORGANIZATION IS {SEQUENTIAL} ]
{INDEXED}
{RELATIVE}
[ RECORD KEY IS <nome de dado 2> ]
[ RELATIVE KEY IS <nome de dado 3> ].
SAME AREA FOR <nome arq 1 > <nome arq 2> ...

3 . Data Division

É a terceira divisão de um programa Cobol, trata e descreve os dados que serão


manipulados pelo programa durante o processamento, sejam eles externos (informações
gravadas em arquivo) ou internos (existem durante a execução do programa).

Estrutura da Divisão
DATA DIVISION.
FILE SECTION.
{entrada de descrição de arquivo}
{entrada de descrição de registro}
WORKING-STORAGE SECTION.
[entrada de descrição de item independente]
[entrada de descrição de registro]
A DATA DIVISION é formada por três secções:
· FILE SECTION - Preocupa-se em descrever os dados que serão lidos e/ou
gravados externamente (dados que existiam antes do programa e dados que continuarão
a existir após o programa ser executado).
· WORKING - STORAGE SECTION - Descreve dados internos , isto é, aqueles
que só existem durante a execução do programa.
· LINKAGE SECTION
OBS. Cada secção é opcional e pode ser omitida se não for necessária. Contudo se a
secção for incluída, a ordem é importante.

4 . Procedure Division

É a divisão do programa que especifica as acções necessárias para o


processamento de dados em geral: controle de execução, entrada e saída, movimento
dos dados, etc. Sua função é descrever tais procedimentos necessários para resolução de
um problema dado.
Os procedimentos descritos na PROCEDURE DIVISION são escritos em
“STATEMENTS” e estão, geralmente, agrupados em parágrafos cujos nomes são
fornecidos pelo programador. Tais parágrafos podem, ainda, estarem agrupados em
SECTIONS também criadas pelo programador.

Estrutura da Divisão
PROCEDURE DIVISION.
{nome de secção
{nome de parágrafo
{sentença}...}...}...

Como vimos acima o “STATEMENT” é a unidade básica da Divisão de


Procedimentos. Existem dois tipos de parágrafos de “Statements”: condicionais e
imperativos. Uma sentença é composta por um ou mais statements, terminando sempre
por um ponto seguido de espaço. As sentenças podem ser agrupadas para formar um
parágrafo .Um ou mais parágrafos formam uma secção, que deve ser iniciada por um
nome de secção seguido da palavra section e por um ponto. Um nome de secção
aparecendo sempre na margem A(coluna 8). Uma secção termina imediatamente antes
do próximo nome de secção ou pelo termino do programa.

Exemplo da Procedure Division:


PROCEDURE DIVISION.
UNICA SECTION.
ABRE-ARQUIVOS
OPEN INPUT DADOS
OUTPUT LISTAG.
LEITURA
READ DADOS AT END GO TO ACABOU.
ADD 1 TO CONTA - LIDOS.
MOVE NUMERO – FUNC TO NUMERO.
MOVE NOME – FUNC TO NOME.
WRITE LINHA FROM IMPRESSAO.
ADD 1 TO CONTA – LINHA.
GO TO LEITURA.
ACABOU.
DISPLAY “REGISTROS LIDOS” CONTA - LIDOS.
DISPLAY “LINHAS IMPRESSAS” CONTA – LINHA.
CLOSE DADOS LISTAG.
STOP RUN.

Estrutura Básica

Organização de um programa COBOL: Um programa COBOL possui quatro


divisões que devem ser colocadas na ordem adequada. A sua estrutura completa é:

IDENTIFICATION DIVISION
PROGRAM-ID. nome-do-programa
[AUTHOR. [comentários] ...]
[INSTALLATION. [comentários] ...]
[INSTALLATION. [comentários] ...]
[DATE-WRITTEN. [comentários] ...]
[DATE-COMPILED. [comentários] ...]
[SECURITY. [comentários] ...]
[REMARKS. [comentários] ...]
ENVIRONMENT DIVISION
[CONFIGURATION SECTION.
SOURCE-COMPUTER.
OBJECT-COMPUTER.
[SPECIAL-NAMES. ]].
[INPUT-OUTPUT SECTION.
FILE-CONTROL.
[I-O-CONTROL. ENTRADA.]].
DATA DIVISION.
[FILE SECTION.
{ Descrição dos arquivos
{ Descrição dos registros } ... } ... ].
[WORKING-STORAGE SECTION.
[Descrição dos itens de dados] ...
[Descrição de registros] ... ].
[LINKAGE SECTION.
[Descrição dos itens de dados] ...
[Descrição de registros] ... ].
[COMMUNICATION SECTION.
{Descrição das Entradas de Comunicação.
[Descrição das Entradas de Registros] ... } ... ].
[REPORT SECTION.
{Descrição de relatórios}
{Descrição dos grupos de relatórios} ... } ... ].
PROCEDURE DIVISION. [USING identificador-1 [identificador-2] ...]
[DECLARATIVES.
{nome-da-secção SECTION. USE SENTENCE.
{nome-de-parágrafo. {sentença} ... } ... } ...
END DECLARATIVES.]
{nome-da-secção SECTION [prioridade] - ]
{nome-de-parágrafo. {sentença} ... } ... } ...
Sintaxe da Linguagem

A declaração de variáveis em Cobol tem que atender algumas regras de sintaxe


tais quais :
· Elas têm que ter no mínimo um e Máximo de 30 caracteres.
· Devem conter pelo menos um caracter alfabético e não podem começar ou
terminar com hífen.
· Devem ser utilizadas combinações de “A” a “Z” , “0” a “9” e bifem.

Símbolos utilizados em Cobol:

espaço,
“+” mais
“-“ menos
“*” multiplicação
“/” divisão
“=” igual
“$”
“.” Ponto
“,” virgula
“;” ponto e virgula
“““ aspas
“‘“ apostrofo
“(“
“)”
“<”
“>”
“:” dois pontos

Exemplos :
PagamentoTotal, Cliente-Contas.
Existem três tipos básicos de dados utilizados na Linguagem Cobol que são os
seguintes
1. Numérico ( sinalizado ou não, com decimais ou inteiros)
2. Alfanumérico
3. Constantes Figurativas

Obs : Ao contrario de outras linguagens de programação a linguagem Cobol não


permite a utilização de constantes definidas pelo usuário

No Cobol, as operações nas expressões aritméticas obedecem a seguinte precedência:


1. Parênteses
2. Operadores Unários ”+” e “-“
3. Exponenciação(“**”)
4. Multiplicação e Divisão(“*” e “/”)
5. Adição e Subtracção (“+” e “-“)
As expressões relacionais utilizam os seguintes operadores:
· Maior que (“>” ou greater than)
· Menor que (“<” ou less than)
· Igualdade (“=” ou Equal to)
· Diferença (“<>” ou Unequal to)
· Maior ou Igual (“>=” ou Greater than or Equal to)
· Menor ou igual (“<=” ou Less than or Equal to)
Há ainda operadores Lógicos :
· E lógico (AND)
· Ou lógico (OR)
· Negação (NOT)
Sequência

“IF -THEN–ELSE” e ” IF – THEN”

O comando IF do Cobol é uma implementação da estrutura de selecção da


Programação Estruturada. Vejamos um exemplo dessa estrutura a seguir:

IF condição
THEN
Comando-1
ELSE
Comando-2
Obs: Neste contexto “Comando” pode ser entendido como conjunto de comandos.
A estrutura IF-THEN, que é o caso particular de um IF-THEN-ELSE com a
parte ELSE nula, tem a seguinte forma em Cobol Estruturado:

IF condição
THEN
Comando
ELSE
NEXT SETENCE

A clausula ELSE NEXT SETENCE poderá ser omitida se ela preceder


imediatamente o ponto terminal da sentença.
A clausula THEN é um palavra opcional em algumas versões do Cobol, más não
existe em outras. Neste ultimo caso recomenda-se o uso da cláusula como um
comentário, apenas para efeito de consistência com a formatação do esquema na
programação estruturada e para boa documentação.
Um grande problema da linguagem Cobol, no que diz respeito ao seu emprego
em Programação Estruturada, é o aninhamento. Ao aninharmos dois IF´s, devemos
cuidar para que o caminho entre a saída do IF interno e a do IF externo não tenha
nenhum comando. Isto se deve às características de pontuação do Cobol, que não
permitem ninho de sentenças.
“CASE”

A estrutura Case não existe no Cobol. Sua implementação pode ser feita através
do comando GO TO DEPENDING ON. Assim, o trecho de programa

Case identificador
1: comando-1
2: comando-2
.
.
.
n: comando-n

é codificado em Cobol por :

GO TO parágrafo-1, parágrafo-2, . . . , parágrafo-n DEPENDING ON i identificador.


parágrafo-erro
Comando
GO TO parágrafo-fim.
parágrafo-1
comando-1
GO TO parágrafo-fim.
parágrafo-2
comando-2
GO TO parágrafo-fim.
.................
.................
parágrafo-n
comandp-n.
parágrafo-fim.EXIT.
O parágrafo erro é uma procedure que resolve o caso em que o “identificador”
não assume nenhum valor de 1 até n. Quando isto ocorre, o comando GO TO
DEPENDING ON é ignorado e o parágrafo-erro deve prever as providencias para esta
eventualidade.

“DO-WHILE”

A estrutura de comando DO-While também não existe em Cobol em sua forma


pura como ocorre em Pascal, Algol. Todavia, uma pequena adaptação ----------------ao
comando PERFORM UNTIL tende a resolver o problema, se bem que não é de forma
ideal. A sintaxe deste comando seria a seguinte:

PERFORM parágrafo-a [THRU parágrafo-b] UNTIL condição.

Ele causa a execução repetida dos comandos entre parágrafo-a e parágrafo-b


Até que a condição seja satisfeita. O processamento então continua a partir do comando
seguinte ao PERFORM.
A implementação da estrutura:

do while condição
comando
do

é feita então por:


PERFROM parágrafo-a THRU parágrafo-b
UNTIL NOT condição.
………….
………….
paragrafo-a.
comando.
paragrafo-b.
REPEAT-UNTIL

Esta estrutura de controle também não existe em Cobol na sua forma definida
pela Programação Estruturada. As características diferenciadas desse esquema de
repetição em relação ao DO-WHILE são:
1. a saída do fluxo de controle da estrutura determinada pela verificação da
condição (e não pela negação como ocorre no DO-WHILE);
2. a execução, pelo menos uma vez, dos comandos constituintes da estrutura,
causada pela disposição do teste após estes comandos.
Evidentemente, estas duas características devem ser mantidas rigorosamente na
implementação desta estrutura em Cobol. Assim, uma boa implementação para
repeat
comando
until condição

é a seguinte:
PERFORM parágrafo-a THRU parágrafo-b
PERFORM parágrafo-a THRU parágrafo-b UNTIL condição.
.................
................
parágrafo-ª
comando.
parágrafo-b.

Toda variável utilizada num programa Cobol deve ter sua descrição na “Data
Division” (Divisão de Dados).
As variáveis definidas na linguagem Cobol não sofrem regras rigorosas tal qual
outras linguagens , por exemplo , um tipo numérico pode assumir valores diferentes que
não numéricos.

As variáveis definidas na linguagem Cobol não sofrem regras rigorosas tal qual outras
linguagens , por exemplo , um tipo numérico pode assumir valores diferentes que não
numéricos.
Código Fonte

Exemplo:

001 010 IDENTIFICATION DIVISION.


001 020 PROGRAM-ID. TABSORT.
001 030 AUTHOR. ALEX BASTOS.
001 040 INSTALLATION. RDC-DIV USUARIOS.
001 050 DATE-WRITEN. 18/12/72.
001 060 DATE-COMPILED. 20/12/72.
001 070 REMARKS. Este programa grava arquivo sequencial em ordem
crescente e classifica-o após em ordem decrescente.
001 100 ENVIRONMENT DIVISION.
001 110 CONFIGURATION SECTION.
001 120 SOURCE-COMPUTER. IBM-370-165.
001 130 OBJECT-COMPUTER. IBM-370-165.
001 140 INPUT-OUTPUT SECTION
001 150 FILE-CONTROL.
001 160 SELECT ARQUIVO ASSIGN TO DA-S-DISCO.
001 170 SELECT TRABALHO ASSIGN TO DA-S-SORTWK01.
001 180 DATA DIVISION.
001 190 FILE SECTION.
001 200 FD ARQUIVO LABEL RECORDS ARE STANDARD
002 010 DATA RECORD IS ENTRADA.
002 020 01 ENTRADA.
002 030 02 X PIC 99.
002 040 02 Y PIC X(10).
002 050 02 FILLER PIC X(20).
002 060 SD TRABALHO LABEL RECORDS ARE STANDARD
002 070 DATA RECORD IS TRAB.
002 080 01 TRAB.
002 090 02 Z PIC 99.
002 100 02 K PIC X(10).
002 110 02 FILLER PIC X(20).
002 120 WORKING-STORAGE SECTION.
002 130 77 I PIC 99 VALUE ZEROS.
002 140 PROCEDURE DIVISION.
002 150 OPEN OUTPUT ARQUIVO.
002 160 MOVE 'TESTE-SORT' TO Y.
002 170 GRAVACAO.
002 180 MOVE I TO X.
002 190 ADD 1 TO I.
002 200 WRITE ENTRADA.
003 010 IF I 100 GO TO GRAVACAO.
003 020 SORT TRABALHO DESCENDING Z USING
003 030 ARQUIVO GIVING ARQUIVO.
003 040 OPEN INPUT ARQUIVO.
003 050 GRAVA.
003 060 READ ARQUIVO AT END GO TO FIN.
003 070 DISPLAY X' Y.
003 080 GO TO GRAVA.
003 090 FIN.
003 100 CLOSE ARQ.
003 110 STOP RUN.