Existe um nível 78 na DATA DIVISION?

O nível 78 é usado na DATA DIVISION para definir constantes, ou seja, itens elementares que não podem ser alterados durante a execução do programa.

Existe apenas em alguns compiladores, como no Micro Focus COBOL e no GnuCOBOL, mas até onde sei não foi implementado em nenhum compilador da plataforma mainframe e não faz parte de nenhuma especificação ANSI/ISO.

Exemplo

No trecho abaixo, vemos uma constante definida com nível 78 que é usada tanto na definição de um array na WORKING-STORAGE quanto num comando da PROCEDURE DIVISION:

identification division.
program-id. gtc008.

data division.
working-storage section.
77 indice pic 9(002) value zeros.
01 tabela-interna.
    78 OCORRENCIAS value 30.
    03 tabela.
        05 variavel pic 9(002) occurs OCORRENCIAS.

procedure division.
inicio.
    perform varying indice from 1 by 1 until indice > OCORRENCIAS
        move indice to variavel(indice) 
    end-perform 

    stop run.

Vantagens

Permite a criação de itens elementares que podem ser usados em diversos pontos do programa, eventualmente facilitando manutenções futuras. Por exemplo, se no programa anterior tivéssemos que expandir a tabela interna para 100 ocorrências, bastaria modificar o valor da constante OCORRENCIAS.

O mesmo efeito, claro, poderia ser obtido com uma variável (de nível 77 ou qualquer outro nível) que tivesse essa mesma função. Mas o uso explícito do nível 78 deixa claro para o programador que ele pode modificar o valor inicial do item sem afetar nenhuma outra funcionalidade do programa.

Desvantagens

Por não estar disponível em todos os compiladores e não fazer parte do padrão ANSI/ISO, o uso do nível 78 pode exigir mais trabalho numa futura migração de plataforma e/ou compilador.

Restrições

Só pode ser usado na WORKING-STORAGE SECTION.


Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *