🧠 Explicação

O comando EXEC CICS STARTBR é utilizado para iniciar uma navegação em um arquivo VSAM ou tabela de dados. Ele não lê registros imediatamente, apenas posiciona o navegador no ponto de início da leitura. A leitura de fato ocorre nos comandos READNEXT ou READPREV. Esse comando serve como ponto de partida para percorrer registros de forma sequencial ou por chave.

🔧 Usos mais comuns

  • Posicionar o cursor de leitura antes de um READNEXT ou READPREV.

  • Navegar sequencialmente por arquivos KSDS, RRDS ou ESDS.

  • Realizar navegação por chave (inclusive genérica) ou por endereço (RBA/RRN/XRBA).

  • Iniciar leituras com base em critérios específicos (GTEQ, EQUAL, GENERIC).

  • Usar múltiplos navegadores com REQID distintos.

🧾 Sintaxe

EXEC CICS STARTBR
     FILE("CLIENTES")
     RIDFLD(CHAVE-CLI)
     KEYLENGTH(10)
     GTEQ
END-EXEC.

Ou, para navegação por RBA:

EXEC CICS STARTBR
     FILE("LOGESDS")
     RIDFLD(ENDERECO-RBA)
     RBA
END-EXEC.

💻 Exemplo prático

WORKING-STORAGE SECTION.
01 CHAVE-CLI    PIC X(10) VALUE '0001234567'.

EXEC CICS STARTBR
     FILE("CLIENTES")
     RIDFLD(CHAVE-CLI)
     KEYLENGTH(10)
     GTEQ
END-EXEC.

PERFORM UNTIL FIM-DO-ARQUIVO
   EXEC CICS READNEXT
        FILE("CLIENTES")
        INTO(AREA-CLI)
        RIDFLD(CHAVE-CLI)
   END-EXEC

   DISPLAY AREA-CLI

END-PERFORM.

EXEC CICS ENDBR FILE("CLIENTES") END-EXEC.

📌 Regras

  • STARTBR não lê o registro — apenas posiciona.

  • GTEQ (default) posiciona na primeira chave maior ou igual à informada.

  • EQUAL exige correspondência exata da chave.

  • GENERIC permite uso de prefixos de chave, requerendo KEYLENGTH.

  • RIDFLD deve conter a chave, RBA, RRN ou XRBA conforme o tipo de arquivo.

  • Para arquivos remotos, o parâmetro SYSID deve ser usado.

  • Use REQID se for necessário manter múltiplas navegações simultâneas.

  • RBA, RRN e XRBA são específicos para tipos de arquivos base e devem ser usados com cuidado.

💡 Dicas

  • Sempre finalize a navegação com ENDBR ou SYNCPOINT para liberar recursos.

  • Para navegar desde o início do arquivo, use RIDFLD zerado com GTEQ.

  • KEYLENGTH(0) só deve ser usado com GTEQ. Nunca com EQUAL.

  • Em arquivos com concorrência, um registro posicionado em STARTBR pode ser excluído antes do READNEXT. Use LSR se isso for crítico.

  • XRBA deve ser usado em ESDS com mais de 4GB (endereçamento estendido).

🚨 Condições que podem ocorrer

  • NOTFND: chave ou registro inicial não foi localizado.

  • INVREQ: parâmetros inconsistentes (ex: KEYLENGTH fora do padrão).

  • NOTOPEN: arquivo não está aberto para leitura.

  • FILENOTFOUND: nome de arquivo inexistente no CICS.

  • IOERR: erro de entrada/saída no arquivo.

  • ILLOGIC: falha lógica no acesso ao VSAM.

  • SYSIDERR: erro no acesso a arquivo remoto.

  • DISABLED: recurso está desativado.

  • NOTAUTH: falta de permissão para acessar o recurso.

Conclusão

EXEC CICS STARTBR é a porta de entrada para navegações ordenadas em arquivos VSAM e tabelas no CICS. Com ele, você posiciona precisamente onde a leitura vai começar, seja por chave, endereço ou número de registro. Quando bem utilizado com READNEXT e ENDBR, garante controle total sobre o acesso sequencial de dados — essencial para tarefas de consulta, validação e relatórios em aplicações CICS.