Eae pessoal, eu estava com um tutorial básico de COBOL escrito por mim
em outubro do ano passado ^^ e postei aqui para a galera, e ele está
facil de entender.
Estrutura de um Programa
Os programas em COBOL são obrigatoriamente constituídos por quatro divisões:
1. A IDENTIFICATION DIVISION marca o início de um programa
COBOL e contém informações gerais sobre o mesmo, tais como a sua
identificação, a identificação do autor, a data em que foi escrito, etc.
2. A ENVIRONMENT DIVISION contém instruções ou comandos
que descrevem o ambiente físico em que o programa é executado. Esta
divisão é usada principalmente para descrever fisicamente os ficheiros
usados pelo programa, através da indicação dos seus nomes(internos e
externos) e do modo como estão organizados.
3. A DATA DIVISION contém instruções que descrevem os
dados usados pelo programa, quer eles existam em ficheiros (o seu
layout) ou sejam internos do programa (variáveis).
4. A PROCEDURE DIVISION contém as instruções COBOL que o
programa irá executar. Cada divisão de um programa COBOL subdivide-se
um unidades mais pequenas denominadas SECTIONs. As secções podem conter
parágrafos (os procedimentos) e estes, por sua vez, contêm instruções.
IF e PERFORM
Um programa tem de ser capaz de tomar decisões sobre os dados e, em
função delas, executar diferentes secções de código. O verbo IF permite
alterar o fluxo de um programa em função dos seus dados.
O verbo PERFORM permite estruturar os programas e identificar os seus
procedimentos. Ao encontrar o verbo PERFORM, o código a executar será o
constante no parágrafo “chamado” e, uma vez executado o parágrafo, o
programa executará a instrução seguinte ao PERFORM (caso o parágrafo
“chamado” não tenha as instruções GO TO ou STOP RUN). Desta forma, para
além de se conseguirem programas mais legíveis, é possível escrever
rotinas genéricas que podem ser executadas em diferentes pontos do
programa.
Código:
000001 PERFORM READ-FICH01.
000002 IF STATUS-FIM
000003 PERFORM FIM-PROGRAMA
000004 ELSE
000005 PERFORM TRATA-REG-FICH01
000006 END-IF.
PERFORM UNTIL, MOVE e ADD
O PERFORM UNTIL permite que se executem repetidamente secções de código
até que se verifique uma condição de paragem (testada antes da
execução).
O verbo MOVE é usado para armazenar valores em variáveis. O verbo ADD é
usado para adicionar valores aos já existentes nas variáveis.
Código:
000001 MOVE 1 TO WS-INDICE.
000002 PERFORM UNTIL WS-INDICE > 13
000003 MOVE WS-INDICE TO NUM-LINHA(WS-INDICE)
000004 MOVE SPACES TO TEXTO-LINHA(WS-INDICE)
000005 ADD 1 TO WS-INDICE
000006 END-PERFORM.
COMPUTE e COMPUTE ROUNDED
O verbo COMPUTE é usado para calcular os resultados de expressões
aritméticas e armazenálos em variáveis. As expressões aritméticas, para
além de parêntesis, podem conter os operadores + (adição), -
(subtracção), * (multiplicação) e / (divisão). A cláusula ROUNDED
permite que o resultado
obtido na avaliação da expressão seja arredondado de acordo com a
definição da variável. Se esta cláusula não for indicada, o resultado
será truncado de acordo com a definição da variável.
Código:
000001 MOVE 0,15 TO CAMOD013-TCTTAXA.
000002 COMPUTE CAMOD013-VTXCORR = WS-VFINANC * (CAMOD013-TCTTAXA / 100).
000003 COMPUTE WS-ARRED-ESC ROUNDED = CAMOD013-VTXCORR.
000004 MOVE WS-ARRED-ESC TO CAMOD013-VTXCORR.
DIVIDE e SUBTRACT
Os verbos DIVIDE e SUBTRACT permitem, respectivamente, efectuar as operações de divisão e subtracção.
Código:
000001 DIVIDE WS-POS-CURSOR BY 80 GIVING WS-LINHA-CURSOR REMAINDER WS-RESTO.
000002 SUBTRACT 4 FROM WS-LINHA-CURSOR.
EVALUATE
A instrução EVALUATE, à semelhança do verbo IF, permite alterar o fluxo
do programa em função dos seus dados. Ao encontrar o EVALUATE, cada uma
das suas condições será avaliada até se encontrar uma que seja
verdadeira. Seguidamente, o código associado a essa condição é
executado e, posteriormente, é executada a instrução seguinte ao
EVALUATE.
Código:
000001 EVALUATE TRUE
000002 WHEN HELP-LINK-ALFA = 'POST'
000003 MOVE ' TABELA DE CODIGOS POSTAIS' TO TITULO
000004 MOVE '07' TO CODTAB
000005 MOVE 4 TO N-DIGITOS-LINK
000006 WHEN HELP-LINK-ALFA = 'BALC'
000007 MOVE ' TABELA DE BALCOES' TO TITULO
000008 MOVE '04' TO CODTAB
000009 MOVE 4 TO N-DIGITOS-LINK
000010 WHEN HELP-LINK-ALFA = 'PAIS'
000011 MOVE ' TABELA DE PAISES' TO TITULO
000012 MOVE 'F2' TO CODTAB
000013 MOVE 3 TO N-DIGITOS-LINK
000014 WHEN HELP-LINK-ALFA = 'ACTE'
000015 MOVE ' TABELA DE ACTIV. ECONOMICAS' TO TITULO
000016 MOVE '98' TO CODTAB
000017 MOVE 5 TO N-DIGITOS-LINK
000018 WHEN HELP-LINK-ALFA = 'GART'
000019 MOVE ' TABELA DE GARANTIAS' TO TITULO
000020 MOVE 'E5' TO CODTAB
000021 MOVE 6 TO N-DIGITOS-LINK
000022 WHEN HELP-LINK-ALFA = 'SECE' OR 'SECR'
000023 MOVE ' TABELA DE SECTORIZACOES' TO TITULO
000024 MOVE 'F1' TO CODTAB
000025 MOVE 8 TO N-DIGITOS-LINK
000026 WHEN HELP-LINK-ALFA = 'VINC'
000027 MOVE ' TABELA DE VINCULOS' TO TITULO
000028 MOVE 'E4' TO CODTAB
000029 MOVE 2 TO N-DIGITOS-LINK
000030 WHEN HELP-LINK-ALFA = 'CDBP'
000031 MOVE 'CODIGOS DO BANCO DE PORTUGAL' TO TITULO
000032 MOVE 'TN' TO CODTAB
000033 MOVE 4 TO N-DIGITOS-LINK
000034 WHEN OTHER
000035 MOVE ALL '*' TO TITULO
000036 MOVE SPACES TO CODTAB
000037 END-EVALUATE.