ENVIRONMENT DIVISION: é a segunda divisão de um programa COBOL. Descreve o computador e os periféricos que serão utilizados pelo programa, fazendo ligação com o ambiente operacional onde o programa será executado, usando a duas seções:
CONFIGURATION SECTION. - Esta seção destina-se a configuração do ambiente, ela é composta por três partes:
- SOURCE-COMPUTER: Identifica o computador onde foi confeccionado o programa, ou seja, onde o codigo fonte será compilado;
- OBJECT-COMPUTER: Identifica o computador do ambiente de produção, ou seja, onde o programa será executado;
(ambas servem apenas para comentários haja visto que ambas deixaram de ser obrigatórias mas caso o programador opte em utiliza-las deve escrever sua sintaxe corretamente para não causar erros de compilação.)
- SPECIAL-NAMES: Específica o sinal monetário, escolhe o tipo de ponto decimal, específica caracteres simbólicos e possibilitar adaptar o programa para se comunicar com programas de outras linguagens. a clausula DECIMAL-POINT IS COMMA troca as funções da virgula e do ponto decimal, afetando literais numéricos e a clausula PICTURE.
Ex:
Sem o DECIMAL-POINT IS COMMA | Com o DECIMAL-POINT IS COMMA |
456.23 | 456,23 |
1,978 | 1.978 |
INPUT-OUTPUT SECTION. - Esta seção destina-se a configuração do ambiente de Leitura e Gravação:
- FILE-CONTROL: Destina-se a especificação dos arquivos que o programa irá acessar.
- I-O CONTROL: Descontinuada nas versões mais atuais do compilador, valendo apenas para os ambientes de Mainframe.
Exemplo:
SEQUENCIAL: O formato deve ser usado para todos os arquivos no modo de acesso sequencial, ou seja, irá avançar a leitura registro a registro até o fim de todos os registros que estão no arquivo.
SELECT nome-arquivo ASSIGN TO nome-externo
ORGANIZATION IS LINE SEQUENTIAL
ACCESS MODE IS SEQUENTIAL
FILE STATUS IS fs-arquivo.
RANDÔMICO: O formato deve ser especificado para arquivos indexados e relativos no modo de acesso aleatório, e também para arquivos no modo de acesso dinâmico quando a recuperação de registros for aleatória.
SELECT nome-arquivo ASSIGN TO nome-externo
ORGANIZATION IS RELATIVE
ACCESS MODE IS RANDOM [RELATIVE KEY IS chave-randomica]
FILE STATUS IS fs-arquivo.
DINAMICO: Para arquivos com organização indexada ou relativa, o modo de acesso dinâmico pode ser especificado na entrada FILE-CONTROL. No modo de acesso dinâmico, pode-se usar a recuperação de registros sequenciais ou randômicos, dependendo do formato utilizado.
SELECT nome-arquivo ASSIGN TO nome-externo
ORGANIZATION IS RELATIVE
ACCESS MODE IS DYNAMIC [RELATIVE KEY IS chave-randomica]
FILE STATUS IS fs-arquivo.
Estrutura:
- ENVIRONMENT DIVISION.
- CONFIGURATION SECTION.
- SOURCE-COMPUTER
- OBJECT-COMPUTER.
- SPECIAL-NAMES.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- I-O CONTROL.
- CONFIGURATION SECTION.
Exemplo:
******************************************************************
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.
*
******************************************************************
DATA DIVISION.
******************************************************************