Baixe Cobol para Mainframe e outras Manuais, Projetos, Pesquisas em PDF para Linguagem de Programação, somente na Docsity!
COBOLCOBOL
- 1-21-
- 1.1. LINGUAGEM DE PROGRAMAÇÃO COBOL 1-4LINGUAGEM DE PROGRAMAÇÃO COBOL 1-
- 1.1.1.1. HHISTÓRIAISTÓRIA 1-4........................................................................................................................................... 1-
- 1.2.1.2. AAPLICAÇÃO DAPLICAÇÃO DA LLINGUAGEMINGUAGEM COBOL 1-5COBOL 1-
- 1.3.1.3. DDESENVOLVIMENTO DE UMESENVOLVIMENTO DE UM PPROGRAMAROGRAMA COBOL 1-5COBOL 1-
- 1.4.1.4. EESTRUTURA ESTRUTURA E CCONTEÚDO DAONTEÚDO DA LLINGUAGEMINGUAGEM 1-5........................................................................................ 1-
- 1.5.1.5. EELEMENTO DELEMENTO DE LLINGUAGEMINGUAGEM 1-6................................................................................................................ 1-
- 1.5.1.1.5.1. CaracteresCaracteres 1-61-
- 1.5.2.1.5.2. CaracteresCaracteres 1-61-
- 1.5.3.1.5.3. LiteraisLiterais 1-71-
- 1.5.4.1.5.4. ConstantesConstantes FigurativasFigurativas 1-71-
- 1.5.5.1.5.5. Regras de PontuaçãoRegras de Pontuação 1-71-
- 1.5.6.1.5.6. Palavras Reservadas .......................Palavras Reservadas 1-81-
- 1.5.7.1.5.7. Codificação 1-10Codificação 1-
- 2.2. AS DIVISÕES DO COBOL 2-11AS DIVISÕES DO COBOL 2-
- 2.1.2.1. IIDENTIFICATIONDENTIFICATION DDIVISIONIVISION 2-11................................................................................................................ 2-
- 2.2.2.2. EENVIRONMENTNVIRONMENT DDIVISIONIVISION 2-11................................................................................................................. 2-
- 2.3.2.3. DDATAATA DDIVISIONIVISION 2-13................................................................................................................................ 2-
- 2.3.1.2.3.1. Números de Nível............Números de Nível............ 2-152-
- 2.3.2.2.3.2. Números de Nível Especiais ....................Números de Nível Especiais 2-162-
- 2.3.3.2.3.3. Picture ....................Picture 2-162-
- 2.3.4.2.3.4. Picture ....................Picture 2-182-
- 2.3.5.2.3.5. Cláusula VALUE 2-19Cláusula VALUE 2-
- 2.3.6.2.3.6. Exemplo de codificação da Working-storagExemplo de codificação da Working-storage Section ...................e Section 2-192-
- 2.4.2.4. PPROCEDUREROCEDURE DDIVISIONIVISION 2-20...................................................................................................................... 2-
- 3.3. COMANDOS BÁSICOS 3-21COMANDOS BÁSICOS 3-
- 3.1.3.1. OPEN 3-21OPEN 3-
- 3.2.3.2. CLOSE 3-21CLOSE 3-
- 3.3.3.3. EXITEXIT PROGRAM 3-21PROGRAM 3-
- 3.4.3.4. STOPSTOP RUN 3-22RUN 3-
- 3.5.3.5. READ 3-22READ 3-
- 3.6.3.6. MOVE 3-22MOVE 3-
- 3.7.3.7. GOGO TO 3-23TO 3-
- 3.8.3.8. WRITE 3-23WRITE 3-
- 3.9.3.9. ADD 3-24ADD 3-
- 3.10.3.10. SUBTRACT 3-24SUBTRACT 3-
- 3.11.3.11. MULTIPLY 3-25MULTIPLY 3-
- 3.12.3.12. DIVIDE 3-26DIVIDE 3-
- 3.13.3.13. COMPUTE 3-27COMPUTE 3-
- 3.14.3.14. IF 3-27IF 3-
- 3.14.1.3.14.1. Condição de Classe 3-31Condição de Classe 3-
- 3.14.2.3.14.2. Condição de Sinal 3-31Condição de Sinal 3-
- 3.14.3.3.14.3. Condição de Relação 3-31Condição de Relação 3-
- 3.14.4.3.14.4. Nome de CondiçãoNome de Condição 3-323-
- 3.14.5.3.14.5. Condições Compostas 3-33Condições Compostas 3-
- 3.15.3.15. PERMORM 3-34PERMORM 3-
- 3.16.3.16. CALL 3-35CALL 3-
- 3.17.3.17. CANCEL 3-35CANCEL 3-
- 3.18.3.18. CHAIN 3-35CHAIN 3-
- 3.19.3.19. COPY 3-36COPY 3-
- 3.20.3.20. DELETE 3-36DELETE 3-
- 3.21.3.21. ACCEPT 3-36ACCEPT 3-
- 3.22.3.22. DISPLAY 3-36DISPLAY 3-
- 3.23.3.23. REWRITE 3-37REWRITE 3-
- 3.24.3.24. SORT 3-37SORT 3- - 1-31-
- 3.25.3.25. RELEASE 3-37RELEASE 3-
- 3.26.3.26. RETURN 3-38RETURN 3-
- 3.27.3.27. EEXEMPLO DEXEMPLO DE CCODIFICAÇÃO DEODIFICAÇÃO DE PPROGRAMAROGRAMA 3-38..................................................................................... 3-
- 4.4. TELAS 4-42TELAS 4-
- 4.1.4.1. CCONCEITOONCEITO 4-42........................................................................................................................................ 4-
- 4.2.4.2. EEXIBIRXIBIR IINFORMAÇÕESNFORMAÇÕES 4-42...................................................................................................................... 4-
- 4.3.4.3. IINSERIRNSERIR IINFORMAÇÕESNFORMAÇÕES 4-42.................................................................................................................... 4-
- 4.4.4.4. EEXEMPLO DEXEMPLO DE CCODIFICAÇÃO DE UMODIFICAÇÃO DE UM PPROGRAMA DEROGRAMA DE TTELAELA 4-42................................................................. 4-
- 4.4.1.4.4.1. Proposta .................Proposta 4-424-
- 4.4.2.4.4.2. Lay-outLay-out 4-424-
- 4.4.3.4.4.3. ProcedimentosProcedimentos 4-434-
- 5.5. ORGANIZAÇÃO E MÉTODOS DE ACESSO AOS AORGANIZAÇÃO E MÉTODOS DE ACESSO AOS A RQUIVOSRQUIVOS 5-465-
- 5.1.5.1. AARQUIVOS COMRQUIVOS COM OORGANIZAÇÃORGANIZAÇÃO SSEQÜENCIALEQÜENCIAL 5-46.................................................................................. 5-
- 5.1.1.5.1.1. Exemplo de Programa Codificado .....................Exemplo de Programa Codificado 5-465-
- 5.1.1.1.5.1.1.1. PropostaProposta 5-465-
- 5.1.1.2.5.1.1.2. Lay-outs ....................Lay-outs 5-465-
- 5.1.1.3.5.1.1.3. Procedimentos ..................Procedimentos 5-475-
- 5.2.5.2. AARQUIVOS COMRQUIVOS COM OORGANIZAÇÃORGANIZAÇÃO IINDEXADANDEXADA 5-50..................................................................................... 5-
- LINGUAGEM DE PROGRAMAÇÃO COBOL1. LINGUAGEM DE PROGRAMAÇÃO COBOL
1.1. História1.1. História
Há alguns anos atrás, em 1959, alguns profissionais da área de informática como osHá alguns anos atrás, em 1959, alguns profissionais da área de informática como os
fabricantes de computadores, estudantes, representantes do governo e usuários, formaramfabricantes de computadores, estudantes, representantes do governo e usuários, formaram
uma conferência: a CODASYL, ou seja, Conference on Data Systems Language. Nestauma conferência: a CODASYL, ou seja, Conference on Data Systems Language. Nesta
conferência o principal item abordado foi a necessidade da criação de uma linguagemconferência o principal item abordado foi a necessidade da criação de uma linguagem
comercial, objetivando uma maior facilidade na comunicação entre computador e sercomercial, objetivando uma maior facilidade na comunicação entre computador e ser humano.humano.
Em 1961, surgiu o COBOL (Common Business Oriented Language), que é umaEm 1961, surgiu o COBOL (Common Business Oriented Language), que é uma
linguagem voltada para a linguagem humana.linguagem voltada para a linguagem humana.
Portanto, podemos denominar COBOL, uma linguagem de alto nível, ou umaPortanto, podemos denominar COBOL, uma linguagem de alto nível, ou uma
linguagem comercial. linguagem comercial.
A partir desta data, a linguagem COBOL, foi sendo melhorada e daí surgiu a primeiraA partir desta data, a linguagem COBOL, foi sendo melhorada e daí surgiu a primeira
versão em 1968 chamada “ANS”,versão em 1968 chamada “ANS”, e foi aprovada pela American National Standarde foi aprovada pela American National Standard Institute.Institute.
Podemos fazer algumas comparações das vantagens do uso da linguagem COBOL, aoPodemos fazer algumas comparações das vantagens do uso da linguagem COBOL, ao
invés da linguagem pura de máinvés da linguagem pura de máquina:quina:
LINGUAGEM COBOLLINGUAGEM COBOL
1)1) Facilidade de escrita;Facilidade de escrita;
2)2) Diminuição das instruções para gerar umDiminuição das instruções para gerar um programa;programa;
3)3) Manutenção simplificada;Manutenção simplificada;
4)4) Não háNão há totaltotal necessidade denecessidade de uma integraçãouma integração do programado programa com ocom o computador, poiscomputador, pois existeexiste
entre os fabricantes de computadores e o programa uma padronização e uniformização,entre os fabricantes de computadores e o programa uma padronização e uniformização,
sendo que, caso uma empresa queira mudar de equipamento, não se torna necessáriosendo que, caso uma empresa queira mudar de equipamento, não se torna necessário
refazer todos os programas existentes, erefazer todos os programas existentes, e sim fazer pequenas alterações.sim fazer pequenas alterações.
LINGUAGEM PURA MÁQUINALINGUAGEM PURA MÁQUINA
1)1) Dificuldade de escrita, pois é uma linguagem de baixo nível composta por númerosDificuldade de escrita, pois é uma linguagem de baixo nível composta por números
binários, (0, 1), de difíbinários, (0, 1), de difícil compreensão;cil compreensão;
2)2) Muitas instruções;Muitas instruções;
3)3) Manutenção de programa difícil;Manutenção de programa difícil;
4)4) Depuração de erros difícil;Depuração de erros difícil;
ENVIRONMENT DIVISION: Define o ambiente operacional, equipamento.
DATA DIVISION: Define a origem e as características dos dados.
PROCEDURE DIVISION: Conjunto de instruções e comandos.
1.5. Elemento de Linguagem
1.5.1. Caracteres
A codificação COBOL, é constituída por um conjunto básico de caracteres:
26 letras;
10 dígitos;
Caractere branco;
Ponto e vírgula;
Aspa ou apóstrofe;
Parêntesis esquerdo e direito;
Ponto;
Vírgula;
Mais;
Menos;
Asterisco;
Barra;
Igual;
Cifrão;
Maior que;
Menor que.
1.5.2. Caracteres
Existem as palavras reservadas da linguagem COBOL que veremos no item 1.5.6.,
existem as palavras atribuídas pelo programador.
Na criação de nomes, o programador deve obedecer a certas regras como:
Tamanho máximo de 30 caracteres, e estes podem ser: letras, números e caracteres
especiais;
Iniciar a palavra com uma letra.
Exemplos:
NOME
DATA_NASC
A
O programador pode criar até 4 (quatro) tipos de nomes:
Nomes de campo;
Nomes de rotina;
Nomes de condição;
Nomes externos.
PS: Os nomes de rotina podem começar por um número.
Abordaremos com mais detalhes os tipos de nomes nas divisões correspondentes, nos
próximos capítulos.
1.5.3. Literais
São valores constantes utilizados num programa. Existem dois tipos de literais:
Literal Numérica:
É composta por dígitos de 0 a 9, + ou -,. ou , e o tamanho máximo de um
literal numérica é de 18 dígitos sem contar os caracteres diferentes de números.
Exemplos:
Literal não Numérica:
É composta por um conjunto de caracteres que estão entre aspas ou apóstrofes.
Seu tamanho máximo é de 120 caracteres, excluindo-se as aspas ou apóstrofes.
Exemplos:
“Kyoei Facom - Centro Educacional” “%$#@! Caracteres especiais” “001234567 + 7364892”
1.5.4. Constantes Figurativas
Fazem parte das palavras reservadas da linguagem COBOL, e possuem um
determinado valor. Exemplos:
HIGH-VALUES – Maior valor alfanumérico
LOW-VALUES – Menor valor alfanumérico
SPACE(S) – Caractere branco
ZERO(S) – Numero 0
ALL – Transforma uma literal alfanumérica em constante figurativa
1.5.5. Regras de Pontuação
O compilador COBOL é um software detalhista quanto à pontuação utilizada no
programa. Ao codificarmos devemos seguir as seguintes regras:
1) Ao final de cada sentença devemos usar logo em seguida o ponto final;
JUSTIFIED
KEY
KEYS
LABEL
LEFT
LESS
LIMIT
LIMITS
LINKAGE
LOCK
LOW-VALUE
LOW-VALUES
MEMORY
MODE
MULTIPLE
NEXT
NOTE
NUMERIC
OBJECT-
COMPUTER
OCCURS
OMITTED
OUTPUT
PAGE
PIC
PICTURE
PROCEDURE
PROCESSING
PROGRAM-ID
QUOTE
QUOTES
RANDOM
READY
RECORD
RECORDING
RECORDS
REDEFINES
REEL
REFERENCE
REMAINDER
REMARKS
RENAMES
REPLACING
RESERVE
RESET
RETURN
REWIND
ROUNDED
SAME
SD
SECTION
SECURITY
SEEK
SEGMENT-LIMIT
SENTENCE
SIZE
SKIP
SKIP
SKIP
SOURCE
SOURCE-
COMPUTER
SPACE
SPACES
SPECIAL-NAMES
STANDARD
START
STATUS
STOP
SYNC
SINCRONIZED
SYNIN
SYSIPT
SYSLST
SYSOUT
SYSPCH
SYSPUNCH
S
S
TALLY
TALLYNG
TAPE
THAN
THEN
THRU
TIME-OF-DAY
TIMES
TRACE
TRACK
TRACK-AREA
TRACK-LIMIT
TRACKS
TRANSFORM
UPSI-
UPSI-
UPSI-
UPSI-
UPSI-
UPSI-
UPSI-
UPSI-
USAGE
USE
USING
VALUE
VALUES
VARYING
WHEN
WITH
WORDS
WORKING-
STORAGE
ZERO
ZEROES
ZEROS
2) Verbos
ACCEPT
ADD
CALL
CANCEL
CHAIN
COMPUTE
CLOSE
DISPLAY
DIVIDE
EXAMINE
EXHIBIT
GO TO
IF
MOVE
MULTIPLY
OPEN
PERFORM
READ
RELEASE
RETURN
REWRITE
RUN
SEARCH
SORT
STOP
SUBTRACT
WRITE
3) Conectivos
AND
ARE
AT
BY
CORR
CORRESPONDING
DOWN
ELSE
FROM
INTO
IS
NOT
OF
OFF
ON
OR
TO
UNTIL
UP
1.5.7. Codificação
Existe um padrão de codificação de um programa COBOL relativo às colunas.
As colunas de 1 a 6, são utilizadas para numerar as linhas do programa. Da coluna 1 a
coluna 3, a numeração da folha é definida, e da coluna 4 a coluna 6, a numeração da linha é
definida. A numeração da página/linha deverá ser feita em ordem crescente.
A coluna 7 é utilizada para indicar que a linha é de comentário, ou para indicar a
continuação da linha anterior.
As colunas de 8 a 11 estão situadas na “margem A” da folha. Nessa margem são
iniciados os nomes de divisões, seções, parágrafos e alguns números de nível.
As colunas de 12 a 72 estão situadas na “margem B” da folha. Nesta margem todos os
parâmetros e instruções restantes são definidos.
A identificação do programa é feita dentre as colunas 73 e 80.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT nome-do-arquivo ASSIGN TO identificação [ORGANIZATION IS SEQUENTIAL] [ACCESS MODE IS SEQUENTIAL]
O parágrafo SOURCE-COPUTER especifica em qual equipamento o programa será
compilado.
O parágrafo OBJECT-COMPUTER especifica em qual equipamento o programa será
executado.
No parágrafo SPECIAL-NAMES podemos associar nomes de funções a alguns
dispositivos COBOL, como por exemplo, o nome simbólico referente à impressora, “Printer”.
Citaremos alguns dos possíveis nome-de-funções utilizados neste parágrafo:
SYSLST Relacionada à impressora CONSOLE Relacionada a console do operador C01 Canais associados à impressora C C C C C C C C C C C
Exemplo: SPECIAL-NAMES. C01 IS SALTO.
Sempre que o nome SALTO for utilizado na PROCEDURE DIVISION, o computador
executará um salto de página na impressora. O nome SALTO é simplesmente um nome-
simbólico.
A cláusula DECIMAL-POINT IS COMMA tem como objetivo substituir ponto por
vírgula e vice-e-versa devido a nossa tradicional notação anglo-saxônica.
Na cláusula SELECT o nome nome-do-arquivo será o nome utilizado pelo
programador dentro do programa e a identificação costuma variar de acordo com o ambiente
operacional.
No curso da Kyoei Facom. utilizamos o computador VIII da Edisa com o Sistema
Operacional UNIX. Um exemplo de SELECT para este ambiente é:
SELECT EMP ASSSIGN TO “cademp”
Onde, EMP é o nome que o programador atribuiu ao arquivo de empresas dentro do
programa, e “cademp” é o nome externo do arquivo criado num processador de textos.
A cláusula ORGANIZATION especifica em que ordem os registros estão ou estarão
organizados. Existem vários tipos de organização de arquivos, porém estes serão abordados
mais adiante.
Caso a cláusula não seja definida ficará subtendido como organização seqüencial, ou
seja, os registros estão ou estarão em ordem seqüencial em que foram ou serão gravados.
A cláusula ACCESS MODE especifica em que ordem os registros serão acessados ou
gravados.
Caso a cláusula não seja definida, o acesso será seqüencial aos registros.
Para cada arquivo utilizado no programa, devemos definir uma SELECT.
2.3. Data Division
Esta é a terceira divisão de um programa COBOL.
Esta divisão é dividida em 4 (quatro) seções: A FILE SECTION, a WORKING-
STORAGE SECTION, a LINKAGE SECTION e a SCREEN SECTION.
Na FILE SECTION descrevemos os arquivos e seus respectivos registros.
Na WORKING-STORAGE SECTION definimos todas as áreas auxiliares para o
processamento.
A LINKAGE SECTION e a SCREEN SECTION são seções opcionais dessa divisão.
A LINKAGE SECTION é uma seção responsável pela comunicação entre os
programas.
A cláusula LABEL RECORD indica se existe (STANDARD) ou não (OMITTED), um
rótulo de identificação do arquivo correspondente.
A cláusula VALUE OF FILE-ID associa o nome-de-arquivo utilizado no programa
com o nome de identificação do arquivo.
A cláusula DATA RECORD define o nome do registro do arquivo correspondente.
Na WORKING-STORAGE SECTION, ao descrevermos as áreas, utilizaremos vários
itens que serão abordados a seguir.
2.3.1. Números de Nível
Os números de nível definem a hierarquia dos campos dentro dos registros 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”.
Dentro dos itens de grupo estão os itens elementares, e estes podem receber uma
numeração dentre “02” e “49”.
Exemplo de codificação de um lay-out de registro:
CODIGO NOME
DATANASC
SALARIO ENDER
DD MM AA
PIC X(05) X(30) 99 99 99 9(04)V99 X(30)
Formato:
A B
01 REGISTRO
05 CODIGO PIC X(05).
05 NOME PIC X(30).
05 DATANASC
10 DD PIC 9(02).
10 MM PIC 9(02).
10 AA PIC 9(02).
05 SALARIO PIC 9(04)V99.
05 ENDER PIC X(30).
PS: A cláusula PIC será abordada a seguir.
2.3.2. Números de Nível Especiais
77 e 88.
O nível 77 define auxiliares independentes, onde estes não são subdivididos e não
possuem subdivisões.
Estes auxiliares são campos que criaremos com o objetivo de, por exemplo:
Precisamos emitir relatórios que deverão ter no máximo por página 60 linhas e
devemos mostrar a cada página o número da página, portanto necessitamos de campos
auxiliares, um para contar linhas e outro para contar páginas e estes serão criados no nível 77
dentro da WORKING-STORAGE SECTION.
77 CONTLIN PIC 9(02) VALUE 60.
77 CONTPAG PIC 9(02) VALUE 0.
O nível 88 define nomes de condição que devem ser associados valores definidos ao
conteúdo de um campo determinado do registro.
2.3.3. Picture
PIC ou PICTURE é 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 a 9. Na
representação de um campo numérico, podem aparecer caracteres como a letra “ V” e/ou a
letra “S”.
“V” indica a posição da vírgula decimal e “ S” indica se o campo armazena um sinal
positivo ou negativo.
O tamanho máximo deste tipo de campo é 18 dígitos.
Podemos efetuar cálculos neste tipo de campo.
Exemplos:
PIC 9(10)
PIC 9(10)V
Neste tipo de picture podemos utilizar várias máscaras de formatação, porém as mais
comuns são:
9 – Mostra o dígito na posição definida independente de ser “0”;
Z – Troca o dígito “0” pelo caractere BRANCO;
B – Insere o caractere BRANCO na posição definida na picture;
0 – Coloca o dígito “0” na posição definida na picture;
, – Insere uma “,” na posição definida na picture;
. – Insere um “.” na posição definida na picture;
+ – Insere o sinal “+” ou “-” à direita ou à esquerda do conteúdo editado;
- – Insere o sinal “-” à direita ou à esquerda do conteúdo editado;
* – Troca o “0” não significativo por “*” (asterisco);
$ – Este caractere pode aparecer na extremidade esquerda da picture.
Exemplos:
Picture Conteúdo Original Conteúdo Mascarado
ZZZ 123 123
Z.ZZ9 1900 1.
Z.ZZ9,99 0543V55 543,
*99,99 077V77 *77,
9B9 66 6 6
+ZZ9 876 +
99+ 56 (negativo) 56- 99+ 56 (positivo) 56+ +99 56 (positivo) + -99 56 (negativo) - 99- 56 (negativo) 56- -99 56 (positivo) 56 $9(4) 8765 $
2.3.4. Picture
É uma palavra reservada que preenche determinados espaços definidos na picture.
Exemplo:
05 FILLER PIC X(10) VALUE “FACOM”.
De acordo com o exemplo acima, a palavra FACOM será preenchida nas primeiras 5
posições alfanuméricas e espaços em branco nas 5 posições restantes da picture preenchendo
portanto as 10 posições. Esta palavra “ FACOM” poderá ser apresentada na tela do computador
ou na impressora.
2.3.5. Cláusula VALUE
É utilizada para atribuir valores em determinadas áreas de trabalho.
Podemos atribuir valores do tipo: literal-numérica ou literal-não-numérica.
Exemplos:
- Literal-numérica: 05 CONT PIC 99 VALUE 60.
- Literal-não-numérica: 05 FILLER PIC X(2) VALUE “AB”.
Ainda podemos utilizar os termos: SPACE(S), ZERO, ZEROS, ZEROES e ALL.
Exemplos:
05 FILLER PIC X(4) VALUE SPACES.
05 FILLER PIC X(20) VALUE ALL ”*”.
ou definindo sem o ALL; 05 FILLER PIC X(20) VALUE. 05 FILLER PIC 9(3) VALUE ZEROS.
2.3.6. Exemplo de codificação da Working-storage Section
A B
WORKING-STORAGE SECTION.
77 CONTLIN PIC99 VALUE 60.
77 CONTPAG PIC99 VALUE 0.
77 CH-FIM PIC X(3) VALUE “NAO”.
01 LINCAB.
05 FILLER PIC X(10) VALUE SPACES.
05 FILLER PIC X(34) VALUE “KYOEI FACO