Monday 9 December 2024

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.

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. ******************************************************************