58
FACULDADE IBERO AMERICANA SUMÁRIO DA APOSTILA DE COBOL CAPÍTULO I: TIPOS DE LINGUAGENS_______________________________________________ CAPÍTULO II - TIPOS DE PROGRAMAS______________________________________________ CAPÍTULO III- CONCEITUAÇÃO E HISTÓRICO DO COBOL_________________________ CAPÍTULO IV- DIVISÕES DO COBOL_________________________________________________ CAPÍTULO V - CARACTERES UTILIZADOS NA LINGUAGEM________________________ CAPÍTULO VI - PALAVRAS EM COBOL_______________________________________________ CAPÍTULO VII - CONSTANTES________________________________________________________ CAPÍTULO VIII - REGRAS DE ESPACEJAMENTO E PONTUAÇÃO___________________ CAPÍTULO IX - DESCRIÇÃO DA FOLHA DE CODIFICAÇÃO COBOL_________________ CAPÍTULO X - COMPILADOR COBOL________________________________________________ CAPÍTULO XI - ESTRUTURA DO COBOL______________________________________________ CAPÍTULO XII - COMPOSIÇÃO DA IDENTIFICATION DIVISION___________________ CAPÍTULO XIII - COMPOSIÇÃO DA ENVIRONMENT DIVISION____________________ CAPÍTULO XIV - MÉTODOS DE ACESSO E TIPOS DE ORGANIZAÇÃO______________ CAPÍTULO XV - CÓDIGOS DE RETORNO NOS ACESSOS ARQUIVOS_______________ CAPÍTULO XVI - COMPOSIÇÃO DA DATA DIVISION________________________________ CAPÍTULO XVI-1 - FILE SECTION____________________________________________________ CAPÍTULO XVI-1A - ITEM DE GRUPO E ITEM DE DADO_____________________________ CAPÍTULO XVI-1B - NÍVEIS DE DADOS______________________________________________ CAPÍTULO XVI-2 - WORKING-STORAGE SECTION__________________________________ CAPÍTULO XVI-2A - CLAÚSULA PICTURE____________________________________________ CAPÍTULO XVI-2B - OUTRAS CLÁUSULAS DA DATA DIVISION_____________________ CAPÍTULO XVI-3 - SCREEN SECTION________________________________________________ CAPÍTULO XVI-3A - CLÁUSULAS USADAS NA SCREEN SECTION___________________ CAPÍTULO XVII - COMPOSIÇÃO DA PROCEDURE DIVISION_______________________ CAPÍTULO XVII-1- COMANDOS DE ENTRADA E SAÍDA_____________________________ CAPÍTULO XVII-2-COMANDOS ARITMÉTICOS______________________________________ CAPÍTULO XVII-3- Comandos que alteram a sequência de execução__________ CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 1

Apostila de Cobol

Embed Size (px)

Citation preview

Page 1: Apostila de Cobol

FACULDADE IBERO AMERICANA

SUMÁRIO DA APOSTILA DE COBOL

CAPÍTULO I: TIPOS DE LINGUAGENS____________________________________

CAPÍTULO II - TIPOS DE PROGRAMAS____________________________________

CAPÍTULO III- CONCEITUAÇÃO E HISTÓRICO DO COBOL__________________

CAPÍTULO IV- DIVISÕES DO COBOL______________________________________

CAPÍTULO V - CARACTERES UTILIZADOS NA LINGUAGEM________________

CAPÍTULO VI - PALAVRAS EM COBOL____________________________________

CAPÍTULO VII - CONSTANTES___________________________________________

CAPÍTULO VIII - REGRAS DE ESPACEJAMENTO E PONTUAÇÃO____________

CAPÍTULO IX - DESCRIÇÃO DA FOLHA DE CODIFICAÇÃO COBOL__________

CAPÍTULO X - COMPILADOR COBOL_____________________________________

CAPÍTULO XI - ESTRUTURA DO COBOL___________________________________

CAPÍTULO XII - COMPOSIÇÃO DA IDENTIFICATION DIVISION_____________

CAPÍTULO XIII - COMPOSIÇÃO DA ENVIRONMENT DIVISION______________

CAPÍTULO XIV - MÉTODOS DE ACESSO E TIPOS DE ORGANIZAÇÃO________

CAPÍTULO XV - CÓDIGOS DE RETORNO NOS ACESSOS ARQUIVOS__________

CAPÍTULO XVI - COMPOSIÇÃO DA DATA DIVISION________________________

CAPÍTULO XVI-1 - FILE SECTION________________________________________

CAPÍTULO XVI-1A - ITEM DE GRUPO E ITEM DE DADO____________________

CAPÍTULO XVI-1B - NÍVEIS DE DADOS___________________________________

CAPÍTULO XVI-2 - WORKING-STORAGE SECTION__________________________

CAPÍTULO XVI-2A - CLAÚSULA PICTURE_________________________________

CAPÍTULO XVI-2B - OUTRAS CLÁUSULAS DA DATA DIVISION______________

CAPÍTULO XVI-3 - SCREEN SECTION_____________________________________

CAPÍTULO XVI-3A - CLÁUSULAS USADAS NA SCREEN SECTION____________

CAPÍTULO XVII - COMPOSIÇÃO DA PROCEDURE DIVISION________________

CAPÍTULO XVII-1- COMANDOS DE ENTRADA E SAÍDA_____________________

CAPÍTULO XVII-2-COMANDOS ARITMÉTICOS_____________________________

CAPÍTULO XVII-3- Comandos que alteram a sequência de execução______________

CAPÍTULO XVII-4- COMANDOS DE MOVIMENTAÇÃO DE DADOS____________

CAPÍTULO XVII-5- COMANDOS CONDICIONAIS___________________________

CAPÍTULO XVIII - UTILIZANDO O COMPILADOR COBOL___________________

CAPÍTULO XIX - ERROS DE COMPILAÇÃO E EXECUÇÃO___________________

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 1

Page 2: Apostila de Cobol

FACULDADE IBERO AMERICANACAPÍTULO XX - MODELO DA PROCEDURE DIVISION______________________

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 2

Page 3: Apostila de Cobol

FACULDADE IBERO AMERICANA

CAPÍTULO I: TIPOS DE LINGUAGENS

LINGUAGEM DE MÁQUINANotação binária ou código de máquina. Conjunto de bits ligados e desligados (0 e 1).

LINGUAGEM SIMBÓLICAAs operações são representadas por códigos simbólicos ou pseudônimos, onde cada instrução terá uma sintaxe particular e os operandos serão sempre representados simbolicamente. Ex: Assembler

LINGUAGEM DE PROGRAMAÇÃOSão linguagens simbólicas capazes de serem compiladas ou interpretadas.

CAPÍTULO II - TIPOS DE PROGRAMAS

PROGRAMA FONTEConfeccionado através de um editor de texto. É o programa feito numa determinada linguagem de programação. Ex: Cobol, Fortran, Clipper, etc.

PROGRAMA OBJETOÉ o seu programa fonte traduzido para a linguagem de máquina através de programas especiais chamados de compiladores ou tradutores. Somente os programas escritos em linguagem de máquina poderão ser submetidos e executados nos processadores.

CAPÍTULO III- CONCEITUAÇÃO E HISTÓRICO DO COBOL

COBOL - COMMOM BUSINESS ORIENTED LANGUAGE

COBOL ( Linguagem Comum Orientada para Negócios) é uma linguagem

simbólica de fácil e rápida programação comparada com as linguagens de nível hierarquicamente inferior, usada largamente em empresas. Dentre as vantagens do COBOL podemos destacar: - Facilidade de codificação, semelhante a prosa inglesa; - Compatibilidade entre sistemas; - Facilidade de treinamento; - Facilidade de correção e depuração; - Boa documentação.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 3

Page 4: Apostila de Cobol

FACULDADE IBERO AMERICANA Historicamente o COBOL foi iniciado em uma reunião patrocinada pelo Pentágono em maio de 1959, com o objetivo de desenvolver uma linguagem para aplicações comerciais. A primeira versão do COBOL foi concluída em 1961, sendo que daí em diante a linguagem tem sido consideravelmente melhorada, principalmente pelo American National Standard Institute (ANSI) que visa determinar a sua padronização.

O COBOL é um subconjunto de palavras inglesas sujeitas a uma sintaxe própria.

CAPÍTULO IV- DIVISÕES DO COBOL

Existem quatro divisões em um programa COBOL, a saber:

IDENTIFICATION DIVISION1ª Divisão (parte) do programa COBOL, contendo frases e cláusulas de identificação do programa.

ENVIRONMENT DIVISION2ª Divisão (parte) do programa COBOL, contendo frases e cláusulas de definição dos equipamentos usados no processamento do programa.

DATA DIVISION 3ª Divisão (parte) do programa COBOL, contendo frases e cláusulas de definição e especificação dos arquivos de dados, registros e campos, áreas de trabalho com suas constantes e variáveis.

PROCEDURE DIVISION4ª Divisão (parte) do programa COBOL, contendo parágrafos, sentenças e comandos de execução. É nesta divisão que serão expostos todos os procedimentos necessários para o cumprimento à execução lógica do programa.

CAPÍTULO V - CARACTERES UTILIZADOS NA LINGUAGEM

Caracteres Alfabéticos ( A, B, C, ..........Z )

Espaços (posição em branco)

Caracteres numéricos ( 0, 1, 2, ......9 )

Sinal Positivo ( + )

Sinal Negativo ou Hífen ( - )

Asterisco ( * )CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 4

Page 5: Apostila de Cobol

FACULDADE IBERO AMERICANA

Igual ( = )

Maior ( >)

Menor ( < )

Cifrão ( $ )

Ponto, Vírgula e Ponto-e-Vírgula ( . , ;)

