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:
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 |