A instrução START
no COBOL é utilizada para posicionar a leitura em um arquivo indexado ou relativo, com base em uma chave, preparando-o para uma leitura sequencial a partir do ponto encontrado. É fundamental quando você precisa iniciar uma leitura a partir de uma posição específica no arquivo.
📌 Para que serve
-
Posicionar o ponteiro de leitura em um registro específico.
-
Permitir leitura sequencial a partir de uma chave (principal ou alternativa).
-
Utilizar condições como
EQUAL
,GREATER THAN
,NOT LESS THAN
, etc., para definir o ponto de início. -
Trabalhar com arquivos de acesso sequencial ou dinâmico.
🧾 Sintaxe básica
START nome-arquivo
KEY IS [NOT] <condição> chave-de-busca
[INVALID KEY instrução-erro]
[NOT INVALID KEY instrução-sucesso]
END-START
📌 Exemplo com EQUAL TO
:
START ARQ-CLIENTES
KEY IS EQUAL TO CHAVE-CLIENTE
INVALID KEY DISPLAY "Registro não encontrado"
END-START
📌 Exemplo com GREATER THAN
:
START ARQ-CLIENTES
KEY IS GREATER THAN CHAVE-CLIENTE
NOT INVALID KEY PERFORM LER-SEGUINTES
END-START
✅ Exemplo prático completo
FD ARQ-CLIENTES
RECORD KEY IS CHAVE-CLIENTE.
01 REG-CLIENTE.
05 CHAVE-CLIENTE PIC 9(5).
05 NOME-CLIENTE PIC X(30).
WORKING-STORAGE SECTION.
01 CHAVE-BUSCA PIC 9(5) VALUE 12345.
PROCEDURE DIVISION.
START ARQ-CLIENTES
KEY IS GREATER THAN CHAVE-BUSCA
INVALID KEY DISPLAY "Cliente não encontrado"
NOT INVALID KEY DISPLAY "Posicionado com sucesso"
END-START.
⚙️ Como funciona internamente
-
A instrução compara a chave informada (
data-name
) com os registros do arquivo. -
Se for encontrada uma posição correspondente, o ponteiro do arquivo é movido para aquele ponto.
-
Um
READ NEXT
(ouREAD
) subsequente começará a partir desse ponto. -
Pode utilizar as condições:
EQUAL TO
,GREATER THAN
,NOT LESS THAN
,>=
, etc. -
Funciona com a
RECORD KEY
(principal) ouALTERNATE RECORD KEY
(chave alternativa). -
Se não encontrar, executa
INVALID KEY
, se presente.
⚠️ Regras importantes
-
O arquivo deve estar aberto em modo
INPUT
ouI-O
. -
START
não funciona com arquivos de tipoSORT
. -
A comparação é feita como se os campos fossem alfanuméricos (mesmo que sejam numéricos).
-
A
PROGRAM COLLATING SEQUENCE
não se aplica à instruçãoSTART
. -
A instrução
START
não recupera dados — apenas posiciona para uma leitura futura.
🧠 Dicas práticas
-
Use
START
quando precisar localizar um ponto específico em arquivos indexados. -
Sempre trate a possibilidade de erro com
INVALID KEY
para evitar comportamentos inesperados. -
Após um
START
bem-sucedido, você pode usarREAD NEXT
para continuar a leitura a partir do ponto posicionado. -
Quando o arquivo é relativo, a chave deve ser a
RELATIVE KEY
.
✅ Conclusão
A instrução START
é essencial em programas que trabalham com arquivos indexados ou relativos, permitindo iniciar a leitura a partir de uma chave específica. É uma ferramenta poderosa quando combinada com READ NEXT
, pois oferece flexibilidade e controle total sobre a navegação nos dados.