Aspas ( " )

Parênteses ( )Apóstrofe ( ' )

Barra ( / )

CAPÍTULO VI - PALAVRAS EM COBOL

São os conjuntos de caracteres que vão representar algo para o COBOL. Os caracteres permitidos na formação de palavras são os caracteres Alfabéticos, Numéricos e o Hífen.

As regras para a formação de palavras em COBOL são:

- Ter no máximo 30 caracteres; - Não pode conter espaços ou brancos; - Pode conter os tipo de caracteres expostos no capítulo anterior, sendo que o hífen não deve estar no início e nem no fim da palavra; - Deve conter no mínimo 1 caracter alfabético.

No COBOL temos uma série de palavras que são consideradas como RESERVADAS, as quais se caracterizam como sendo aquelas que tem uma função definida e específica no COBOL. Elas não podem ser usadas fora de seus propósitos. Exemplos: END, MOVE, DATA, IF, e outras.

CAPÍTULO VII - CONSTANTES

São conjuntos de caracteres fixos no COBOL. As constantes também são chamadas de literais e podem ser criadas pelo programador se utilizando de todos os caracteres permitidos pelo COBOL. São três os tipos de constantes ou literais:

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 5

Page 6: Apostila de Cobol

FACULDADE IBERO AMERICANA 1) LITERIAS NUMÉRICAS: São compostas de caracteres numéricos além dos sinais positivo, negativo e vírgula decimal. As regras para formação de literais

numéricas são: a) Ter no máximo 18 caracteres; b) O uso do sinal é opcional e deve ser posicionado na extremidade esquerda da constante; c) A posição da vírgula é livre, com excessão a extremidade esquerda da constante.

2) LITERIAS NÃO NUMÉRICAS: São compostas de caracteres alfabéticos, numéricos e/ou especiais. Devem ser escritas entre aspas ou apóstrofes. As regras para formação de literais não numéricas são:

a) Ter no máximo 120 caracteres; b) Não podem conter aspas nem apóstrofes na formação no nome da constante; c) Os espaços contidos entre as aspas ou apóstrofes, fazem parte da literal.

3) CONSTANTES FIGURATIVAS: São nomes já definidos no COBOL, que possuem um valor implícito. Seu valor será gerado tantas vezes quantas forem necessárias, até preencher totalmente o campo referenciado. Exemplo: ZERO, ZEROES, SPACE, SPACES, LOW-VALUE, HIGH-VALUE.

CAPÍTULO VIII - REGRAS DE ESPACEJAMENTO E PONTUAÇÃO

Deve-se deixar um ou mais espaços em branco entre as palavras, duas literais e antes e depois dos seguintes caracteres: + - * = > <. Pontos, Vírgulas e Ponto-e-vírgulas, não precisam ser precedidos de espaços mas devem ser seguidos por no mínimo UM espaço.

CAPÍTULO IX - DESCRIÇÃO DA FOLHA DE CODIFICAÇÃO COBOL

A folha de codificação nada mais é do que a determinação das regras de editoração dos programas fontes, ou seja, quais são as regras para distribuição das palavras nas linhas do editor de texto que está sendo utilizado para criação dos programas. Estas regras são as seguintes:

a) Iniciar editoração de uma programa através de um arquivo que seja NÃO DOCUMENTO. Isto é necessário pois um arquivo tipo documento possui no seu interior caracteres de editoração que serão percebidos e criticados pelo compiladorCOBOL como sendo caracteres não permitidos e consequentemente inválidos, causando CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 6

Page 7: Apostila de Cobol

FACULDADE IBERO AMERICANAassim erros de compilação que dificilmente serão percebidos, pois na utilização do editor esse caracteres não são apresentados, demonstrados.

b) Colunas 1 a 6: Utilizadas para determinação da numeração da sequência das instruções do programa. Não é obrigatório mas facilita seu manuseio. O compilador

COBOL usado no curso fará essa numeração automaticamente.

c) Coluna 7: Utilizada para qualificar a linha do seu programa fonte, de acordo com o seguinte: Um hífen ( - ) indica a continuação da sentença truncada na linha anterior; Uma barra ( / ) faz com que as linhas a seguir do seu programa fonte

sejam impressas na página (ou tela) separada, quando da compilação; Um asterísco ( * ) faz com que a linha seja ignorada pelo compilador . Utiliza-se este artifício para se desenvolver uma forma de documetação do programa, a medida que seja exposto vários cometários sobre ele.

d) Colunas 08 a 72: Para as sentenças do programa, ou seja, para os comandos do programa.

e) Colunas 73 a 80: Poderá ser utilizada para expor a identificação (nome) do programa.

MARGEM "A": Esta margem se delimita entre as colunas 8 a 11 (inclusive), destinados a nomes de Divisões, Seções, Parágrafos, Arquivos, Registros, e variáveis independentes.

MARGEM "B": Esta margem se delimita entre as colunas 12 a 72 destinadas aos comandos e cláusulas do programa.

CAPÍTULO X - COMPILADOR COBOL

Um programa escrito em COBOL não pode ser executado com suas instruções originais. Essas instruções devem ser traduzidas para linguagem de máquina, linguagem essa que o computador entende e executa as tarefas. Essa tradução é feita pelo compilador COBOL, que além da tradução, faz uma verificação das palavras do programa (sintaxe), checando se elas estão corretas ou não, acusando numa listagem os erros e suas respectivas mensagens que auxiliam na correção.

CAPÍTULO XI - ESTRUTURA DO COBOL

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 7

Page 8: Apostila de Cobol

FACULDADE IBERO AMERICANA

Como já vimos o COBOL é estruturado em Divisões, que por sua vez são compostas de Seções, que são compostas por Parágrafos, que são compostos de frases, ou cláusulas, que são compostas de palavras. As frases devem ser escritas a partir da coluna 12 da "folha" de COBOL. As Divisões, Seções, Parágrafos devem se escritos a partir da coluna 8 da "folha" do COBOL.

CAPÍTULO XII - COMPOSIÇÃO DA IDENTIFICATION DIVISION

IDENTIFICATION DIVISION. PROGRAM-ID. nome-do-programa. (Obrigatório) AUTHOR. nome-do-programador. (Não-obrigatório) INSTALATION. nome-da-instalação. (Não-obrigatório) DATE-WRITTEN. data-da-confecção- do programa. (Não-obrigatório) DATE-COMPILED. data-provável-da-compilação. (Não-obrigatório) SECURITY. comentários. (Não-obrigatório)

Comentários referentes a INDENTIFICATION DIVISION:

a) Todos os parágrafos da ID-DIVISION são opcionais, com excessão do PROGRAM-ID; b) O nome-do-programador deve conter no máximo 6 caracteres, pois se for definido mais do que isto, o compilador COBOL irá desprezar o restante; c) Todos os demais dados tem formatos e tamanhos livres, não podendo se esquecer dos pontos-finais ao final de cada sentença; d) A sentença SECURITY tem como finalidade propiciar ao programador a possibilidade de efetuar uma espécie de documentação do programa, ou seja, registrar resumidamente o que o programa faz e qual a função dele; e) A ordem de apresentação das sentenças após o PROGRAM-ID não é obrigatória

CAPÍTULO XIII - COMPOSIÇÃO DA ENVIRONMENT DIVISION

Esta Divisão é composta por duas Seções: a Configuration Section e a Input-output Section. O formato é o seguinte:

ENVIRONMENT DIVISION.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 8

Page 9: Apostila de Cobol

FACULDADE IBERO AMERICANA

CONFIGURATION SECTION. SOURCE-COMPUTER. nome-do-computador-usado-pgm-fonte. OBJECT-COMPUTER. nome-do-computador-usado-pgm-objeto. SPECIAL-NAMES. declarações.

INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT nome-do-arquivo ASSIGN TO dispositivo ACCESS MODE IS sequential / random / dynamic ORGANIZATION IS sequential / indexed / relative/direct RECORD KEY IS nome-dado-1 FILE STATUS IS nome-dado-2 RELATIVE KEY IS nome-dado-3. I-O-CONTROL. SAME RECORD AREA FOR nome-arquivo-1.......nome-arquivo-n.

Comentários referentes a ENVIRONMENT DIVISION:

a) A CONFIGARATION SECTION é tratada pelo compilador COBOL

como comentário, ou seja, não obrigatória, mas se qualquer parágrafo dela for utilizado a apresentação do nome da Seção será obrigatória;

b) O SPECIAL-NAMES especifica nomes especiais e/ou condições especiais. Ex: SPECIAL-NAMES. Decimal-point is comma. (está se determinando que todo ponto decimal de qualquer literal numérica, deverá ser considerada como vírgula decimal), SPECIAL-NAMES. C01 is PULA. (está se determinando que toda a vez que no programa estiver aparecendo a palavra PULA, o computador deverá posicionar a folha de impressão no canal 1 (C01), ou seja, na primeira linha da página);

c) A SELECT determina a existência de determinado arquivo no programa

onde o seu nome será apresentado no "nome-do-arquivo", associando-o a um determinado periférico ou dispositivo de hardware tais como DISK, TAPE ou PRINTER;

d) O RECORD-KEY IS determina qual será o campo que assumirá a função de chave de acesso do arquivo definido como de organização INDEXADA. O "nome-dado-1" é onde se expressará o nome deste campo-chave e deverá ser descrito com picture alfanumérica na definição do arquivo a ser realizada na DATA-DIVISION;

e) O FILE-STATUS IS é utilizado para permitir a verificação de erros após uma determinada operação de entrada ou saída no arquivo. Após qualquer acesso a arquivos, ficam disponíveis aos programas códigos de retorno referente a estes acessos. Esses códigos estão demonstrados no Capítulo XV na página "10" desta apostila. Estes códigos serão disponibilizados no programa na área de trabalho definida no "nome-dado-2" que deve ser descrito na DATA-DIVISION com picture X(02);

f) O RELATIVE-KEY IS determina qual será o campo que assumirá a função de chave de acesso do arquivo definido como de organização RELATIVA. O

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 9

Page 10: Apostila de Cobol

FACULDADE IBERO AMERICANA"nome-dado-3" é onde se expressará o nome deste campo-chave na definição do arquivo a ser realizada na DATA-DIVISION;

