Manual Cobol

20
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.

Transcript of Manual Cobol

Page 1: Manual Cobol

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

Page 2: Manual Cobol

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.

Page 3: Manual Cobol

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 }]

Page 4: Manual Cobol

{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

Page 5: Manual Cobol

  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

Page 6: Manual Cobol

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.

Page 7: Manual Cobol

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} ... } ... } ...

 

Page 8: Manual Cobol

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

Page 9: Manual Cobol

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

Page 10: Manual Cobol

 

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.

 

Page 11: Manual Cobol

“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.

 

Page 12: Manual Cobol

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.

 

Page 13: Manual Cobol

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.

Page 14: Manual Cobol

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).

Page 15: Manual Cobol

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.