Domingo, Dezembro 15, 2019

O conjunto de caracteres do COBOL, é formado pelas letras do alfabeto, dígitos e caráteres especiais.

 

  caráter significado
0,1,2,...,9 dígitos
A,B,C,D, ...,Z letras maiúsculas
a,b,c,d, ...,z letras minusculas
  espaço
+ sinal de mais
- sinal de menos ou hífen
*          sinal de multiplicação ou asterisco
/ sinal de divisão ou barra  
= sinal de igual     
$ simbolo monetário
. ponto ou ponto decimal
, virgula ou ponto decimal
; ponto-e-virgula
" aspas
( parêntesis à esquerda
) parêntesis à direita
< símbolo "maior que"
> símbolo "menor que"
: dois-pontos
& "e" comercial

 

Caracteres usados em Expressões Aritméticas:

caractere significado
** exponenciação
* multiplicação
/ divisão
+ adição
- subtração

 

Caracteres usados em Condições de Relação:

caractere significado
> maior que
< menos que
= igual a
>= maior que ou igual a
<= menos que ou igual a
<> não igual a (diferente)

PROCEDURE DIVISION: Contém o código que irá manipular os dados descritos na DATA DIVISION. É nesta divisão que o desenvolvedor descreverá a lógica do programa. Consiste em instruções executáveis ​​usando variáveis ​​definidas na divisão de dados. Nesta divisão, nomes de parágrafo e seção são definidos pelo usuário. Deve haver pelo menos uma declaração na divisão de procedimento. A última instrução para encerrar a execução nesta divisão é STOP RUN que é usado nos programas de chamada ou EXIT PROGRAM que é usado nos programas chamados.

A estrutura da PROCEDURE DIVISION é a seguinte:

 

  • A execução começa com a primeira instrução na Divisão de Procedimentos, excluindo declarativos. As declarações são executadas na ordem em que são apresentadas para compilação, a menos que as regras da instrução ditem alguma outra ordem de execução.
  • A divisão de procedimento termina no cabeçalho END PROGRAM, antes do início do próximo programa fonte COBOL ou no final físico do programa. O fim físico do programa é a posição física em um programa de origem, após o qual não aparecem mais declarações.

 

PROCEDURE DIVISION:

Dentro da Procedure Division, um procedimento consiste em:

  • Uma seção ou um grupo de seções
  • Um parágrafo ou grupo de parágrafos.

Nota: Uma PROCEDURE COBOL não deve ser confundido com um procedimento ILE (um programa de origem ILE COBOL). Um PROCEDURE-NAME é um nome definido pelo usuário que identifica uma seção ou um parágrafo.

 

SECTION:

  • Uma SECTION é constituída por um cabeçalho de seção opcionalmente seguido por um ou mais parágrafos.
  • A seção de cabeçalho é um nome da seção seguido de: a palavra-chave SECTION, um número de segmento opcional e um período de separação. A seção de cabeçalho deve começar na Área A.
  • A SECTION-NAME é uma palavra definida pelo usuário que identifica uma seção. Se referenciado, um SECTION-NAME deve ser exclusivo dentro do programa no qual ele é definido, porque ele não pode ser qualificado.
  • Uma seção termina imediatamente antes do próximo cabeçalho da seção, ou no final da PROCEDURE-DIVISION ou, na parte declarativa, nas palavras-chave END DECLARATIVES.

 

PARAGRAPH:

  • Um PARAGRAPH (parágrafo) consiste em um nome de ponto seguido por um período de separação, opcionalmente seguido por uma ou mais sentenças.
  • Um PARAGRAPH-NAME é uma palavra definida pelo usuário que identifica um parágrafo.
  • Um nome de parágrafo, porque ele pode ser qualificado, não precisa ser exclusivo.
  • O nome do parágrafo deve começar na Área A.
  • Um parágrafo termina imediatamente antes do próximo nome de parágrafo ou cabeçalho de seção ou no final da PROCEDURE-DIVISION.
  • Na parte declarativa, um parágrafo termina imediatamente antes do próximo parágrafo, a próxima instrução USE ou as palavras-chave END DECLARATIVES.
  • Se um parágrafo de um programa estiver contido em uma seção, todos os parágrafos do programa devem estar contidos em seções.

 