g) A cláusula ACCESS MODE e ORGANIZATION serão motivo de exploração no Capítulo seguinte (XIV);

h) Na SELECT, o ponto-final só deve ser colocado na última linha de sua descrição, ou seja, todas as cláusulas: Access Mode, Organization, File-Status, Record-key/Relative-Key pertencem à declaração de um arquivo. Cada arquivo que o programa

eventualmente utilizar, haverá necessidade de definir uma outra SELECT com suas respectivas cláusulas;

i) A SAME RECORD AREA permite a associação de mais de um arquivo

a um mesmo buffer de memória.

CAPÍTULO XIV - MÉTODOS DE ACESSO E TIPOS DE ORGANIZAÇÃO

Método de Acesso é a forma pela qual o programa através de interfaces como o sistema operacional da máquina, irá capturar e depositar dados nos arquivos. É a maneira física de acesso aos registros do arquivo. Existem três tipos de método de acesso a arquivos a saber:

a) SEQUENCIAL (SEQUENTIAL): Quando os dados são lidos ou escritos de modo sequencial, ou seja, um logo após o outro, em relação à sua posição física. No compilador COBOL da Microsoft®, existe a disponibilidade do método de acesso LINE SEQUENTIAL, o qual nos dá possibilidade de gerar massas de dados através de editores de texto, de tal forma que cada linha será considerado como um registro de dados a ser processado, mesmo que entre uma linha e outra exista espaços em branco, sendo que estes serão desconsiderados para efeito de tamanho do registro.

b) ALEATÓRIO (RANDOM): Quando os dados são lidos ou escritos de modo aleatório, ou seja, sem nenhuma ordem constante.

c) DINÂMICO (DYNAMIC): Quando os dados são processados num determinado momento de forma sequencial e em outro determinado momento de maneira aleatória.

Tipo de Organização é a forma pela qual os registros estão fisicamente dispostos nos arquivos, ou seja, a posição pela qual um registro se encontra em relação ao outro. Existem 4 tipos de organização de arquivos:

a) SEQUENCIAL (SEQUENTIAL): Os dados estão dispostos no arquivo

de acordo com a ordem de criação, ou seja, de chegada.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 10

Page 11: Apostila de Cobol

FACULDADE IBERO AMERICANA b) INDEXADO (INDEXED): A posição de cada dados é determinada por índice ou chave. Este índice ou chave normalmente é definido através de um campo ou composição de alguns campos.

c) DIRETO (DIRECT): A posição do registro é determinada através de esquema de endereçamento físico.

d) RELATIVO (RELATIVE): A posição do registro é determinada em relação ao primeiro registro do arquivo.

Todos os programas que se utilizarem dos métodos de acesso a arquivos aleatório ou dinâmico, necessitarão que estes arquivos sejam declarados como tendo uma organização de registros indexeda ou relativa.

Um arquivo processado (acessado) sequencialmente poderá ter uma organização sequencial, indexada, direta, ou até mesmo relativa. Para um processamento (acesso) de um arquivo de forma aleatória ou dinâmica, é necessário que o arquivo seja de organização indexada.

CAPÍTULO XV - CÓDIGOS DE RETORNO NOS ACESSOS ARQUIVOS

Os principais valores de códigos de retorno aos acessos aos arquivos indexados (FILE-STATUS) são os seguintes:

00 - Operação completada sem erro 10 - Encontro da marca de final de arquivo 21 - Erro na definição da estrutura (lay-out) do arquivo. Definição do arquivo declarada no programa, incompatível com o encontrado no acesso aos registros desse 22 - Chave duplicada. O programa tenta gravar um registro com chave (índice) já existente no arquivo de saída 23 - Registro não encontrado. O programa tenta ler (acessar) um registro através de uma chave (índice) inexistente 24 - Disco Cheio. O dispositivo definido para o arquivo de saída não oferece mais espaço disponível para gravação de registros 30 - Erro permanente. Esse código de retorno é apresentado no FILE-STATUS quando após a execução da instrução de abertura o programa não encontrar o arquivo, ou seja, o arquivo não existe 91 - Arquivo com estrutura destruída.

CAPÍTULO XVI - COMPOSIÇÃO DA DATA DIVISION

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 11

Page 12: Apostila de Cobol

FACULDADE IBERO AMERICANA A importância da 3ª Divisão do programa COBOL é a de reservar espaço em memória de cada dado, formato (lay-out) dos registros de todos os arquivos que serão manipulados pelo programa, fornecendo o nome, tipo, tamanho, localização e até o valor inicial de cada um desses itens. É nesta Divisão que serão definidos todas as contantes, literais e literais não numéricas que serão utilizadas pelo programa. Esta Divisão é composta por 5 seções:

XVI-1- FILE SECTION - onde são especificados e definidos todos os arquivos que serão utilizados no programa;

XVI-2- WORKING-STORAGE SECTION - onde são definidos todos os elementos de uso temporário do programa;

XVI-3- SCREEN SECTION - Onde são definidas as telas que serão tratadas e apresentadas pelo programa;

XVI-4- LINKAGE SECTION- Onde são definidas todas as áreas que deverão ser reservadas em memória para receber ou transmitir dados entre programas; e,

XVI-5- REPORT SECTION - Usado para descrever e definir relatórios pré-formatados.

Nesta apostila daremos ênfase nas três primeiras Seções desta Divisão.

CAPÍTULO XVI-1 - FILE SECTION

Como já foi abordado, esta Seção será utilizada para a definição dos arquivos que o programa irá manipular, ou seja, os arquivos de entrada e de saída. Através desta Seção é que o programa em momento de execução, irá definir e reservar espaço em memória real para o recebimento e montagem dos registros que serão manipulados pelo programa.

O formato da File Section é:

DATA DIVISION. FILE SECTION. FD nome-do-arquivo LABEL RECORD IS STANDARD/OMITTED RECORD CONTAINS número-inteiro RECORDS BLOCK CONTAINS número-inteiro RECORDS/CHARACTERS DATA RECORDS IS nome-do-registro RECORDING MODE IS F/V VALUE OF FILE-ID IS nome-externo-do-arquivo. 01 nome-do-registro.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 12

Page 13: Apostila de Cobol

FACULDADE IBERO AMERICANA 03 nome-do-2ºcampo PIC X(002). 03 nome-do-3ºcampo PIC 9(003). 03 nome-do-4ºcampo PIC A(004). 03 nome-do-5ºcampo PIC X(001). 03 nome-do-6ºcampo PIC 9(007).

a) A FD (FILE DESCRIPTION - descrição do arquivo) deve ser definida para todos os arquivos descritos na SELECT da ENVIRONMENT DIVISION, ou seja, para cada arquivo descrito na SELECT deverá existir uma definição de FD. O nome-do-arquivo deve ser o mesmo descrito na SELECT.

b) O LABEL RECORD serve para especificar se o arquivo terá ou não rótulo. Este rótulo, na verdade, é como se fosse um registro com várias informações geradas e lidas pelo sistema operacional, ou utilitários da máquina, ao qual o programaesta ou será processado. No seu conteúdo temos, por exemplo, informações referentes ao nome do arquivo, data de sua criação, maior e menor tamanho do registro, etc. Estas informações podem variar entre sistemas operacionais. Só existem LABELS os arquivos armazenados em meios magnéticos. Quando um arquivo possui LABEL, deverá ser definido STANDARD, caso contrário OMITTED. O programador saberá o que preencher, pois nas definições dos programas serão declarados quais os arquivos que possuem ou não rótulos. Esta cláusula é obrigatória nas FDs dos arquivos.

c) O DATA RECORD IS serve para especificar o nome de dado que será utilizado para atribuir o nome-do-registro do arquivo. Cláusula opcional.

d) O RECORDING MODE é uma cláusula também opcional utilizada para declarar se os registros do arquivo são de tamanho fixo (F) ou variável (V).

e) O RECORD CONTAINS declara o tamanho dos registros (em bytes) que compõem o arquivo. Esta cláusula é opcional pois, se omitida, não afetará o programa. f) O BLOCK CONTAINS especifica quantos registros ou caracteres vão compor um bloco de gravação ou leitura. Esta cláusula também não é obrigatória. A determinação de blocagem tem objetivo direto otimizar I-Os, ou seja reduzir a quantidade de I-Os para acessos aos arquivos e consequentemente aumentar a performance do programa. Cabe alertar que, quanto maior a blocagem, maior será o tamanho de memória RAM necessária para o processamento do programa. g) O VALUE OF FILE-ID tem como objetivo efetuar a ligação física entre o nome-do-arquivo utilizado internamente no programa, com o o nome real do arquivo, nome este utilizado e reconhecido pelo sistema operacional. Exemplo: no programa foi definido na SELECT e na FD Cad-Fun, mas o nome deste mesmo arquivo para o DOS é “CADFUN.MAS”. Esta cláusula é obrigatória nas FDs dos arquivos.

CAPÍTULO XVI-1A - ITEM DE GRUPO E ITEM DE DADO

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 13

Page 14: Apostila de Cobol

FACULDADE IBERO AMERICANA

Para termos condição de continuarmos as definições da FILE SECTION, necessitamos quebrar o capítulo anterior para explicarmos o que são itens de grupo e itens de dados. a) ITEM DE GRUPO: É qualquer registro ou campo que admita subdivisão. Exemplo: um campo “data-hoje” de nove posições numéricas poderá ser redefinido através da subdivisão dele em três outros campos (sub-campos), tais como: “dia-hoje”, “mês-hoje” e “ano-hoje”.

b) ITEM DE DADO: É o item final indivisível de um campo. Continuando com o exemplo acima os sub-campos “dia-hoje”, “mês-hoje” e “ano-hoje” são itens de dados do item de grupo “data-hoje”.

CAPÍTULO XVI-1B - NÍVEIS DE DADOS

