















































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
material sobre cobol
Tipologia: Notas de estudo
1 / 55
Esta página não é visível na pré-visualização
Não perca as partes importantes!
















































Indice
1.- Introdução 2.- Formato do Fonte Cobol 2.1 Área de numeração seqüencial 2.2 Área de indicação 2.3 Área A 2.4 Área B
3. Estrutura de um Programa Cobol. 3.1 IDENTIFICATION DIVISION 3.2 ENVIRONMENT DIVISION 3.2.1 CONFIGURATION SECTION 3.2.2 INPUT-OUTPUT SECTION 3.3 DATA DIVISION 3.3.1 Especificação dos dados 3.3.1.1 Nível 3.3.1.2 Nome do dado 3.3.1.3 Formato do dado 3.3.1.4 Valor inicial 3.3.2 Estrutura da DATA DIVISION 3.3.2.1 FILE SECTION 3.3.2.2 WORKING-STORAGE SECTION 3.4 PROCEDURE DIVISION 3.4.1 Movimentação de dados 3.4.2 Cálculos aritméticos 3.4.2.1 Adição 3.4.2.2 Subtração 3.4.2.3 Multiplicação 3.4.2.4 Divisão 3.4.2.5 Resolução de fórmulas 3.4.3 Comandos condicionais 3.4.3.1 Formato dos comandos condicionais 3.4.3.2 NEXT SENTENCE. **3.4.3.3 Condições concatenadas 3.4.3.4 Condições compostas 3.4.4 Alteração do fluxo do programa 3.4.4.1 GO TO 3.4.4.2 PERFORM
4.4 Fechamento de arquivos
4.5 Entrada e Saída de baixo volume
**5. Encerramento do programa
6.1 Sinal de campos numéricos.
6.2 Formatos binários
6.3 Cláusula USAGE
6.3.1 USAGE DISPLAY.
6.3.2 USAGE COMP
6.3.3 USAGE COMP-.
6.4 Tabelas
6.4.1 Níveis das tabelas
7. Impressão
7.1 Máscaras de edição
7.2 Supressão de zeros
7.3 Vírgula separadora das decimais
7.4 Outras máscaras de edição
7.5 BLANK WHEN ZERO
8 Ordenando as informações
8.1 Sort intrínseco
8.2 Sort extrínseco
9 Arquivos de acesso aleatório (VSAM)
9.1 INPUT-OUTPUT SECTION para VSAM
9.2 PROCEDURE DIVISION para VSAM
9.2.1 Abertura do arquivo.
9.2.2 READ
9.2.3 READ NEXT
9.2.4 READ PREVIOUS
9.2.5 START
9.2.6 WRITE.
9.2.7 REWRITE
9.2.8 DELETE
9.2.9 Fechamento de arquivos
10. Comunicação entre programas
11 Comandos Diversos
11.1 EVALUATE
11.2 REDEFINES
11.3 INSPECT
11.4 STRING
11.5 UNSTRING
11.6 TABELAS INDEXADAS
2. Formato do Fonte Cobol
Todo programa escrito na linguagem Cobol possui algumas regras a serem seguidas. Uma destas regras se refere ao formato das linhas de comando (instruções) dentro do
seu editor de fonte. Uma linha de comando Cobol pode ter até 80 caracteres, conforme o formato abaixo:
Seqüência I Área A Área B Comentário 1 6 7 8 11 12 72 73 80
Colunas de 1 a 6: Área de numeração seqüencial Coluna 7: Área de indicação Colunas de 8 a 11: Área A Colunas de 12 a 72: Área B Colunas de 73 a 80: Comentários
2.1 Área de numeração seqüencial
Normalmente consiste em seis dígitos em ordem crescente que normalmente são utilizados para numerar as linhas do fonte. Segundo as regras no ANS85 pode-se também colocar comentários nesta área. Além disso, podemos colocar um asterisco na coluna 1 (um) ou qualquer outro caractere com valor ASCII menor do que 20 (ESPAÇO), fazendo com que a linha inteira seja considerada como um comentário. Pode-se também deixar esta área em branco.
2.2 Área de indicação
Um hífen (-) nesta posição indica que existe uma continuação de um texto que foi iniciado na linha anterior.
Um asterisco (*) nesta posição indica que toda a linha deve ser tratada como um comentário.
Uma barra (/) nesta posição, além de marcar a linha como comentário fará com que ao se imprimir este fonte, haverá um salto de página após esta linha.
2.3 Área A
Posição a partir do qual se escreve nome de parágrafos.
2.4 Área B
Posição a partir da qual se escrevem as instruções Cobol.
Veja o exemplo de código fonte a seguir:
Num. I A AREA B COMEN.
3. Estrutura de um Programa Cobol.
De maneira semelhante a um livro com seus capítulos, parágrafos e itens, um programa Cobol é formado por uma hierarquia de Divisions, Sections, parágrafos e instruções. Como regra de sintaxe, toda declaração de Division, Section, parágrafo ou instrução deve ser terminado por ponto final (.).
O código Cobol possui quatro divisões que devem ser utilizadas nesta ordem:
IDENTIFICATION DIVISION.
ENVIRONMENT DIVISION.
DATA DIVISION.
Como foi explicado no item anterior (Formato da fonte) a declaração das DIVISION deve se iniciar na área A do texto (coluna 8).
PROCEDURE DIVISION.
SOURCE-COMPUTER identifica o computador onde foi confeccionado o programa (opcional).
OBJECT-COMPUTER identifica o computador do ambiente de produção (opcional).
SPECIAL-NAMES tem comandos pré-definidos em Cobol, para especificar alfabeto, moeda, ou separador de decimal (vírgula ou ponto), mas todos os comandos são opcionais. O separador de decimais é usado mais freqüentemente, indicando que vai se usar a virgula para separar decimais, e tem o seguinte formato: SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
Esta seção destina-se a configuração dos arquivos que o programa usa. Ela possui dois parágrafos: FILE-CONTROL e I-O-CONTROL.
FILE-CONTROL : neste parágrafo devemos especificar cada um dos arquivos que o programa irá acessar.
I-O-CONTROL : Contem vários parágrafos opcionais para especificar opções de uso de fitas magnéticas no Mainframe. Como este dispositivo caiu em desuso, este parágrafo não é mais usado atualmente.
No parágrafo FILE-CONTROL, usado para definir os arquivos usados no programa, usamos uma instrução SELECT para cada arquivo descrito. O formato da instrução SELECT é o seguinte:
SELECT nome-do-arquivo ASSIGN TO dispositivo-do-computador****.
No exemplo abaixo mostramos uma ENVIRONMENT DIVISION de um programa que irá acessar um arquivo CLIENTES.
Neste exemplo escolhemos como nome-do-arquivo dentro da instrução SELECT a
palavra CLIENTES. O programador pode usar qualquer palavra com até 30 caracteres como nome-de arquivo , mas uma vez definido um nome-de-arquivo na instrução
SELECT, deverá usar sempre este nome no programa quando se referir a este arquivo. O formato da cláusula dispositivo-do-computador varia conforme o computador (micro,
mainframe, etc), mas no caso do mainframe usa-se o formato mostrado no exemplo, composto de 3 segmentos separados por hífen:
Tipo de dispositivo –
UR - para dispositivos de registro fixo (impressoras, cartão). UT - para dispositivos de registro variável (fitas). DA - para dispositivos de acesso aleatório (discos).
Modo de acesso –
S – Sequencial. D – Direto (Randômico). I – Indexado.
Nome externo do arquivo – Nome pelo qual o operador do computador reconhece o arquivo. O nome externo geralmente está associado aos comandos JCL na execução do programa.
Para arquivos abertos para leitura (veja OPEN INPUT e OPEN I-O mais adiante), pode- se especificar a clausula OPTIONAL no SELECT. Com esta clausula, se o arquivo a abrir não existir, ele é automaticamente criado vasio. A sintaxe do SELECT fica então:
SELECT OPTIONAL nome-do-arquivo ASSIGN TO dispositivo.
A DATA DIVISION é a divisão do programa onde são definidos os dados, incluindo todas as variáveis e constantes necessárias, assim como o conteúdo dos registros dos arquivos. A definição de um dado em Cobol é feito com o seguinte formato:
Nível nome-do-dado formato valor-inicial.
3.3.1.1 Nível.
Pode-se abreviar esta repetição colocando o número de repetições entre parenteses:
77 QUANT-PROD PIC 9(5).
Quando um item numérico tiver casas decimais, não se carrega na memória do computador o separador decimal (vírgula). O item VALOR-PROD, que por exemplo tem um valor de 2,35 fica na memória como 235. Mas o programa Cobol precisa saber em que posição estaria a vírgula que desapareceu (vírgula implícita). A vírgula implícita é definida no formato pela letra V, como abaixo:
Ou
Em um grupo de itens contidos em uma hierárquia (níveis de 01 a 49) só podem ter a cláusula PIC os itens no nível mais baixo da hierarquia (itens elementares).
Ex:
1 FUNC. 3 NASCIMENTO. 05 MÊS PIC 99. 05 ANO PIC 99. 03 ENDERECO. 05 RUA PIC X(20). 05 NUMERO PIC 9999.
A linguagem Cobol suporta itens numéricos com até 18 algarismos, e itens alfanuméricos até 32768 caracteres (dependendo do sistema operacional). Existem ainda formatos especiais da PIC para itens a serem impressos ou exibidos na tela, que serão vistos mais adiante.
3.3.1.4 Valor-inicial.
Esta cláusula é opcional em Cobol. Seu objetivo é definir um valor para o item quando
o programa se inicia. Se ela for omitida, o item correspondente terá valores imprevisíveis. No caso de um item que irá conter uma totalização, por exemplo, é
conveniente que ele comece com o valor zero. O valor-inicial é definido em Cobol pelo formato:
VALUE literal.
Em Cobol existem 2 tipos de literal: numérico e alfa-numérico.
Os literais numéricos são escritos colocando-se diretamente o valor na instrução.
Ex.: 77 IDADE-MINIMA PIC 99 VALUE 18.
Os literais alfa-numéricos devem ser colocados entre aspas. Ex: 77 NOME-RUA PIC X(20) VALUE “RUA FIDALGA”.
Os literais alfa-numéricos em Cobol podem ter no máximo 120 caracteres.
Pode-se usar ainda como valor-inicial as CONSTANTES FIGURATIVAS, como por exemplo ZEROS, SPACES, ou LOW-VALUES. A última delas (LOW-VALUES) indica que este item na memória deve ter os seus bytes com todos os bits desligados (não é espaços).
3.3.2 Estrutura da DATA DIVISION.
A DATA DIVISION é composta habitualmente por duas Sections
FILE SECTION. WORKING-STORAGE SECTION.
E opcionalmente por outras Sections, como
REPORT SECTION.
Usada em geração de relatórios com o módulo avançado de Report-Writer, que não será visto neste curso.
LINKAGE SECION.
Usada para estabelecer comunicação entre dois programas, e será visto mais adiante.
3.3.2.1 FILE SECTION.
A FILE SECTION é a Section usada para detalhar o conteúdo dos registros dos
arquivos que o programa irá ler/gravar.
Vimos anteriormente, na INPUT-OUTPUT SECTION (ENVIRONMENT DIVISION), que para cada arquivo a ser tratado no programa havia uma instrução SELECT especificando e definindo um nome para o arquivo. Na FILE SECTION precisamos
necessários, e que serão discutidos um a um nos paragráfos seguintes. As instruções
de um programa Cobol podem ser reunidas em parágrafos, e estes em seções, definidas pelo programador com o fim de tornar o programa mais facil de ser entendido.
Por exemplo, como sugerido no curso de lógica de programação, os programas pederiam ter 3 seções:
ENTRADA SECTION. PROCESSAMENTO SECTION. SAIDA SECTION.
3.4.1 Movimentação de dados.
Para se copiar dados de uma variável para outras em Cobol usa-se a instrução MOVE que tem o seguinte formato:
MOVE variavel-1 TO variavel-2 variavel- ...
As restrições no uso desta instrução são:
3.4.2 Cálculos aritméticos
As instruções para efetuar cálculos aritméticos em Cobol são:
ADD, SUBTRACT, MULTIPLY, DIVIDE e COMPUTE.
Quando os cáculos em Cobol envolvem números decimais, é preciso observar que o Cobol adapta o resultado ao formato que foi definido para a variável de resultado, ocasionando truncamentos ou surgimento de zeros adicionais na parte decimal do
resultado. Por exemplo, se tivermos na WORKING-STORAGE a definição destas 3
variáveis:
Se somarmos QUANT e ENTRADA e colocarmos o resultado em SALDO, SALDO ficará com 47, pois esta variável não está prevendo decimais.
3.4.2.1 Adição.
Utilizamos a instrução ADD para somar valores. Há dois formatos básicos da instrução ADD:
Formato 1:
ADD valor-1 valor-2 ... TO acum-1 acum ....
Neste formato, a soma das variaveis valor-1, valor-2 etc é totalizada aos valores já existentes em acum-1 acum-2 etc. Note que valor-1, valor-2 ... podem ser literais numéricas. Acum-1, acum-2 ... só podem ser variáveis pois devem receber o valor acumulado. Ex.: 77 VAL-1 PIC 99 VALUE 5. 77 VAL-2 PIC 99 VALUE 10. 77 VAL-3 PIC 99 VALUE 12. A instrução ADD VAL-1 VAL-2 TO VAL- Colocará o valor 30 em VAL-3.
Formato 2:
ADD valor-1 valor-2 ... GIVING total.
Neste formato a soma dos valores valor-1 valor-2 não é acumulado na variável total. A
variável total é zerada antes de receber a soma, perdendo assim o valor acumulado no passado. Usando as variáveis do exemplo do formato 1, a instrução: ADD VAL-1 VAL-2 GIVING VAL-3. Coloca o valor 15 em VAL-3.
Existem dois parâmetros opcionais que podem ser adicionados a qualquer dos formatos acima:
Usado somente quando os operandos não forem números inteiros.
Formato 1:
MULTIPLY valor-1 BY valor-2.
Este formato multiplica a variável valor-1 pela variavel valor-2, e o resultado fica em
valor-2. Aqui é preciso atenção no detalhe do resultado, que foge um pouco à intuição comum. Na multiplicação e divisão, o resultado fica sempre no último operando.
Assim, se quizermos multiplicar a variavel QUANT por 3 devemos escrever:
MULTIPLY 3 BY QUANT.
Como consequência da regra do resultado, o último operando da multiplicação deve ser sempre uma variável para poder receber o resultado, e portanto é errado escrever: MULTIPLY QUANT BY 3 (erro).
Formato 2:
MULTIPLY valor-1 BY valor-2 GIVING valor-3.
Neste formato o resultado da multiplicação é colocado em valor-3. Valor-1 e valor-2 não são alterados por esta instrução.
Parâmetros adicionais (opcionais):
ON SIZE ERROR instrução.
Estes parâmetros tem funcionamento idêntico aos da instrução ADD.
3.4.2.4 Divisão.
A instrução de divisão em Cobol é DIVIDE. Há 3 formatos para esta instrução:
Formato 1:
DIVIDE valor-1 INTO valor-2.
Este formato divide a variável valor-2 pela variável valor-1, e o resultado fica em valor-2. Este formato também foge um à intuição comum. Na multiplicação e divisão, o resultado fica sempre no último operando. Assim, se quizermos dividir a variável QUANT por 3 devemos escrever:
Como consequência da regra do resultado, o último operando da divisão deve ser sempre uma variavel, para poder receber o resultado, e é errado escrever: DIVIDE QUANT BY 3 (erro)
Formato 2:
DIVIDE valor-1 INTO valor-2 GIVING valor-3.
Neste formato o resultado da divisão de valor-2 por valor-1 é colocado em valor-3.
Valor-1 e valor-2 não são alterados por esta instrução.
Formato 3: DIVIDE valor-1 BY valor-2 GIVING valor-3.
Este formato é mais semelhante à sintaxe em português. Neste formato o resultado da divisão de valor-1 por valor-2 é colocado em valor-3. Valor-1 e valor-2 não são alterados por esta instrução.
Parâmetros adicionais (opcionais):
ROUNDED ON SIZE ERROR instrução.
Estes parâmetros tem funcionamento idêntico aos da instrução ADD.
REMAINDER valor-
Este parâmetro só pode ser usado com os formatos 2 e 3 (GIVING) , e quando os operandos envolvidos forem números inteiros. Sua função é carregar o resto da divisão em valor-4. A sintaxe completa deste parâmetro junto ao formato 3 seria, por exemplo: DIVIDE valor-1 BY valor-2 GIVING valor-3 REMAINDER valor-4.
3.4.2.5 Resolução de fórmulas.
A instrução COMPUTE é utilizada em Cobol para resolver fórmulas complexas. Seu formato é: COMPUTE valor = formula. Formula pode ser qualquer expressão aritmética contendo os seguintes operandos:
Por exemplo, a fórmula A = B² + C² ficará em Cobol:
IF condicao- Instruções-1. Instruções- ...
Neste formato, se a condição condicao-1 for satisfeita, todas as instruções que vierem
em seguida (instruções-1) e (instruções-2) serão executadas. Se condicao-1 não for verdadeira o programa não executa as instruções dependentes de condição-
(instruções-1), e retoma a execução nas instruções após o ponto final (instruções-2). Com respeito a distribuição do texto do fonte, é necessário salientar os seguintes aspectos:
Formato 2: IF condicao- Instruções- ELSE Instruções-2. Instruções-3.....
Neste formato, as instruções instruções-1 sómente são executadas quando a condição
condicao-1 for satisfeita. As instruções instruções-2 sómente serão executadas quando a condição condição-1 não for satisteita (falsa). O ponto final marca o fim das instruções
condicionais. As instruções após o ponto final (instruções-3) são sempre executadas independente de condição-1. Ex.:
Se neste exemplo colocarmos um ponto final após o primeiro MOVE: IF VALOR > 1000 MOVE ‘VALOR ACIMA DO LIMITE.’ TO MENSAGEM. ELSE MOVE ‘VALOR ABAIXO DO LIMITE.’ TO MENSAGEM. MOVE MENSAGEM TO SAIDA. A instrução ELSE ficará fora da influencia do IF, e o compilador não conseguirá compilar o programa (erro de sintaxe.).
O comando NEXT SENTENCE pode ser usado nos comandos associados a comandos condicionais quando não há providencias a tomar, como no exemplo: IF VALOR > 10 NEXT SENTENCE ELSE ADD 10 TO VALOR. Este comando direciona o programa para a primeira instrução apos o ponto final.
3.4.3.3 Condições concatenadas.
As condições concatenadas acontecem quando no lugar das instruções subordinadas a um teste de condição coloca-se um segundo teste de condição, originando assim uma cadeia de testes subordinados um ao outro. Estas cadeias de testes são teoricamente indefinidas, porem o aumento de testes concatenados aumenta a complexidade da lógica. Nas condições concatenadas é importante observar o uso da identação (recuos no fonte), para aumentar sua clareza. No exemplo abaixo, mostramos condições concatenadas:
IF DEBITO GREATER CREDITO IF ANO NOT LESS 2004 MOVE “DEBITO OK” TO MENSAGEM ELSE MOVE “CONTA EM ATRASO” TO MENSAGEM