A ENVIRONMENT DIVISION é a segunda divisão obrigatória de um programa COBOL. Ela serve como ponte entre o código-fonte e o ambiente operacional, informando ao compilador como o programa interage com o sistema e seus arquivos.

🧭 Estrutura geral da ENVIRONMENT DIVISION

A divisão é composta por duas seções:

1. CONFIGURATION SECTION

Define o ambiente físico e lógico onde o programa será compilado e executado.

2. INPUT-OUTPUT SECTION

Define como os arquivos serão acessados e manipulados durante a execução do programa.

⚙️ CONFIGURATION SECTION

Contém três possíveis parágrafos:

Parágrafo Função
SOURCE-COMPUTER Identifica o computador onde o código-fonte foi escrito e compilado. (opcional, uso mais documental)
OBJECT-COMPUTER Identifica o ambiente onde o programa será executado. (também opcional, pode ser ignorado sem prejuízo técnico)
SPECIAL-NAMES Define configurações especiais, como o símbolo monetário ou o uso da vírgula como ponto decimal (ex: DECIMAL-POINT IS COMMA)

📌 Exemplo: Uso da cláusula DECIMAL-POINT IS COMMA

Sem a cláusula Com a cláusula DECIMAL-POINT IS COMMA
456.23 (quatrocentos e cinquenta e seis ponto vinte e três) 456,23 (mesmo valor com vírgula)
1,978 (mil e novecentos e setenta e oito) 1.978 (mil e noventa e oito, dependendo do contexto)

💾 INPUT-OUTPUT SECTION

Define os arquivos que o programa irá acessar, o modo de acesso e suas características.

Parágrafos:

  • FILE-CONTROL: Define arquivos, organização, modo de acesso e status.

  • I-O CONTROL: Obsoleto em versões modernas, usado apenas em ambientes mainframe legados.

🔄 Modos de acesso e organização

🟢 SEQUENCIAL

Usado para arquivos que serão lidos ou gravados linha por linha, do início ao fim.

SELECT nome-arquivo ASSIGN TO nome-externo
ORGANIZATION IS LINE SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS fs-arquivo.

🟡 RANDÔMICO

Para acesso direto a registros com base em chave ou posição.

SELECT nome-arquivo ASSIGN TO nome-externo
ORGANIZATION IS RELATIVE
ACCESS MODE IS RANDOM
RELATIVE KEY IS chave-randomica
FILE STATUS IS fs-arquivo.

🔵 DINÂMICO

Permite acesso sequencial ou randômico no mesmo programa.

SELECT nome-arquivo ASSIGN TO nome-externo
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC
RELATIVE KEY IS chave-randomica
FILE STATUS IS fs-arquivo.

 

🧪 Exemplo prático

******************************************************************
ENVIRONMENT DIVISION.
******************************************************************
CONFIGURATION SECTION.
******************************************************************
SPECIAL-NAMES. DECIMAL-POINT IS COMMA.
******************************************************************
INPUT-OUTPUT SECTION.
******************************************************************
FILE-CONTROL.
******************************************************************
SELECT CADCLIEN ASSIGN TO UT-S-CADCLIEN
       FILE STATUS IS WS-FS-CADCLIEN.

SELECT CADFORN ASSIGN TO UT-S-CADFORN
       FILE STATUS IS WS-FS-CADFORN.

SELECT CADVSAM ASSIGN TO DA-I-CADVSAM
       ORGANIZATION IS INDEXED
       ACCESS MODE IS DYNAMIC
       RECORD KEY IS VSAM-COD-CHAVE
       FILE STATUS IS WS-FS-CADVSAM.

▶️ Vídeo: ENVIRONMENT DIVISION no COBOL

Assista ao conteúdo prático e detalhado no canal Cobol Dicas:

 

✅ Conclusão

A ENVIRONMENT DIVISION conecta seu programa COBOL ao sistema operacional. Mesmo com seções que se tornaram opcionais, ela ainda é vital para definir arquivos e garantir que o programa funcione corretamente no ambiente de produção.