Para definição dos arquivos, registros, campos, áreas de trabalho no COBOL há necessidade de se utilizar Níveis de dados. Estes níveis auxilam sobremaneira na determinação dos itens de grupo e itens de dado que serão utilizados no programa. Os números de níveis de dados descrevem o lay-out dos arquivos através da exposição dos campos e sub-campos. Para cada FD utilizada, haverá a especificação do lay-out através da utilização dos níveis de dados. Estes números são utilizados obedecendo as seguintes regras de hierarquização de campos dentro do registro:

a) FD (File-Description): É o nível mais elevado e é utilizado para definição do arquivo de dados. Para cada arquivo selecionado pela SELECT da Environment Division há uma definição de FD específica.

b) 01: Número de nível utilizado para a definição do nível de estrutura de informação imediatamente inferior ao do arquivo, ou seja, o registro. Através deste número de nível é que será declarado o nome-do-registro.

c) 02 a 49: Números de níveis utilizados para definição dos campos e sub-campos pertencentes ao registro.

d) 77: Número de nível utilizado para definições de itens exclusivamente na Working-Storage Section. Este número de nível é indivisível, ou seja, só poderá ser utilizado para se definir um item de dado.

Os números de níveis de dados FD, 01 e 77 sempre serão descritos na Margem A. Os demais números de nívies poderão ser descritos nas demais colunas a partir da Margem B.

Num programa, o nome-do-registro definido pelo nível 01, e os nomes-dos-campos não podem ser os mesmos, ou seja, repetidos.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 14

Page 15: Apostila de Cobol

FACULDADE IBERO AMERICANA Ao final de toda uma descrição de número de nível deve ser colocado ponto final.

Utilizado um número de nível x qualquer para definição de um item de grupo, os itens de dados referentes a este nivel de grupo deverão ser hierarquicamente maiores que o nivel x. Isto para determinar a subdivisão entre os itens.

CAPÍTULO XVI-2 - WORKING-STORAGE SECTION

Esta é a segunda seção da Data Division onde nela serão descritos e definidos todos os dados de uso temporário no programa e que consequentemente se perderão logo após o programa termine seu processamento. Estes dados definidos nesta Seção serão armazenados em memória RAM durante o processamento do programa. A Working-Storage Section só pode ser declarada após todas as descrições da File Section.

O formato da Seção é normalmente o seguinte:

WORKING-STORAGE SECTION.

77 CONT-LIN PIC 9(002). 77 CONT-PAG PIC 9(002). 01 CH-FIM PIC X(003) VALUE "NAO".

01 CABEC-1. 03 FILLER PIC X(035) VALUE SPACES. 03 FILLER PIC X(009) VALUE "RELATÓRIO". 03 FILLER PIC X(036) VALUE SPACES. 03 PAG-CAB1 PIC 9(002).

CAPÍTULO XVI-2A - CLAÚSULA PICTURE

A cláusula PICTURE (PIC) permite especificar o tipo e o tamanho e outras informações ou definições de edição do campo descrito. Esta cláusula só pode ser utilizada na definição de um item de dado. Nunca num item de grupo. Veja o exemplo do CABEC-1. Os caracteres mais usados na descrição da Picture são:

9 numérico A alfabético B branco Z suprime zeros não significativos X alfanumérico V vírgula S sinal

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 15

Page 16: Apostila de Cobol

FACULDADE IBERO AMERICANA

A inserção de um dado, através da parte lógica do programa, incompatível com o tipo do campo definido pela cláusula PIC, causará erro de execução no programa. Exemplo: tentar gravar letras num campo que foi definido como sendo 9.

Os exemplos abaixo são de grande valia na demonstação de como a definição da PIC pode influir no resultado final:

PICTURE CONTEÚDO EDIÇÃO

9(06) 1824 001824 X(06) JOÃO JOÃObb A(02) SP SP 9(06)V99 843264 00843264 9(06),99 843264 008432,64 999.999,99 843264 008.432,64 Z(06),ZZ 843264 bb8432,64 ZZZ.ZZZ,ZZ 843264 bb8.432,64 Z9,99 32 0,32 ZZ,99 32 b,32

CAPÍTULO XVI-2B - OUTRAS CLÁUSULAS DA DATA DIVISION

Outras cláusulas são largamente utilizadas nas Seções da Data Division. Entre elas podemos destacar:

a) FILLER: representa uma área a qual dispensa a atribuição de uma nome. Representa também a ocorrência de espaços ou zeros, conforme a PIC desta área seja numérica ou alfanumérica. O FILLER pode ser utilizado no programa quantas vezes for necessário. O FILLER não pode ser referenciado por um comando de execução do COBOL.

b) VALUE: determina um valor inicial para o campo da Working-Storage Section. A constante ou o valor inicial para o campo, deve estar de acordo com o tipo e tamanho da PIC.

c) OCCURS: é utilizado na definição de tabelas (matrizes), onde surgem vários itens de mesmo formato, com conteúdos distintos. Exemplo:

01 TABELA. 03 DADOS-TAB OCCURS 5 TIMES PIC9(03).

d) REDEFINES: cláusula que designa a mesma área de memória para uma variável ou nome, atribuindo-lhe características diferentes. Exemplo:

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 16

Page 17: Apostila de Cobol

FACULDADE IBERO AMERICANA 01 DATA-HOJE PIC 9(06).

01 DATA-HOJE-RED REDEFINES DATA-HOJE. 03 DD-HOJE PIC 9(02). 03 MM-HOJE PIC 9(02). 03 AA-HOJE PIC 9(02).

Através deste artifício, o programador poderá utilizar a informação da data por completo (DATA-HOJE), ou se preferir ou necessitar utilizar as informações particularizadas da data através dos itens de dados dd, mm, aa.

A somatória dos campos redefinidos deve ser a mesma dos campos redefinidores.

Quando usamos o OCCURS ou o REDEFINES num campo, esse não poderá possuir a cláusula VALUE.

O OCCURS não pode ser utilizado em conjunto com o REDEFINES.

CAPÍTULO XVI-3 - SCREEN SECTION

Esta Seção da Data Division deverá sempre ser a última a ser descrita na Data Division, quando necessária. Reiterando que esta Seção tem por objetivo definir os formatos de tela, bem como especificar algumas características para os campos. Para descrição das telas deverão ser usados os mesmos critérios e regras dos números de níveis de dados elencadas e comentadas na File Section do capítulo XVI-1B. O nome-da-tela definida através do número de nível de dado 01 deve ser único no programa, ou seja, não poderão ser definidos mais do que um nome-de-tela idênticos para telas com conteúdos (lay-outs) diferentes. Um exemplo do formato da Screen Section:

SCREEN SECTION. 01 TELA-01. 03 LINE 1 COLUMN 10 VALUE "TELA TESTE". 03 LINE 3 COLUMN 15 VALUE "DADO-1". 03 LINE 5 COLUMN 15 VALUE "DADO-2". 03 LINE 3 COLUMN 22 PIC 9(06) AUTO. 03 LINE 5 COLUMN 22 PIC X(06) SECURE.

CAPÍTULO XVI-3A - CLÁUSULAS USADAS NA SCREEN SECTION

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 17

Page 18: Apostila de Cobol

FACULDADE IBERO AMERICANA

Várias cláusulas são possíveis de serem utilizadas na Screen Section para particularizar a tela no que tange a sua apresentação e tratamento na entrada de dados. Estas claúsulas são as seguintes:

a) BLANK SCREEN: Tem por finalidade limpar a tela antes de sua edição (apresentação). O cursor posiciona-se no início da tela. Esta cláusula deve ser a primeira do lay-out da tela.

b) LINE: Permite definir qual a linha usada na tela, que será indicada pelo inteiro-1, ou seja, qual a linha que será utilizada para a apresentação (edição) do dado que está se definindo. Este inteiro-1 só poderá ser de 1 a 24, pois a tela só possui 24 linhas úteis para edição. Existe uma variação desta claúsula, utilizando conjugado ao LINE o termo PLUS ou + "inteiro", a qual indica que a linha a ser utilizada será a linha descrita em LINE mais o valor descrito no inteiro".

c) COLUMN: Permite definir qual a coluna usada na tela, que será indicada pelo inteiro-2, ou seja, qual a coluna que será utilizada para a apresentação (edição) do dado que está se definindo. Este inteiro-2 só poderá ser de 1 a 80, pois a tela só possui 80 colunas úteis para edição. Esta informação será sempre conjugada com a cláusula LINE de formar a possibilitar uma total determinação do posicionamento do dado a ser editado. Existe uma variação desta claúsula, utilizando conjugado ao COLUMN o termo PLUS ou + "inteiro", a qual indica que a coluna a ser utilizada será a coluna descrita em COLUMN mais o valor descrito no inteiro".

d) BLANK LINE: Limpa a linha, a partir do ponto especificado no COLUMN, até o final da linha.

e) VALUE: Determina a constante que será editada na tela. Para seu uso não é necessário ter uma PIC antes dela, como na Working-Storage Section a qual é obrigatória.

f) PIC: Determina o tipo de picture que será usada para a entrada ou saída dos dados. Os tipos de picture são as mesmas descritas no Capítulo XVI-2A.

g) FROM: Indica que o conteúdo da PIC somente será mostrado na tela.

h) TO: Indica que o conteúdo da PIC só existirá quando da entrada de dados. i) USING: Indica que o conteúdo da PIC tanto será mostrado na tela, como também exigido na entrada de dados.

j) AUTO: Determina que após o preenchimento total do campo, não será necessário teclar ENTER para passar para o próximo campo.

k) SECURE: Inibe aparição na tela dos dados digitados. No seu lugar serão exibidos asteríscos ( * ).

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 18

Page 19: Apostila de Cobol

FACULDADE IBERO AMERICANA l) BLANK WHEN ZERO: Deixa em branco um campo de E/S se o seu conteúdo for zero.

m) HIGHLIGHT: Torna mais intensa a luminosidade dos caracteres exibidos pelo programa. Não tem efeitos em campos de entrada (digitados).

n) BLINK: Torna piscante os caracteres exibidos pelo programa, também não tendo efeitos em campos de entrada (digitados).

