Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


COBOL Student Guide, Notas de estudo de Informática

Cobol Para Mainframe

Tipologia: Notas de estudo

2014

Compartilhado em 31/03/2014

xpto121520
xpto121520 🇧🇷

4.6

(27)

94 documentos

1 / 39

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27

Pré-visualização parcial do texto

Baixe COBOL Student Guide e outras Notas de estudo em PDF para Informática, somente na Docsity!

Cobol para Mainframe Cobol para Mainframe

COBOL

COmmon Business Oriented Language

Cobol para Mainframe Cobol para Mainframe

  • Accept Índice Página
  • Add
  • Book
  • Call
  • Compute
  • Configuração da Folha de Programação
  • Configuration Section
  • Data Division
  • Definindo um arquivo SORT
  • Divide
  • Environment Division
  • Estrutura Lógica do Cobol
  • Execício com Perform
  • Executando um arquivo SORT
  • Exercício com Call
  • Exercício com Evaluate
  • Exercício com Search
  • File Section
  • File Status
  • Go To
  • Identification Division
  • IF
  • Initialize
  • Input-Output Section
  • inspect
  • Linkage Section
  • Move
  • Multiply
  • Números de Níveis
  • O Cobol
  • O Nascimento do Cobol
  • Open
  • Palavras Reservadas
  • Palavras
  • Perform
  • Picture
  • Procedure Division
  • Read Índice Página
  • Redefines
  • Regravação do VSAM
  • Search
  • Select de um arquivo VSAM
  • Set
  • Stop
  • Subtract
  • Tabela Monodimensional
  • Tabela Multidimensional
  • Working-Storage Secion
  • Write

Cobol para Mainframe Cobol para Mainframe

O Cobol - Continuação

o C, inclusão como linguagem de primeira classe em ambientes de

desenvolvimento como o .NET da Microsoft e a capacidade de operar em

ambientes fechados como Java (incluindo COBOL em instâncias de EJB^6 ) e

acesso a qualquer base SQL.

Estrutura Lógica do Cobol

LEGENDA

1 )Cobol ( COmmon Business Oriented Language ) - Linguagem de

programação de alto nível.

2 ) z/OS: (z Operational System) Sistema operacional utilizado nas máquinas

Mainframe série Z

3 ) Bug do milênio: Campos que continham datas com dois dígitos para do

Ano, na virada do século este campo passaria a obter o valor zero, alguns cálculos ou indexação de dados causariam um erro no programa, uma das soluções foi converter este campo para 4 posições contendo o século e ano.

4 ) Unicode: É um padrão que permite aos computadores representar e

manipular, de forma consistente, texto de qualquer sistema de escrita existente.

5 ) XML: (eXtensible Markup Language) é uma recomendação da W 3 C para

gerar linguagens de marcação para necessidades especiais.

6 ) EJB: (Extensible Java Profiler) são componentes Java distribuídos, que

rodam em um servidor de aplicações. Uma aplicação Java cliente pode se conectar remotamente a um servidor de aplicações, instanciar um EJB e trabalhar com ele como se fosse uma classe local. Como falamos anteriormente que o Cobol foi elaborado como se fosse um livro, o Cobol é composto de 4 divisões nos quais algumas possuem seções e nestas seções poderão conter vários parágrafos:

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

Environment Division

Fará a ligação com o ambiente operacional onde o programa será executado, faz a interface dos arquivos lógicos que o programa usará com os arquivos físicos.

Configuration Section

Esta seção destina-se a configuração do ambiente, ela é composta por três partes: SOURCE-COMPUTER e OBJECT-COMPUTER. Uma identifica o computador onde foi confeccionado o programa e a segunda identifica o computador do ambiente de produção, 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 e também constantes regionais.

File Section

Esta seção destina-se a configuração do ambiente de Leitura e Gravação, ela possui duas partes: FILE-CONTROL e I-O-CONTROL. A primeira destina-se a especificação dos arquivos que o programa irá acessar. A segunda foi descontinuada nas versões mais atuais do compilador, valendo apenas para os ambientes de Mainframe.

Identification 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. As duas principais seções são: a FILE SECTION e a WORKING-STORAGE SECTION.

Cobol para Mainframe Cobol para Mainframe

Estrutura Lógica do Cobol

File Status