SENTENCE:

  • A SENTENCE consiste em uma ou mais declarações terminados por um separador período.

 

STATEMENT:

  • A STATEMENT (declaração) é uma combinação sintaxe válida de identificadores e símbolos (literais, operadores relacionais, e assim por diante) começando com um verbo COBOL.
  • A execução começa com a primeira instrução na Divisão de Procedimentos, excluindo declarativos. As declarações são executadas na ordem em que são apresentadas para compilação, a menos que as regras da instrução ditem alguma outra ordem de execução.
  • A PROCEDURE DIVISION termina no final físico do programa; Ou seja, a posição física em um programa de origem, após o qual não aparecem mais declarações.

 

IDENTIFIER:

  • Um IDENTIFIER (identificador) é uma sintaticamente correta combinação de um nome de dados, com seus qualificadores, subscritos e modificadores de referência como exigido para unicidade de referência, que nomeia um item de dados. Em qualquer referência de PROCEDURE-DIVISION (exceto o teste de classe ou o argumento de função em uma função intrínseca de teste), o conteúdo de um IDENTIFIER deve ser compatível com a classe especificada através de sua cláusula PICTURE ou FORMAT ou os resultados são imprevisíveis.

 

Exemplo:

PROCEDURE DIVISION.
DECLARATIVES.
ERROR-IT SECTION.
    USE AFTER STANDARD ERROR PROCEDURE ON INPUT-DATA.
ERROR-ROUTINE.
    IF CHECK-IT = "30" ADD 1 TO DECLARATIVE-ERRORS.
END DECLARATIVES.
BEGIN-NON-DECLARATIVES SECTION.
100-BEGIN-IT.
    OPEN INPUT INPUT-DATA OUTPUT REPORT-OUT.
110-READ-IT.
    READ INPUT-DATA RECORD
       AT END MOVE "Y" TO EOF-SW.
    IF EOF-SW NOT = "Y" ADD 1 TO RECORDS-IN.
200-MAIN-ROUTINE.
    PERFORM PROCESS-DATA UNTIL EOF-SW = "Y".
    PERFORM FINAL-REPORT THRU FINAL-REPORT-EXIT.
    DISPLAY "TOTAL RECORDS IN = " RECORDS-IN
       UPON WORK-STATION.
    DISPLAY "DECLARATIVE ERRORS = " DECLARATIVE-ERRORS
       UPON WORK-STATION.
STOP RUN.
PROCESS-DATA.
    IF RECORD-ID = "G"
        PERFORM PROCESS-GEN-INFO
    ELSE
        IF RECORD-CODE = "C"
           PERFORM PROCESS-SALES-DATA
        ELSE
           PERFORM UNKNOWN-RECORD-TYPE.

 