o) BELL: Aciona o alarme quando o programa está pronto para receber o dado contante da tela. Não tem efeito quando o conteúdo deste campo for apresentado pelo programa.

Cabe esclarecer que as cláusulas FROM, TO, USING, BLANK WHEN ZERO, AUTO e SECURE, só são válidas se houver a cláusula PICTURE.

Abaixo demonstraremos um exemplo de um programa fonte que resume o que vimos até o momento:

IDENTIFICATION DIVISION. PROGRAM-ID. PGM01. AUTHOR. MARCOS MUNGO. INSTALLATION. FIA. DATE-WRITTEN. 16MAI92. DATE-COMPILED. 18MAI92. SECURITY. ESTE PROGRAMA E DE DEMONSTRACAO. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SOURCE-COMPUTER. ITAUTEC IS700. OBJECT-COMPUTER. ITAUTEC IS700. SPECIAL-NAMES. C01 IS SALTA.

INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT CAD-SOCIO ASSIGN TO DISK ACCESS MODE IS SEQUENTIAL ORGANIZATION IS LINE SEQUENTIAL. SELECT RELATO ASSIGN TO PRINTER. DATA DIVISION. FILE SECTION. FD CAD-SOCIO LABEL RECORDS IS STANDARD DATA RECORD IS REG-SOCIO BLOCK CONTAINS 10 RECORDS RECORD CONTAINS 255 CHARACTERS VALUE OF FILE-ID IS 'CADSOCIO.MAS'.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 19

Page 20: Apostila de Cobol

FACULDADE IBERO AMERICANA

01 REG-SOCIO. 03 NOME-SOCIO PIC X(030). * SE 1=INADIMPLENTE 2=EM DIA 03 SITUACAO-SOCIO PIC 9(002). 03 DATA-PAGAMENTO. 05 DIA-PAG PIC 9(002). 05 MES-PAG PIC 9(002). 05 ANO-PAG PIC 9(002). 03 VALOR-SOCIO PIC 9(008). 03 FILLER PIC X(209).

FD RELATO LABEL RECORDS IS OMITTED RECORD CONTAINS 80 CHARACTERS DATA RECORD IS REG-SAI. 01 REG-SAI PIC X(080).

WORKING-STORAGE SECTION.

77 CHF PIC X(003) VALUE 'NAO'. 77 CTPAG PIC 9(003) VALUE ZEROES. 77 CTLIN PIC 9(003) VALUE 70. 77 TOTLID PIC 9(003) VALUE ZEROES. 77 TOTINADIM PIC 9(003) VALUE ZEROES. 77 TOTARRE PIC 9(015) VALUE ZEROES. 01 DATASIS PIC X(006). 01 DATASISTEMA REDEFINES DATASIS. 03 ANO-SIS PIC 9(002). 03 MES-SIS PIC 9(002). 03 DIA-SIS PIC 9(002).

01 CABEC1. 03 FILLER PIC X(006) VALUE ' PGM01'. 03 FILLER PIC X(018) VALUE SPACES. 03 FILLER PIC X(012) VALUE 'FACULDADE '. 03 FILLER PIC X(008) VALUE 'IBERO '. 03 FILLER PIC X(009) VALUE 'AMERICANA'. 03 FILLER PIC X(018) VALUE SPACES. 03 FILLER PIC X(006) VALUE 'PAG.- '. 03 PAGCAB1 PIC 9(003).

01 CABEC2. 03 FILLER PIC X(005) VALUE ' EM '. 03 DATACAB2. 05 DD PIC 9(002). 05 FILLER PIC X(001) VALUE '/'. 05 MM PIC 9(002).

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 20

Page 21: Apostila de Cobol

FACULDADE IBERO AMERICANA 05 FILLER PIC X(001) VALUE '/'. 05 AA PIC 9(002). 03 FILLER PIC X(006) VALUE SPACES. 03 FILLER PIC X(009) VALUE 'RELATORIO'. 03 FILLER PIC X(006) VALUE ' DE '. 03 FILLER PIC X(015) VALUE 'INADIMPLENTES '. 03 FILLER PIC X(013) VALUE 'E ARRECADADO'. 03 FILLER PIC X(013).

01 LINDET. 03 FILLER PIC X(010) VALUE SPACES. 03 NOME-REL PIC X(030). 03 FILLER PIC X(010) VALUE SPACES. 03 MES-PAGO-REL PIC 9(002). 03 FILLER PIC X(010) VALUE SPACES. 03 VALOR-REL PIC ZZZZZ9,99.

SCREEN SECTION. 01 TELA-01. 03 LINE 1 COLUMN 10 VALUE "TELA TESTE". 03 LINE 3 COLUMN 15 VALUE "DADO-1". 03 LINE 5 COLUMN 15 VALUE "DADO-2". 03 LINE 3 COLUMN 22 PIC 9(06) AUTO. 03 LINE 5 COLUMN 22 PIC X(06) SECURE.

CAPÍTULO XVII - COMPOSIÇÃO DA PROCEDURE DIVISION

Nesta Divisão serão descritos todos os procedimentos necessários à execução do programa. Antes de sua confecção é ideal que já se tenha desenvolvido o fluxograma ou diagrama de blocos, pois assim só realizar-se-á o trabalho de tradução dos procedimentos previstos no fluxo para a sintaxe correta do COBOL, sem se preocupar com a lógica. Iremos dividir a apresentação dos comandos possíveis de serem utilizados na Procedure Division através de grupos de comandos a saber:

XVII-1- Comandos de entrada e saída

XVII-2- Comandos Aritméticos

XVII-3- Comandos que alteram a sequência de execução

XVII-4- Comandos de movimentação de dados

XVII-5- Comandos condicionais

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 21

Page 22: Apostila de Cobol

FACULDADE IBERO AMERICANA

Cabe reiterar que a Procedure Division pode ser composta por Seções, Parágrafos e por fim instruções. Todos os nomes de Seções ou Parágrafos deverão estar descritos na margem A e as instruções na margem B. Os Parágrafos determinam as rotinas que por sua vez possuem instruções. As Seções, na verdade, se determinam através da formação de um conjunto de parágrafos (rotinas).

CAPÍTULO XVII-1- COMANDOS DE ENTRADA E SAÍDA

COMANDO OPEN: Permite a abertura de um arquivo para leitura e/ou gravação. Através deste comando o Sistema Operacional fica cientificado que o programa estará manipulando o arquivo para uma determinada função.

Formato: OPEN INPUT NOME-DO-ARQUIVO. OUTPUT I-O

Onde: INPUT abre o arquivo como entrada (leitura) OUTPUT abre o arquivo como saída (gravação ou impressão) I-O abre o arquivo como entrada e saída (leitura e gravação)

Obs: O nome-do-arquivo deve ser exatamente o mesmo definido na cláusula SELECT da Environment Division.

Para os comandos INPUT e I-O o arquivo deve existir no disco, pois caso o contrário, o programa emitirá erro.

Exemplos: OPEN INPUT CAD-SOCIO. OPEN OUTPUT RELATO. OPEN INPUT CAD-SOCIO OUTPUT RELATO.

COMANDO CLOSE: Permite fechar um arquivo que foi aberto em determinado momento. Através deste comando também o Sistema Opercional é cientificado que o arquivo não mais está sendo manipulado pelo programa, disponibilizando-o para outro processamento ou acesso.

Formato: CLOSE NOME-DO-ARQUIVO.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 22

Page 23: Apostila de Cobol

FACULDADE IBERO AMERICANA

Obs: O nome-do-arquivo deve ser exatamente o mesmo definido na cláusula SELECT da Environment Division.

Exemplos: CLOSE CAD-SOCIO. CLOSE RELATO.

CLOSE CAD-SOCIO RELATO.

COMANDO READ: Permite a leitura de um registro do arquivo aberto como INPUT ou I-O, e o traz para o local da memória reservado e definido pela FD deste arquivo na Data Division.

Formato: READ NOME-DO-ARQUIVO [INTO NOME-DO-REGISTRO] AT END (COMANDO) INVALID KEY (COMANDO).

Onde: INTO NOME-DO-REGISTRO é opcional, pois é “default” após uma leitura o registro ser colocado no local reservado a ele definido na FD do arquivo. O INTO é útil caso o arquivo que se está lendo (acessando) possue vários tipos de registros diferentes, ou seja, lay-outs diferentes. Neste caso é importante utilizar o INTO para denominar qual será a área que, após o ato de leitura, o registro deverá ser colocado.

AT END (COMANDO) verifica se o registro lido é a marca de fim de arquivo. Se for, será executado a(s) instrução(ões) descrita(s) e apresentada(s) dentro da estrutura de COMANDO. Caso nesta leitura não se tenha encontrado a marca de fim de arquivo, ou seja, achou registro e este foi transportado para a sua área definida na FD, o programa ignora a(s) instrução(ões) descrita(s) e apresentada(s) dentro da estrutura de COMANDO e executará o primeiro comando após o ponto final do comando READ. Esta opção de teste de encontro de final de arquivo (AT END) só deve ser utilizada em arquivos que estão sendo manipulados sequencialmente, ou seja, em arquivos que foram declarados na SELECT com ACCESS MODE IS SEQUENTIAL.

INVALID KEY serve para processamentos aleatórios, ou seja, para verificação se foi ou não encontrado (lido) o registro com a chave de acesso solicitada. Caso o registro não seja encontrado o programa executará a(s) instrução(ões) descritas e apresentadas dentro da estrutura de COMANDO. Caso o registro solicitado seja encontrado ele ignora toda a(s) instrução(ões) descrita(s) e apresentada(s) dentro da estrutura de COMANDO e executará o primeiro comando após o ponto final do comando READ. Obs: Para as leituras aleatórias é necessário, antes do READ, uma movimentação da chave a ser lida para o campo-chave do arquivo (RECORD-KEY).

Exemplos: READ CAD-SOCIO.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 23

Page 24: Apostila de Cobol

