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
INPUTouI-O. -
STARTnã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 SEQUENCEnão se aplica à instruçãoSTART. -
A instrução
STARTnão recupera dados — apenas posiciona para uma leitura futura.
🧠 Dicas práticas
-
Use
STARTquando precisar localizar um ponto específico em arquivos indexados. -
Sempre trate a possibilidade de erro com
INVALID KEYpara evitar comportamentos inesperados. -
Após um
STARTbem-sucedido, você pode usarREAD NEXTpara 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.