3. Identification Division

3. Identification Division

A IDENTIFICATION DIVISION deve ser a primeira divisão declarada em qualquer programa Cobol. Ela estabelece o nome do programa e contém alguns outros parágrafos opcionais que contribuem para a sua documentação.

Esta é a única divisão que não é formada por seções, e sim por parágrafos. O único parágrafo obrigatório é o PROGRAM-ID, que estabelece o nome do programa e deve ser o primeiro a ser codificado.  Todos os outros parágrafos são opcionais e podem aparecer em qualquer ordem dentro desta divisão.

Nome do programa

O COBOL/85 estabeleceu que o nome de um programa pode ter até 30 caracteres, mas muitos compiladores (como os que são usados em mainframes) só permitem nomes de programas com 8 caracteres ou menos, sendo que o primeiro caracter deve ser necessariamente alfabético.

Esse nome deve aparecem sempre após o parágrafo PROGRAM-ID:

IDENTIFICATION DIVISION.
PROGRAM-ID. CRP0206.

É comum que as empresas definam um padrão de nomenclatura que permita ao programador identificar o sistema e o subsistema (ou módulo) ao qual o programa pertence.

O exemplo abaixo é apenas um dos muitos padrões de nomenclatura possíveis:

Cobol: Padrões de nomenclatura possíveis

O parágrafo PROGRAM-ID possui algumas cláusulas opcionais:

PROGRAM-ID. {nome-do-programa} IS INITIAL.
PROGRAM-ID. {nome-do-programa} IS COMMON.
PROGRAM-ID. {nome-do-programa} IS RECURSIVE.

As opções INITIAL, COMMON e RECURSIVE são usadas na codificação de subprogramas (também chamados de subrotinas), ou seja, programas que são chamados por outros programas para executar uma função específica.

A cláusula INITIAL indica que o subprograma será carregado em memória e suas variáveis serão “inicializadas” cada vez que ele for chamado. A cláusula COMMON indica que o fonte do subprograma será inserido no fonte do programa “chamador”, uma abordagem conhecida como nested program, raramente utilizada. A cláusula RECURSIVE permite o que o subprograma chame a si mesmo.

O COBOL permite que as três cláusulas sejam combinadas para atender a uma necessidade específica. Por exemplo, a declaração abaixo estabelece que o subprograma CRP0901 será um nested program que poderá chamar a si mesmo:

PROGRAM-ID. CRP0901 IS COMMON RECURSIVE.

O parágrafo PROGRAM-ID permite que o programa tenha um nome externo diferente do nome interno. Isso pode ser útil em sistemas operacionais que permitem nomes longos para os programas executáveis. A linha abaixo define FATP0101 como nome de programa, mas externamente (para o sistema operacional) ele será executado como “CadastraCategorias”.

PROGRAM-ID. FATP0101 AS “CadastraCategorias”.

Se não houver uma cláusula AS no PROGRAM-ID o nome externo do programa executável será igual ao seu nome interno. Esta é a situação mais comum.

Nome do programador

O parágrafo AUTHOR é opcional, mas normalmente o padrão de codificação das empresas obriga seu uso. Ele deve ser preenchido com o nome do programador responsável pela codificação inicial, como no exemplo abaixo:

IDENTIFICATION DIVISION.
PROGRAM-ID. CRP0206.
AUTHOR. PAULO ANDRE DIAS.

O ponto após o nome do autor é obrigatório, o que, como já mencionamos, é também é exigido em todos os outros parágrafos desta divisão.

Data de codificação

O parágrafo DATE-WRITTEN também é opcional. Normalmente é preenchido com a data em que o programa terminou de ser codificado e entrou na fase de testes. O exemplo abaixo mostra a codificação desse parágrafo:

IDENTIFICATION DIVISION.
PROGRAM-ID. CRP0206.
AUTHOR. PAULO ANDRE DIAS.
DATE-WRITTEN. 25/10/2015.

Muitas instalações não exigem seu preenchimento, mas obrigam o programador a colocar essa data no corpo do parágrafo REMARKS, que veremos adiante.

Comentários sobre o programa

Apesar de opcional, o parágrafo REMARKS é exigido em quase todas as instalações. Neste parágrafo, os programadores descrevem o nome longo do programa, seu objetivo e explicam seu funcionamento. Algumas empresas também podem adotar um modelo que exiba o nome do sistema, subsistema e módulo que contém o programa e informações sobre todas as atualizações e correções que são realizadas ao longo do tempo.

O exemplo abaixo mostra o uso mais simples da cláusula REMARKS:

 IDENTIFICATION DIVISION.
 PROGRAM-ID. CRP0206.
 AUTHOR. JOAO JOSE DA SILVA.
 DATE-WRITTEN. 25/10/2015.
 REMARKS. SELECIONA DUPLICATAS ATIVAS

Exemplo completo

A IDENTIFICATION DIVISION funciona como uma espécie de “folha de rosto” para o programa, permitindo que logo nas primeiras linhas o programador entenda a finalidade do programa, tenha uma ideia sobre como ele funciona, os arquivos que acessa e as últimas atualizações pelas quais ele passou.

As (boas) empresas normalmente estabelecem um modelo que deve ser seguido por todos os programadores. O trecho a seguir usa um desses modelos:

*================================================================*
 IDENTIFICATION DIVISION.
*----------------------------------------------------------------*
 PROGRAM-ID.    CRP0206.
 AUTHOR.        PAULO ANDRE DIAS.
 DATE-WRITTEN.  25/10/2015.
 REMARKS.
*----------------------------------------------------------------*
* SISTEMA:      CR – CONTAS A RECEBER
* JOB:          02 – GERACAO DE FLUXO DE CAIXA
* PROGRAMA:     06 – SELECIONA DUPLICATAS ATIVAS
*
* OBJETIVO:     GERAR ARQUIVO DE SAIDA QUE CONTEM APENAS AS DUPLI-
*               CATAS QUE NAO FORAM CANCELADAS. A SITUACAO DA DU-
*               PLICATA DEVE SER DIFERENTE DE CANCELADA (“CNC”)
*
* VERSOES:       DATA   DESCRICAO
*               ------  -----------------------------------------
*               XXXXXX  XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
*
*----------------------------------------------------------------*

Repare nas linhas de comentários (tracejados) que destacam o início da divisão. Esse recurso é muito utilizado para facilitar a leitura do código fonte, principalmente em editores que não possuem coloração por sintaxe.

Observe também que o parágrafo REMARKS na verdade está em branco, mas abaixo dele existem diversas linhas de comentários que fornecem informações sobre sistema, subsistema, módulo, nome e descrição do programa e o histórico de atualizações que ele sofreu.


Anterior Conteúdo Próxima