FACULDADE IBERO AMERICANA

READ CAD-SOCIO INTO REG-SOCIO.

READ CAD-SOCIO INTO REG-SOCIO AT END MOVE "SIM" TO CHF.

MOVE 10 TO MATRIC-SOCIO. READ CAD-SOCIO INVALID KEY GO TO ERRO-LEITURA.

COMANDO WRITE: Permite efetuar a gravação de um registro num arquivo, que deve ser aberto com OUTPUT ou I-O. Através deste comando, o conteúdo da área reservada a este registro na FD do arquivo, será transferido fisicamente para o arquivo de saída (disco, fita, relatório, etc).

Formato: WRITE NOME-DO-REGISTRO FROM NOME-DADO AFTER/BEFORE PAGE/ N LINES.

Onde: NOME-DO-REGISTRO é o mesmo descrito e definido com o nível 01 da FD do arquivo.

FROM faz com que o nome-dado seja movido para o nome-do-registro, antes da gravação.

NOME-DADO pode ser qualquer campo ou área definida na Working-Storage Section da Data Division.

AFTER é usado exclusivamente quando o arquivo de saída é um relatório. Fará com que seja executado primeiro o comando apresentado após ele (after), para só depois o comando antes dele.

BEFORE é usado exclusivamente quando o arquivo de saída é um relatório. Fará com que seja executado primeiro o comando apresentado antes dele (before), para só depois o comando após ele.

PAGE é usado exclusivamente quando o arquivo de saída é um relatório. Fará o avanço de uma folha posicionando a página na primeira linha.

Exemplos: WRITE REG-RELATO.

WRITE REG-RELATO FROM CABEC-3.

WRITE REG-RELATO FROM CABEC-1 AFTER PAGE.

WRITE REG-RELATO FROM CABEC-2 BEFORE 2 LINES.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 24

Page 25: Apostila de Cobol

FACULDADE IBERO AMERICANA Obs: Para gravação de registros de forma aleatória é necessário, antes do WRITE, uma movimentação do campo-chave a ser gravado para a chave do arquivo

(RECORD KEY).

COMANDO DELETE: Permite deletar registros que foram recentemente lidos.

Formato: DELETE NOME-DO-ARQUIVO.

Obs: O nome-do-arquivo deve ser exatamente o mesmo definido na cláusula SELECT da Environment Division. Apesar da sintaxe utilizar o “nome-do-arquivo”, na verdade será deletado o registro que se encontra dentro da FD deste arquivo. Para que este registro esteja dentro da FD há necessidade do registro ter sido lido.

Exemplos: DELETE CAD-SOCIO.

COMANDO ACCEPT: Permite o recebimento de dados de outra origem que não seja dos arquivos de entrada do programa. Estes dados poderão dar entrada ao programa através de algo digitado na tela ou por "cartões-parâmetros" no ambiente mainframe. É usado somente para dar enttrada a um pequeno volume de dados, ou para recebimento de telas ou itens de telas.

Formato: ACCEPT [NOME-DADO-1] FROM DATE/DAY/TIME/ESCAPE KEY. ou ACCEPT (LIN,COL) [NOME-DADO-1].

Onde: NOME-DADO-1 é uma área que foi definida na Working-Storage Section que receberá o conteúdo do DATE, DAY, TIME do DOS ou ESCAPE KEY.

ESCAPE KEY é utilizado para que o programa tenha como testar qual foi a tecla pressionada pelo operador/ executor do programa. Desta forma será colocado no campo da Working [nome-dado-1] o valor da última tecla acionada. Os valores possíveis são: 00 - Tecla "Enter" 01 - Tecla "ESC" 02 - Tecla "CRTL A" 03 - Tecla "CRTL C" 04 - Tecla "CRTL X"

(LIN, COL) será colocado no campo [nome-dado-1] o valor digitado a partir da linha (LIN) e coluna(COL) do Accept.

Exemplos: ACCEPT DATASIS FROM DATE.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 25

Page 26: Apostila de Cobol

FACULDADE IBERO AMERICANA ACCEPT DATA-HOJE FROM DAY.

ACCEPT (10,7) DADO. ACCEPT TELA-01.

Obs: será carregado nos campos definidos na TELA-01 da Screen Section os valores digitados e carregados na tela editada no vídeo. Poderão ser utilizados, em combinação, as várias cláusulas descritas no Capítulo XVI-3A deste trabalho.

COMANDO DISPLAY: Permite escrever o conteúdo de uma ou mais variáveis em determinado dispositivo de saída. É usado para pequeno volume de dados de saída. Usado normalmente para apresentação de dados ou tela no vídeo, ou também para imprimir mensagem de erros em relatórios.

Formato: DISPLAY CONSTANTE/NOME-DADO-1 UPON PRINTER/CONSOLE. ou DISPLAY (LIN,COL) CONSTANTE/NOME-DADO-1.

Onde: CONSTANTE poderá ser um conteúdo qualquer, uma mensagem, um aviso ao operador, um erro, etc.

NOME-DADO-1 é uma área definida em Working-Storage Section que estará sendo apresentada em vídeo.

UPON PRINTER/CONSOLE é a determinação de onde será apresentado o nome-dado-1 ou constante. Se for declarado Printer o valor será descarregado em relatório. Caso seja declarado Console o valor será descarregado em vídeo. o Default é console. (LIN, COL) será colocado na linha (LIN) e coluna (COL) o valor da constante o nome-dado-1.

Exemplos: DISPLAY "BENVINDO AO SISTEMA".

DISPLAY "ERRO DE ACESSO AO ARQUIVO" UPON PRINTER.

DISPLAY (10,7) DADO-1.

DISPLAY TELA-1.

Obs: será apresentado no vídeo todos os campos, bem como lay-out, da TELA-01 da Screen Section. Poderão ser utilizados, em combinação, as várias cláusulas descritas no Capítulo XVI-3A deste trabalho.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 26

Page 27: Apostila de Cobol

FACULDADE IBERO AMERICANA

CAPÍTULO XVII-2-COMANDOS ARITMÉTICOS

COMANDO ADD: Utilizado para efetuar adição do conteúdo de uma ou mais campos ou constantes, em um ou mais campos.

Formato: ADD CONSTANTE/NOME-DADO-1 TO NOME-DADO-2 (GIVING) NOME- DADO-3.

Onde: CONSTANTE pode ser um algarismo qualquer.

NOME-DADO-1 pode ser um campo ou área de trabalho qualquer.

TO indicará que a CONTANTE/NOME-DADO-1 será acrescido ao NOME-DADO-2 colocando o resultado no NOME-DADO-2. GIVING é opcional no comando ADD, ou seja, você poderá ou não, querer gerar o resultado da adição numa outra área independente das que estão sendo utilizadas para efetuar a operação. O conteúdo do NOME-DADO-3 não comporá a adição.

Exemplos: ADD 1 TO A. A=A+1

ADD A B TO C. C=C+B+A

ADD A TO B GIVING C. C=B+A

ADD 10 TO A B. A=A+10 e B=B+10

ADD VALOR TO TOTAL. TOTAL=TOTAL+VALOR

Obs: Na adição os dados tratados devem ser numéricos (PIC 9).

COMANDO SUBTRACT: Efetua a subtração do conteúdo de um ou mais campos ou constantes, em um ou mais campos.

Formato: SUBTRACT CONSTANTE/NOME-DADO1 FROM NOME-DADO2 (GIVING) NOME-DADO3.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 27

Page 28: Apostila de Cobol

FACULDADE IBERO AMERICANA

Onde: CONSTANTE pode ser um algarismo qualquer.

NOME-DADO-1 pode ser um campo ou área de trabalho qualquer.

FROM indicará que a CONTANTE/NOME-DADO-1 será decrescido ao NOME-DADO-2 colocando o resultado no NOME-DADO-2. GIVING é opcional no comando SUBTRACT, ou seja, você poderá ou não, querer gerar o resultado da subtração numa outra área independente das que estão sendo utilizadas para efetuar a operação. O conteúdo do NOME-DADO-3 não comporá a subtração.

Exemplos: SUBTRACT A FROM B. B=B-A

SUBTRACT A B FROM C. C=C-(B+A)

SUBTRACT A B FROM C GIVING D. D=C-(A+B)

SUBTRACT 10 FROM DADO-2.

Obs: Na subtração os dados tratados devem ser numéricos (PIC 9). Se o resultado da subtração for negativo e o campo receptor não tiver sinal (S na sua PIC), o resultado quando apresentado será positivo.

COMANDO DIVIDE: Efetua a divisão do conteúdo de um campo ou constante, por outro campo.

Formato: DIVIDE CONSTANTE/NOME-DADO INTO/BY NOME-DADO/CONSTANTE GIVING NOME-DADO.

Onde: CONSTANTE pode ser um algarismo qualquer.

NOME-DADO pode ser um campo ou área de trabalho qualquer.

Exemplos: DIVIDE A INTO B. B=B/A

DIVIDE A BY B GIVING C. C=A/B

DIVIDE TOTAL INTO TOT-GER GIVING RESULT. Result=tot-ger/total

DIVIDE 100 BY 10 GIVING TOTAL. Total=100/10

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 28

Page 29: Apostila de Cobol

FACULDADE IBERO AMERICANA COMANDO MULTIPLY: Efetua a multiplicação do conteúdo de um campo ou constante, por outro campo.

Formato: MULTIPLY CONSTANTE/NOME-DADO-1 BY CONSTANTE/ NOME-DADO-2.

Onde: CONSTANTE pode ser um algarismo qualquer.

NOME-DADO pode ser um campo ou área de trabalho qualquer.

BY significa "por".

Exemplos: MULTIPLY A BY B. B=B*A

MULTIPLY VALOR BY 100. Valor=Valor*100

MULTIPLY A BY B GIVING C. C=A*B

COMANDO COMPUTE: Efetua o cálculo da expressão aritmética colocando o resultado num campo.

Formato: COMPUTE NOME-DADO=[EXPRESSAO ARITMÉTICA].

