A instrução SELECT é usada na Divisão de Ambiente para associar um nome lógico de arquivo (definido pelo programador) a um nome de dispositivo externo (como um arquivo físico no sistema).

📌 Para que serve

  • Definir os arquivos que serão usados no programa COBOL.

  • Relacionar um nome lógico (usado no código) com um nome externo (físico).

  • Configurar arquivos de entrada e saída, como arquivos de dados e relatórios.

🧾 Sintaxe básica

SELECT nome-logico-arquivo
   ASSIGN TO nome-fisico-dispositivo
   ORGANIZATION IS SEQUENTIAL
   ACCESS MODE IS SEQUENTIAL.

Exemplo prático

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT ARQ-ENTRADA ASSIGN TO "clientes.txt"
           ORGANIZATION IS LINE SEQUENTIAL.

    SELECT RELATORIO ASSIGN TO "saida.lst"
           ORGANIZATION IS SEQUENTIAL.

📌 Nesse exemplo:

  • ARQ-ENTRADA é um nome lógico definido pelo programador.

  • "clientes.txt" é o nome do arquivo físico que será lido.

  • RELATORIO é um arquivo de saída que será criado.

⚙️ Como funciona internamente

Elemento Função
SELECT Define o nome lógico do arquivo no programa.
ASSIGN TO Informa qual nome externo (sistema operacional) será vinculado.
ORGANIZATION IS Define a organização do arquivo (SEQUENTIAL, INDEXED, RELATIVE).
ACCESS MODE IS Define o modo de acesso ao arquivo (SEQUENTIAL, RANDOM, DYNAMIC).

⚠️ Regras para nomes de arquivos lógicos

  • De 1 a 30 caracteres.

  • Letras, números e hifens (-) permitidos.

  • Deve conter pelo menos uma letra.

  • Não pode iniciar ou terminar com hífen.

  • Sem espaços.

  • Não pode usar palavras reservadas do COBOL.

🧠 Dicas práticas

  • Use nomes descritivos para arquivos: CLIENTES-ARQ, VENDAS-OUT, RELATORIO-FINAL.

  • Evite nomes genéricos como ARQ1, AUX, TESTE, etc.

  • Combine com a FD na DATA DIVISION para descrever o layout dos registros:

FILE SECTION.
FD ARQ-ENTRADA.
01 REGISTRO-ENTRADA PIC X(100).

 

Conclusão

A instrução SELECT é a ponte entre o programa COBOL e o sistema operacional, permitindo que arquivos reais sejam utilizados por nomes lógicos definidos no código. É essencial para qualquer programa que leia ou grave dados em arquivos externos.