Descreve o conteúdo e a organização dos arquivos FILE-DESCRIPTION (FD) descreve os registro de dados dos arquivos. SORT-MERGE-FILE-DESCRIPTION (SD) descreve os registros de dados que serão classificados.

Input-Output 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. Procure utilizar o mínimo de níveis 01 (zero hum) nesta seção, agrupando o máximo suas variáveis. Os nomes associados a itens de grupo ou elementares devem respeitar as regras de formação de nomes de dados ou seja procure realmente colocar nomes significativos nestas variáveis.

Linkage Section

Nesta seção procure definir todos os INCLUDE das tabelas (SQLCA, DCLGEN's) e seus CURSORES, também podemos ter variáveis de todos os níveis, constantes e book de dados. COMMUNICATION SECTION Estabelece ligações entre o programa COBOL e programas de controle de teleprocessamento 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 LINKAGE-STORAGE SECTION É utilizada para aceitar dados pelo JCL ou ligar o programa principal a outros programas. 1 - São validas as regras referentes as apresentadas na 'WORKING-STORAGE SECTION'. 2 - A clausula 'VALUE' somente pode ser especificada para itens de nível ' 88 '. 3 - Assume-se que para cada item passado tem que ser de nível ' 01 ' ou nível ' 77 ' (Limite de full-word). 4 - Pelo 'PARM' pode ser passado até 100 caracteres (Bytes). 5 - Para definição da 'LINKAGE SECTION' quando recebe algum dado pelo 'PARM' os dois primeiros bytes devem ser definidos como binário, pois estes bytes conterão

O Nascimento do Cobol

Estrutura Lógica do Cobol

6 - Quando se faz a ligação entre programas o programa chamado deve conter a clausula 'LINKAGE SECTION', e seus referidos campos de definição, quanto ao programa chamador este deve conter os mesmos campos da 'LINKAGE' na 'WORKING-STORAGE' sendo obrigatório os campos a serem passados estarem na mesma ordem do programa chamador.

Procedure Division

Seqüência de instruções que serão executadas no programa, as seções da procedure division, nesta divisão não existem seções pré-definidas, o programador poderá informar um número ilimitados de seções, para isso basta indicar logo após uma rotina a palavra SECTION.

Cobol para Mainframe Cobol para Mainframe

Divisões

IDENTIFICATION

É a primeira das quatro divisões, sendo utilizado para identificar o programa, os dados introduzidos pela 'IDENTIFICATION DIVISION', são tratados pelo compilador COBOL como comentários, não sendo traduzidos em linguagem de maquina, seu formato é: 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... IDENTIFICATION DIVISION. PROGRAM-ID. NOME DO PROGRAMA. [ AUTHOR. NOME DO PROGRAMADOR. ] [ INSTALLATION. LOCAL DE USO OU GERAÇÃO DO PROGRAMA. ] [ DATE-WRITTEN. DATA EM QUE FOI ESCRITO O PROGRAMA. ] [ DATE-COMPILED. DATA EM QUE FOI COMPILADO O PROGRAMA. ] [ SECURITY. COMENTARIOS SOBRE A SEGURANÇA EM GERAL. ] [ REMARKS. COMENTARIOS SOBRE O PROGRAMA. ] Algumas normas devem ser observadas:

1 - DIVISION deverá começar na coluna 8 (Margem “A”) e termina num ponto.

2 - PARÁGRAFOS (PROGRAM-ID, AUTHOR e Etc) deverá começa na coluna 8

(Margem “A”) e termina num ponto. 3 - Nome de parágrafo (NOME DO PROGRAMA, NOME DO PROGRAMADOR e Etc, deverá começar pelos menos na coluna 12 (Margem “B”) 4 - As chaves ( [ ] ) são usada para indicação de opcionalidade de cláusulas do Cobol não faz parte da codificação. 5 - Nome do programa: Conjunto de 8 caracteres começando por letra, não podendo usar caracteres especiais (@$&*# Etc)

6 - A opção DATE-COMPILED não deve ser preenchida, pois é o compilador que

fará isso. 7 - Exemplo: 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... 000010 IDENTIFICATION DIVISIO. 000020 PROGRAM-ID. PROGR001. 000030 AUTHOR. BIRA. 000040 INSTALLATION. MFS TREINAMENTOS. 000050 DATE-WRITTEN. 12/03/2013. 000060 DATE-COMPILED. 000070 SECURITY. ESTE PGM SERA UTILIZANDO POR PESSOAS DE NIVEL 7. 000080 REMARKS. NÃO ESQUECER DE SALVAR O CAD.ATUAL COMO ANTIGO.

ENVIRONMENT

Identifica a maquina que esta sendo usada. Contêm a descrição do computador e a designação dos arquivos para as respectivas unidades de configuração do computador. É dividida em duas seções: CONFIGURATION SECTION. e INPUT-OUTPUT SECTION. CONFIGURATION SECTION É utilizada para fornecer informações sobre o computador. É dividida em 3 parágrafos: SOURCE-COMPUTER. Nome do computador que irá compilar o programa, havia muita importância nos primórdios do COBOL, pois os computadores que compilava não era o mesmo que executava, hoje é somente um comentário. OBJECT-COMPUTER. Nome do computador que irá executar o programa , os demais comentários do parágrafo SOURCE se aplica a este também. SPECIAL-NAMES: Podemos associar nomes de funções à alguns dispositivos COBOL, como por exemplo o nome simbólico referente a impressora, segue abaixo alguns nomes-de-funções: SYSLST: Relacionada à impressora CONSOLE: Relacionada à console do operador C 01 a C 12 : Canal de salto associada a impressora. Sempre que o nome SALTO-DE-PAGINA for utilizado na PROCEDURE DIVISION, o computador executará um salto de página na impressora. O nome SALTO-DE-PAGINA, é um nome-simbólico. Exemplo: SPECIAL-NAMES. C 01 IS SALTO-DE-PAGINA. DECIMAL-POINT IS COMMA: Têm como objetivo, substituir ponto por vírgula e vice-versa devido à nossa tradicional conotação não anglo-saxônica.

Cobol para Mainframe Cobol para Mainframe

INPUT-OUTPUT SECTION

Define arquivos utilizados pelo programa efetuando ligações com o equipamento da maquina. Está dividida em 2 parágrafos. FILE-CONTROL e I-O-CONTROL. FILE-CONTROL Neste parágrafo definiremos os arquivos que iremos usar no programa, para isso usaremos a cláusula SELECT, sua sintaxe é: 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT NOME-DO-ARQUIVO ASSIGN TO NOME-EXTERNO [ORGANIZATION IS ORGANIZACAO-DO-ARQUIVO ] [ACCESS MODE IS ACESSO-DO-ARQUIVO ] [FILE STATUS IS FILE-STATUS-DO-ARQUIVO ]. CLASS : Este conceito é muito útil, pois podemos comparar área de dados com o conteúdo das classes. Exemplo : CLASS APROVADO 'A' THRU 'C'. No programa podemos perguntar se um conteúdo de um campo é igual a APROVADO, automaticamente será comparado com 'A' ,'B' e 'C', podemos também usar a forma: CLASS REPROVADO 'D' 'E‘. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... ENVIRONMENT DIVISION. CONFIGURATION SECTION. [SOURCE-COMPUTER. NOME-DO-COMPUTADOR .] [OBJECT-COMPUTER. NOME-DO-COMPUTADOR .] [SPECIAL-NAMES. [ NOME-DE-FUNCAO IS NOME-SIMBÓLICO ] [ DECIMAL-POINT IS COMMA ] [ CLASS NOME-DA-CLASSE IS VLR-DA-CLASSE ].] Exemplo: 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. C01 IS SALTO-DE-PAGINA DECIMAL-POINT IS COMMA CLASS APROVADO IS ´A’ THRU ´C’. Exemplo: 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT ARQINPUT ASSIGN TO ENTRADA ORGANIZATION IS INDEXED ACCESS MODE IS SEQUENTIAL FILE STATUS IS FS-ARQINPUT. NOME-DO-ARQUIVO: Nome associado ao arquivo para ser manipulado no programa. NOME-EXTERNO: Nome associado ao arquivo físico no JCL de execução do programa. ORGANIZATION: Ordem em que os registros do arquivo estarão organizados, a organização será: SEQUENTIAL, o arquivo não contém índice de pesquisa, é acessado sequencialmente, INDEXED arquivo com índice de pesquisa pode ser

acessado sequencialmente ou randomicamente dependendo do ACCESS

MODE..

ACCESS MODE: Especifica como os registros serão pesquisados (acessados), o acesso deve ser: SEQUENTIAL, os registros serão acessados do início ao fim do arquivo, um após o outro, RAMDOM os registros são acessados de modo aleatórios ou DYNAMIC os registros são acessados sequencialmente ou randomicamente.. FILE STATUS: Situação do arquivo logo após a execução de um comando executado no mesmo, deverá ser um campo numérico zonado de duas posições definido na WORKING-STORAGE SECTION.

Cobol para Mainframe Cobol para Mainframe

Números de Níveis

Os números de níveis definem a hierarquia dos campos dentro do registro ou a hierarquia nas áreas auxiliares criadas pelo programador. O registro também deve ser numerado, pois ele é um item de grupo, A numeração para itens de grupo é “ 01 ”, por definição todos itens de grupo serão itens alfanuméricos. Dentro dos itens de grupo estão os itens elementares, e estes podem receber uma numeração entre “ 02 e “ 49 ”. Exemplo de codificação de um layout de um registro. LAYOUT do registro do ALUNO 1 1 2 2 3 3 3 4 5 1...5....0....5....0...5....0....5 6...0.... NOME NASCIMENTO 1 ------------------------------- 35 1....... DD/MM/AAAA 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... 01 REGISTRO-ALUNO. 05 NOME PIC X(35). 05 NASCIMENTO. 10 DD PIC 9(02). 10 FILLER PIC X(01). 10 MM PIC 9(02). 10 FILLER PIC X(01). 10 AAAA PIC 9(04). Representação no COBOL – Número de nível de 1 a 49 Níveis Especiais 77 e 88 O nível 77 define áreas auxiliares independentes, onde estes não são subdivididos e não possuem subdivisões. São comumente usados para contadores, acumuladores e indexadores. O nível 88 define nomes de condições que devem ser associados valores definidos do conteúdo de um campo determinado do registro, pois podemos associar um valor a um nome fantasia. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... 77 WK-LIDOS PIC 9(03). 01 WK-ESTADO-CIVIL PIC 9(01). 88 SOLTEIRO VALUE 1. 88 CASADO VALUE 2. Representação no COBOL – Número de nível de 77 e 88 Nota Nível 88 : Podemos fazer a verificação do campo WK-ESTADO-CIVIL se é SOLTEIRO ou CASADO, exemplo: 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... **----------------------------------------------------------------

  • O exemplo abaixo seria de uma codificação normal para checar o *
  • estrado civil de uma pessoa * ---------------------------------------------------------------- IF WK-ESTADO-CIVIL = 1 DISPLAY “SOLTEIRO” ELSE DISPLAY “CASADO” END-IF ----------------------------------------------------------------
  • O exemplo abaixo é uma codificação perguntando pelo NOME DE *
  • CONDIÇÃO * ---------------------------------------------------------------- IF WK-ESTADO-CIVIL IS SOLTEIRO DISPLAY “SOLTEIRO” ELSE DISPLAY “CASADO” END-IF**

Cobol para Mainframe Cobol para Mainframe

Picture

PICTURE ou PIC é uma cláusula que define o tipo e o tamanho do campo. O tipo pode ser: numérico, alfanumérico, alfabético e de edição. NUMÉRICO : É representado pelo número 9 e seu universo consiste nos dígitos de 0 à 9. Na representação de um campo numérico podem aparecer caracteres como “V” e/ou “S”, “V”: indicará onde será iniciada as casas decimais. “S” indicará que esse campo terá sinal, é alinhado no campo receptor da direita para esquerda. truncando os dados a esquerda. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 WK-LIDOS PIC 9(03). 77 WK-VALORES PIC 9(09)V99. 7 WK-SALDO PIC S9(07)V99. 77 WK-CONTADOR PIC S9(07)V99 COMP-3. 77 INDICE PIC S9(04) COMP. ALFANUMÉRICO : É representado pela letra “X” e seu universo consiste em letras do alfabeto, dígitos de 0 à 9 e caracteres especiais. Apesar de números serem aceitos neste tipo de campo, não podemos efetuar cálculos no mesmo, seu alinhamento no campo receptor e da esquerda para a direita, truncando os dados a direita. EDIÇÃO : Esta picture é utilizada na apresentação de dados na impressora ou no terminal num formato mascarado. Existem dois tipos de picture de edição: Picture de edição alfanumérica: neste tipo de edição poderão ser utilizado letras: X = Representa a Picture alfanumérica B = Permite a inclusão de um espaço em branco no campo 0 = Inclui zeros na posição definida na Picture 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 WK-X1 PIC 0X(02). 77 WK-X2 PIC 0X(05)BX(02). 77 WK-X3 PIC BBBX(05). 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 WK-ENDERECO PIC X(45). 77 WK-NOME PIC X(30). ALFABÉTICO : É representado pela letra “A” e seu universo consiste em letras do alfabeto, ponto, vírgula e o caractere branco. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 WK-ENDERECO PIC A(45). 77 WK-NOME PIC A(30).

RESULTADO DE MOVIMENTAÇÕES
MOVE 'SP‘ TO WK-X 1  0 SP
MOVE ' 8829950 ‘ TO WK-X 2  088299 50

MOVE 'CASA‘ TO WK-X 3  CASA (PS: 3 casas em branco

Cobol para Mainframe Cobol para Mainframe

Redefines

Existe a possibilidade no COBOL II de mudarmos os atributos de um campo, tais como, PICTURE, ESTRUTUTA-DE-DADOS (Layout), para que possamos mover valores diferentes conforme nossas necessidades, podendo assim um campo ser numérico, alfanumérico ou parte alfanumérico e parte numérico. Podemos redefinir um item com tamanho menor que o original, mas devemos ter certeza que estamos fazendo isto com um propósito específico. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 ESTRUTURA1. 05 ITEM1 PIC 9(05). 01 ESTRUTURA2 REDEFINES ESTRUTURA1. 05 ITEM2 PIC X(05). 01 ESTRUTURA3 REDEFINES ESTRUTURA2. 05 ITEM1 PIC X(02). 05 ITEM2 PIC 9(03). Nota Os campos ESTRUTURA 1 , 2 e 3 ocupam o mesmo endereço na memória do programa, apenas tem atributos diferentes, isto é dar vários nomes ao mesmo campo na memória do programa.

Book

Este comando permite que certas variáveis ou procedimentos (BOOK) sejam incorporados ao programa na compilação, facilitando e diminuindo a redundância de áreas de trabalho e códigos nos programas fontes. O comando COPY pode ser codificado em todas as divisões e seções do programa. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... FILE SECTION. COPY NOME-DO-ARQUIVO. WORKING-STORAGE SECTION. COPY NOME-DA-AREA REPLACING ==WK== BY ==LK==. PROCEDURE DIVISION. COPY NOME-DA-ROTINA. Parâmetros NOME-DA-AREA: Indica o nome do BOOK que será incorporado ao programa na compilação. REPLACING: Pesquisa todas as constantes “WK” do BOOK e troca por “LK”, na compilação e somente para o programa que acionou o COPY. Nota Tanto na FILE SECTION, quanto na WORKING-STORAGE SECTION, o COPY pode ser dado na coluna 8 , já na PROCEDURE DIVISION deve-se utilizar o COPY na coluna 12 , devido a interpretação do comando. Ocorrências Podemos definir ocorrências de campos, que chamamos de TABELA. Estes campos são definidos somente uma vez com indicação de um determinado número de repetições, estas tabelas podem ser classificadas em dimensões (níveis), podemos ter tabelas indexadas para pesquisas mais rápidas. Podem ser usadas em todas as seções do programa que definimos as variáveis (FILE, WORKING-STORAGE, LINKAGE SECTION), no nosso caso nos referenciaremos na WORKING-STORAGE SECTION. Tabela Monodimensional 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 ESTRUTURA-DE-DADOS. 05 ITEM PIC 9(05) OCCURS 15 TIMES. Nota Chamamos de MONO-DIMENSIONAL a tabela que tem em sua estrutura somente uma cláusula OCCURS. Tabela Multidimensional 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 ESTRUTURA-DE-DADOS. 05 FILLER OCCURS 100 TIMES. 10 ITEM1 PIC 9(05). 10 ITEM2 PIC X(07) OCCURS 20 TIMES. Nota Chamamos de BIDIMENSIONAL a tabela que tem em sua estrutura dois OCCURS, multidimensionais são tabelas com vários OCCURS.

Cobol para Mainframe Cobol para Mainframe

PROCEDURE DIVISION

A quarta e última divisão do COBOL é onde definimos os procedimentos (comandos e instruções) que serão a resolução de problemas de processamentos, é composta por seções e/ou parágrafos e sentenças que orientarão o fluxo de execução das informações. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... PROCEDURE DIVISION [USING AREA-1, AREA-2 ...]. Parâmetros Onde: O parâmetro USING se refere a área de comunicação entre programas, normalmente entre programas principais e subprogramas. Importante: AREA- 1 , AREA- 2 são variáveis de trabalho definidas na LINKAGE SECTION do subprograma e na WORKING-STORAGE SECTION do programa principal. Accept O comando ACCEPT recebe uma informação de dados, dependendo das cláusulas que completam o comando poderão ser: ESTRUTURA DE DADOS, DATA DO SISTEMA, DIAS DO ANO, DIA DA SEMANA e TEMPO. Recebendo dados do JCL Esta comando recebe uma área de dados da SYSIN do JOB de execução do programa, no COBOL II do MAINFRAME este comando NÃO recebe dados digitados na tela, devemos assinalar uma área de entrada no JCL. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 ESTRUTURA-DE-DADOS. 05 ITEM-DE-DADO1 PIC X(05) VALUE SPACES. 05 ITEM-DE-DADO2 PIC 9(03) VALUE ZEROS. PROCEDURE DIVISION. ACCEPT ESTRUTURA-DE-DADOS. Recebendo data do sistema Este comando recebe a data do sistema no formato de AAMMDD, onde o DD é o dia, MM é o mês e AA é o ano da data corrente do sistema. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 DATA-DO-SISTEMA. 05 ANO-DA-DATA PIC 9(02) VALUE ZEROS. 05 MES-DA-DATA PIC 9(02) VALUE ZEROS. 05 DIA-DA-DATA PIC 9(02) VALUE ZEROS. PROCEDURE DIVISION. ACCEPT DATA-DO-SISTEMA FROM DATE. Recebendo quantidade de dias do ano Este comando recebe a data do sistema no formato de AADDD, onde o AA é o ano corrente, e DDD é a quantidade de dias decorridos no ano. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 DIAS-DO-ANO. 05 ANO-DA-DATA PIC 9(02) VALUE SEROS. 05 DIAS-DA-DATA PIC 9(03) VALUE ZEROS. PROCEDURE DIVISION. ACCEPT DIAS-DO-ANO FROM DAY. Recebendo dia da semana Este comando recebe o dia da semana no campo DIA-DA-SEMANA que é um campo numérico de 1 posição. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 01 DIA-DA-SEMANA PIC 9(01) VALUE ZEROS. PROCEDURE DIVISION. ACCEPT DIA-DA-SEMANA FROM DAY-OF-WEEK. DIA-DA_SEMANA conterá os valores: 1 = SEGUNDA; 2 = TERÇA ; 3 = QUARTA ; 4 = QUINTA ;5 = SEXTA-FEIRA 6 = SÁBADO ; 7 = DOMINGO.

Cobol para Mainframe Cobol para Mainframe

Regras de movimentações Existem algumas regras de movimentações entre os campos numa programação COBOL, de modo geral elas se aplicam entre campos de configurações diferentes. As regras são: CASO 1 Campo emissor: ALFANUMÉRICO Campo receptor: ALFANUMÉRICO Resultado: Sem restrições, atentando somente se o campo receptor for menor que o campo emissor os dados serão truncados à direita, caso seja maior será completado com espaços à direita. CASO 2 Campo emissor: ALFANUMÉRICO Campo receptor: NUMÉRICO zonado sem casas decimais Resultado: Se o campo emissor for do mesmo tamanho e o conteúdo for numérico a movimentação terá sucesso, caso contrário os resultados serão inesperados. CASO 3 Campo emissor: ALFANUMÉRICO Campo receptor: NUMÉRICO zonado com casas decimais Resultado: Não Permitido.  CASO 4 Campo emissor: ALFANUMÉRICO Campo receptor: NUMÉRICO COMPACTADO Resultado: Não Permitido.  CASO 5 Campo emissor: NUMÉRICO Campo receptor: NUMÉRICO Resultado: Sem restrições, atentando somente se o campo receptor for menor que o campo emissor os dados serão truncados à esquerda, caso seja maior será completado com zeros à esquerda. CASO 6 Campo emissor: NUMÉRICO zonado sem casas decimais Campo receptor: ALFANUMÉRICO Resultado: Sem restrições, atentando somente se o campo zonado receptor for menor que o campo emissor, os dados serão truncados à direita, caso seja maior será completado com espaços à direita.

CASO 7

Campo emissor: NUMÉRICO zonado com casas decimais Campo receptor: ALFANUMÉRICO Resultado: Não Permitido. CASO 8 Campo emissor: NUMÈRICO compactado com ou sem casas decimais Campo receptor: ALFANUMÉRICO Resultado: Não Permitido. Display Exibe o conteúdo de uma variável podendo ser concatenada com uma literal, o conteúdo da variável será exibida num dispositivo de saída. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... PROCEDURE DIVISION. DISPLAY LITERAL1 VARIAVEL1 VARIAVEL Parâmetros VARIAVEL 1 / 2 : Variável que será exibida num dispositivo de saída (SYSOUT) LITERAL 1 : Constante não numérica (entre aspas) Exemplo DISPLAY ‘NOME DO ALUNO = ‘ WK-NOME-ALUNO DISPLAY ‘NOTA DO ALUNO = ‘ WK-NOTA-ALUNO Resultado NOME DO ALUNO = JOSE DA SILVA NOTA DO ALUNO = 10

Cobol para Mainframe Cobol para Mainframe

Stop

Usado para encerrar um programa em execução ou causar uma parada temporária, passamos o controle ao sistema operacional ou ao operador do sistema..

Add

O comando ADD adicionará valores numéricos ou campos numéricos em outros campos numéricos que ficarão armazenados na memória do programa, não será permitido a somatória de campos cuja a definição (PICTURE) seja alfabética ou alfanumérica. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 VARIAVEL1 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL2 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL... PIC 9(07)V99 VALUE ZEROS. PROCEDURE DIVISION. ADD VARIAVEL1 TO VARIAVEL2 VARIAVEL [ON SIZE ERROR Comandos...] END-ADD Parâmetros VARIAVEL 1 : Item de dado que será adicionado TO: Indica qual(ais) o(s) campo(s) que acumulará(ão) o valor do campo NOME-DO-DADO 1. VARIAVEL 2 , 3 : Item de dado que receberá(ão) o valor doa VARIAVEL 1 ON SIZE ERROR: Trata da condição de estouro de campo, isto ocorre quando o tamanho do(s) campo(s) receptor(es) não comporta(m) o resultado da somatória, com a omissão desta cláusula o(s) resultado(s) será(ão) truncado(s) a esquerda. END-ADD : Encerra o comando ADD, quando a cláusula ON SIZE ERROR for especificada. 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... PROCEDURE DIVISION. STOP LITERAL1. STOP RUN. Nota Há dois tipos de parada de programa, a parada temporária informando o operador de alguma anomalia ou aviso (LITERAL 1 ), neste caso o programa continuará executando após a intervenção do operador, ou a parada definitiva do programa que será ocasionada pelo parâmetro RUN. Abaixo veremos o exemplo de um programa em COBOL usando os comandos: ACCEPT(receber), MOVE(mover), DISPLAY(exibir) e STOP RUN (parar processamento). 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * IDENTIFICATION DIVISION. *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * PROGRAM-ID. PRGB??1. ENVIRONMENT DIVISION. CONFIGURATION SECTION. SPECIAL-NAMES. DECIMAL-POINT IS COMMA. *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * DATA DIVISION. *- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - * WORKING-STORAGE SECTION. 77 WK-NOME PIC X(35) VALUE SPACES. 77 WK-IDADE PIC 9(02) VALUE ZEROS. ------------------------------------------------------- PROCEDURE DIVISION. 000 - 00 - ROTINA-INICIAL. ACCEPT WK-NOM MOVE 27 TO WK-IDADE DISPLAY 'O NOME INFORMADO FOI : ' WK-NOME ' ' ' E A IDADE INFORMADA FOI DE : ' WK-IDADE ‘ ANOS!' STOP RUN.

Cobol para Mainframe Cobol para Mainframe

CASO 3 :

1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 VARIAVEL1 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL2 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL... PIC 9(07)V99 VALUE ZEROS. PROCEDURE DIVISION. DIVIDE VARIAVEL1 INTO VARIAVEL GIVING VARIAVEL3 [ROUNDED] [REMAINDER VARIAVEL4] [ON SIZE ERROR Comandos...] [END-DIVIDE] CASO 4 : 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 VARIAVEL1 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL2 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL... PIC 9(07)V99 VALUE ZEROS. PROCEDURE DIVISION. DIVIDE VARIAVEL2 BY LITERAL GIVING VARIAVEL3 [ROUNDED] [REMAINDER VARIAVEL4] [ON SIZE ERROR Comandos...] [END-DIVIDE] CASO 1 : O resultado da divisão de VARIAVEL 2 por VARIAVEL 1 será armazenado em VARIAVEL 2. CASO 2 : O resultado da divisão de VARIAVEL 2 pela LITERAL 1 será armazenado em VARIAVEL 2 , neste caso a LITERAL 1 deverá ser um número inteiro. CASO 3 : O resultado da divisão de VARIAVEL 2 por VARIAVEL 1 será armazenado em VARIAVEL 3 , neste caso aparece a cláusula REMAINDER que serve para armazenar o resto desta operação na VARIAVEL 4. CASO 4 : O resultado da divisão da VARIAVEL 2 pela LITERAL será armazenado no VARIAVEL 3 , neste caso aparece a cláusula REMAINDER que serve para armazenar os inteiros restantes desta operação no campo VARIAVEL 4 , como no CASO 2 a LITERAL 1 deverá ter um número diferente de zero. ON SIZE ERROR : Será acionada se o campo receptor não suportar o resultado da divisão (estouro de campo) ROUNDED : Será usado o sistema de 5 / 4 de arredondamento.

Cobol para Mainframe Cobol para Mainframe

Multiply

Esta instrução multiplica itens numéricos e coloca o resultado num identificador dependendo do formato usado. Parâmetros GIVING : O resultado será armazenado na variável indicada por este parâmetro, se este parâmetro for omitido o resultado será armazenado no primeiro parâmetro do comando, exceto se este for uma literal. ROUNDED : O resultado será arredondado pelo sistema 5 / 4 ON SIZE ERROR : Os comandos desta clausula serão acionados caso o campo receptor (VARIAVEL 3 ) não comportar o resultado da multiplicação 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 VARIAVEL1 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL2 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL... PIC 9(07)V99 VALUE ZEROS. PROCEDURE DIVISION. MULTIPLY VARIAVEL1 BY VARIAVEL [GIVING VARIAVEL3 [ROUNDED]] [ON SIZE ERROR Comandos... ] [END-MULTIPLY] OU MULTIPLY LITERAL1 BY VARIAVEL [GIVING VARIAVEL3 [ROUNDED]] [ON SIZE ERROR Comandos... ] [END-MULTIPLY] 1 1 2 2 2 3 3 4 4 4 5 5 6 6 6 7 1.....7 8...2...6...0...4...8...2...6...0...4...8...2...6...0...4...8... WORKING-STORAGE SECTION. 77 VARIAVEL1 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL2 PIC 9(07)V99 VALUE ZEROS. 77 VARIAVEL... PIC 9(07)V99 VALUE ZEROS. PROCEDURE DIVISION. COMPUTE VARIAVEL1 VARIAVEL2 ... [ROUNDED] = (VARIAVEL3 - VARIAVEL4 ) / (VARIAVEL5 + VARIAVEL6 )

  • (VARIAVEL7 ** 2) [ON SIZE ERROR Comandos...] END-COMPUTE. Parâmetros ROUNDED : Indica o resultado da expressão aritmética no VARIAVEL1, será arredondado pelo sistema de 5/4. ON SIZE ERROR: Caso o resultado exceder o tamanho máximo do campo VARIAVEL 1 os comandos deste parâmetro serão acionados. .

Compute

Este comando serve para fazer as operações aritméticas de vários campos numéricos e o resultado ficará armazenado em uma única variável também numérica. As expressões aritméticas usadas neste comando são: Soma (+), Subtração (-), Divisão (/), Multiplicação () e Exponenciação (*), bem como as combinações de parênteses “( )”, dando uma sequencia de execução nos cálculos aritméticos