Onde: NOME-DADO é um campo ou área de trabalho qualquer.

EXPRESSÃO ARITMÉTICA é a descrição de uma sentença aritmérica normal. Nesta expressão podem ser usados os seguintets sinais:

+ para adição; - para subtração; * para multiplicação; / para divisão; ** para exponenciação; ( ) hierarquia do cáculo. Obs: A hierarquia de execução da expressão segue a mesma da matemática, ou seja, primeiro a exponenciação, segundo a multiplicação e divisão e em terceiro adição e subtração, desde que os parênteses não interfiram. No COMPUTE os dados tratados devem ser numéricos (PIC 9).

Exemplos: COMPUTE TOTAL-GERAL=TOTAL-PARCIAL + 10.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 29

Page 30: Apostila de Cobol

FACULDADE IBERO AMERICANA COMPUTE DADO-1=A+(C*D).

CAPÍTULO XVII-3- Comandos que alteram a sequência de execução

Os comandos são executados na sequência natural de acordo com a ordem de apresentação. Como resultado de uma condição o programador pode alterar essa sequência através destes comandos:

COMANDO GO TO: Desvia a execução do programa para o início do parágrafo indicado. A execução do programa será desviada para o parágrafo indicado, executando suas instruções daí (do parágrafo) para frente, sem mais retornar para a sentença da instrução GO TO. Este comando permite um desvio incondicional na execução normal do programa.

Formato: GO TO NOME-PARÁGRAFO.

Exemplos: GO TO CABEC.

GO TO FINALIZAR.

COMANDO PERFORM: Desvia a execução do programa para o início do parágrafo indicado. A execução do programa será desviada para o parágrafo indicado, executando suas instruções daí (do parágrafo) para frente até o ponto final delimitador do término do parágrafo indicado. Após isto a execução do programa retorna para a sentença da instrução PERFORM, imediatamente seguinte. Em resumo o comando PERFORM permite executar uma rotina, determinada por uma parágrafo, fora da sequência normal do programa. Após o término dessa rotina a execução passará para o comando seguinte ao PERFORM.

Formatos: PERFORM NOME-PARÁGRAFO [THRU NOME-PARÁGRAFO-2].

PERFORM NOME-PARÁGRAFO [THRU NOME-PARÁGRAFO-2] (NOME-DADO/INTEIRO) TIMES.

PERFORM NOME-PARÁGRAFO [THRU NOME-PARÁGRAFO-2] UNTIL CONDIÇÃO.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 30

Page 31: Apostila de Cobol

FACULDADE IBERO AMERICANA Onde: THRU NOME-PARÁGRAFO-2 é a determinação de qual será o parágrafo que o PERFORM irá alcançar, ou seja, iniciará o execução no NOME-PARÁGRAFO e todos os seguintes até encontrar o NOME-PARÁGRAFO-2, executando-o inclusive. Este delimitador de até onde alcançará o PERFORM, é opcional, ou seja, quando não informado o PERFORM abrangerá (executará) apenas o NOME-PARÁGRAFO.

INTEIRO LINES é a determinação da execução N vezes do NOME-PARÁGRAFO ou do NOME-PARÁGRAFO até o NOME-PARÁGRAFO-2.

UNTIL CONDIÇÃO determina que será executado o NOME-PARÁGRAFO ou o NOME-PARÁGRAFO até o NOME-PARÁGRAFO-2, até que seja satisfeita a CONDIÇÃO imposta ou declarada.

Exemplos:

PERFORM CABEC. (irá desviar a execução do programa para a rotina CABEC, executá-la e retornar para instrução logo após o ponto final deste PERFORM)

PERFORM CABEC THRU FIM-CABEC. (irá desviar a execução do programa para a rotina CABEC, executá-la até o parágrafo FIM-CABEC e retornar para instrução logo após o ponto final deste PERFORM)

PERFORM CABEC THRU FIM-DET. (irá desviar a execução do programa para a rotina CABEC, executando todas as rotinas até encontrar o parágrafo FIM-DET, retornando para instrução logo após o ponto final deste PERFORM)

PERFORM PROCES UNTIL CHF="SIM". (irá desviar a execução do programa para a rotina PROCES, executando-a simultaneamente até que a condição seja satisfeita, ou seja, CHF=""SIM". Enquanto a CHF não contenha este valor (SIM) o programa irá executar simultaneamente a rotina PROCES)

PERFORM CALCULO 10 TIMES. (irá desviar a execução do programa para a rotina CALCULO, executando-a 10 vezes repetidamente)

COMANDO STOP: encerra definitivamente ou temporariamente a execução do programa.

Formato: STOP RUN/LITERAL.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 31

Page 32: Apostila de Cobol

FACULDADE IBERO AMERICANA Onde: RUN encerra definitivamente a execução do programa, avisando o sistema operacional que o programa encerrou e portanto liberando todos os arquivos e áreas definidas em memória.

LITERAL Pára a execução do programa, exibindo na tela a Literal definida na Working-Storage Section. Para continuar o processamento basta o operador teclar "CTRL".

Exemplo: STOP RUN.

STOP LITERAL-1.

CAPÍTULO XVII-4- COMANDOS DE MOVIMENTAÇÃO DE DADOS

Na verdade este capítulo resume-se em apenas um comando. Este recurso de movimentação de dados tem como objetivos: - transferir o valor de um campo ou uma constante para um ou mais campos;

- tranferir o valor de um registro montado em memória, por exemplo de entrada, para um outro registro que se encontra em memória, por exemplo de saída.

Formato:

MOVE NOME-DADO-1 TO NOME-DADO2 NOME-DADO-3. LITERAL CONSTANTE

Exemplos: MOVE 0 TO CTLIN.

MOVE REG-ENT TO REG-SAI.

MOVE CAMPO-1-ENT TO CAMPO-1-SAI.

Obs: Na movimentação de dados numéricos a transferência da origem para o destino ocorre o ajustamento da direita para a esquerda, portanto deve-se sempre observar o tamanho destes dados para se evitar perda. Os dados alfanuméricos obedece a mesma observação, cabendo salientar que,neste caso, o ajustamento da transferência se efetua da esquerda para a direita, ou seja, o inverso.

CAPÍTULO XVII-5- COMANDOS CONDICIONAIS

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 32

Page 33: Apostila de Cobol

FACULDADE IBERO AMERICANA

Este comando permite conhecer (checar) em que condição se encontra determinado campo, área, etc. Com ele poderemos efetuar: - relacionamento simples; - teste de sinal; - teste de classe.

a. Teste de Relacionamento Simples Formato:

IF NOME-DADO-1 [IS](NOT) GREATER THAN / LESS THAN / EQUAL TO NOME-DADO-2 / CONSTANTE [THAN] COMANDO(s).

Onde: IS significa "É". NOT significa "NÃO". O formato do comando lhe permite a conjugação do IS e do NOT para montagem do "NÃO É". Estas variações são opcionais.

GREATER THAN significa "MAIOR QUE", sendo que no formato do comando o THAN é opcional. Você pode utilizar também o símbolo ">".

LESS THAN significa "MENOR QUE", sendo que no formato do comando o THAN é opcional. Você pode utilizar também o símbolo "<".

EQUAL TO significa "IGUAL A", sendo que no formato do comando o TO é opcional. Você pode utilizar também o símbolo "=".

THEN significa "ENTÃO", sendo que no formato do comando o THEN é opcional.

COMANDO(s) é(são) a(s) instrução(ões) que será(ão) executada(s) caso após o teste, o programa tenha que executar a saída "SIM".

Exemplos:

IF CAMPO-1 IS EQUAL TO 10 PERFORM ROT-1. ou IF CAMPO-1 = 10 PERFORM ROT-1.

IF CTLIN GREATER THAN 45 THEN PERFORM CABEC. ou IF CTLIN > 45 PERFORM CABEC.

Obs: O comando IF está testando o valor da expressão condicional verificando se o resultado é verdadeiro (S) ou falso (N). Neste formato de comando IF, se o programa sair executando pela saída (S) ele executará o(s) comando(s) na mesma

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 33

Page 34: Apostila de Cobol

FACULDADE IBERO AMERICANAsequência do comando IF até encontrar o ponto-final que fecha o IF. Se o programa sair pela condição (N) todo(s) esse(s) comando(s) será(ão) ignorado(s) e o programa prosseguirá executando o primeiro comando após o ponto-final do IF.

b. Teste de Sinal Formato:

IF NOME-DADO-1 [IS](NOT) POSITIVE COMANDO(s). NEGATIVE ZERO

Onde: IS significa "É". NOT significa "NÃO". O formato do comando lhe permite a conjugação do IS e do NOT para montagem do "NÃO É". Estas variações são opcionais.

POSITIVE é "positivo" e NEGATIVE é "negativo".

Exemplos: IF TOT-CAL IS POSITIVE GO TO ROT-FIM.

IF TOT-CAL IS NOT NEGATIVE PERFORM CORREÇAO.

IF TOT-CAL IS ZERO GO TO FINALIZAR.

c. Teste de Classe

Formato:

IF NOME-DADO-1 [IS](NOT) NUMERIC COMANDO(s). ALFANUMERIC

Onde: IS significa "É". NOT significa "NÃO". O formato do comando lhe permite a conjugação do IS e do NOT para montagem do "NÃO É". Estas variações são opcionais.

NUMERIC significa "numérico" e ALFANUMERIC "alfanumérico".

Exemplos: IF CAMPO-1 IS NUMERIC PERFORM CALCULO.

IF CAMPO-1 ALFANUMERIC MOVE CAMPO-1 TO CAMPO-2.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 34

Page 35: Apostila de Cobol

FACULDADE IBERO AMERICANA Até o momento vimos variações do comando IF que apenas demonstravam claramente o que o programa deveria executar caso saísse pela alternativa (S), deixando a alternativa (N) não muito clara, ou seja, na verdade a alternativa (N) será executada sempre após o ponto-final do IF. Agora vamos ver um outro formato do comando IF que permitirá expor explicitamente o que o programa deve executar na alternativa (S) e na alternativa (N).

Formato:

IF [EXPRESSÃO CONDICIONAL / LÓGICA] COMANDOs / NEXT SENTENCE ELSE COMANDOs / NEXT SENTENCE.

Onde: EXPRESSÃO CONDCIONAL / LÓGICA poderá se qualquer uma das demonstradas peelas letras "a", "b" e "c" deste capítulo.

ELSE significa "SENÃO".

NEXT SENTENCE é um comando utilizado exclusivamente dentrto de um IF que serve para desviar a execução do programa para a "próxima sentença" do programa após o ponto-final do IF.

Exemplos:

IF CTLIN EQUAL 10 PERFORM CABEC ELSE PERFORM DETALHE.

Neste exemplo de comando IF com ELSE, se o CTLIN for = a 10 o programa

executará EXCLUSIVAMENTE a rotina CABEC e em seguida executará o comando que se apresentar após o ponto-final do comando IF. Analogamente se o CTLIN não for = a 10, o programa executará EXCLUSIVAMENTE a rotina DETALHE e em seguida o comando após o ponto-final do IF. Ou seja, neste estrutura de IF, o programa executará ou o CABEC ou o DETALHE, nunca os dois juntos. Para que esta estrutura de IF seja considerada logicamente correta, deveríamos tê-la codificado da seguinte forma:

IF CTLIN EQUAL 10 PERFORM CABEC ELSE NEXT SENTENCE.

PERFORM DETALHE.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 35

Page 36: Apostila de Cobol

FACULDADE IBERO AMERICANA

Neste formato do comando IF (com ELSE), quando o CTLIN for = a 10 o programa executará a rotina CABEC e em seguida executará o comando que se apresentar após o ponto-final do comando IF, ou seja o DETALHE. Analogamente se o CTLIN não for = a 10, o programa executará o NEXT SENTENCE e portanto a rotina DETALHE.

CAPÍTULO XVIII - UTILIZANDO O COMPILADOR COBOL

Para que seja efetuada a transformação do seu programa fonte em programa objeto ou executável, ou seja, em linguagem de máquina, haverá necessidade de submeter o seu fonte ao software COBOL. Este software procederá numa primeira etapa a compilação do seu programa. Este processo consiste na verificação de todas as sentenças do seu programa, verificando se há algum caracter não reconhecido, bem como realizará a verificação da sintaxe (formato) de cada uma das sentenças, portanto de cada uma das instruções. Caso ele verifique algum erro, será apontado a você tanto na tela como também em listagem, caso você deseje. Se após a compilação não haja nenhum erro de formato, ele efetuará a tradução do seu código fonte em código de máquina e que consequentemente lhe propiciará a oportunidade de definitivamente executá-lo.

Para se efetuar a compilação você deverá agir da seguinte forma:

1) criar o programa fonte; 2) conhecer onde está instalado o pacote software COBOL; 3) digitar: COBOL NOME-DO-PROGRAMA; (enter) Este NOME-DO-PROGRAMA deverá ter extensão .COB obrigatoriamente. O comando COBOL deverá ser emitido do subdiretório que contenha o software COBOL, ou do seu subdiretório de trabalho caso o PATH do seu ambiente esteja apontado para o subdiretório onde se encontra o COBOL. 4) Efetuado o passo anterior, aparecerá na tela: SOURCE FILENAME [.COB]: 5) Digitar o nome do seu programa fonte, sem a extensão; (enter) 6) Efetuado o passo anterior, aparecerá na tela: OBJECT FILENAME [.OBJ]: 7) Digitar o nome que o seu programa em linguagem de máquina terá, que não necessariamente precisará ser o mesmo que o nome do programa fonte; (enter) 8) Efetuado o passo anterior, aparecerá na tela: SOURCE LISTING [.LST]: 9) Digitar um nome de arquivo para a listagem da compilação. Caso não deseje a listagem, não atribua nome nenhum e pressione "enter"; 10) Após toda esta sequência o software COBOL irá analisar todas as linhas de seu programa-fonte. Poderão ser apontados erros do tipo "W" que significa erros

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 36

