Conceitos
Nas tabelas, alternativamente ao uso dos subescritores, pode-se associar índices especiais às ocorrências.
Estes índices especiais são mais eficientes que o processo tradicional de subescrição, onde utilizam-se variáveis definidas na WORKING-STORAGE como índices. Os índices especiais permitem recursos avançados como pesquisa binária para localização das ocorrências da tabela.
O compilador aloca os registradores da CPU diretamente para uso dos índices especiais.
A definição destes índices especiais é feita na declaração da tabela através da seguinte sintaxe:
Nível nome-da-variável PIC definição-da-variável OCCURS n TIMES
INDEXED BY nome-do-indice
ASCENDING KEY campo-chave.
Neste caso, os índices não são declarados como variáveis da WORKING-STORAGE.
No exemplo;
01 VENDAS-MES OCCURS 12 TIMES INDEXED BY IND-VENDAS ASCENDING KEY MES-VENDA.03 MES-VENDA PIC 99.
03 VALOR-VENDA PIC 9(6)V99.
o índice especial IND-VENDAS foi alocado automaticamente para a tabela e não pode ser definido na WORKING-STORAGE.
Considerações
A cláusula ASCENDING KEY é opcional e utilizada para declarar que a tabela é classificada em ordem crescente pela variável MES-VENDA.
A cláusula DESCENDING KEY é utilizada em vez de ASCENDING KEY para declarar tabelas classificadas em ordem decrescente.