DATA DIVISION: É a terceira divisão de um programa COBOL, descreve os arquivos de entrada e saída que serão usadas pelo programa. Também define as áreas de trabalho e constantes necessárias para o processamento dos dados. É compostas das seguintes seções:

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, variáveis, linhas de relatórios, áreas de trabalho, etc;
LOCAL-STORAGE SECTION Define todos os INCLUDE das tabelas (SQLCA, DCLGEN's) e seus CURSORES;
LINKAGE-STORAGE SECTION Descreve os parâmetros formais de entrada e de retorno de dados;
COMMUNICATION SECTION Descreve dados que servirão de interface entre o MCS e o programa.
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.

 

LOCAL-STORAGE SECTION:

  • Define o armazenamento que é alocado e liberado em uma base por invocação. Em cada invocação, os itens de dados definidos na LOCAL-STORAGE SECTION são realocados. Cada item de dados que possui uma cláusula VALUE é inicializado para o valor especificado nessa cláusula.
  • Para programas aninhados, os itens de dados definidos na LOCAL-STORAGE SECTION são alocados em cada invocação do programa mais externo que contém. No entanto, cada item de dados é reinicializado para o valor especificado na cláusula VALUE cada vez que o programa aninhado é invocado.
  • Para métodos, uma cópia separada dos dados definidos em LOCAL-STORAGE é alocada e inicializada em cada invocação do método. O armazenamento alocado para os dados é liberado quando o método retorna.
  • Os itens de dados definidos no LOCAL-STORAGE SECTION não podem especificar a cláusula EXTERNAL.
  • A LOCAL-STORAGE SECTION deve começar com o cabeçalho LOCAL-STORAGE SECTION, seguido de um período de separação.
  • Você pode especificar a LOCAL-STORAGE SECTION em programas recursivos, em programas não recursivos e em métodos.
  • O método LOCAL-STORAGE é o mesmo que o conteúdo do programa LOCAL-STORAGE, exceto que a cláusula GLOBAL não tem efeito (porque os métodos não podem ser aninhados).

 

LINKAGE-STORAGE SECTION: 

  • Descreve os dados disponibilizados a partir de outro programa através da instrução CALL.
  • Ele também pode ser usado para descrever o formato dos dados acessados ​​usando o registro especial ADDRESS OF.
  • As entradas de descrição de registro e as entradas de descrição de item de dados na seção de vinculação fornecem nomes e descrições do item de dados, mas não o armazenamento. O armazenamento não é reservado no programa porque a área de dados existe em outro lugar. Nomes de tipos podem ser definidos na seção LINKAGE.

Qualquer cláusula de descrição de dados pode ser usada para descrever itens na LINKAGE-SECTION, com essas exceções:

  • A cláusula VALUE não pode ser especificada para itens Nível-88 itens.
  • Se a cláusula VALUE for especificada para itens que não sejam o nível 88 na seção Linkage, ela será tratada como um comentário.
  • A cláusula EXTERNAL não pode ser especificada na seção Linkage.
  • A cláusula GLOBAL não pode ser especificada na seção Linkage.
  • A cláusula GLOBAL pode ser especificada para um nome de dado ou nome de condição na seção LINKAGE, com o número de nível 01. Quando GLOBAL é especificado em um item de dados de seção LINKAGE, um programa de origem contido pode se referir diretamente ao item pelo nome de O item de dados. Para mais informações sobre a codificação da seção de ligação, consulte o Guia do ILE COBOL Programmer .

 

COMMUNICATION SECTION:

  • Composta pelo cabeçalho de seção, seguido por entradas de descrição de comunicação consistindo de um indicador de nível (CD), um cd-name e uma série de cláusulas independentes. A entrada de descrição de comunicação é terminada por um período.
  • A entrada de descrição de registro associada à COMMUNICATION SECTION pode ser implicitamente redefinida por entradas de descrição de registro especificadas pelo usuário escritas imediatamente após a entrada de descrição de comunicação.

 

SCREEN SECTION:

  • A estrutura sintática da SCREEN SECTION se assemelha à da WORKING-STORAGE SECTION. Ou seja, consiste em um cabeçalho de seção seguido de zero, uma ou mais entradas, cada uma das quais consiste em um número de nível necessário seguido por uma série de cláusulas opcionais.
  • As entradas especificam a aparência de uma área de exibição retangular chamada tela. As dimensões horizontais e verticais máximas significativas da tela são determinadas pelas características de hardware do terminal associado com a unidade de execução. O limite comum para a dimensão horizontal é de 80 posições de caractere, eo limite comum para a dimensão vertical é de 25 linhas.
  • As entradas de tela podem ser usadas para definir toda ou qualquer parte da tela física, e toda a tela ou qualquer sub-região dela pode ser redefinida quantas vezes for necessário pelo programa.
  • Números de nível são usados ​​da mesma maneira como nas outras seções da divisão de dados. Ou seja, entradas de nível 77 são usadas para descrever itens de tela que não fazem parte de uma estrutura maior e não subdivididos em entradas subordinadas. Números de nível de 01 a 49 podem ser usados ​​para definir entradas de tela que estão organizadas em uma estrutura hierárquica: nível 01 é o mais inclusivo. Os números de nível 66 e 88 não podem ser usados ​​na SCREEN SECTION.
  • Cada entrada na SCREEN SECTION pode definir um nome de tela. As regras relativas à unicidade dos nomes de tela são as mesmas que as regras relativas à unicidade de nomes de dados nas outras seções da DATA-DIVISION. Ou seja, um nome de tela definido no nível 01 ou 77 na Seção de Tela deve ser exclusivo somente se houver uma referência a ele em outro lugar do programa. Nomes de tela subordinados (aqueles nos números de nível 02 a 49) não precisam ser únicos se podem ser tornados únicos por qualificação ou se não houver referências a eles em outras partes do programa.
  • Nomes de tela definidos na SCREEN SECTION não representam itens de dados, e eles podem ser referidos em outro lugar do programa somente em declarações ACCEPT e DISPLAY.

 

REPORT SECTION:

  • Contém uma ou mais entradas de REPORT DESCRIPTION(entradas RD), cada uma das quais forma a descrição completa de um relatório.
  • O relatório nomeado na entrada RD não é atribuído diretamente a um arquivo de saída. Em vez disso, ele está associado a um nome de arquivo na seção de arquivo e esse nome de arquivo está associado a um arquivo quando uma instrução OPEN especificando o nome do arquivo é executada. Mais de um relatório pode ser associado com o mesmo nome de arquivo ea cláusula CODE é usada para diferenciar entre os relatórios. Para um conector de arquivo externo referenciado por um nome de arquivo, programas compilados separadamente podem especificar relatórios diferentes para o mesmo nome de arquivo. Esta entrada de descrição de arquivo deve especificar o nome de uma entrada de descrição de relatório para cada relatório associado a esse nome de arquivo neste programa.
  • A entrada RD contém um conjunto de cláusulas que nomeia o relatório e fornece informações específicas sobre o formato da página impressa ea organização das subdivisões do relatório. Um código de identificação pode ser dado na entrada de RD para que cada relatório possa ser identificado separadamente em um arquivo de saída intermediário.
  • Após cada entrada de RD, há uma ou mais entradas de número de nível 01, cada uma seguida por uma estrutura hierárquica semelhante a descrições de registros COBOL. Cada entrada de número de nível 01 e suas entradas subordinadas descrevem um grupo de relatório. Cada grupo de relatórios consiste em uma ou mais linhas de impressão que são consideradas como uma unidade. Um grupo de relatórios que está a ser impressa é impresso inteiramente em uma página lógica; Ele nunca é dividido em páginas.

ENVIRONMENT DIVISION: é a segunda divisão de um programa COBOL. Descreve o computador e os periféricos que serão utilizados pelo programa, fazendo ligação com o ambiente operacional onde o programa será executado, usando a duas seções:

CONFIGURATION SECTION. - Esta seção destina-se a configuração do ambiente, ela é composta por três partes:

SOURCE-COMPUTER Identifica o computador onde foi confeccionado o programa, ou seja, onde o codigo fonte será compilado;
OBJECT-COMPUTER Identifica o computador do ambiente de produção, ou seja, onde o programa será executado;
(ambas servem apenas para comentários haja visto que ambas deixaram de ser obrigatórias mas caso o programador opte em utiliza-las deve escrever sua sintaxe corretamente para não causar erros de compilação.)
SPECIAL-NAMES

Específica 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. a clausula DECIMAL-POINT IS COMMA troca as funções da virgula e do ponto decimal, afetando literais numéricos e a clausula PICTURE.

Ex:

Sem o DECIMAL-POINT IS COMMA Com o DECIMAL-POINT IS COMMA
456.23 456,23
1,978 1.978


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.

Exemplo:

SEQUENCIAL: O formato deve ser usado para todos os arquivos no modo de acesso sequencial, ou seja, irá avançar a leitura registro a registro até o fim de todos os registros que estão no arquivo.

SELECT nome-arquivo ASSIGN TO nome-externo

ORGANIZATION IS LINE SEQUENTIAL

ACCESS MODE IS SEQUENTIAL

FILE STATUS IS fs-arquivo.

 

RANDÔMICO: O formato deve ser especificado para arquivos indexados e relativos no modo de acesso aleatório, e também para arquivos no modo de acesso dinâmico quando a recuperação de registros for aleatória.

SELECT nome-arquivo ASSIGN TO nome-externo

ORGANIZATION IS RELATIVE

ACCESS MODE IS RANDOM [RELATIVE KEY IS chave-randomica]

FILE STATUS IS fs-arquivo.

 

DINAMICO: Para arquivos com organização indexada ou relativa, o modo de acesso dinâmico pode ser especificado na entrada FILE-CONTROL. No modo de acesso dinâmico, pode-se usar a recuperação de registros sequenciais ou randômicos, dependendo do formato utilizado.

SELECT nome-arquivo ASSIGN TO nome-externo

ORGANIZATION IS RELATIVE

ACCESS MODE IS DYNAMIC [RELATIVE KEY IS chave-randomica]

FILE STATUS IS fs-arquivo.

 

Estrutura:

  • ENVIRONMENT DIVISION.
    • CONFIGURATION SECTION.
      • SOURCE-COMPUTER
      • OBJECT-COMPUTER.
      • SPECIAL-NAMES.
    • INPUT-OUTPUT SECTION.
      • FILE-CONTROL.
      • I-O CONTROL.

Exemplo: 

******************************************************************
ENVIRONMENT DIVISION.
******************************************************************
CONFIGURATION SECTION.
******************************************************************
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
******************************************************************
INPUT-OUTPUT SECTION.
******************************************************************
FILE-CONTROL.
******************************************************************
*
SELECT CADCLIEN ASSIGN TO UT-S-CADCLIEN
FILE STATUS IS WS-FS-CADCLIEN.
* SELECT CADFORN ASSIGN TO UT-S-CADFORN FILE STATUS IS WS-FS-CADFORN.
*
SELECT CADVSAM ASSIGN TO DA-I-CADVSAM ORGANIZATION IS INDEXED ACCESS MODE IS DYNAMIC RECORD KEY IS VSAM-COD-CHAVE FILE STATUS IS WS-FS-CADVSAM. * ****************************************************************** DATA DIVISION. ******************************************************************

A Historia do cobol

A Historia do cobol

COBOL significa Common Business Oriented Language, isto é, Linguagem Comum Orientada para o Comércio. O Cobol é um subconjunto de palavras da língua inglesa, ou seja, um número limitado de palavras inglesas sujeita a uma sintaxe própria. É uma linguagem que lida com problemas comerciais, envolvendo arquivos de dados de apreciáveis proporções (Seqüências/Vsam/Banco de dados DB2).   História: Criado por um comitê de investigadores de várias instituições civis e governamentais durante o segundo semestre de 1959. As especificações eram em grande parte inspiradas na linguagem de programação FLOW-MATIC inventada pela Grace Hopper - referida como "a mãe da língua COBOL." Em 8 de abril de...

Vagas

Em breve estaremos divulgando vagas de COBOL/CICS/DB2

Camisetas

IDENTIFICATION DIVISION

IDENTIFICATION DIVISION: Possui informações documentais, como nome do programa, quem o codificou e quando essa codificação foi realizada.    PROGRAM-ID nome do programa. (Obrigatório) AUTHOR nome do desenvolvedor. (Obrigatório) INSTALLATION nome da empresa ou local de geração do...

ENVIRONMENT DIVISION

ENVIRONMENT DIVISION: é a segunda divisão de um programa COBOL. Descreve o computador e os periféricos que serão utilizados pelo programa, fazendo ligação com o ambiente operacional onde o programa...

DATA DIVISION

DATA DIVISION: É a terceira divisão de um programa COBOL, descreve os arquivos de entrada e saída que serão usadas pelo programa. Também define as áreas de trabalho e constantes...

PROCEDURE DIVISION

PROCEDURE DIVISION: Contém o código que irá manipular os dados descritos na DATA DIVISION. É nesta divisão que o desenvolvedor descreverá a lógica do programa. Consiste em instruções executáveis ​​usando...

Comandos