Page 37: Apostila de Cobol

FACULDADE IBERO AMERICANAWARNING, ou seja, “tome cuidado” pois esses erros poderão lhe causar problemas depois, mas o COBOL não cancelará a tradução do COBOL para a linguagem de máquina. O outro tipo de erro que poderá aparecer será do tipo "E" que significa erro fatal e portanto não efetuará a tradução. Você deverá efetuar a correção no seu programa fonte.

Para efeutar a execução do seu programa, você deverá:

1) Ter efetuado todas as etapas necessárias à compilação e ter obtido resultado positivo, ou seja, ter criado o seu programa .OBJ; 2) Possuir os arquivos de entrada solicitados pelo seu programa; 3) conhecer onde está instalado o pacote software COBOL; 4) Digitar RUNCOB NOME-DO-PROGRAMA-OBJETO; O comando RUNCOB deverá ser emitido do subdiretório que contenha o software COBOL, ou do seu subdiretório de trabalho caso o PATH do seu ambiente esteja apontado para o subdiretório onde se encontra o COBOL.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 37

Page 38: Apostila de Cobol

FACULDADE IBERO AMERICANA

CAPÍTULO XIX - ERROS DE COMPILAÇÃO E EXECUÇÃO

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 38

Page 39: Apostila de Cobol

FACULDADE IBERO AMERICANA

CAPÍTULO XX - MODELO DA PROCEDURE DIVISION

PROCEDURE DIVISION. 01-01-ROT-PRINCIPAL. PERFORM 02-01-INICIAR. PERFORM 03-01-PROCESSAR UNTIL CHF='SIM'. PERFORM 04-01-FINALIZAR. STOP RUN. 02-01-INICIAR. PERFORM 02-02-TRANSDATA. PERFORM 02-03-ABRIR. PERFORM 02-04-LER. 02-02-TRANSDATA. ACCEPT DATASIS FROM DATE. MOVE MES-SIS TO MM. MOVE ANO-SIS TO AA. MOVE DIA-SIS TO DD. 02-03-ABRIR. OPEN INPUT CAD-SOCIO. OPEN OUTPUT RELATO. 02-04-LER. READ CAD-SOCIO AT END MOVE 'SIM' TO CHF. 03-01-PROCESSAR. ADD 1 TO TOTLID. IF SITUACAO-SOCIO EQUAL 1 PERFORM 03-02-IMPRIMIR ELSE PERFORM 03-03-ACUMULAR. PERFORM 02-04-LER. 03-02-IMPRIMIR. ADD 1 TO TOTINADIM. IF CTLIN GREATER THAN 39 PERFORM 03-04-CAB ELSE PERFORM 03-05-DETALHE. 03-04-CAB. ADD 1 TO CTPAG. MOVE CTPAG TO PAGCAB1. MOVE CABEC1 TO REG-SAI. WRITE REG-SAI. MOVE SPACES TO REG-SAI. WRITE REG-SAI.CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 39

Page 40: Apostila de Cobol

FACULDADE IBERO AMERICANA WRITE REG-SAI FROM CABEC2 AFTER 2 LINES. WRITE REG-SAI FROM CABEC3 AFTER 2 LINES. MOVE SPACES TO REG-SAI. WRITE REG-SAI. MOVE 0 TO CTLIN. 03-05-DETALHE. MOVE NOME-SOCIO TO NOME-REL. MOVE MES-PAG TO MES-PAGO-REL. MOVE VALOR-SOCIO TO VALOR-REL. WRITE REG-SAI FROM LINDET. 03-03-ACUMULAR. COMPUTE TOTARRE = TOTARRE + VALOR-SOCIO. 04-01-FINALIZAR. PERFORM 04-02-IMPTOT. PERFORM 04-03-FECHAR. 04-02-IMPTOT. MOVE SPACES TO REG-SAI. WRITE REG-SAI. MOVE TOTLID TO TOTLIDOS. WRITE REG-SAI FROM RODAPE1. MOVE TOTINADIM TO TOTINAD. WRITE REG-SAI FROM RODAPE2. MOVE TOTARRE TO TOTARRECA. WRITE REG-SAI FROM RODAPE3.

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 40

Page 41: Apostila de Cobol

FACULDADE IBERO AMERICANA

INDÍCE REMISSIVO

A

ACCESS MODE, 7; 8; 16; 19

Á

áreas de trabalho, 3; 11

A

arquivo, 5; 7; 8; 9; 10; 11; 12; 18; 19; 20; 21; 31AUTHOR, 6; 16

C

cláusulas, 3; 5; 6; 8; 13; 14; 15; 21; 22COBOL, 2; 3; 4; 5; 6; 7; 8; 9; 11; 13; 18; 30; 31código de máquina, 2; 30códigos simbólicos, 2Coluna, 5compilador, 5; 6; 7; 8computador, 6; 7constantes, 3; 4; 22; 23

D

divisões, 3; 5; 6

E

erro, 9; 13; 18; 22; 30; 31ESTRUTURA DO COBOL, 6

F

FILE STATUS IS, 7FONTE, 2; 5; 7; 16; 30; 31frases, 3; 6

I

INDENTIFICATION DIVISION, 6

L

LINGUAGEM, 2; 3; 6; 30; 31literais, 4; 5; 9

M

margem, 5; 18mensagens, 6

O

ORGANIZATION IS, 7; 16

P

palavras, 2; 4; 5; 6parágrafos, 3; 6; 18PROGRAMA, 2; 3; 5; 6; 7; 8; 9; 10; 11; 12; 13; 14;

15; 16; 18; 19; 21; 25; 26; 27; 28; 29; 30; 31PROGRAM-ID, 6; 16

S

SECURITY, 6; 16sentenças, 3; 5; 6; 30sintaxe, 2; 6; 18; 21; 30

V

variáveis, 3; 5; 21

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 41

Page 42: Apostila de Cobol

FACULDADE IBERO AMERICANA

CURSO DE ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO 42