cobol-1-trabalho [CLP - BCC/UFPEL]
Trace: • cobol-1-trabalho
Variáveis e níveis
Grupo: William Dalmorra de Souza, Thainan Bystronski Remboski
Tudo sobre a Linguagem de Programação Cobol.
Forte e estática
Iperativo, Orientado a Objetos (2002)
COBOL é a sigla de COmmon Business Oriented Language (Linguagem Orientada aos Negócios), que define seu objetivo principal em sistemas comerciais, financeiros e administrativos para empresas e governos.
Ao contrário do que muita gente pensa, o COBOL avançou e se atualizou, de forma que hoje, é uma linguagem bem mais segura e moderna. COBOL é ideal para a solução de problemas de negócios.
O COBOL foi criado em 1959 durante o CODASYL (Conference on Data Systems Language), um dos três comitês propostos numa reunião no Pentágono em Maio de 1959, organizado por Charles Phillips do Departamento de Defesa dos Estados Unidos. O propósito da reunião era discutir a necessidade de uma linguagem geral, direcionada para serviços dentro de dados comerciais, e a possibilidade de criar desta maneira uma linguagem. A comissão começou a analisar as questões discutidas na reunião e uma subcomissão foi, diretamente, incumbida da tarefa de definir uma linguagem adaptada para administrar processamento de dados.
Em 1960, foi publicada a gramática, usualmente chamada Relatório COBOL-60. Esta linguagem continha inúmeros erros e logo foi revisada, em 1961, e o Relatório COBOL-61 foi publicado, formando a base para os mais comuns compiladores COBOL.
A comissão continuou os trabalho, levando a uma versão ampliada do COBOL: "COBOL-61 - Versão Estendida", que foi publicada em 1962.
Formalmente, isto significava que um número de novos elementos foi adicionado ao Relatório anterior. Um relatório completamente novo foi publicado no fim do ano de 1965, e foi definido como COBOL-65. Ele continha praticamente todos os elementos de "Versão 4 Estendida", porém numa forma totalmente revisada, junto com alguns elementos novos, projetados principalmente por causa do uso expressivo das memórias de acesso aleatório (RAM).
Embora o COBOL tenha sido desenvolvido e mantido pela CODASYL, ele foi também estabelecido como uma Linguagem Padrão pelo Instituto Americano de Padrões Nacionais (ANSI).
A última versão lançada foi a de 2002, que passou a oferecer suporte para a programação orientada a objetos (a linguagem até então não a possuia), e muitas características das linguagens de programação mais modernas.
Código de fácil aprendizado, pois utiliza verbos da língua inglesa para identificar seus comandos;
Excelente capacidade de auto documentação;
Métodos práticos para o gerenciamento de arquivos e vários tipos de dados, cujo formato é especificado pela cláusula PICTURE;
Como a maioria das outras línguas da época, não define variáveis locais de funções recursivas;
Muitas palavras reservadas;
É excelente para manipulação de arquivos;
Todas as linhas de código são finalizadas pelo ponto final ".";
Os principais compiladores são o OpenCOBOL e o TinyCOBOL
Em 2002 foi lançada uma nova versão chamada COBOL 2002, esta possui suporte a programação orientada a objetos e outras características das linguagens modernas.
Todo programa COBOL é composto por divisões separadas, todas escritas em inglês, onde cada uma delas têm funções específicas.São elas:
A IDENTIFICATION DIVISION serve para identificar o programa no computador e também proporciona informações documentais que são de suma importância para pessoas que não entendem nada de processamento e queiram analisar superficialmente o programa.
Composta basicamente por:
IDENTIFICATION DIVISION ou ID DIVISION.
PROGRAM-ID. Onde deverá ser informado o nome do programa a ser feito.
AUTHOR. (opcional) Onde poderá ser indicado o nome do autor do programa .
INSTALLATION. (opcional) Onde poderá conter o nome da empresa ou local de geração do programa.
DATE-WRITTEN. (opcional) Onde poderá conter a data em que o programa foi codificado.
DATE-COMPILED. (opcional) Onde poderá conter a data em que o programa foi compilado.
SECURITY. (opcional) Onde poderá conter os comentários sobre a segurança do programa e/ou seus arquivos.
REMARKS. (opcional) Onde poderá conter os comentários adicionais sobre o programa.
A ENVIRONMENT DIVISION serve para fazer ligação com o ambiente operacional onde o programa será executado. Faz a interface dos arquivos lógicos uqe o programa usará com os arquivos físicos.
Ela fica estruturada desta forma:
CONFIGURATION SECTION. (destina-se a configuração do ambiente)
SOURCE-COMPUTER. (identifica o computador onde foi confeccionado o programa)
OBJECT-COMPUTER. (identifica o computador do ambiente de produção)
SPECIAL-NAMES. (especifica o sinal monetário, escolhe o tipo de ponto decimal, específica caracteres simbólicos e possibilitar adaptar o programa para se comunicar com programas de outras linguagens.)
INPUT-OUTPUT SECTION. (Esta seção destina-se a configuração do ambiente de Leitura e Gravação)
FILE-CONTROL. (destina-se a especificação dos arquivos que o programa irá acessar.)
I-O CONTROL. (descontinuada nas versões mais atuais do compilador, valendo apenas para os ambientes de Mainframe.)
A DATA DIVISION é voltada única e exclusivamente à definição de estruturas de registros, variáveis e constantes do programa, ou seja, uma área de alocação de memória para todo o espaço necessário ao seu programa.
Fica assim estruturada:
FILE SECTION. (Define todos os arquivos de entrada e saída)
WORKING-STORAGE SECTION. (Área para campos que não sejam parte da entrada e saída mas que serão exigidos no transcorrer do processamento. Incluem constantes, indicadores e áreas de trabalho.)
LOCAL-STORAGE SECTION. (Nesta seção procure definir todos os INCLUDE das tabelas (SQLCA, DCLGEN's) e seus CURSORES, faça um teste e veja se seu processamento não vai ficar mais rápido)
LINKAGE-STORAGE SECTION. (Descreve os parâmetros formais de entrada e de retorno de dados)
COMMUNICATION SECTION. (Descreve as Entradas de Comunicação e as Entradas de Registros)
REPORT SECTION. (Descreve os relatórios a serem gerados. A descrição de cada relatório começa com um RD (REPORT DESCRIPTION) e é seguido por um ou mais grupo de descrição dos mesmos)
SCREEN SECTION. (Descreve as telas a serem exibidas durante a execução do programa)
A PROCEDURE DIVISION é a divisão onde o desenvolvedor descreverá o algoritmo do programa.
Os principais comandos da PROCEDURE DIVISON são:
ACCEPT - Transferências de informações de um dispositivo de entrada ou de informações do sistema (por exemplo, data ou hora) para uma área de dados definidos.
ADD - Adiciona um ou mais operandos numéricos e armazena o resultado.
CALL - Transfere o controle de um programa para outro. Quando a execução do programa chamado terminar, a execução retorna para a próxima instrução do programa que efetuou a chamada.
CANCEL - Garante que toda vez que um programa é chamado, todos os valores são redefinidos antes da próxima execução.
CLOSE - Fecha um arquivo sequencial ou VSAM após a conclusão do processamento.
COMPUTE - Avalia uma expressão aritmética e armazena o resultado.
CONTINUE - É basicamente uma declaração de espaço reservado para uso quando é necessária uma declaração, mas nenhuma declaração é necessária.
DELETE - Exclui um registro de um arquivo relativo ou indexado.
DISPLAY - Envia o conteúdo do campo especificado (s) para um dispositivo de saída.
DIVIDE - Divide um valor numérico por ou outro.
ENTRY - Estabelece um ponto de entrada alternativo para o programa.
EVALUATE - Avalia uma série de condições e tem uma série de ações diferentes, dependendo do resultado.
EXIT - Fornece um ponto de saída comum para uma série de parágrafos.
EXIT PROGRAM - Termina o programa atual. Indica o fim lógico de um programa chamado.
GOBACK - Termina o programa atual.
IF - Avalia uma expressão e executa uma das duas alternativas, dependendo se a expressão é verdadeira ou falsa.
INITIALIZE - Move um valor especificado para uma área de dados. Inicializa campos conforme suas categorias, com valores predefinidos ou fornecidos.
INSPECT - Conta ou substitui caracteres em uma área de dados.
MERGE - Tem dois arquivos baseados em chaves comuns e mescla os mesmos em outro arquivo.
MOVE - Copia o conteúdo de uma área de dados para outro.
MULTIPLY - Multiplica dois valores numéricos e armazena o resultado.
OPEN - Abrir um arquivo seqüencial ou VSAM para serem processados por este programa.
PERFORM - Transfere o controle para a rotina especificada e controla quantas vezes ele será executado, retornando após a execução.
READ - Ler um registro de um arquivo externo em uma área de dados.
RELEASE - Utilizado na INPUT PROCEDURE de um SORT INTERNO para passar o registro atual para o SORT.
RETURN - Utilizado na OUTPUT PROCEDURE em um SORT INTERNO ou MERGE para obter o próximo registro.
REWRITE - Atualiza o registro atual em um arquivo VSAM.
SEARCH - Procura em uma tabela de dados até que os critérios de pesquisa especificados forem encontrados.
SET - Usado para alterar os índices de tabela, os códigos de status definido como um interruptor externo, os valores conjunto de variáveis condicionais, ou definir valores para as áreas ponteiro de dados.
SORT - Classifica os registros de acordo com a chave especificada
START - Estabelece a posição dentro de um arquivo VSAM. Efetua o posicionamento de registros para posterior leitura através do comando READ.
STRING - Utilizado para concatenar várias variaveis em outra.
SUBTRACT - Subtrair o conteúdo de um valor numérico de outro e armazenar o resultado.
UNSTRING - Tem uma área de dados contíguos e se divide em vários campos de dados separadamente.
WRITE - Gravar um registro em um arquivo.
COLUNAS DESCRIÇÂO
1 a 6 Espaço em branco (será preenchido com a numeração COBOL)
7 (branco) linha de codificação
8 a 72 Instruções Cobol:
Iniciando na coluna 8 (margem A):
Divisões, seções, parágrafos, descrição de arquivo e de dados, numeração de níveis
Iniciando na coluna 12 (margem B):
Codificação dos comandos e instruções
73 a 80 Área de identificação do programa
A checagem de tipos é feita estaticamente e possui compatibilidade de tipos estrutural.
Os tipos existentes na linguagem cobol são:Alfabética, Numérica, Alfanumérica. A palavra reservada PIC [PICTURE] identifica o tipo e o tamanho da variável.
Representado pelo caractere "A", indica que esta variável suportará apenas caracteres alfabéticos ou espaço.
01 nome PIC A(010) value spaces.
Representado pelo caractere "9", indica que esta variável suportará apenas caracteres de 0 a 9. As variáveis numéricas suportam no máximo 18 dígitos incluindo as casas decimais.
77 numero PIC 9(006) value zeros.
Obs: Existem outros caracteres que podem ser usados na cláusula PICTURE em campos numéricos: "V": ponto decimal assumido e "S": sinal operacional.
Representado pelo caractere "X", indica que esta variável suportará todos os caracteres da tabela ASCII.
01 nome PIC X(010) value spaces.
Variáveis em um programa são abstrações de células de memória.
Regras de formação:
O tamanho máximo é de 30 caracteres;
Não pode conter espaços ou brancos;
Pode conter letras, números ou hífens. (Sendo que o hífen não pode iniciar ou terminar);
Não pode ser uma palavra reservada COBOL;
Não pode conter outros caracteres senão A-Z, 0-9 e o hífen (-); e
Deve conter no mínimo 1 caractere alfabético.
Em COBOL pode-se determinar níveis a variáveis, onde esses níveis funcionam da seguinte forma:
Estes grupos possuem números de níveis que identificam seu nível dentro do grupo. Estes níveis variam de 1 a 49, quanto menor o número maior é o seu nível, por exemplo:
01 Endereco.
10 Texto pic x(030).
10 Numero pic 9(006).
Isto cria uma variável chamada Endereço que aloca 36 bytes de memória composta por duas referências, Texto que acessa os primeiros trinta bytes de Endereço que irão possuir um conteúdo alfanumérico (x) e Numero com seis bytes numéricos.
Existem ainda os níveis especiais 66, 77, 78 e 88:
O nível 66 é utilizado para renomear outras variáveis do programa, isto é útil quando queremos por exemplo utilizar apenas o mês e o dia de uma data:
01 DataSistema.
10 AnoSistema pic 9(004) value zeros.
10 MesSistema pic 9(002) value zeros.
10 DiaSistema pic 9(002) value zeros.
66 MesDiaSistema renames MesSistema thru DiaSistema.
Desta forma acessando a variável MesDiaSistema estaremos enxergando o conteúdo das variáveis MesSistema e DiaSistema.
O nível 77 é utilizado para declarar variáveis que não irão possuir sub-itens, este nível é utilizado da mesma forma que o nível 01.
O nível 78 é utilizado para declarar constantes, ou seja, são referências que não podem ter o seu conteúdo alterado no programa. Nesta declaração é informado o nome da constante e seu valor.
O nível 88 Identifica qualquer entrada de nome de condição que está associada a um valor particular de uma variável condicional.
Cobol implementa os conceitos de variáveis persistentes (arquivos), transientes e compostas.
Em Cobol existe uma tabela de ocorrência que pode ser denominada de array. Onde esta tabela é estática, pois índices são fixados em tempo de compilação. O conjunto dos índices faz parte do tipo.